From sdd
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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdd:glossaryhaikuThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Lazy utility that fixes the meaning of a domain term in `CONTEXT.md` the moment it first surfaces, so its sense doesn't drift across the pipeline. For each term it captures a one-sentence canonical definition and — when the word is ambiguous — a **NOT-reference** naming the concept it's confused with. Runs anytime, with no upstream gate: a single term mid-interview, an `undefined-term` finding ...
Lazy utility that fixes the meaning of a domain term in CONTEXT.md the moment it first surfaces, so its sense doesn't drift across the pipeline. For each term it captures a one-sentence canonical definition and — when the word is ambiguous — a NOT-reference naming the concept it's confused with. Runs anytime, with no upstream gate: a single term mid-interview, an undefined-term finding clarify resolves mid-sweep, or a batch handed over by specify. The output feeds specify (role + domain-term names) and design (invariants), which treat ## Glossary as canonical and override anything that contradicts it.
This is a capture utility, not a Socratic stage — it does not run the shared Socratic loop or critic. The one shared dependency is question phrasing:
→ ../_shared/ask-style.md
Whoever drives the conversation — anyone who spots ambiguity. Tech Lead approves the canonical form when a term is contested.
<term> — the domain word/phrase to fix. If not given, ask for it.<slug> — feature slug; targets docs/features/<slug>/CONTEXT.md. Absent → repo-root CONTEXT.md.pending_glossary_terms — a batch handed over by specify after it writes the spec. Process each term in turn.undefined-term finding from clarify — clarify invokes this skill mid-stream, one term at a time, the moment such a finding is Resolved (it never invents a meaning inline; the canonical definition lands here).<slug> is given → docs/features/<slug>/CONTEXT.md. Otherwise → repo-root CONTEXT.md. One glossary per file; don't split a term across both.<term> is technical, not a domain word — its choice belongs in the SAD or an ADR, not the glossary». Continue only for genuine domain vocabulary.test -f <target>. Missing → copy ./templates/CONTEXT.md to <target>. Present → read it.grep -i "^- <term>" <target>.
AskUserQuestion (phrasing per ../_shared/ask-style.md): «<term> is already defined as <existing> — same concept or a different one?». If different, propose a disambiguating pair of names (e.g. a billing-scoped vs a runtime-scoped variant) and fix both.AskUserQuestion: «Define <term> in this domain, in one sentence». Offer interview/brainstorm phrasings as options when available; otherwise free text.AskUserQuestion: «Which concept does <term> get confused with, so a future reader doesn't mix them up?». No plausible homonym → None.- <term> — <one-sentence definition>. NOT <confused concept + how it differs>. — or, when step 6 = None, - <term> — <definition>.## Glossary. Read the file, insert the line in ## Glossary (alphabetical if the section is already sorted, else at the end). Never rewrite existing entries.## Invariants / ## Out of scope if they hold no real content — only ## Glossary is mandatory. (A genuine invariant or out-of-scope note goes in its section, never as implementation detail.)updated_at: <today> in the frontmatter. Propose context: + <term> (or context: + <term>, <term2> for a batch). May fold into the caller's intake/spec commit. Then emit the stage-handoff block per ../_shared/handoff.md (utility variant) — What I did + Review (CONTEXT.md) + Run next: resume your backbone stage (e.g. /sdd:design <slug>); /clear optional.<target> exists and contains <term> under ## Glossary in the «one-sentence canonical + optional NOT-reference» format.## Glossary remains.updated_at reflects today; a commit is proposed../templates/CONTEXT.md — output scaffold; inline comments are the per-section contract (Glossary mandatory, Invariants/Out-of-scope pruned when empty).../_shared/ask-style.md — phrasing for the definition / NOT-reference / conflict questions.User: «add term tenant for rate-limiting-per-user» Skill:
<slug>given → targetdocs/features/rate-limiting-per-user/CONTEXT.md. Generic filter:tenantis domain → continue. File missing → copy template.grep "^- tenant"→ not found. Definition Q → «a billable customer organisation owning 1+ users». NOT-reference Q → «NOT user — a user is one person inside a tenant». Compose- tenant — a billable customer organisation owning 1+ users. NOT user (a user is one person inside a tenant).→ append under## Glossary→ prune empty## Invariants/## Out of scope→updated_at: 2026-05-28→ commitcontext: + tenant.
npx claudepluginhub genkovich/sdd --plugin sddExtracts canonical domain terms into CONTEXT.md, flags ambiguities and synonyms. Use when authoring or updating CONTEXT.md or when a new domain term emerges.
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.
Creates 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.