A Claude Code plugin that turns the acronyms and jargon in Claude's own replies into a colour-coded glossary, rendered in the right-hand Artifact pane and refreshed in place.
↑ terms reveal as they're coined; colour = content hash, underline style = category (dotted acronym · solid product · wavy principle · dashed term).
Run /glossary (or just ask for a glossary, "decoder ring", "jargon panel",
"define the acronyms in view") and the glossary skill:
- Scans Claude's messages in the current conversation for acronyms, initialisms, domain jargon, and project-specific names.
- Defines each as used here — the local meaning, not the generic one when they differ.
- Publishes a theme-aware glossary Artifact to the side pane, giving every
term its own colour — a content hash of the word itself
(
SPEC.md, Colour Spec v3), de-conflicted so no two terms in a panel ever share a hue, in light and dark. - Re-run it and it redeploys to the same URL, so the pane updates in place
and marks newly added terms with a
newchip.
- Not a per-token live feed. Claude Code has no plugin surface that repaints a panel as text streams. Glossysplain refreshes on invoke (or when Claude proactively rebuilds it) — an on-demand, refresh-in-place glossary.
- The colours can't be painted onto words in the chat reply. The terminal
renders markdown, which has no per-word colour. The colour key lives in the
panel. Coloured jargon inside generated text is available as its own rendered
Artifact via
/glossary highlight.
glossysplain/
├── .claude-plugin/
│ ├── plugin.json # plugin manifest
│ └── marketplace.json # local marketplace (this repo hosts itself)
├── commands/
│ └── glossary.md # /glossary slash command
├── skills/glossary/
│ ├── SKILL.md # the skill logic
│ ├── template.html # glossary shell + colour/underline script
│ └── highlight-template.html # /glossary highlight prose shell
├── lib/store.mjs # shared term store engine (Phase 2)
├── hooks/ # UserPromptSubmit hook: capture user jargon
│ ├── hooks.json
│ └── capture-user-terms.mjs
├── mcp/server.mjs # MCP server over the term store (Phase 3)
├── .mcp.json # registers the MCP server
├── SPEC.md # Colour & Style Spec v4
├── STORE.md # shared term store design (Phase 2)
├── MCP.md # MCP server design (Phase 3)
├── ROADMAP.md # the full vision + phases
├── AUTO-MAINTAIN.md · CHANGELOG.md · LICENSE · README.md
Clone the repo, then from an interactive Claude Code session point Claude Code at the clone (the repo is both the marketplace and the plugin):
git clone https://github.com/aXL333/glossysplain.git/plugin marketplace add /path/to/glossysplain/plugin install glossysplain@glossysplainThen run /glossary or just ask for a glossary.
/glossary— build / refresh from the conversation so far/glossary clear— wipe and start fresh/glossary highlight— render a copy of the latest reply (or a scoped range, e.g.highlight last 3 replies) as a separate Artifact with jargon coloured by the same hash. The reachable form of "colour in the gen".- "refresh the glossary" / "give me a jargon panel" — same thing, in words
Live / auto-maintain: to keep the pane refreshing without asking each time,
see AUTO-MAINTAIN.md — either a per-turn CLAUDE.md instruction
or /loop 3m /glossary. (There's no plugin API for a self-updating panel; these
are the honest, behavioural ways to approximate one.)
Where this is going: ROADMAP.md — the full vision is inline highlighting of both your text and Claude's, with a matching glossary in a right-pane popout toggled by an icon. The content-hash colour spec already guarantees the colours match everywhere; the rest is harness surfaces that don't exist yet.
Each term has four visual channels (SPEC.md v4):
- Text colour — the FNV-1a-32 hash's low bits (
h % 24), de-conflicted per panel so ≤ 24 terms are all different hues, with a*11spread so they balance across the wheel (no purple clumping). - Underline style — the term's category:
dottedacronym ·solidproduct/brand ·wavyprinciple ·dashedgeneral term of art (priority principle > product > acronym > term). A legend in the panel decodes it. - Underline colour — the hash's high bits (
(h>>>16)%24), a second independent tint. - Gradient fill — each term fills as a hash-angled fade from its text hue to its underline hue (on by default; falls back to a solid text hue if a browser can't clip a gradient to text).
Colour maths is deterministic; the category is a judgment (borderline terms follow
the priority, default term). The palette is 24 hues, contrast-checked to WCAG AA
(≥ 4.5:1) in both light and dark.
