domain-driven-design

Model software around business domains using bounded contexts and aggregates.

Updated May 6, 2026
One-click install
npx skills add https://github.com/Abdullahmohammadaref/acar --skill domain-driven-design-abdullahmohammadaref
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: domain-driven-design
Source: https://github.com/Abdullahmohammadaref/acar/tree/main/.agents/skills/domain-driven-design
Command: npx skills add https://github.com/Abdullahmohammadaref/acar --skill domain-driven-design-abdullahmohammadaref

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Domain-Driven Design helps teams model software around business domains by focusing on bounded contexts, aggregates, and ubiquitous language to align code with the business world.

Core Features & Use Cases

  • Ubiquitous Language: establish a shared vocabulary between domain experts and developers and encode it in code and tests.
  • Bounded Contexts & Context Mapping: define explicit boundaries to prevent term leakage and manage integration across teams.
  • Entities, Value Objects, and Aggregates: design clear invariants and ownership boundaries to maintain system integrity.
  • Domain Events: enable decoupled, event-driven collaboration across boundaries.

Quick Start

Begin modeling a core domain concept using domain terms and map its boundary to a bounded context.

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 when should I use it for software architecture?

Domain-driven design models software around business domains using bounded contexts and ubiquitous language. Use it for complex domains where domain experts and developers must collaborate, map contexts, and translate models across boundaries to maintain system integrity.

How do I define bounded contexts and map them to prevent domain term leakage?

Define bounded contexts by establishing explicit boundaries that prevent term leakage and manage integration across teams. Map these contexts to translate models across boundaries using ACL and Open Host patterns to ensure clear ownership and integration.

How do aggregates enforce invariants and ownership boundaries in complex domains?

Aggregates enforce invariants inside their boundaries by designating clear ownership and maintaining system integrity. They group entities and value objects, ensuring that all modifications within the aggregate remain valid and consistent across the bounded context.

How do I use domain events for cross-context communication and integration?

Use domain events to enable decoupled, event-driven collaboration across boundaries. By publishing domain events, bounded contexts can communicate and trigger downstream actions without tight coupling, ensuring smooth integration across distinct areas of the system.

Does domain-driven design require a specific framework or tech stack to implement?

Domain-driven design does not require a specific framework or tech stack. It focuses on modeling software around the business domain using repositories, factories, and ubiquitous language, making it applicable to any platform where domain experts and developers collaborate.

What patterns separate concerns when translating models across bounded contexts?

Concerns are separated using repositories, factories, ACL, and Open Host patterns when translating models across boundaries. These patterns manage integration and prevent term leakage, ensuring that distinct bounded contexts interact without corrupting their internal domain models.