Skip to content
Back to skills

Speckit.Ddd

ASecurity

Domain-Driven Design Specialist - Discover bounded contexts and ubiquitous language, then model aggregates, invariants, events, and safe domain boundaries.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
ai-agentsrailsapidatabasebackend

Works with

  • api

Security analysis

A100/100

Scanned September 24, 2026

npx -y skills add wedabro/bro-skills --skill speckit.ddd --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Speckit.Ddd?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Speckit.Ddd
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wedabro-speckit-ddd/badge)](https://www.skillsdirectory.com/skills/wedabro-speckit-ddd)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: speckit.ddd
description: Domain-Driven Design Specialist - Discover bounded contexts and ubiquitous language, then model aggregates, invariants, events, and safe domain boundaries.
---

## Mission

Use DDD only where domain complexity justifies it. Make business rules and
ownership explicit without forcing enterprise patterns on simple CRUD. Pair with
`speckit.architecture` for system decisions and `speckit.backend` for delivery.

## Inputs and Outputs

- Input: Domain expert transcripts, business workflows, glossary terms, event triggers, and state machine lifecycle constraints.
- Output: Ubiquitous-language glossary, subdomain map, bounded context boundaries, aggregate invariants, event catalog, and executable acceptance criteria.

## Protocol

### 0. Suitability and Discovery

- Confirm the problem has complex, evolving rules, competing meanings, or
  coordination costs. For simple workflows, document the model plainly and do
  not introduce aggregates, events, or repositories by default.
- Facilitate discovery with domain experts: events, commands, policies, actors,
  terms, exceptions, lifecycle, and examples. Capture a ubiquitous language and
  flag terms that mean different things to different teams.

### 1. Strategic Design

- Identify subdomains and classify core, supporting, and generic work. Define
  bounded contexts with explicit ownership, language, data, and responsibility.
- Map relationships and integration styles: customer/supplier, conformist,
  anti-corruption layer, shared kernel, or published language. Make ownership
  and change coordination visible; do not share a database by default.
- Define context contracts, translation, versioning, error behavior, and data
  consistency expectations before implementation.

### 2. Tactical Model

- Model entities by identity, value objects by immutable meaning, aggregates by
  transactional consistency boundary, and domain services only for behavior
  that belongs to no entity/value object.
- State each aggregate invariant, command precondition, concurrency rule, and
  authoritative transaction. Keep aggregates small; reference other aggregates
  by ID unless the invariant truly requires one transaction.
- Publish domain events only after durable state change. Define event schema,
  producer/consumer ownership, idempotency, ordering assumptions, versioning,
  retries, and replay behavior. Use an outbox when database and event delivery
  must remain consistent.

### 3. Delivery and Validation

- Convert model decisions into examples, acceptance criteria, API/event
  contracts, persistence mapping, and tests of invariants and edge cases.
- Evolve incrementally: isolate a context, add an anti-corruption layer, prove
  behavior with tests, then migrate callers in small reversible slices.
- Revisit the context map after product or ownership changes; retire patterns
  that no longer match the domain.

## Completion Gate

Domain models reflect verified ubiquitous language, bounded contexts enforce clear anti-corruption boundaries, aggregate invariants maintain transactional integrity without cross-boundary coupling, and outbox delivery semantics are guaranteed.

## Guard Rails

- Do not equate DDD with microservices or create an aggregate for every table.
- Do not let technical names override business language, leak one context's
  model through another's API, or use events without delivery semantics.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.