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.
development
Runs kramme:pr:code-review as a closeout review loop for local or PR branch changes before commit, ship, or final response. Use when the user asks for autoreview, second-model review, or a final code-review pass after non-trivial edits. Not for UX, visual, accessibility, or product review.
development
Guides topic-level understanding verification for a PR, branch, feature, document, spec, design decision, bug fix, or other concrete subject. Use when the user asks to confirm, quiz, drill, teach-and-check, or verify that they understand a topic. Maintains a topic-specific checklist artifact and requires demonstrated understanding before marking the topic complete. Not for ordinary explanations without verification, end-of-session summaries, or code/test correctness checks.
testing
Design a CI/CD pipeline with quality gates, a <10-minute budget, feature-flag lifecycle, and an exit checklist. Use when adding a new CI pipeline, changing gate configuration, or planning a rollout for a new service. Complementary to kramme:pr:fix-ci (which fixes failures in an existing pipeline). Covers gate ordering, secrets storage, branch protection, rollback mechanism, and staged-rollout guardrails — not a rollout-execution runbook.
tools
--- name: kramme:visual:demo-reel description: Capture local demo evidence for observable product behavior: screenshots, before/after image sets, browser reels, terminal recordings, and short GIF/video proof. Use when shipping UI changes, CLI features, or any change where PR reviewers would benefit from visual or behavioral evidence. argument-hint: "[what to capture] [--url <url>|auto] [--tier static|before-after|browser-reel|terminal-recording]" disable-model-invocation: true user-invocable: tr