Glossary
SkillDev toolsLets your agent look up, add, and audit terms in a project glossary file.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Glossary skill
About this capability
Look up, add, or audit Chatto terms in docs/GLOSSARY.md.
What this skill tells your AI
The instructions your AI receives, as published by chattocorp/chatto in .agents/skills/glossary/SKILL.md and read by ahel’s review.
The canonical vocabulary for Chatto. Lives at docs/GLOSSARY.md, organised into four sections — UI, Product, Authorization, Backend — siblings of FDRs and ADRs.
What the Glossary Is
- A reference for what a word means in Chatto's context — internal jargon, product nouns, renamed concepts, acronyms.
- A naming surface: when there's a thing-without-a-name, we add it here first. The glossary leads, the code follows. If a file or component disagrees with the glossary, the file is what should rename.
- One line per entry, occasionally one short paragraph. Longer concepts link to the FDR/ADR/rules file that owns them.
What the Glossary Is NOT
- NOT a tutorial. Don't explain how something works — FDRs, ADRs, and the relevant
docs/architecture/inventory are for that. - NOT an API reference. No function signatures, no transport-specific API types, no proto fields.
- NOT a dictionary of standard tech terms. Define "Republish" (a Chatto-specific use of a JetStream feature). Don't define "PostgreSQL" or "WebSocket".
- NOT a changelog. When a term is renamed, rewrite the entry. Don't append "previously known as…" unless old names still appear in stable identifiers (stream names, KV keys, config keys).
Sections
- UI — visible surfaces and component groupings (Server Gutter, Server Sidebar, Room View, Room Sidebar, Composer, Pane Header, etc.).
- Product — user-facing concepts. If a user might say the word, it goes here (Server, Space, Room, DM, Thread, Mention, Reaction, …).
- Authorization — RBAC vocabulary. Roles, permissions, ranks, scopes (Role, Permission, Position, Rank, Outranking, Owner/Admin/Moderator/Everyone, Scope, DM Privacy Boundary).
- Backend — infrastructure jargon. If only contributors say the word, it goes here (ChattoCore, NATS, JetStream, Stream, KV, Subject, Live Event, OCC, Nanoid, Crypto-shredding).
Where does a term go?
Rule of thumb: section by who-uses-the-word.
- Users say it → Product or UI.
- Only contributors say it → Backend or Authorization.
- It names a visible thing → UI.
Apply the rule once and don't re-litigate. A term lives in one section. Cross-reference within an entry's body if useful (e.g. Echo in Product references the message.echo permission, which lives in Authorization implicitly).
Within a section: conceptual order, not alphabetical
Order foundational terms first, derivatives after. Reader builds up the model in the order it makes sense.
- Authorization opens with RBAC → Role → Permission → Position → Rank → Outranking. Then the named roles (Owner, Admin, Moderator, Everyone). Then edge concepts (Scope, User-level override, DM Privacy Boundary).
- Product opens with the structural nouns (Server → Space → Room → Room Group → DM), then content (Message, Thread, Echo, Reaction, Mention, Attachment, …), then ambient features (Presence, Typing Indicator, …).
- UI opens with the named sidebars in left-to-right reading order (Server Gutter → Server Sidebar → Room View → Room Sidebar), then in-pane elements (Composer, Pane Header), then secondary surfaces (Quick Switcher, Slideover, Hint, Panel).
- Backend opens with ChattoCore (the API/core boundary), then NATS/JetStream/Stream/KV/Subject (the storage substrate), then derived concepts (Event, Live Event, Republish, OCC, Nanoid, Crypto-shredding).
When adding a new entry: insert at the position its dependencies suggest, not alphabetically.
Entry Format
**Term** — One-line definition. Link to the relevant FDR/ADR/rules file if there is one.
- Bold the term itself.
- For acronyms, expand on first mention:
**FDR (Feature Decision Record)** — …. - Cross-link rather than re-explain:
[FDR-007](fdr/FDR-007-direct-messages.md),[ADR-005](adr/ADR-005-hierarchy-wins-rbac.md),`.claude/rules/authorization.md`.
How To Run
Mode 1: Look up a term
When invoked with one or more terms (e.g. /glossary echo or /glossary echo, primary space):
- Search
docs/GLOSSARY.mdfor each term (case-insensitive). - Print the matching entries verbatim, along with the section they belong to.
- If a term isn't found, suggest the closest existing entries and offer to add one.
Mode 2: Add a term
When invoked with add <term> (e.g. /glossary add room sharding):
- Confirm the term doesn't already exist. A near-duplicate is worth flagging — propose updating the existing entry instead.
- Research the term in the codebase, FDRs, ADRs, and
.claude/rules/so the definition is grounded. - Draft a one-line definition. Decide which section it belongs in using the rule-of-thumb above. Offer both to the user for approval before writing.
- Insert in conceptual order within the chosen section. Cross-link any related FDR/ADR/rules file.
Mode 3: Audit (default, no args)
When invoked without arguments:
- Read
docs/GLOSSARY.mdend-to-end. - Cross-reference each entry against its cited FDR/ADR/rules file — flag dead links or claims that no longer hold.
- Scan
docs/fdr/INDEX.md,docs/adr/INDEX.md,.claude/rules/, and recent commits for terms used as jargon but not in the glossary (heuristic: capitalised nouns, hyphenated phrases, repeated quoted strings). Limit the proposal list to ~10 strongest candidates. - Report:
- Stale entries — definitions contradicted by current code/docs.
- Dead links — references to renamed or removed files.
- Misplaced entries — terms that belong in a different section per the rule-of-thumb.
- Missing terms — top candidates worth adding, with a section + one-line draft for each.
- Propose-only: don't apply edits without user approval.
Audit Heuristics
When scouting for missing terms:
- Words that changed meaning recently (e.g. Server used to be Instance) almost always deserve an entry.
- Words that appear across multiple FDRs/ADRs with assumed shared meaning are strong candidates.
- Acronyms and abbreviations (RBAC, OCC, DM, KV, FDR/ADR, …).
- Words a reviewer asked about in PR review — if one human had to ask, others will.
- Things-without-names: a recurring noun phrase ("the right pane", "the small column on the left") signals a name is overdue. Naming such things is one of the glossary's jobs.
When not to add:
- Standard tech terms with no Chatto-specific meaning ("PostgreSQL", "WebSocket").
- Type names, function names, file paths — those belong in code, not a glossary.
- Anything one Google search would answer.
Workflow Notes
- Before any edits: read the existing
docs/GLOSSARY.md. The file is short enough to load entirely. - Cross-link aggressively: a glossary entry is most useful as a jumping-off point. If there's an FDR or ADR for the term, link it.
- One entry per concept, even with multiple names. Pick the canonical name as the heading; mention aliases in the body if useful (e.g.
**Server** — Top-level Chatto deployment. Formerly called *Instance* in the codebase.). - Glossary > code on naming: when an entry contradicts a component or file name in the codebase, note "(pending rename)" in the entry. The follow-up is to rename the code, not the entry.
Signals
- GitHub stars
- 3k
- Forks
- 121
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
glossary- Source
- github.com/chattocorp/chatto