Skip to content
Back to skills

Ubiquitous Language

ASecurity

Extracts DDD ubiquitous language glossary, flags ambiguities, saves to UBIQUITOUS_LANGUAGE.md. Triggers: define domain terms, build glossary, harden terminology, DDD, domain model.

  • 177 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
developmentgoangulargitdocumentation

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add softspark/ai-toolkit --skill ubiquitous-language --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ubiquitous Language?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ubiquitous Language
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/softspark-ubiquitous-language/badge)](https://www.skillsdirectory.com/skills/softspark-ubiquitous-language)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ubiquitous-language
description: "Extracts DDD ubiquitous language glossary, flags ambiguities, saves to UBIQUITOUS_LANGUAGE.md. Triggers: define domain terms, build glossary, harden terminology, DDD, domain model."
user-invocable: true
effort: medium
argument-hint: "[domain or context to extract terms from]"
allowed-tools: Read, Write, Edit, Grep, Glob
---

# Ubiquitous Language

$ARGUMENTS

Extract and formalize domain terminology into a consistent glossary.

## Usage

```
/ubiquitous-language [domain or context]
```

## What This Command Does

1. **Scans** conversation for domain-relevant nouns, verbs, and concepts
2. **Identifies** ambiguities, synonyms, and overloaded terms
3. **Proposes** canonical glossary with opinionated term choices
4. **Writes** to `UBIQUITOUS_LANGUAGE.md`

## Process

1. Scan conversation for domain terms
2. Identify problems:
   - Same word used for different concepts (ambiguity)
   - Different words used for same concept (synonyms)
   - Vague or overloaded terms
3. Propose canonical glossary
4. Write to `UBIQUITOUS_LANGUAGE.md`
5. Output summary inline

## Output Format

```markdown
# Ubiquitous Language

## {Domain Group}

| Term | Definition | Aliases to avoid |
|------|-----------|-----------------|
| **Order** | A customer's request to purchase one or more items | Purchase, transaction |

## Relationships

- An **Invoice** belongs to exactly one **Customer**

## Example dialogue

> **Dev:** "When a **Customer** places an **Order**..."
> **Domain expert:** "..."

## Flagged ambiguities

- "account" was used to mean both **Customer** and **User** — ...
```

## Rules

- **MUST** be opinionated — pick the best term and list alternatives as aliases to avoid
- **MUST** flag every ambiguity (one word → two concepts) and every synonym (two words → one concept) with an explicit recommendation
- **MUST** write tight definitions (one sentence) that define what the term **is**, not what it does
- **NEVER** include generic programming concepts (array, function, endpoint, class) — this glossary is for the **domain**, not the toolchain
- **NEVER** silently overwrite an existing `UBIQUITOUS_LANGUAGE.md` — read the current file first, then update incrementally preserving prior decisions
- **CRITICAL**: show relationships with cardinality ("an Order belongs to exactly one Customer"). Vocabulary without relationships is a word list, not a language.
- **MANDATORY**: include 3-5 example dialogue exchanges showing correct usage. Abstract glossaries without dialogue rarely get adopted.

## Gotchas

- Domain terms often **overlap** with framework jargon (e.g., "Service" in DDD vs "Service" in Angular). If the framework already claims a term, prefer a domain-specific alternative to avoid collision.
- Stakeholders resist terminology change even when their current terms are ambiguous. "Account" replacing "User" triggers more discussion than expected — plan for negotiation in the example dialogue section.
- Glossaries rot when features ship without updating them. A `UBIQUITOUS_LANGUAGE.md` last updated 6 months ago is a snapshot, not a source of truth. Flag staleness in the header and re-run this skill periodically.
- Relationships between terms are easy to hand-wave with "related to". Pin down the cardinality (`0..1`, `1..*`, `1..1`) — vague relationships produce schema ambiguity later.
- The opinionated canonical choice may contradict marketing or legal language. Note conflicts explicitly rather than hiding them; the domain model and the marketing site can legitimately diverge.

## When NOT to Use

- For writing a **PRD** (full requirements) — use `/write-a-prd`
- For generating user-facing documentation — use `/docs`
- For implementation planning — use `/plan` or `/prd-to-plan`
- For enforcing language in commit messages or code reviews — use `/brand-voice` (distinct concern: writing style, not domain terms)
- When the project is a single-developer throwaway — glossary overhead is not justified

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…