ddd

Explain Domain-Driven Design concepts for modeling software business domains.

Updated Jun 5, 2026
One-click install
npx skills add https://github.com/hung-phan/system-skills --skill ddd-hung-phan
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ddd
Source: https://github.com/hung-phan/system-skills/tree/main/skills/system-review/references/code-design/ddd
Command: npx skills add https://github.com/hung-phan/system-skills --skill ddd-hung-phan

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) and assets (resource) components.

What problem does it solve?

This Skill provides guidance on Domain-Driven Design (DDD) principles, solving the problem of understanding and implementing complex business domains in software development.

Core Features & Use Cases

  • Strategic & Tactical DDD: Offers insights into designing a system's bounded contexts and the code within those contexts.
  • Ubiquitous Language: Assists in developing a shared language that aligns with business concepts.
  • Entities, Value Objects, Aggregates: Provides knowledge on defining and utilizing these DDD constructs.
  • Use Case: Help a development team understand how to model their complex business domain by using DDD techniques, resulting in better system design and code organization.

Quick Start

Read through the SKILL.md file at 'skills/system-review/references/code-design/ddd' for an introduction to Domain-Driven Design.

Frequently Asked Questions about ddd

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

FAQPage Schema
What is Domain-Driven Design and how does it help model complex business domains?

Domain-Driven Design is a software architecture approach that models complex business domains using ubiquitous language and bounded contexts to align software design with business concepts. It improves system organization and communication between technical and domain teams.

How do I implement bounded contexts and ubiquitous language in software architecture?

Implement bounded contexts by defining explicit boundaries around specific business domains, then establish a ubiquitous language shared by developers and domain experts within each context. This ensures code constructs accurately represent business logic without ambiguity.

When should I use entities vs value objects in Domain-Driven Design?

Use entities when you need objects defined by their identity that persists over time, and use value objects for concepts defined entirely by their attributes. DDD principles dictate this distinction to maintain clean domain models.

Do I need prior software architecture experience to apply DDD modeling?

Yes, you need existing knowledge of software architecture and design principles to apply DDD modeling effectively. The approach requires understanding how to structure complex systems before implementing strategic and tactical DDD constructs.

What is the difference between strategic and tactical Domain-Driven Design?

Strategic DDD focuses on high-level system design by defining bounded contexts and their relationships, while tactical DDD deals with code-level constructs like entities, value objects, and aggregates. Together they provide comprehensive domain modeling.

Why should a development team choose DDD over traditional software design?

Development teams should choose DDD over traditional software design when facing complex business domains that require strict alignment between code and business logic. DDD's ubiquitous language and bounded contexts prevent domain logic fragmentation across systems.