ddd-context — Claude Code skill: what it does, how to install
Scaffolds a standard DDD bounded context directory structure with domain, application, and infrastructure layers. Useful when splitting monoliths.
npx skills add ruvnet/ruflo --skill ddd-context -a claude-codeWhat ddd-context does
The skill takes a kebab-case context name and validates that the folder does not already exist under src/. If called without arguments, it lists all existing contexts. It then scaffolds the directory tree for domain, application, and infrastructure. The domain layer includes subfolders for entities, value objects, events, services, and repositories.
Barrel export files index.ts are generated for every subfolder. The root entry file at src/<context-name>/index.ts re-exports only domain and application, keeping infrastructure private. This boundary prevents implementation details from leaking outside the module.
The skill also writes context metadata into the domain model graph using Ruflo AgentDB and memory tools. These graph updates will fail if the Ruflo MCP plugins are missing from your setup. Once finished, the agent reports the list of created files.
What it helps with
- scaffold a DDD bounded context directory structure
- isolate infrastructure details from module public API
- split monolithic code into distinct domain modules
- record bounded context relations in the domain graph
Example prompts for the agent
- Create a bounded context named `billing`
- List existing contexts in the project
- Scaffold a new bounded context `order-management`
How to install ddd-context
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-context -a claude-code2Manually: put the files in place
~/.claude/skills/ddd-context/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/ddd-context/
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-context -a codex2Manually: put the files in place
.agents/skills/ddd-context/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-context -a cursor2Manually: put the files in place
.cursor/skills/ddd-context/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install ruvnet/ruflo ddd-context2Manually: put the files in place
.github/skills/ddd-context/SKILL.md1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-context -a gemini-cli2Platform CLI
gemini skills install https://github.com/ruvnet/ruflo --path plugins/ruflo-ddd/skills/ddd-contextManually: put the files in place
.devin/skills/ddd-context/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-context -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set104
The whole set →Similar
Questions about ddd-context
How do I install ddd-context in Claude Code?
Run npx skills add ruvnet/ruflo --skill ddd-context -a claude-code. The skill definition is stored in ~/.claude/skills/ddd-context/SKILL.md.
What does the ddd-context skill do?
It creates domain, application, and infrastructure directories for a subdomain, sets up barrel exports, and logs the context in the domain graph via Ruflo AgentDB.
Why is infrastructure omitted from the root export?
The root src/<context-name>/index.ts only re-exports domain and application. This ensures external modules interact strictly with domain contracts rather than infrastructure details.
Source text
SKILL.md · MIT
---
name: ddd-context
description: 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.
argument-hint: "<context-name>"
allowed-tools: Bash Read Write Edit Grep Glob mcp__plugin_ruflo-core_ruflo__memory_store mcp__plugin_ruflo-core_ruflo__memory_search mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store mcp__plugin_ruflo-core_ruflo__agentdb_causal-edge
---
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
1. **Validate name**: Ensure the context name is kebab-case and does not already exist under `src/`.
2. **Create directory structure**:
```
src/<context-name>/
domain/
entities/
value-objects/
events/
services/
repositories/
application/
infrastructure/
```
3. **Generate index files**:
- `src/<context-name>/domain/entities/index.ts` -- barrel export for entities
- `src/<context-name>/domain/value-objects/index.ts` -- barrel export for value objects
- `src/<context-name>/domain/events/index.ts` -- barrel export for domain events
- `src/<context-name>/domain/services/index.ts` -- barrel export for domain services
- `src/<context-name>/domain/repositories/index.ts` -- barrel export for repository interfaces
- `src/<context-name>/domain/index.ts` -- re-export all domain submodules
- `src/<context-name>/application/index.ts` -- barrel export for application services
- `src/<context-name>/infrastructure/index.ts` -- barrel export for infrastructure implementations
- `src/<context-name>/index.ts` -- public API of the bounded context (re-exports domain and application only, NOT infrastructure)
4. **Store in domain model graph**:
```
mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store({ key: "domain/context-<context-name>", value: "Bounded context <context-name> (parent: domain)", tier: "semantic" })
mcp__plugin_ruflo-core_ruflo__agentdb_causal-edge({ sourceId: "entity:domain", targetId: "entity:context-<context-name>", relation: "contains" })
mcp__plugin_ruflo-core_ruflo__memory_store({ key: "ddd-context-<context-name>", value: "Created bounded context", namespace: "tasks" })
```
5. **Report**: Confirm the context was created and list the generated files.
© ruvnet · MIT · ruvnet/ruflo