domain-driven-design

Apply bounded contexts, aggregates, and ubiquitous language to model software architecture.

9|11|Updated Mar 8, 2025
One-click install
npx skills add https://github.com/PlebeianApp/market --skill domain-driven-design-plebeianapp
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: domain-driven-design
Source: https://github.com/PlebeianApp/market/tree/main/.claude/skills/domain-driven-design
Command: npx skills add https://github.com/PlebeianApp/market --skill domain-driven-design-plebeianapp

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Domain-Driven Design (DDD) helps teams align software architecture with business domains by focusing on bounded contexts, aggregates, and ubiquitous language.

Core Features & Use Cases

  • Strategic patterns: bounded contexts, context maps, shared kernel.
  • Tactical patterns: entities, value objects, aggregates, domain events, repositories, domain services.
  • Anti-patterns and remediation guidance for building maintainable, domain-centric software systems.

Quick Start

Identify bounded contexts within your domain and map their relationships. Model aggregates around invariants and define ubiquitous language that appears in code and discussions. Review references to apply DDD practices, then start refactoring a module to align with a bounded context and a single aggregate root.

Frequently Asked Questions about domain-driven-design

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
What is domain-driven design and how does it align software architecture with business domains?

Domain-driven design aligns software architecture with business domains using bounded contexts, aggregates, and ubiquitous language. It applies strategic and tactical patterns to define boundaries, model invariants, and implement domain events in complex software systems.

How do I identify bounded contexts and model aggregates for my domain?

Identify bounded contexts by mapping domain boundaries and their relationships, then model aggregates around invariants. Define a ubiquitous language for code and discussions, and refactor modules to align with a bounded context and a single aggregate root.

When do I need domain-driven design for complex domain modeling?

You need domain-driven design when modeling complex domains requiring strict boundaries, invariant enforcement, and domain events. It guides architecture decisions and helps evolve systems safely through strategic context mapping and tactical aggregate design.

What is the difference between strategic and tactical patterns in domain-driven design?

Strategic patterns in domain-driven design include bounded contexts, context maps, and shared kernels to define boundaries. Tactical patterns cover entities, value objects, aggregates, domain events, repositories, and domain services for implementation.

What are common domain-driven design anti-patterns and how do I remediate them?

Domain-driven design anti-patterns emerge from misaligned bounded contexts and improper aggregate boundaries. Remediation guidance focuses on correcting ubiquitous language, restructuring aggregate roots, and applying context mapping to build maintainable, domain-centric systems.