From skill-set
Maintains a project's domain glossary in CONTEXT.md and architecture decisions in docs/adr/ as living artifacts — files are created lazily, updated inline as terms resolve and decisions crystallize, and conflicts with existing entries are surfaced immediately. Use this skill whenever a domain term is being pinned down, a decision sounds ADR-worthy, or vocabulary is about to drift — phrases like "domain glossary", "context.md", "we should write this down", "let's name this", "what do we call this", "is this worth an ADR", "pin down this term" — and as a side-effect of grilling-plans when terms or decisions surface.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skill-set:building-shared-vocabularyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A project's **domain glossary** (`CONTEXT.md`) and **architecture decision records** (`docs/adr/`) are not documentation written after the fact — they are operational artifacts that the agent reads to stay aligned with the project, and updates inline as the conversation produces new shared meaning.
A project's domain glossary (CONTEXT.md) and architecture decision records (docs/adr/) are not documentation written after the fact — they are operational artifacts that the agent reads to stay aligned with the project, and updates inline as the conversation produces new shared meaning.
Core principle: Vocabulary is built up one resolved term at a time, in the moment the resolution happens. Batched glossary writes go stale.
CONTEXT.mdis a domain artifact, not an agent directive.guarding-agent-directivesdoes not apply — that skill protectsCLAUDE.md/AGENTS.mdand the documents they reference. This skill ownsCONTEXT.mdanddocs/adr/.
guarding-agent-directives first)understanding-code-contextThis skill supports a single root CONTEXT.md and a single docs/adr/ directory. Multi-context monorepos (per-bounded-context glossaries, CONTEXT-MAP.md indexes) are out of scope; if a project genuinely needs them, that's a future enhancement.
Create files only on first real demand. An empty CONTEXT.md signals "this project has no shared vocabulary," not "no vocabulary surfaced yet" — speculative skeletons mislead future readers and the agent itself.
| Trigger | Create |
|---|---|
| First domain term gets resolved | CONTEXT.md at repo root |
| First decision meets the ADR bar | docs/adr/0001-<slug>.md |
If the file already exists, append to it; never overwrite or reorder existing entries silently.
CONTEXT.md inlineWhen a term is resolved during conversation, update CONTEXT.md right away — not at the end of the session. Use the format in reference/context-format.md.
Rules:
When the user uses a term that conflicts with an existing CONTEXT.md entry, stop and surface it before continuing:
"
CONTEXT.mddefines Cancellation as the user-initiated revocation. You're using it for the system-initiated timeout. Do we update the definition, or do we need a new term?"
Do not silently let the conflict pass. The conflict is the reason vocabulary exists.
Offer an ADR only when all three are true:
If even one is missing, do not offer an ADR. "We picked Postgres because we know Postgres" is not an ADR.
Use the format in reference/adr-format.md. Number sequentially (0001-, 0002-, …). Filename slug should be a noun phrase (0007-event-sourced-orders.md).
term resolved during conversation
→ conflict with existing CONTEXT.md entry? yes → surface, resolve
→ update CONTEXT.md inline
decision made during conversation
→ hard-to-reverse? no → skip
→ surprising-no-context? no → skip
→ real trade-off? no → skip
→ all yes → offer ADR; on accept, write docs/adr/NNNN-<slug>.md
CONTEXT.md and ADRsWhen this skill is invoked or when the agent enters a project for code work, read these files first if present:
CONTEXT.md at repo root (if exists)docs/adr/*.md in the area being touched (don't over-read; pull only ADRs whose titles match the area)Use the vocabulary from CONTEXT.md in:
reference/context-format.md — exact format for a CONTEXT.md entry, with examplesreference/adr-format.md — exact ADR template and the three-criterion check| Symptom | Cause | Fix |
|---|---|---|
CONTEXT.md is bloated with implementation terms | Adding non-domain terms | Remove anything that wouldn't appear in a conversation with a non-engineer domain expert |
| Many ADRs over a short period | Bar set too low | Re-check each against the three criteria; demote ADRs that fail any |
| Same concept has multiple ADRs | No conflict surfacing | When updating, search ADR titles first; if related, supersede the older one explicitly |
CONTEXT.md and code disagree | Code drifted, glossary didn't | Surface as a contradiction (this is exactly the signal grilling-plans Rule 4 catches) |
| Multi-context monorepo wants per-domain glossaries | Out of scope for this skill | Use a single root CONTEXT.md with section headers per bounded context as a stopgap; raise as an enhancement |
npx claudepluginhub ether-moon/skill-set --plugin skill-setCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.