plugins/ruflo-ddd/REFERENCE.md
Companion reference for domain-modeler and other agents in this plugin. The agent prompt deliberately stays lean per ADR-098 Part 2; this file collects the vocabulary tables, scaffolding catalogs, and AgentDB graph-storage recipes the agent reads on-demand.
| Building block | Purpose | Key rule |
|---|---|---|
| Entity | Object with identity and lifecycle | Identity-based equality; mutable state |
| Value Object | Immutable descriptor without identity | Equality by value; side-effect free |
| Aggregate Root | Consistency boundary with invariants | All mutations go through the root |
| Domain Event | Record of something that happened | Immutable; past-tense named; carries payload |
| Repository | Persistence abstraction per aggregate | One repository per aggregate root |
| Domain Service | Stateless cross-entity operations | Used when logic spans multiple aggregates |
| Factory | Complex object creation | Encapsulates construction invariants |
| Relationship | Use when |
|---|---|
| Partnership | Two contexts succeed or fail together; coordinate releases |
| Customer-Supplier | Upstream context provides; downstream consumes; downstream needs are honored |
| Conformist | Downstream conforms to upstream's model verbatim (no translation) |
| Anti-Corruption Layer (ACL) | Downstream protects itself by translating between ubiquitous languages |
| Open Host Service | Upstream publishes a stable protocol for many downstream consumers |
| Published Language | Shared interchange format (often paired with Open Host Service) |
src/<context-name>/
domain/
entities/ # Entities and aggregate root
value-objects/ # Value objects
events/ # Domain events
services/ # Domain services
repositories/ # Repository interfaces
application/ # Use cases / application services
infrastructure/ # Repository implementations, ACL adapters
index.ts # Public API of the context
Persist the domain model as a navigable graph so subsequent sessions can traverse it via the pathfinder agent:
# Store bounded context hierarchy
mcp__claude-flow__agentdb_hierarchical-store --parent "domain" \
--child "context:ordering" --relation "contains"
mcp__claude-flow__agentdb_hierarchical-store --parent "context:ordering" \
--child "aggregate:order" --relation "contains"
# Store context dependencies
mcp__claude-flow__agentdb_causal-edge --from "context:ordering" \
--to "context:inventory" --type "depends-on"
mcp__claude-flow__agentdb_causal-edge --from "context:ordering" \
--to "context:payments" --type "publishes-events-to"
Edge types worth standardizing across a project:
depends-on — context needs the other to exist (sync coupling)publishes-events-to — fire-and-forget event flowtranslates-via-acl-to — anti-corruption layer mediatesconforms-to — downstream adopts upstream model verbatimOrder, Customer, Invoice).OrderPlaced, InvoiceVoided, CustomerEmailChanged).PlaceOrder, VoidInvoice).<Aggregate>Repository (OrderRepository).<Verb><Noun>Service (PriceQuoteService, InventoryAllocationService).