skills/ascii-renderer/SKILL.md
Generate ASCII art from images or text using shape vector rendering. Creates sharp-edged ASCII art banners, converts photos to terminal art, and renders text with customizable fonts.
npx skillsauth add dupe-com/skills ascii-rendererInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Convert images or text to ASCII art using the shape vector algorithm - a technique that produces sharp edges instead of blurry pixelated results.
Based on Alex Harri's ASCII rendering research.
Activate this skill when:
Skip this skill when:
# Basic text banner
bun run scripts/render.ts --text "DUPE.COM"
# Filled letters (inverted)
bun run scripts/render.ts --text "HELLO" --invert --cols 80
# Custom font and size
bun run scripts/render.ts --text "WOW" --font "Impact" --cols 60 --rows 12
# Convert image
bun run scripts/render.ts photo.png --cols 80 --rows 40
# Demo sphere (no image needed)
bun run scripts/render.ts --demo
| Option | Short | Default | Description |
|--------|-------|---------|-------------|
| --text | -t | - | Text to render as ASCII art |
| --cols | -c | 80 | Output width in characters |
| --rows | -r | auto | Output height (auto-calculated for text) |
| --invert | -i | false | Invert colors (filled vs outlined) |
| --font | -f | Arial Black | Font for text rendering |
| --contrast | - | 1.5 | Contrast enhancement (higher = sharper) |
| --demo | -d | false | Render demo sphere |
| --help | -h | - | Show help |
bun run scripts/render.ts --text "DUPE" --cols 60
@@@@@TTTTTTTT@@@@TTT@@@@TTT@@FTTTTTTT#@@FTTTTTTTT%@@@@@
@@@@@ `#@@ #@@@ #@i ,w: %@i ,;;;;;]@@@@@
@@@@@ ]@@i `@@ #@@@ #@i `@@i ]@i J@@@@@@@@@@@
@@@@@ ]@@D @@ #@@@ #@i `T^ W@i @@@@@@
@@@@@ ]@@P @@ #@@@ #@i ,cssw#@@i ,=====@@@@@@
@@@@@ J#P' s@@. J#@t ,@@i `@@@@@@@i `@@@###@@@@@
@@@@@ ,@@@W. ,W@@i `@@@@@@@i ]@@@@@
@@@@@=======#@@@@@@==www=@@@@#===@@@@@@@#========#@@@@@
bun run scripts/render.ts --text "DUPE" --cols 60 --invert
=======w: a=== a=== a======ww ,=========:
@@@P#@@@w &@@@ J@@@ ]@@@PP#@@# `@@@@PPPPP'
@@@i `@@@i &@@D J@@@ ]@@@,,W@@@ ,@@@lwwwwc
@@@i @@@i &@@D ]@@@ ]@@@@@@@P' `@@@@PPPPP
@@@l,;w@@@' ]@@@c.,W@@@ ]@@@ ,@@@l.,.,..
@@@@@@@@P' T@@@@@@@P' ]@@@ `@@@@@@@@@i
Traditional ASCII converters map pixel brightness → single character. This creates blurry results.
Shape vectors capture character geometry using 6 sampling regions per cell:
┌─────────────┐
│ ●₀ ●₁ │ ← Top samples
│ ●₂ ●₃ │ ← Middle samples
│ ●₄ ●₅ │ ← Bottom samples
└─────────────┘
Each ASCII character has a unique 6D "shape signature". The algorithm finds the best-matching character for each image cell based on geometric similarity, not just brightness.
This produces sharp edges that follow the actual boundaries in the image.
sharp for image processingbun add sharp
Font availability depends on your system. Common options:
development
Pull down GitHub PR reviews and inline comments for the current branch (or a given PR number / URL / branch name), address them with code changes, reply where clarification helps other reviewers, resolve handled threads, and post a summary comment. Use when the user invokes /reviews or asks to address PR feedback.
data-ai
Rebase the current branch onto origin/main and intelligently resolve any conflicts that arise. Use when the user invokes /rebased or asks to rebase the current branch on main and resolve conflicts.
data-ai
Pin a short personal reminder to the agent's status line. Use when the user types "/note", or says "remind me", "note to self", "pin a note", "set a reminder", or "clear my note". The note is synthesized into a terse line and shown on its own status-line row with a bold sticky-note background, scoped to the current session, until cleared.
development
Error prevention and best practices enforcement for agent-assisted coding. Use when writing code to catch common mistakes, enforce patterns, prevent bugs, validate inputs, handle errors, follow coding standards, avoid anti-patterns, and ensure code quality through proactive checks and guardrails.