Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, audit codebase terminology, or mentions "domain model" or "DDD". Also triggers on "audit" with terminology context.
Extract and formalize domain terminology from the current conversation and codebase into a
consistent, DDD-style glossary. Saves to ubiquitous_language.md at the project root.
This skill has two modes:
/ubiquitous-language audit): Read existing glossary, walk the full codebase for violationsubiquitous_language.md at the project root. If it exists, merge new
terms and update definitions. Never silently drop existing terms. If a term previously marked
"Global" now has context-specific meanings, split it into separate rows.ubiquitous_language.md at the project root using the output format below.ubiquitous_language.md. If it does not exist, tell the user to run the
default mode first and stop.ubiquitous_language.md. Audit is read-only and report-only. The user
decides what to act on.Write ubiquitous_language.md following this concrete example:
# Ubiquitous Language
## Order Lifecycle
| Term | Context | Definition | Rationale | Aliases to avoid |
| --- | --- | --- | --- | --- |
| **Order** | Sales | A customer's request to purchase one or more items | Chosen over "purchase" — purchase implies completed payment | Purchase, transaction |
| **Order** | Fulfillment | A directive to warehouse to pick and ship items | Same word, different bounded context | Shipment request |
| **Invoice** | Billing | A request for payment sent to a customer after delivery | "Bill" is informal and ambiguous with legislative bills | Bill, payment request |
## People
| Term | Context | Definition | Rationale | Aliases to avoid |
| --- | --- | --- | --- | --- |
| **Customer** | Global | A person or organization that places orders | "Client" is ambiguous with API clients | Client, buyer, account |
| **User** | Auth | An authentication identity in the system | Distinct from Customer — a User may not be a Customer | Login, account |
## Relationships
- An **Order** (Sales) belongs to exactly one **Customer**
- An **Order** (Sales) produces one or more **Invoices** (Billing)
- A **User** (Auth) may or may not map to a **Customer**
## Example Dialogue
> **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
> **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** confirms the **Order**. A single **Order** can produce multiple **Invoices** if items ship in separate **Shipments**."
> **Dev:** "So if a **Shipment** is cancelled before dispatch, no **Invoice** exists for it?"
> **Domain expert:** "Exactly. The **Invoice** lifecycle is tied to the **Fulfillment**, not the **Order**."
## Flagged Ambiguities
- "account" was used to mean both **Customer** and **User** — these are distinct: a **Customer** places orders, a **User** is an auth identity that may or may not represent a **Customer**.
## Deprecated Terms
- `subscription` → use **Membership** — subscriptions imply recurring billing, ours are fixed-term
- `client` → use **Customer** (domain) or **API Consumer** (technical) — "client" is ambiguous across both
`old_term` → use **Canonical Term** — reason.When invoked again in default mode:
ubiquitous_language.md