mcpField
G
glyph-kit

glyph-kit

github.com/alextraykovDesign & UI7715 installsUpdated today
Repository

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

  1. 01Render figures from JSON specs
  2. 02Choose from many diagram types
  3. 03Export text, HTML, SVG, PNG, and PDF
  4. 04Build decks and reports
  5. 05Validate data and label constraints

Use cases

  1. 01Visualize survey or interview findings
  2. 02Present metrics, funnels, or forecasts
  3. 03Map workflows, states, or roadmaps
  4. 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-kit

After installing, type/glyph-kitin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

LICENSE
README.md
agents/
openai.yaml
assets/
DepartureMono-NOTICE.md
icon.svg
examples/decks/
export-review.json
motion-audit.json
usage-case.json
examples/live/
report-loading.json
review-queue.json
rework-loop.json
save-states.json
signup-funnel.json
staged-rollout.json
test-readings.json
examples/product/
design-system.map.json
NotificationSettings.astro
settings.spec.json
settings.txt
examples/reports/
motion-audit.json
reference/areas/
flows.md
handoff.md
layouts.md
metrics.md
motion.md
planning.md
process.md
research.md
systems.md
wireframes.md

Details

From the project README

Glyph 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

  1. Pick the type from this table; it goes in the spec's kind field.

    The task is aboutTypes
    Interviews, surveys, usability tests, quoteslikert themeMatrix affinity quoteCard taskStats emotionCurve
    Funnels, retention, A/B results, metrics, chartsfunnel cohort abResult metricPanel barChart compare forecast meter sparkline heatmap calendarStrip
    Flows with decisions, state machines, journeys, sitemapsflow branchFlow stateMachine journeyMap tree
    Roadmaps, priorities, ownership, timelines, decisionsboard impactEffort swimlane gantt statusKey decisionLog
    Screens: one screen, an app shell, a card grid, list and detail, a modalscreen responsive appShell cardGrid listDetail modal
    Tokens, scales, contrast, component states, layersspacingScale typeScale contrast stateMatrix layerStack tokenTable table
    Redlines, QA checklists, component anatomy, before and afterredline qaChecklist anatomy compare
    Motion intent, timing, transitions, stagger, easingmotionTiming intentCard transitionSpec stagger filmstrip easingTable
    Work moving over time: rework loops, state machines, queues, rollouts, loadingloop states queue rollout loading
    A whole deliverable on one page: readout, dashboard, PR summary, design review, status updatereadout dashboard prSummary designReview statusUpdate

    Unsure 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.

  2. 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.

  3. 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, start source with "Illustrative": every format then carries a SAMPLE DATA stamp. A spec with numbers and no source is refused.

  4. Render, fix, render again in one command:

    node <skill>/scripts/glyph-kit.mjs render spec.json --to markdown > figure.md
    

    The 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.

  5. 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>.

OutputCommandRead first
Text, Markdownrender spec.json [--to text|markdown]nothing
HTML page; a screen becomes a working prototyperender spec.json --to html [--map design-system.map.json]reference/fidelity.md for prototypes and code
Deckdeck deck.json > deck.htmlguide deck
Report (cover, summary, sections)export report.json --to html|pdfguide report
MDX, SVG, PNG, PDF of anythingexport <file> --to md|mdx|html|svg|png|pdfreference/export.md
Moving diagram: a process over timelive spec.json --to html (or --to markdown for its still)reference/live.md
Several layouts as one documentexport layouts.json --to html|pdf, a layout to a pagereference/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

  1. 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.
  2. One meaning per glyph per document. █ measured or done, ░ projected or the empty part of a scale, · an empty cell.
  3. Numbers are printed as text next to the glyphs, and every figure with numbers shows its source.
  4. Labels may use any script. Width is counted in cells: CJK takes two. Set lang for casing and number format. Font and right-to-left limits: reference/characters.md.
  5. 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.
  6. Drawing by hand (only when no type fits): use the glyphs in reference/characters.md, follow reference/layout.md (two cells of padding inside a box, four between boxes, at most 80 columns), then lint.
  7. 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.md describes 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.

Comments

Markdown supported