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:
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.