ruvnet / ddd-context
Create and manage a DDD bounded context with standard directory structure. Use when starting a new subdomain, splitting a monolith into bounded contexts, or scaffolding the domain/application/infrastructure layout for a fresh module.
Create a bounded context directory structure for the given context name.
Parse $ARGUMENTS as the context name (kebab-case). If empty, list existing contexts.
Steps
- Validate name: Ensure the context name is kebab-case and does not already exist under
src/. Create directory structure:
`
src/<context-name>/
domain/
entities/
value-objects/
events/
services/
repositories/
application/
infrastructure/`Generate index files:
src/<context-name>/domain/entities/index.ts-- barrel export for entitiessrc/<context-name>/domain/value-objects/index.ts-- barrel export for value objectssrc/<context-name>/domain/events/index.ts-- barrel export for domain eventssrc/<context-name>/domain/services/index.ts-- barrel export for domain servicessrc/<context-name>/domain/repositories/index.ts-- barrel export for repository interfacessrc/<context-name>/domain/index.ts-- re-export all domain submodulessrc/<context-name>/application/index.ts-- barrel export for application servicessrc/<context-name>/infrastructure/index.ts-- barrel export for infrastructure implementationssrc/<context-name>/index.ts-- public API of the bounded context (re-exports domain and application only, NOT infrastructure)
Store in domain model graph:
`
mcppluginruflo-corerufloagentdb_hierarchical-store({ key: "domain/context-<context-name>", value: "Bounded context <context-name> (parent: domain)", tier: "semantic" })
mcppluginruflo-corerufloagentdb_causal-edge({ sourceId: "entity:domain", targetId: "entity:context-<context-name>", relation: "contains" })
mcppluginruflo-coreruflomemory_store({ key: "ddd-context-<context-name>", value: "Created bounded context", namespace: "tasks" })`- Report: Confirm the context was created and list the generated files.