About glyph-kit
A skill for creating aligned diagrams and figures from small JSON specifications using a dependency-free script. It serves researchers, analysts, designers, and documentation authors, with typed layouts and exports from text to HTML, SVG, PNG, and PDF.
Key features
- 01Render figures from JSON specs
- 02Choose from many diagram types
- 03Export text, HTML, SVG, PNG, and PDF
- 04Build decks and reports
- 05Validate data and label constraints
Use cases
- 01Visualize survey or interview findings
- 02Present metrics, funnels, or forecasts
- 03Map workflows, states, or roadmaps
- 04Create design reviews or status reports
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ alextraykov/ glyph-kit --skill glyph-kitAfter installing, type/glyph-kitin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
LICENSEREADME.mdagents/openai.yamlassets/DepartureMono-NOTICE.mdicon.svgexamples/decks/export-review.jsonmotion-audit.jsonusage-case.jsonexamples/live/report-loading.jsonreview-queue.jsonrework-loop.jsonsave-states.jsonsignup-funnel.jsonstaged-rollout.jsontest-readings.jsonexamples/product/design-system.map.jsonNotificationSettings.astrosettings.spec.jsonsettings.txtexamples/reports/motion-audit.jsonreference/areas/flows.mdhandoff.mdlayouts.mdmetrics.mdmotion.mdplanning.mdprocess.mdresearch.mdsystems.mdwireframes.mdDetails
From the project READMEGlyph kit
You write a spec, a small JSON object; a script with no dependencies draws it. The kit lays out every figure, so its output always lines up: never draw a figure by hand when a type covers it.
Work in the user's folder, not this skill's, so specs and outputs land there. <skill> below is this skill's folder; file paths in this guide are relative to it.
Make one
-
Pick the type from this table; it goes in the spec's
kindfield.The task is about Types Interviews, surveys, usability tests, quotes likertthemeMatrixaffinityquoteCardtaskStatsemotionCurveFunnels, retention, A/B results, metrics, charts funnelcohortabResultmetricPanelbarChartcompareforecastmetersparklineheatmapcalendarStripFlows with decisions, state machines, journeys, sitemaps flowbranchFlowstateMachinejourneyMaptreeRoadmaps, priorities, ownership, timelines, decisions boardimpactEffortswimlaneganttstatusKeydecisionLogScreens: one screen, an app shell, a card grid, list and detail, a modal screenresponsiveappShellcardGridlistDetailmodalTokens, scales, contrast, component states, layers spacingScaletypeScalecontraststateMatrixlayerStacktokenTabletableRedlines, QA checklists, component anatomy, before and after redlineqaChecklistanatomycompareMotion intent, timing, transitions, stagger, easing motionTimingintentCardtransitionSpecstaggerfilmstripeasingTableWork moving over time: rework loops, state machines, queues, rollouts, loading loopstatesqueuerolloutloadingA whole deliverable on one page: readout, dashboard, PR summary, design review, status update readoutdashboardprSummarydesignReviewstatusUpdateUnsure between two? Read the area's guide,
reference/areas/<area>.md(research, metrics, flows, planning, wireframes, systems, handoff, motion, process, layouts): it shows each type drawn. -
Get its data shape:
node <skill>/scripts/glyph-kit.mjs guide <kind>prints the kind's example spec and what to watch for. Copy that shape; don't read the scripts. -
Write the spec as JSON next to the document that uses it:
{ "kind": "funnel", "title": "Signup to paid, last 30 days", "intent": "Find the step where most people leave.", "source": "Product analytics export, 2026-10-15", "data": [{ "label": "Visited pricing", "value": 12400 }, { "label": "Paid", "value": 610 }] }Data comes from the user or their files (
"data": "@results.csv"reads a file next to the spec), never from you. If numbers are missing, ask. Only if the user wants a sketch anyway, startsourcewith "Illustrative": every format then carries a SAMPLE DATA stamp. A spec with numbers and nosourceis refused. -
Render, fix, render again in one command:
node <skill>/scripts/glyph-kit.mjs render spec.json --to markdown > figure.mdThe kit refuses a spec it can't draw truthfully and says why in a sentence. Labels over the limit (usually 24 cells) are cut with "…", and the kit lists each one on stderr with its limit. Shorten those labels and render again: a figure with "…" loses words.
-
Put the conclusion in the sentence around the figure. The figure supports it.
Kit output needs no further checking: frames close and widths fit by construction. Run node <skill>/scripts/lint.mjs <file.md> only on figures drawn by hand.
Other outputs
Every command is node <skill>/scripts/glyph-kit.mjs <command>.
| Output | Command | Read first |
|---|---|---|
| Text, Markdown | render spec.json [--to text|markdown] | nothing |
HTML page; a screen becomes a working prototype | render spec.json --to html [--map design-system.map.json] | reference/fidelity.md for prototypes and code |
| Deck | deck deck.json > deck.html | guide deck |
| Report (cover, summary, sections) | export report.json --to html|pdf | guide report |
| MDX, SVG, PNG, PDF of anything | export <file> --to md|mdx|html|svg|png|pdf | reference/export.md |
| Moving diagram: a process over time | live spec.json --to html (or --to markdown for its still) | reference/live.md |
| Several layouts as one document | export layouts.json --to html|pdf, a layout to a page | reference/areas/layouts.md |
HTML outputs are self-contained (font, styles and, for moving pages, the player inlined): 40–200 KB. Don't read them back to check them; render the same spec --to text instead. PDF and PNG use a Chromium browser already on the machine; everything else needs nothing.
When another agent or a later turn needs the figure, pass the spec (a few hundred bytes), not the drawing. If a drawing must go into a model's context, add --compact (plain ASCII, same layout).
Rules
- Every glyph has a referent: a number, a state or a structure. No decoration, no green-on-black or glyph rain unless the product is a terminal.
- One meaning per glyph per document.
█measured or done,░projected or the empty part of a scale,·an empty cell. - Numbers are printed as text next to the glyphs, and every figure with numbers shows its source.
- Labels may use any script. Width is counted in cells: CJK takes two. Set
langfor casing and number format. Font and right-to-left limits:reference/characters.md. - Every type moves in HTML and decks. The processes and a test result with readings over time keep moving; every other type arrives once, in the order that carries its point, then stays still. Each keeps a still that makes the same point; it is what reduced motion, print and Markdown show. Say what the motion shows in the sentence next to it.
- Drawing by hand (only when no type fits): use the glyphs in
reference/characters.md, followreference/layout.md(two cells of padding inside a box, four between boxes, at most 80 columns), then lint. - Going up in fidelity (prototype, production code): use only the components and tokens the design-system map names, and ask when it has no entry.
reference/spec.mddescribes the spec fields and the map.
If figures look misaligned where the user reads them, the font is drawing a glyph at the wrong width: suggest Departure Mono (free, departuremono.com), never require it.