AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Ascii Art

skill-therocksss-hermes-skills-portfolio-ascii-art · by THEROCKSSS

Use when the user wants a text banner or logo for a CLI tool/README, wants an image converted to ASCII art, wants decorative ASCII for a terminal output or code comment, or explicitly says "make ASCII art", "generate a banner", or "convert this image to ASCII".

No reviews yet
0 installs
17 views
0.0% view→install

Install

$ agentstack add skill-therocksss-hermes-skills-portfolio-ascii-art

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access Used
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-therocksss-hermes-skills-portfolio-ascii-art)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Ascii Art? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

ascii-art

Overview

Generate ASCII art from text (banners, logos) and images (photo-to-ASCII conversion). The agent creates text banners, converts images to ASCII, and produces decorative art for terminals, documentation, and code comments.

When to Use

  • The user wants a text banner or logo for a CLI tool or README.
  • The user wants to convert an image to ASCII art.
  • The user wants decorative ASCII for a terminal output or code comment.
  • The user says "make ASCII art", "generate a banner", or "convert this image to ASCII".

Prerequisites

pip install pyfiglet cowsay pillow

Text Banners (pyfiglet)

import pyfiglet

def banner(text: str, font: str = "standard") -> str:
    """Generate an ASCII art banner from text."""
    return pyfiglet.figlet_format(text, font=font)

Popular fonts

fonts = ["standard", "big", "slant", "shadow", "doom", "small", "banner3", "colossal"]

for font in fonts:
    print(f"\n=== {font} ===")
    print(pyfiglet.figlet_format("Hello", font=font))

List all available fonts

import pyfiglet
print(len(pyfiglet.FigletFont.getFonts()))  # 500+ fonts

Image to ASCII

from PIL import Image

def image_to_ascii(image_path: str, width: int = 80, ramp: str = " .:-=+*#%@") -> str:
    """Convert an image to ASCII art."""
    img = Image.open(image_path)
    img = img.convert('L')  # grayscale

    # Calculate height maintaining aspect ratio
    aspect = img.height / img.width
    # Terminal characters are taller than wide, so adjust
    height = int(aspect * width * 0.5)
    img = img.resize((width, height))

    pixels = img.getdata()
    ascii_str = ""
    for i, pixel in enumerate(pixels):
        idx = int(pixel / 255 * (len(ramp) - 1))
        ascii_str += ramp[idx]
        if (i + 1) % width == 0:
            ascii_str += "\n"

    return ascii_str

Cowsay

import cowsay

def say(text: str, character: str = "cow") -> str:
    """Generate a cowsay message."""
    import io, sys
    old = sys.stdout
    sys.stdout = buffer = io.StringIO()
    getattr(cowsay, character)(text)
    sys.stdout = old
    return buffer.getvalue()

Boxed Text

def box_text(text: str, style: str = "single") -> str:
    """Draw a box around text using Unicode box-drawing characters."""
    lines = text.split("\n")
    max_len = max(len(line) for line in lines)

    styles = {
        "single": ("│", "─", "┌", "┐", "└", "┘"),
        "double": ("║", "═", "╔", "╗", "╚", "╝"),
        "round":  ("│", "─", "╭", "╮", "╰", "╯"),
        "ascii":  ("|", "-", "+", "+", "+", "+"),
    }

    v, h, tl, tr, bl, br = styles.get(style, styles["single"])

    result = f"{tl}{h * (max_len + 2)}{tr}\n"
    for line in lines:
        result += f"{v} {line.ljust(max_len)} {v}\n"
    result += f"{bl}{h * (max_len + 2)}{br}"
    return result

Workflow

  1. Determine what the user wants: a text banner, image-to-ASCII, or decorative art
  2. For banners: pick a font that matches the mood (big for impact, small for compact)
  3. For images: resize to terminal width, convert to grayscale, map to ASCII ramp
  4. Return the ASCII art as a string

Common Pitfalls

  1. Banners too wide. pyfiglet banners can be 100+ chars wide. Check the terminal width and pick a narrower font (small, mini, thin) for narrow terminals.
  2. Image ASCII looks squashed or stretched. Terminal characters are ~2x taller than wide. Adjust the aspect ratio with height = int(aspect * width * 0.5) — skipping this factor distorts the output.
  3. Requested font not installed. Not all pyfiglet fonts ship by default. Check pyfiglet.FigletFont.getFonts() for what's actually available before promising a specific font.
  4. Color codes leaking into plain-text output. ANSI color codes (\033[91m) render correctly in a terminal but show as garbage escape sequences in a README or plain text file — only add color when the target is a live terminal.
  5. Converting an oversized image directly. A 4000px image produces an unreadable wall of characters. Resize to 80-120 chars wide before mapping to the ASCII ramp, not after.

Verification Checklist

  • [ ] Text banner output was actually printed/reviewed at the target line width (not assumed to fit)
  • [ ] Chosen pyfiglet font was confirmed present via pyfiglet.FigletFont.getFonts() before use
  • [ ] Image-to-ASCII output used the aspect-ratio correction (* 0.5) so the result isn't vertically stretched
  • [ ] Source image was resized to ≤120 chars wide before conversion
  • [ ] If ANSI color was added, confirmed the output target is a terminal, not a file meant to stay plain text

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.