| name | ascii-rendering |
| description | This skill should be used when the user asks to "draw a diagram", "show a status box", "render ASCII art", "make a callout", "wrap text in a box", "plot these numbers", or any request involving boxed messages, two-box-and-arrow diagrams, scatter plots, or tables rendered as ASCII. Uses JBang to invoke the JaiClaw ASCII renderer; do not hand-draw borders character-by-character. |
| version | 0.1.0 |
ASCII Rendering
This skill lets you render structured ASCII art instead of hand-drawing
borders character-by-character. Two scripts under scripts/, both
JBang-shebanged so they self-resolve their Maven dependency on first
run.
When to use
Use this skill whenever the user asks for:
- A boxed status message, callout, or warning
- A simple diagram (two or three boxes joined by lines)
- A scatter plot of numbers
- A table grid
- "Draw me X in ASCII"
Do not use it when the user wants rich HTML, interactive UI, or
images — those need a different tool.
What's here
scripts/RenderBox.java — quick wrapper for "put this text in a box"
scripts/RenderScene.java — full scene renderer (rectangles, lines,
labels, text blocks, dots, circles, ellipses, tables, scatter plots)
examples/*.json — three reference scenes you can adapt
How to invoke
Quick boxed message — RenderBox.java
jbang ${CLAUDE_PLUGIN_ROOT}/skills/ascii-rendering/scripts/RenderBox.java --content "Build green — all tests pass." \
--title=STATUS --border=double
Output (stdout):
╔════════════════════════════════════════════════════════════╗
║[ STATUS ] ║
║Build green — all tests pass. ║
╚════════════════════════════════════════════════════════════╝
Flags:
| Flag | Default | Notes |
|---|
--content TEXT or --file PATH or stdin | — | Source text |
--width N | 60 | Max inner width (clamped to [4, 500]) |
--border single|double|bold|rounded | single | Border style |
--title TEXT | — | Top-edge banner [ TEXT ] |
Structured scene — RenderScene.java
Write the scene JSON to a temp file, then:
jbang ${CLAUDE_PLUGIN_ROOT}/skills/ascii-rendering/scripts/RenderScene.java --file /tmp/scene.json
Or pipe via stdin:
echo '{"width":40,"height":5,"elements":[{"type":"rectangle"}]}' | \
jbang ${CLAUDE_PLUGIN_ROOT}/skills/ascii-rendering/scripts/RenderScene.java
Scene JSON shape
{
"width": 40,
"height": 5,
"trim": true,
"elements": [
{"type": "rectangle"},
{"type": "label",
"params": {"text": "Hello", "x": 15, "y": 2}}
]
}
Element catalogue
Coordinates: origin (0, 0) at top-left; x grows right, y grows down.
Position keys are optional — omitting them centres or fills automatically.
type | Required params | Optional params |
|---|
rectangle | — | x, y, width, height |
line | x1, y1, x2, y2 | pen (single char, default ●) |
label | text | x, y, width (single line; truncated with …) |
text | text | x, y, width, height (multi-line; word-wraps) |
dot | — | x, y |
circle | — | x, y, radius |
ellipse | — | x, y, width, height |
table | rows, columns (both > 0) | x, y, width, height |
plot | points (list of [x, y]), width, height (> 0) | x, y |
glyph | x, y, and either name (registry lookup: ok, fail, warn, , , , , , , ) OR + optional |
Look at ${CLAUDE_PLUGIN_ROOT}/skills/ascii-rendering/examples/boxed-hello.json,
call-graph.json, and scatter-plot.json in the same directory for
full reference scenes. See GLYPHS.md (next to this file) for the
full glyph vocabulary, the GlyphContribution SPI for registering
your own glyphs, and the AnsiPalette post-processor that colorizes
the rendered output for terminals.
Errors
Bad input prints to stderr with a precise location, then exits non-zero:
[element 3]: 'columns' and 'rows' must be positive.
[element 2]: Unknown element type 'marshmallow'.
Missing or non-positive 'width'.
When you see one, fix the indicated element and retry the script.
Don't try to hand-render the result; the script is the authoritative
renderer.
Prerequisites
The host must have JBang installed (brew install jbang /
curl -Ls https://sh.jbang.dev | bash). JBang manages Java
automatically; no separate Java install needed.
First invocation pulls the jaiclaw-ascii-render jar + Jackson +
SLF4J from Maven (~3 MB total) and caches them under
~/.jbang/cache/. Subsequent calls start in well under a second.