kramme-cc-workflow/skills/kramme:docs:ubiquitous-language/SKILL.md
Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md at the repo root. Use when the user wants to define domain terms, build a glossary, harden terminology, or mentions 'ubiquitous language' or 'DDD'. Not for general programming concepts (array, function, endpoint), code-level type/class glossaries, or per-feature naming inside a single module.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:docs:ubiquitous-languageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Extract a project's domain vocabulary into a single canonical glossary at UBIQUITOUS_LANGUAGE.md. Flag overloaded terms (one word, two concepts) and synonyms (two words, one concept). Pick canonicals; list rejected aliases.
This skill writes or updates a repo-root glossary, so it runs only after explicit user invocation.
A glossary pass is warranted when any of these are true:
Route elsewhere if:
/kramme:discovery:interview. This skill captures vocabulary; it does not interview./kramme:docs:feature-spec. That skill names a feature; this one names the domain.Before drafting, check whether the project already has a glossary at the repo root (the VCS top level; ask if ambiguous, e.g. in a monorepo).
UBIQUITOUS_LANGUAGE.md if it exists. If it exists but does not parse as the expected format, emit a CONFUSION marker and ask before merging — do not overwrite a file you cannot read.GLOSSARY.md exists instead, emit a CONFUSION marker and ask the user whether to migrate it to UBIQUITOUS_LANGUAGE.md or keep the existing filename.If no glossary exists, state the target path (UBIQUITOUS_LANGUAGE.md at the repo root) and a brief outline of the terms you will capture, then ask the user to confirm before writing the new file. If the runtime cannot ask, stop before writing and return the proposed outline inline.
The glossary file uses this template. Subdomain sections are optional — use one when terms cluster, omit when the project is small enough that one table suffices.
# Ubiquitous Language
> Canonical domain vocabulary for this project. Use these terms in code, docs, specs, and conversation. Re-generate or extend with `/kramme:docs:ubiquitous-language`.
## <Subdomain name>
| Term | Definition | Aliases to avoid |
| --- | --- | --- |
| **CanonicalTerm** | One sentence describing what it means in this domain. | `synonym1`, `synonym2` |
## Relationships
- **Term A** has many **Term B**.
- **Term C** is a kind of **Term D**.
- **Term E** triggers **Term F**.
## Example dialogue
> **Domain expert:** When a customer places an order, …
>
> **Engineer:** So the Order is created with a draft status until …
>
> _(3–5 exchanges using ≥3 canonical terms)_
## Flagged ambiguities
- **"account"** — used for both the billing entity and the login identity.
- **Resolution:** canonical `BillingAccount` for the billing entity; canonical `UserIdentity` for the login. Update call sites incrementally.
- **"user" vs "customer"** — both used for the same actor.
- **Resolution:** canonical `Customer`. Drop "user" except in the auth context where it refers to a `UserIdentity`.
has many, is a kind of, triggers) is more useful than prose.function, array, endpoint, database, request, response — unless the project gives them a domain-specific meaning.Emit these markers as you draft. They are non-optional when the condition applies.
Gate drafting if no domain-relevant terms have surfaced in the conversation yet.
MISSING REQUIREMENT: no domain-relevant nouns surfaced in the conversation
Cannot draft a glossary from generic programming vocabulary alone. Ask the
user for 3–5 example domain terms or describe the project's subject area.
When the subdomain split is unclear, two existing files conflict, or an existing glossary cannot be parsed.
CONFUSION: terms cluster around both "billing" and "subscription" — these
may be one subdomain or two depending on whether subscriptions exist outside
billing. Ask the user before splitting.
Use when domain terms appear in the codebase or docs but were not surfaced in the current conversation. Do not silently expand scope.
NOTICED BUT NOT TOUCHING: src/inventory/ uses "SKU", "Variant", "Bundle"
that are not in the current conversation
Why skipping: out of scope for this glossary pass; flag for a follow-up run
Ask the user before any of these:
UBIQUITOUS_LANGUAGE.md.GLOSSARY.md to the canonical filename.ASK FIRST: existing glossary canonicalizes "Account" for the billing entity.
The current conversation suggests renaming it to "BillingAccount" for clarity.
Confirm before changing committed canonicals?
When invoked again in the same conversation (or against an existing glossary):
ASK FIRST.Never overwrite blindly. If the merge would drop committed terms, emit ASK FIRST.
These are the lies you will tell yourself to skip or distort the glossary. Each has a correct response:
Stop and ask before writing if any of these are true:
Before declaring the glossary done, self-check:
UBIQUITOUS_LANGUAGE.md at the repo root (not a subdirectory).ASK FIRST.has many, is a kind of), not free-form prose.If any box is unchecked, finish the gap or revert before declaring done.
tools
Requires Linear MCP. Implements one Linear issue end to end, selects applicable code-review, convention, and PR-refactor gates, runs them to bounded convergence, verifies, and optionally opens the PR and iterates on CI and review feedback until green. Use when the user wants a single Linear issue taken from implementation through a clean Pull Request. Not for implementation-only work, SIW-tracked issues, stacked PRs, existing PR updates, or post-merge rollout.
development
Reviews PR and local changes for convention drift and overcaution against documented rules and mined peer-file practice. Use for new patterns, dependencies, abstractions, or defensive complexity that departs from established practice; every finding cites evidence. Supports --inline. Not for general code quality (use kramme:pr:code-review) or spec review (use kramme:siw:spec-audit --team).
testing
Charts huge or foggy initiatives into a local `.context` decision map and resolves one typed frontier ticket per session until the work is ready for SIW or another execution workflow. Use when the route to a destination cannot fit in one agent session or parallel workspaces need coordinated planning state. Not for clear specs, ordinary issue decomposition, implementation, or Linear-native tracking.
development
Investigates a question against primary sources and saves one cited Markdown artifact. Use for reading legwork: official docs/API facts, source-code or spec checks, standards, and first-party service behavior before planning or implementation. Not for making product or architecture decisions, implementing code, broad web search, secondary blog summaries, or uncited answers.