From claude-leverage
Bootstraps or extends GLOSSARY.md with user-curated domain term definitions, surfaced by identifier frequency. Idempotent: re-running adds new terms without overwriting. Prevents agent term hallucination.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-leverage:glossary-init [--top N] [--lang python|typescript|go|rust|auto] [--add term] [--noninteractive][--top N] [--lang python|typescript|go|rust|auto] [--add term] [--noninteractive]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Bootstraps (or extends) `GLOSSARY.md` at the repo root — a human-curated
Bootstraps (or extends) GLOSSARY.md at the repo root — a human-curated
dictionary of domain terms specific to this repo. One entry per term:
1–2 sentence definition, optional aliases, optional code-path pointers.
The point: the next agent opening this repo greps GLOSSARY.md once
and stops hallucinating that "Lead" means a sales prospect when here
it means a journalist's article lead. Reading source to recover
domain meaning per session is O(N) tokens per term; a one-line glossary
entry is O(1).
This skill surfaces candidate terms (by frequency of identifier appearance in tracked code). It never invents definitions — the user types them, the skill structures the file. See ADR 0005 for the rationale.
/init-repo).Lead is a sales prospect" — no, it's a
journalist's article).Do NOT invoke for:
Resolve repo root. git rev-parse --show-toplevel. If not in a
git repo, STOP and report: "glossary needs a tracked repo; git init first or run /init-repo".
Detect mode.
GLOSSARY.md does not exist at root → bootstrap mode.GLOSSARY.md exists and $ARGUMENTS includes --add <term> →
single-add mode (skip candidate ranking, jump to step 6 for
that one term).GLOSSARY.md exists and no --add → extend mode: surface
candidates that aren't already in the existing file, propose
additions.Detect primary language by file extension counts in tracked
files (git ls-files | head -2000):
.py → Python.ts / .tsx / .js / .jsx → TypeScript / JavaScript.go → Go.rs → Rust--lang.Walk identifiers. From git ls-files (skip generated paths,
tests, vendor, node_modules, __pycache__, dist, build,
.git, bench/), extract identifiers via language-aware patterns:
class\s+([A-Z][A-Za-z0-9_]+) (classes — high signal),
def\s+([a-z_][a-z0-9_]+) (functions — medium signal). Domain
terms are usually classes / type aliases / dataclasses, not
ordinary functions.(?:class|interface|type|enum)\s+([A-Z][A-Za-z0-9_]+).type\s+([A-Z][A-Za-z0-9_]+)\s+(?:struct|interface).(?:struct|enum|trait|type)\s+([A-Z][A-Za-z0-9_]+).Count occurrences across the repo (not just declarations — also usage). The more a term is referenced, the more load-bearing.
Filter and rank. Drop:
BaseModel, Exception, HTTPException, Error,
Request, Response, Client, Config, Settings).Get, Set, Create,
Update, Delete alone).Http, Json, Sql, Db, Aws, Gcp, Azure).Rank remaining by occurrences * log(distinct_files) — terms that
appear in many places AND many files are more central than a term
used 50 times in one file.
Cap candidates at --top N (default 30).
Surface candidates (skip in --add mode):
I found these load-bearing domain terms in <repo>:
1. Tenant (47 refs across 12 files) — e.g. src/auth/tenant.py:14
2. Invoice (38 refs across 8 files) — e.g. src/billing/invoice.py:8
3. Lead (29 refs across 6 files) — e.g. src/content/lead.py:22
...
Pick which to include (numbers separated by spaces, "all", or "skip").
In --noninteractive mode, include the top 15 with <TODO: definition>
placeholders so the user fills them later. Mark such entries with
an HTML comment <!-- claude-leverage:glossary-todo --> so future
runs can spot them.
For each picked term, prompt:
In --noninteractive, fill definition with <TODO> placeholder.
Write GLOSSARY.md.
<!-- claude-leverage:glossary v1 -->
# Glossary
Domain terms specific to this repo. Hand-curated. Update via
`/glossary-init --add <term>` or by editing this file directly.
Read this **before** assuming a term means what it does elsewhere —
domain vocabulary diverges between projects.
## Tenant
A customer organization. One Tenant → many Users. Distinct from
"Account" which is the billing entity.
- Aliases: org, organization
- Code: `src/auth/tenant.py`, `src/billing/account.py`
## Invoice
<definition>
Entries are sorted alphabetically by term (case-insensitive). Each
entry is one H2 + body + optional bullet list. The H1 + intro
paragraph + claude-leverage:glossary v1 marker are written exactly
once on bootstrap; subsequent runs preserve them.
Update AGENTS.md (idempotent, ask before write). If
AGENTS.md exists at root and doesn't already mention GLOSSARY.md,
offer to append a one-line pointer at the end of the "Code
conventions" section:
### Domain glossary
Domain terms specific to this repo live in [`GLOSSARY.md`](GLOSSARY.md).
**Grep there before assuming** what a term means — domain vocabulary
diverges between projects.
Skip if --no-update-agents-md is passed.
Report. Print the new path, count of entries added, count of
<TODO> placeholders remaining. Remind the user that ranking is
just a starting point; entries can be added by hand or via
--add <term> at any time.
<TODO> placeholders
(--noninteractive). LLM-generated definitions are exactly the
problem this skill exists to prevent — see ADR 0005.GLOSSARY.md by hand.<!-- claude-leverage:glossary v1 --> is load-bearing — future
versions of this skill use it to detect format.--top N — surface top N candidates (default 30, hard cap 100).--lang python|typescript|go|rust|auto — language to scan (default
auto-detect by file count). auto runs all detected.--add <term> — skip candidate ranking; add this single term
interactively. Useful when you notice a missing term mid-session.--noninteractive — write top 15 candidates with <TODO>
placeholders for definitions; no prompts.--no-update-agents-md — skip the AGENTS.md pointer step.--target <path> — non-default file location (default
<repo-root>/GLOSSARY.md).Same SKILL.md ships in Codex via scripts/install-codex.sh. The Codex
host reads identifiers the same way and writes the same
GLOSSARY.md format. No tool-specific divergence.
/stack-check could be extended to validate GLOSSARY.md against
the v1 marker, flag entries with <TODO> placeholders, and warn on
entries whose Code: paths no longer exist. Tracked as a future
enhancement, not part of this skill./init-repo could prompt for glossary bootstrap on first run for
domain-heavy projects. Future enhancement.npx claudepluginhub filip-podstavec/claude-leverage --plugin claude-leverageCreates and maintains a Markdown glossary of project-specific terms in docs/glossary.md to prevent ambiguities. Identifies key terms from code/docs, defines with context, links to code, and keeps updated. Useful for team vocabulary alignment.
Captures canonical definitions of domain terms in CONTEXT.md along with NOT-references to resolve ambiguity. Useful during interviews, spec reviews, or anytime a fuzzy word needs a single authoritative meaning before its sense drifts.
Defines the domain glossary convention via a CONTEXT.md file to ensure consistent terminology across specs, plans, and code. Use when a project has or needs a shared vocabulary.