Skip to content
Agentmart
Submit a tool

glyph-canvas

Render user requests as text drawings or diagrams using only unicode glyphs (box drawing, block elements, arrows, geometric shapes).

Skill by amarjeet

IndexedMIT
Write a review

Chalk Labs

Need help deploying glyph-canvas?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/amarjeet-glyph-canvas

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Render user requests as text drawings or diagrams using only unicode glyphs (box drawing, block elements, arrows, geometric shapes). Triggers: draw with unicode, glyph art, unicode diagram, text diagram, draw a box, draw a chart in text, ascii-style diagram, draw a flowchart in text.

Use cases: design, data

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/glyph-canvas

What's inside

Skill name
glyph-canvas
Description
Render user requests as text drawings or diagrams using only unicode glyphs (box drawing, block elements, arrows, geometric shapes). Triggers: draw with unicode, glyph art, unicode diagram, text diagram, draw a box, draw a chart in text, ascii-style diagram, draw a flowchart in text.
License
MIT
Instructions
101 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (5)

  • SKILL.md
  • Block Elements.md · references/
  • Box Art.md · references/
  • Drawing Essentials.md · references/
  • glyph.py · scripts/

SKILL.md (first lines)

# Glyph Canvas

## Overview

Turn drawing or diagram requests into monospaced output composed only from unicode glyphs. The three reference files in `references/` are the glyph palette; load them on demand instead of guessing characters from memory.

## Instructions

The three references are not equal in cost. `Drawing Essentials.md` is small and almost always sufficient. `Block Elements.md` and `Box Art.md` are comprehensive and should be loaded only when the request truly needs them.

### Reference loading policy

- Always read `references/Drawing Essentials.md` first. It covers the common cases: simple frames, arrows, axes, dots, stars, basic geometry.
- Additionally read `references/Box Art.md` only when the request needs frames, tables, trees, multi-segment borders, corner/T-junctions, nested boxes, or precise rounded/double-line styles.
- Additionally read `references/Block Elements.md` only when the request needs shading, fills, gradients, density bars, sparkline-style visualizations, or pixel-style art.
- Never read the heavy references "just in case" — context budget matters.

### Workflow

1. Parse the request and identify primitives needed: boxes, arrows, axes, fills, glyph motifs, labels.
2. If canvas dimensions are unstated and the drawing is non-trivial, ask the user for max width and height before composing.
3. Read `references/Drawing Essentials.md`.
4. Apply the reference loading policy. Read `references/Box Art.md` and/or `references/Block Elements.md` only if their domain is involved.
5. Compose on a single-cell-width grid. After composing, normalize every row with `python3 skills/glyph-canvas/scripts/glyph.py pad` (pipe the draft on stdin) instead of eyeballing column widths.
6. Validate before emitting. Run `glyph.py check` on the canvas to catch ragged rows, tabs, ANSI escapes, or control characters; fix any reported issues. For canvases with user-specified bounds, also run `glyph.py fit MAX_W MAX_H` and address any overflow before emitting.
7. Emit the drawing inside a fenced code block with no language tag (raw fences) so renderers preserve monospaced spacing.
8. Below the block, briefly note any glyph used that requires a broad-coverage font, or any deliberate stylistic choice (e.g. half-block shading used to fake a gradient).

### Helpers

A stdlib-only Python 3 helper at `scripts/glyph.py` provides deterministic primitives for width measurement, validation, padding, junction lookup, shading, layout, and diagnostics. Prefer running these helpers over inferring widths or picking junction glyphs from memory; they are cheap and do not count against the reference loading policy.

Invocation pattern:

```
python3 skills/glyph-canvas/scripts/glyph.py <subcommand> [args]
```

All subcommands accept text via a positional argument or stdin (use `-` to be explicit). Run `glyph.py <sub> --help` for the full argument list of any subcommand.

Most-used subcommands:

- `width [TEXT]` — true display width of a string (emoji- and CJK-aware).
- `check [TEXT]` — validate a canvas; exits 1 with a structured list of issues if anything is wrong.
- `pad [--width N] [--fill C] [--align left|center|right] [TEXT]` — pad every row to uniform display width.
- `fit MAX_W MAX_H [TEXT]` — exits 0 if the canvas fits inside the box, 1 with overflow detail otherwise.
- `inspect [TEXT]` — full diagnostic: dimensions, rectangularity, issues, suspicious chars.
- `annotate [TEXT]` — print the canvas with a digit row under each line showing per-cell widths. Fastest way to debug misalignment.
- `junction TRBL [--style single|double|rounded|thick|ascii]` — correct junction glyph for a TRBL mask like `1101` (top, right, bottom, left).
- `box W H [--style ...] [--title T] [--title-align L|C|R] [--fill C]` — render an empty frame.
- `shade INTENSITY [--palette PAL]` / `hbar V MAX W [--palette PAL]` / `vbar V MAX H [--palette PAL]` / `sparkline V1,V2,... [--palette PAL]` — shading primitives; every palette is a per-call argument so callers can substitute their own.
- `table [--headers H1,H2,...] [--style ...] [--align ...]` — render a table from `|`-separated rows on stdin; borders are computed with the correct junctions.
- `wrap WIDTH` / `center WIDTH` / `truncate WIDTH [--ellipsis E]` — width-aware text layout.
- `classify CHAR` — describe a single character (codepoint, category, EAW, cell width, class bucket).
- `ascii-fallback` — substitute closest ASCII for box/arrow/block glyphs when ASCII-only is requested.
- `selftest` — internal smoke tests; exit 0 means the helper works on this Python.

Every helper function takes its style, palette, fill, alignment, and width thresholds as arguments — no hidden defaults to memorize. Pass `--no-emoji-wide` on width-related subcommands if you specifically need East-Asian-Width-only semantics.

### Output rules

- One glyph per cell. Do not mix single-width and double-width characters on the same row.
- Default to glyphs from `Drawing Essentials.md`; reach into the heavier references only when the simpler palette cannot express the request.
- Keep commentary outside the code block. Inside the fence, only the drawing.
- Prefer plain ASCII fallback glyphs (`-`, `|`, `+`) only when the user explicitly asks for ASCII; otherwise use the proper unicode forms. `glyph.py ascii-fallback` performs the substitution deterministically when needed.
- When uncertain about alignment, run `glyph.py annotate` or `glyph.py inspect` first. The digit row under each canvas line shows per-cell widths and pinpoints the offending column.

### Edge Cases

- If the request is ASCII-only, still works — pick the simplest glyphs and skip Box Art / Block Elements entirely. `glyph.py junction TRBL --style ascii` and `glyph.py box W H --style ascii` produce correct ASCII frames.
- If the request mixes emoji or CJK glyphs, flag double-width cell behavior and offer a single-width alternative before drawing. Use `glyph.py width` for true display widths and `glyph.py inspect` to spot mixed-width rows.
- If color or a continuous gradient is requested, emulate with shade blocks (`█ ▓ ▒ ░`) from `references/Block Elements.md` and state the monochrome limitation. `glyph.py shade INTENSITY`, `hbar`, `vbar`, and `sparkline` produce the correct glyphs deterministically and accept custom palettes via `--palette`.
- If the drawing cannot fit cleanly at the requested size — confirm with `glyph.py fit MAX_W MAX_H` — ask whether to scale down, crop, or simplify rather than producing a broken-aligned canvas.
- If a glyph from `Drawing Essentials.md` already satisfies the request, do not load the heavier references.
- Helper limitation: `glyph.py` approximates emoji ZWJ sequences, skin-tone modifiers, and Variation Selector-16 as the base codepoint's width. If precision on those specific cases matters, fall back to `annotate` + manual verification.

## Example

User: "draw a labeled box around the word HELLO"

Response:

```
┌───────┐
│ HELLO │
└───────┘
```

Only `Drawing Essentials.md` was needed; `Box Art.md` and `Block Elements.md` were intentionally not loaded.

## Testing

Run validation from anywhere:

```bash
skills/skill-creator/scripts/validate-skill.sh glyph-canvas
skills/skill-creator/scripts/validate-skill.sh glyph-canvas --strict
python3 skills/glyph-canvas/scripts/glyph.py selftest
```

From amarjeet/agent-skills, MIT.

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Sep 5, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from amarjeet

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get glyph-canvas running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying glyph-canvas?

CallGet help
Cite this page

glyph-canvas skill. Agent Mart. https://agentmart.dev/skills/amarjeet-glyph-canvas (last updated 2026-10-24)