yonatankarp/software-design-skills

ddd-ubiquitous-language

Use when establishing or auditing a domain's shared vocabulary — phrases like "ubiquitous language", "what should we call this concept", "the team uses different words for the same thing", "the code uses different names than the business".

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/yonatankarp/software-design-skills --skill ddd-ubiquitous-language

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

One-line summary

Establish a single vocabulary shared by domain experts, developers, code, and tests — within one bounded context.

When to use this skill

  • A new project starting to model a domain.
  • Persistent terminology drift between business and engineering.
  • The code's names don't match how domain experts talk.
  • Translation tables sit between conversation and code ("when the business says 'invoice', we mean BillingDocument").

When NOT to use this skill

  • Code-level pattern questions → delegate to tactical pattern skills.
  • Cross-context terminology translation → route to ddd-context-mapping.
  • Naming conventions for variables and functions in general → that is a code-style concern, not DDD.

Core content

A ubiquitous language is the shared, precise vocabulary that domain experts and engineers use to discuss a model — and that appears verbatim in the code, the tests, the database, and the UI. It is not a glossary the team agrees to consult; it is the language they actually speak and write.

How to grow one. Listen to domain experts and capture their phrases without paraphrasing. When the experts say "settle a payment", the code has a method called settle, not processPayment. When experts disagree about a term, push them to reconcile — that disagreement is hiding a real distinction (often two concepts crammed into one word).

Per bounded context. A ubiquitous language is consistent within one bounded context. Two contexts may use the same word with different meanings, and that is fine — context mapping handles the translation. The mistake is trying to enforce one global enterprise-wide language.

The reading-aloud test. Take a piece of code (a method body, a test name, a class hierarchy) and read it aloud to a domain expert. If they recognize what it does, the language is working. If they ask "what does that mean?", the language has drifted from the model.

Decision heuristics

  • Apply inside a bounded context. Resist the urge to unify language across an enterprise.
  • Push back when developers invent names ("Manager", "Helper", "Processor") instead of asking experts what to call the concept.
  • Kill synonyms aggressively. "Customer", "Client", and "Account" should not all coexist meaning the same thing in one context.

Anti-patterns

  • Developers inventing names because asking the expert "takes too long".
  • Tolerating synonyms because each team prefers a different one.
  • Translation tables between conversation and code — a sign that the model is misaligned.
  • Maintaining a glossary as a separate document instead of the code being the glossary.

See also

  • ddd-bounded-context — one language per context; the boundary makes a coherent language possible.
  • ddd-design — language is the first deliverable of any design session.
  • ddd-context-mapping — translating language across contexts.

References

  • Evans, Domain-Driven Design (2003), Ch. 2 (Communication and the Use of Language).

관련 작업

같은 저장소의 Skills

더 많은 Skills

모든 Skills
yonatankarp
커뮤니티

arch-adr

Use when recording an architectural decision so future maintainers know why — phrases like "ADR", "architecture decision record", "why did we pick X", "lightweight architecture documentation", "decision log", "should this be an ADR", "tribal knowledge", "we chose this two years ago and now nobody remembers why". Defines the ADR as a short, structured document capturing what was decided, why, alternatives considered, and consequences — written at the time of the decision and kept in the repo.

설치 수
2
GitHub Stars
1
업데이트
5월 19일
yonatankarp
커뮤니티

arch-fitness-functions

Use when enforcing architectural characteristics through automation — phrases like "architecture fitness function", "evolutionary architecture", "architecture tests", "ArchUnit", "dependency rules in CI", "automated architecture checks", "guardrails", "drift detection". Defines fitness functions as automated checks that verify architectural characteristics on every change, catching drift before it accumulates.

설치 수
2
GitHub Stars
1
업데이트
5월 19일
yonatankarp
커뮤니티

arch-microservices

Use when designing or reviewing a microservices architecture — phrases like "microservices", "should we split this service", "service boundaries", "bounded context per service", "API gateway", "backend for frontend", "BFF", "service mesh", "microservices vs monolith", "database per service", "data ownership". Defines microservices as independently deployable services aligned with business capabilities — and the discipline of resisting the style until the monolith proves inadequate.

설치 수
2
GitHub Stars
1
업데이트
5월 19일
yonatankarp
커뮤니티

arch-strangler-fig

Use when migrating a legacy system incrementally — phrases like "strangler fig", "strangler pattern", "incremental migration", "monolith to microservices", "rewrite without big bang", "replace legacy in place", "facade in front of the legacy system", "anticorruption layer". Defines Fowler's Strangler Fig as the migration discipline of gradually replacing legacy functionality behind a stable facade, never doing a big-bang rewrite.

설치 수
2
GitHub Stars
1
업데이트
5월 19일