From groundwork
Builds and maintains a pure domain glossary so agents speak one language. Use when designing a product or feature lacking shared, agreed terminology.
How this skill is triggered — by the user, by Claude, or both
Slash command
/groundwork:domain-modelingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A project's agents are verbose and misaligned when they lack a shared language: the same concept gets three names, one name covers three concepts, and every prompt re-explains what a term means. A tight glossary fixes this — it collapses ambiguity and tokens at once.
A project's agents are verbose and misaligned when they lack a shared language: the same concept gets three names, one name covers three concepts, and every prompt re-explains what a term means. A tight glossary fixes this — it collapses ambiguity and tokens at once.
Core principle: the glossary is terminology only. One authoritative definition per term, and nothing else. It is never a spec, never an architecture doc, never a scratchpad. The moment an entry carries implementation detail or a design decision, it stops being a glossary and starts rotting.
The glossary lives at {{specs_dir}}/glossary.md.
{{specs_dir}}/glossary.md does not exist until the first term resolves. Do not scaffold an empty file or a placeholder. An empty glossary is sediment; create the file when you have a real first entry, not before.
Capture terms inline, as they crystallize during design and requirements work — never in a batch at the end. Batching loses the context that made the term precise.
Follow the entry format in the sibling. See CONTEXT-FORMAT.md.
A glossary entry records what a word means, not why a path was chosen. When resolving a term forces a real architectural trade-off, that's a decision record (see the decision-record gate in ${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md), not a glossary entry. Record it in the architecture doc via [[design-architecture]] and link the term to it. Do not narrate the decision inside the definition.
| Excuse | Reality |
|---|---|
| "I'll add the schema/endpoint so it's all in one place" | That makes it a spec. The glossary holds meaning only; implementation rots the entry out of sync. |
| "I'll collect all the terms at the end in one pass" | The precision came from the context you had when the term crystallized. Batching loses it. |
| "Both teams use the word slightly differently — I'll note both" | Two meanings is the bug, not the entry. One authoritative definition; redirect the rest. |
| "I'll explain why we defined it this way here" | Rationale belongs in the architecture decision record, not the glossary. The definition states what, not why. |
| "Let me stub an empty glossary so it exists" | Empty file = sediment. Create on the first resolved term. |
glossary.md committed before any term resolvedglossary.md exists only because at least one term has resolved; no placeholder entriesCONTEXT-FORMAT.md (Term, Definition, Relationships, Edge cases; alphabetical)npx claudepluginhub etr/groundworkExtracts a DDD-style glossary from the current conversation into UBIQUITOUS_LANGUAGE.md, flags ambiguities and synonyms, and proposes opinionated canonical terms.
Builds and sharpens a project's domain model by challenging terminology, recording architectural decisions, and writing a glossary. Use when defining domain language or making architectural decisions.
Extracts DDD-style ubiquitous language glossary from conversation, flags ambiguities, and proposes canonical terms. Saves to UBIQUITOUS_LANGUAGE.md.