Create or update a DDD-style glossary of domain terms in UBIQUITOUS_LANGUAGE.md.
Inspired by Matt Pocock's deprecated ubiquitous-language skill, MIT License, Copyright 2026 Matt Pocock:
https://github.com/mattpocock/skills/blob/main/skills/deprecated/ubiquitous-language/SKILL.md
Process
- Read the current conversation and extract domain-relevant nouns, verbs, roles, lifecycle states, workflows, and business concepts.
- If
UBIQUITOUS_LANGUAGE.mdalready exists in the working directory, read it first and update it rather than replacing it blindly. - Inspect nearby domain docs when useful:
CONTEXT.md,CONTEXT-MAP.md,docs/,docs/adr/,specs/, and README files. - Detect terminology problems:
- one word used for multiple concepts
- multiple words used for one concept
- vague, overloaded, or implementation-shaped terms
- code names that should not leak into the domain language
- Pick canonical terms. Be opinionated when the evidence is strong.
- Write or update
UBIQUITOUS_LANGUAGE.md. - Return a short summary of terms added, terms renamed, ambiguities flagged, and open questions.
Do not run an interview before writing the first draft. If something is unclear, document it in Open Questions.
File Format
Use this structure:
# Ubiquitous Language
## [Domain Area]
| Term | Definition | Aliases to avoid | Notes |
| --- | --- | --- | --- |
| **Canonical Term** | One-sentence definition. | Old name, vague synonym | Clarification or boundary note. |
## Relationships
- A **Term** belongs to exactly one **Other Term**.
- A **Workflow** moves from **State A** to **State B** when [domain event].
## Example Dialogue
> Dev: "Question using canonical terms?"
>
> Domain expert: "Answer using canonical terms and clarifying boundaries."
## Flagged Ambiguities
- `term` was used to mean both **Concept A** and **Concept B**. Prefer **Concept A** when [condition], and **Concept B** when [condition].
## Open Questions
- [Question that needs a domain expert decision.]
Rules
- Include only terms meaningful to domain experts.
- Skip generic programming terms unless the term has domain meaning in this project.
- Include operational short codes and abbreviations when domain users use them, such as
DNfor Delivery Note. - Do not treat an abbreviation as a separate concept when it is only a short name for a canonical term. Put it in
Aliases to avoidorNotes. - Include virtual business concepts when users rely on them operationally, even if they are not physical things.
- Do not include file paths, class names, or package names unless they are also real domain terms.
- Keep definitions to one sentence.
- Define what the term is, not how it is implemented.
- Group terms into natural domain areas when there are enough terms.
- Use a single table if the domain is still small.
- Use bold formatting for canonical terms in relationships and dialogue.
- In
Aliases to avoid, list words that should not be used for that concept. - If two terms are truly distinct, explain the boundary in
NotesorFlagged Ambiguities. - Do not invent business rules. Mark uncertain relationships as open questions.
Examples
Use examples like these as shape guidance. Do not copy them unless they match the current project.
## Logistics
| Term | Definition | Aliases to avoid | Notes |
| --- | --- | --- | --- |
| **Delivery Note** | A document that records goods delivered for a job, order, or shipment. | DN | `DN` is a short code, not a separate concept. |
| **Warehouse On Site** | A warehouse location or stock area that exists at an operational site. | WON | `WON` is a short code; confirm whether it means a place, a status, or both. |
| **Operational File** | A virtual folder used to group job-related documents, notes, and records. | File, physical folder | This is not necessarily a filesystem directory or physical file. |
Example relationships:
- A **Delivery Note** belongs to one **Job** or **Shipment**.
- An **Operational File** groups the documents and records needed to complete a **Job**.
- A **Warehouse On Site** may hold stock for one or more active operational workflows.
Example ambiguity:
- `File` may mean either an **Operational File** in the business workflow or a technical filesystem file. Use **Operational File** for the business concept.
Re-Running
When invoked again:
- Preserve stable accepted terms unless new context clearly invalidates them.
- Add new terms from the conversation or local docs.
- Tighten definitions that were previously vague.
- Move resolved ambiguities into canonical terms or notes.
- Keep unresolved ambiguities visible.
Final Response
After writing UBIQUITOUS_LANGUAGE.md, respond with:
Updated `UBIQUITOUS_LANGUAGE.md`.
Added:
- [Term]
Changed:
- [Term or "None"]
Flagged:
- [Ambiguity or "None"]
Open questions:
- [Question or "None"]