skills/ddd-evans-2003/SKILL.md
Domain-Driven Design methodology using bounded contexts, ubiquitous language, and strategic/tactical patterns
npx skillsauth add curiositech/windags-skills ddd-evans-2003Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Strategic and tactical patterns for building software systems that remain aligned with business reality as complexity grows.
Is the same word used differently across teams/systems?
├── Yes → Explicit Bounded Context boundary needed
│ ├── Teams can coordinate? → Shared Kernel or Customer/Supplier
│ └── Teams independent? → Anti-Corruption Layer
└── No → Can use single Ubiquitous Language
├── Code names ≠ domain expert names? → Rename code to match domain
└── Names match → Continue with current language
Does the business care which specific instance this is?
├── Yes → Entity
│ ├── Multiple entities modified together for consistency? → Same Aggregate
│ └── Independent lifecycle? → Separate Aggregates
└── No → Value Object
├── Immutable attributes only? → Pure Value Object
└── Contains behavior? → Value Object with methods
Is this subdomain where we create competitive advantage?
├── Yes → Core Domain
│ ├── Complex business rules? → Deep modeling with tactical patterns
│ └── Simple CRUD? → May not be truly Core
└── No → Generic/Supporting Subdomain
├── Commodity problem? → Buy or use off-shelf solution
└── Organization-specific? → Minimal custom solution
Scenario: Single "Product" concept causing integration pain between catalog and inventory teams.
Analysis Walk-through:
Product class being modified by both teams for different reasonsExpert insight: Novice focuses on avoiding duplication; expert focuses on model integrity within each context.
Scenario: Designing order processing where payment, shipping, and inventory must stay consistent.
Analysis Walk-through:
Expert insight: Novice includes everything "related"; expert includes only what needs transactional consistency.
Don't use DDD for:
Delegate to other skills:
Context boundaries:
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.