agent analysis skill risk: low
DDD Ubiquitous Language Glossary Extractor
Extract domain terminology from the conversation, identify ambiguities and synonyms, propose canonical terms with definitions and relationships, write the glossary to UBIQUITOUS_LA…
- External action: low
SKILL 1 file
SKILL.md
--- name: ubiquitous-language description: "Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions \"domain mod" --- # Ubiquitous Language Extract and formalize domain terminology from the current conversation into a consistent glossary, saved to a local file. ## Process 1. **Scan the conversation** for domain-relevant nouns, verbs, and concepts 2. **Identify problems**: - Same word used for different concepts (ambiguity) - Different words used for the same concept (synonyms) - Vague or overloaded terms 3. **Propose a canonical glossary** with opinionated term choices 4. **Write to `UBIQUITOUS_LANGUAGE.md`** in the working directory using the format below 5. **Output a summary** inline in the conversation ## Output Format Write a `UBIQUITOUS_LANGUAGE.md` file with this structure: ```md # Ubiquitous Language ## Order lifecycle | Term | Definition | Aliases to avoid | | ----------- | ------------------------------------------------------- | --------------------- | | **Order** | A customer's request to purchase one or more items | Purchase, transaction | | **Invoice** | A request for payment sent to a customer after delivery | Bill, payment request | ## People | Term | Definition | Aliases to avoid | | ------------ | ------------------------------------------- | ---------------------- | | **Customer** | A person or organization that places orders | Client, buyer, account | | **User** | An authentication identity in the system | Login, account | ## Relationships - An **Invoice** belongs to exactly one **Customer** - An **Order** produces one or more **Invoices** ## 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** is confirmed. 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 concepts: a **Customer** places orders, while a **User** is an authentication identity that may or may not represent a **Customer**. ``` ## Rules - **Be opinionated.** When multiple words exist for the same concept, pick the best one and list the others as aliases to avoid. - **Flag conflicts explicitly.** If a term is used ambiguously in the conversation, call it out in the "Flagged ambiguities" section with a clear recommendation. - **Only include terms relevant for domain experts.** Skip the names of modules or classes unless they have meaning in the domain language. - **Keep definitions tight.** One sentence max. Define what it IS, not what it does. - **Show relationships.** Use bold term names and express cardinality where obvious. - **Only include domain terms.** Skip generic programming concepts (array, function, endpoint) unless they have domain-specific meaning. - **Group terms into multiple tables** when natural clusters emerge (e.g. by subdomain, lifecycle, or actor). Each group gets its own heading and table. If all terms belong to a single cohesive domain, one table is fine — don't force groupings. - **Write an example dialogue.** A short conversation (3-5 exchanges) between a dev and a domain expert that demonstrates how the terms interact naturally. The dialogue should clarify boundaries between related concepts and show terms being used precisely. <example> ## Example dialogue > **Dev:** "How do I test the **sync service** without Docker?" > **Domain expert:** "Provide the **filesystem layer** instead of the **Docker layer**. It implements the same **Sandbox service** interface but uses a local directory as the **sandbox**." > **Dev:** "So **sync-in** still creates a **bundle** and unpacks it?" > **Domain expert:** "Exactly. The **sync service** doesn't know which layer it's talking to. It calls `exec` and `copyIn` — the **filesystem layer** just runs those as local shell commands." </example> ## Re-running When invoked again in the same conversation: 1. Read the existing `UBIQUITOUS_LANGUAGE.md` 2. Incorporate any new terms from subsequent discussion 3. Update definitions if understanding has evolved 4. Re-flag any new ambiguities 5. Rewrite the example dialogue to incorporate new terms
REQUIRED CONTEXT
- the current conversation
ROLES & RULES
- Be opinionated.
- Flag conflicts explicitly.
- Only include terms relevant for domain experts.
- Keep definitions tight.
- Show relationships.
- Only include domain terms.
- Group terms into multiple tables when natural clusters emerge.
- Write an example dialogue.
EXPECTED OUTPUT
- Format
- markdown
- Schema
- markdown_sections · # Ubiquitous Language, ## [Domain cluster] (table), ## Relationships, ## Example dialogue, ## Flagged ambiguities
- Constraints
- use the exact section structure and table format shown
- include Flagged ambiguities and Example dialogue sections
- write the full glossary to UBIQUITOUS_LANGUAGE.md
- also output a short inline summary
SUCCESS CRITERIA
- Pick the best term and list others as aliases to avoid.
- Call out ambiguous terms with clear recommendations.
- Define what each term IS in one sentence.
- Express cardinality in relationships.
- Rewrite example dialogue on re-run to incorporate new terms.
EXAMPLES
Includes one example dialogue demonstrating precise term usage between Dev and Domain expert.
CAVEATS
- Dependencies
- current conversation
- existing UBIQUITOUS_LANGUAGE.md when re-running
- Ambiguities
- Initial YAML description is truncated at "domain mod"
QUALITY
- OVERALL
- 0.85
- CLARITY
- 0.85
- SPECIFICITY
- 0.90
- REUSABILITY
- 0.80
- COMPLETENESS
- 0.85
IMPROVEMENT SUGGESTIONS
- Add explicit instruction for creating UBIQUITOUS_LANGUAGE.md when the file does not yet exist on first run
USAGE
Copy the prompt above and paste it into your AI of choice — Claude, ChatGPT, Gemini, or anywhere else you're working. Replace any placeholder sections with your own context, then ask for the output.
MORE FOR AGENT
- Comprehensive Codebase Bug Analysis and Fixeragentanalysis
- DHDNA Cognitive Pattern Profileragentanalysis
- CLAUDE.md Repo Generator Updateragentanalysis
- Competitor Analysis and Differentiation Strategistagentanalysis
- Porter's Five Forces Industry Analyzeragentanalysis
- Codebase Wiki Researcheragentanalysis
- PESTLE Macro Environment Analystagentanalysis
- Phylogenetics Analysis Pipelineagentanalysis
- System Performance Profiling Assistantagentanalysis
- Behavioral User Segmentation Analystagentanalysis
- System Performance Profiler with Instrumentationagentanalysis
- Product SWOT Analysis Generatoragentanalysis
- Glycoengineering Sequence Analysis Toolkitagentanalysis
- Seaborn Statistical Visualization Referenceagentanalysis
- scikit-bio Bioinformatics Analysis Skillagentanalysis
- User Feedback Sentiment Segment Analyzeragentanalysis
- SHAP Model Interpretability Guideagentanalysis
- Website SEO Audit with Subagent Delegationagentanalysis
- North Star Metric Classifier and Validatoragentanalysis
- SEO Content E-E-A-T Quality Analyzeragentanalysis
- Codebase Architecture Deep Analyzeragentanalysis
- ETE3 Phylogenetic Tree Toolkit Guideagentanalysis
- Codebase Architecture Code Path Traceragentanalysis
- Bitcoin Lightning Network Design Revieweragentanalysis
- ML Experiment Results Analyzeragentanalysis