Architecture & Systems

Domain-Driven Design

Modeling complex business domains in software

Model complex business domains in software using Eric Evans's Domain-Driven Design methodology. This skill equips your AI agent with ubiquitous language, bounded contexts, aggregates, and strategic design patterns for tackling the most complex software challenges.

Updated Free & MIT-licensed
Domain-Driven Design by Eric Evans

Domain-Driven Design

by Eric Evans

npx skills add wondelai/skills/domain-driven-design --global

This skill is compatible with Claude, Claude Code, Claude Cowork, Codex, Cursor, OpenClaw, Hermes Agent, and other agentskills.io-compatible agents.

What is the Domain-Driven Design skill?

The Domain-Driven Design skill packages Eric Evans’s book as a free set of instructions your AI coding agent loads on demand. It makes the agent model the business first — build a ubiquitous language, split the system into bounded contexts, design aggregates that own their invariants — so the code names and enforces what the domain actually means.

Key concepts from Domain-Driven Design your agent applies

Ubiquitous Language

Develop a shared language between developers and domain experts — use it in code, conversations, and documentation.

Bounded Contexts

Define clear boundaries where a particular model applies. Different contexts can have different models for the same concept.

Aggregates

Cluster related entities and value objects into consistency boundaries with a single root entity controlling access.

Domain Events

Capture things that happen in the domain as first-class objects — events enable loose coupling between bounded contexts.

Context Mapping

Map relationships between bounded contexts — shared kernel, customer-supplier, conformist, anti-corruption layer.

When to use Domain-Driven Design — and when not to

Reach for it when

  • Your team and your code use different words for the same thing, and translating between them keeps producing bugs.
  • One Customer class has grown forty fields because billing, support and marketing each needed three of them.
  • Entities are passive data bags and every business rule lives in a service class nobody can locate.
  • You need to decide where one module ends and the next begins, and the org chart is your only guide.

Reach for something else when

  • The domain is genuinely simple CRUD and the modelling would be ceremony — The 37signals Way’s build-less instinct fits better.
  • You have the model and need to know which way dependencies cross its boundaries — that is Clean Architecture.
  • The hard part is persistence, replication and consistency rather than the model — Data-Intensive Apps covers that.
  • You are untangling an existing untested codebase before you can model anything — start with Legacy Code.

Eric Evans

Originator of Domain-Driven Design

Eric Evans is a software design consultant and the originator of Domain-Driven Design. His book, published in 2003, fundamentally changed how the industry approaches complex software by putting the domain model at the center of development.

View Book →

Example prompts for the Domain-Driven Design skill

Define bounded contexts and a context map for our e-commerce platform using domain-driven-design skill

Strategic design

Design aggregates for this order management domain using domain-driven-design skill

Tactical design

Establish a ubiquitous language glossary for our billing domain using domain-driven-design skill

Domain modeling

Implement an anti-corruption layer between our legacy system and new service using domain-driven-design skill

Integration

Domain-Driven Design vs the other Architecture & Systems skills

All 6 Architecture & Systems skills are free and install the same way — the only question is which framework fits the job in front of you.

SkillBased onBest for
Clean ArchitectureClean Architecture — Robert C. MartinBuilding maintainable, testable software architectures
Domain-Driven DesignDomain-Driven Design — Eric EvansModeling complex business domains in software
Data-Intensive AppsDesigning Data-Intensive Applications — Martin KleppmannDesigning reliable, scalable data systems
System DesignSystem Design Interview — Alex XuScalable system design patterns and trade-offs
Release It!Release It! — Michael T. NygardProduction-ready software patterns for stability and resilience
High Perf BrowserHigh Performance Browser Networking — Ilya GrigorikBrowser networking performance optimization

Frequently asked questions

How do I install the Domain-Driven Design skill?

Run npx skills add wondelai/skills/domain-driven-design --global. It takes about 30 seconds and needs no account. The Domain-Driven Design skill then works in Claude, Claude Code, Claude Cowork, Codex, Cursor, OpenClaw and Hermes Agent — anything that reads the open agentskills.io format — and your agent loads it on its own when a task calls for it. It is free and MIT-licensed, and the source is at https://github.com/wondelai/skills.

Which book is the Domain-Driven Design skill based on?

It packages Domain-Driven Design by Eric Evans — originator of Domain-Driven Design. The skill distils the book's method into instructions your agent follows while it works, covering ubiquitous language, bounded contexts and aggregates. It sits in the Architecture & Systems part of the library.

What is a bounded context, concretely?

A boundary inside which one word has exactly one meaning and one model. Customer in billing has a tax ID and a payment method; Customer in support has a ticket history and a satisfaction score. Those are different models, and fusing them into a single omniscient class is the failure the pattern exists to prevent. Contexts are also where integration becomes explicit — you translate at the border, often through an anti-corruption layer.

How does this differ from Clean Architecture and Software Design?

Three different questions about the same code. Domain-Driven Design asks what the business means and where its seams are. Clean Architecture asks which way dependencies cross those seams. Software Design asks whether the resulting modules are deep enough to justify their interfaces. They rarely contradict each other; when they do, it is usually a pile of small value objects against Ousterhout’s warning about shallow modules, and you decide case by case.

Do I need to read the book? It is famously long.

No. The skill carries the operational parts: how to build a ubiquitous language, how to locate context boundaries, the aggregate rules it applies — keep them small, one root, reference other aggregates by ID — and the context-mapping patterns. The book’s several hundred pages are largely worked narrative showing how those conclusions were reached, which is worth reading and is not required to apply them.

Will it apply full DDD to a simple CRUD app?

It will if you ask, and that is usually a bad trade. Aggregates, repositories, domain events and a separate application layer buy very little when the domain is a form saved to a table, and the ceremony is real. The skill’s own strategic-design step is the guard: classify subdomains as core, supporting or generic, and model only the core deeply. If nothing is core, you probably do not need this.

Install Domain-Driven Design

Free, open-source, and ready in 30 seconds.

npx skills add wondelai/skills/domain-driven-design --global

MIT Licensed · Works with Claude, Claude Code, Claude Cowork, Codex, Cursor, OpenClaw, Hermes Agent & other agentskills.io agents · No account needed

Work with us

We build the skills you already use. Now we’ll build yours.

Custom skills · Subagents · MCP integrations — shipped to production, not demoed.

Sprints from $3K · shipped to production, or you don’t pay the final milestone.