domain-driven-design

Models complex business domains using bounded contexts, aggregates, domain events, and ubiquitous language.

Updated Jun 28, 2026
One-click install
npx skills add https://github.com/JaviMontano/claude-plugins --skill domain-driven-design-javimontano
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: domain-driven-design
Source: https://github.com/JaviMontano/claude-plugins/tree/main/plugins/claude-native-toolkit/skills/domain-driven-design
Command: npx skills add https://github.com/JaviMontano/claude-plugins --skill domain-driven-design-javimontano

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Complex business software fails when developers and domain experts speak different languages and models leak across boundaries. This Skill applies Domain-Driven Design strategic and tactical patterns to structure business logic around explicit bounded contexts, aggregates, and a shared ubiquitous language. ## Core Features & Use Cases - Bounded Context Mapping: Identify linguistic boundaries, define context ownership, and document integration relationships such as anti-corruption layers and published languages. - Aggregate & Event Design: Group entities by transactional consistency boundaries, enforce invariants through aggregate roots, and define past-tense domain events with clear schemas. - Ubiquitous Language Glossary: Establish precise shared terminology that stays consistent across code, tests, and documentation. - Use Case: When modeling a marketplace where ordering, payment, and support teams use conflicting meanings for "customer" and "order", use this Skill to split the domain into bounded contexts with explicit contracts and a shared glossary. ## Quick Start Ask the assistant to apply domain-driven design to model the bounded contexts and aggregates for your current project.

Frequently Asked Questions about domain-driven-design

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

FAQPage Schema
How do I identify bounded contexts in a legacy codebase?▼

Identify bounded contexts by finding linguistic boundaries where the same word carries different meanings across teams or modules. Conduct event storming or domain storytelling sessions, then map context relationships such as upstream/downstream, conformist, or anti-corruption layer.

What is the difference between an aggregate and an entity in DDD?▼

An entity is an object defined by identity, while an aggregate is a cluster of entities and value objects sharing one transactional consistency boundary. The aggregate root enforces all invariants and is the only entry point for modifying the cluster.

When should I use domain events in my architecture?▼

Use domain events to represent meaningful state transitions that other bounded contexts or services care about. Name them in past tense, give them sufficient data schemas, and define clear publish/subscribe contracts between contexts.

Does domain-driven design work for microservice decomposition?▼

Yes, bounded contexts naturally inform microservice boundaries because each context owns its model and language. Context maps document integration patterns like published language or open host services that translate directly into service contracts.

What are common DDD anti-patterns to avoid?▼

Avoid anemic domain models where entities only have getters and setters with no behavior, god aggregates spanning the entire domain, and leaking internal models across bounded context boundaries without translation layers.

When is domain-driven design not the right approach?▼

DDD is not appropriate for purely technical tasks like database index tuning or simple CRUD applications without complex business logic. It requires access to domain experts and business processes; without them, any model remains provisional.