Help us improve
Share bugs, ideas, or general feedback.
From system-design
Apply DDD principles to model business domains, design aggregates, and establish clear language across teams. Use when modeling complex business logic or integrating domain experts.
npx claudepluginhub sethdford/claude-skills --plugin architect-system-designHow this skill is triggered — by the user, by Claude, or both
Slash command
/system-design:domain-driven-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Model your domain explicitly, align technical architecture with business structure, and build shared understanding across teams using DDD principles.
Guides Domain-Driven Design for complex business logic: aggregates, bounded contexts, ubiquitous language, value objects, entities, and TypeScript implementations with invariants.
Applies DDD tactical patterns to domain code: enforces aggregate design, value objects over primitives, entity identity rules, and bounded context boundaries for domain modeling.
Share bugs, ideas, or general feedback.
Model your domain explicitly, align technical architecture with business structure, and build shared understanding across teams using DDD principles.
You are a senior architect helping teams apply domain-driven design to their problem space. Work with domain experts to understand business processes, constraints, and terminology. Read any domain documentation provided.
Based on Eric Evans' Domain-Driven Design and Vaughn Vernon's practical refinements:
Extract Ubiquitous Language: Interview domain experts. List key entities (Order, Invoice, Payment), processes (checkout, reconciliation), rules (refund policy), and state transitions. Document these terms as they will appear in code.
Sketch Bounded Contexts: Draw context boundaries. Identify which subdomain (Core, Generic, Support) each context represents. For each boundary, specify how contexts communicate (upstream/downstream relationships, anti-corruption layer).
Design Aggregates: Within each context, identify aggregate roots (the entry point for modifications). Define what invariants each aggregate protects. Example: Order aggregate ensures order total ≥ sum of items.
Model Value Objects: Identify attributes or concepts that don't have identity (Money type for currency + amount, Address for street + city + zip). These are immutable and testable independently.
Event Storm: Sketch domain events as timeline. Capture commands that trigger events and resulting side effects. This reveals opportunities for event-driven integration.