/ddd-validate
Validate domain boundaries -- detect cross-context import violations and aggregate invariant issues. Use when auditing a DDD codebase for leaks between bounded contexts, before merging cross-cutting changes, or as a CI gate to catch boundary erosion early.
Claude Code
$ npx -y skills add ruvnet/ruflo --skill ddd-validate --agent claude-code
Codex
$ npx skills add ruvnet/ruflo --skill ddd-validate -a codex -y
Cursor
$ npx skills add ruvnet/ruflo --skill ddd-validate -a cursor -y
Gemini CLI
$ npx skills add ruvnet/ruflo --skill ddd-validate -a gemini-cli -y
GitHub Copilot
$ npx skills add ruvnet/ruflo --skill ddd-validate -a github-copilot -y
OpenCode
$ npx skills add ruvnet/ruflo --skill ddd-validate -a opencode -y
Windsurf
$ npx skills add ruvnet/ruflo --skill ddd-validate -a windsurf -y
SKILL.md
ddd-validate.SKILL.mdname: ddd-validate
description: Validate domain boundaries -- detect cross-context import violations and aggregate invariant issues. Use when auditing a DDD codebase for leaks between bounded contexts, before merging cross-cutting changes, or as a CI gate to catch boundary erosion early.
argument-hint: ""
allowed-tools: Bash Read Grep Glob mcp__plugin_ruflo-core_ruflo__memory_store mcp__plugin_ruflo-core_ruflo__memory_search mcp__plugin_ruflo-core_ruflo__hooks_pre-task mcp__plugin_ruflo-core_ruflo__hooks_post-task
Validate domain boundary integrity across all bounded contexts.
Steps
1. **Discover contexts**: Scan `src/*/domain/` to find all bounded contexts.
2. **Check cross-boundary violations**:
- For each context, scan all `.ts` files for import statements
- Flag any import that reaches into another context's `domain/` directory directly
- Allowed: importing from another context's public `index.ts` (application layer)
- Violation: importing from `src/<other-context>/domain/entities/...` directly
# Find cross-boundary imports
for ctx in $(find src -maxdepth 2 -name "domain" -type d | sed 's|src/||;s|/domain||'); do
grep -rn "from ['\"].*src/" "src/$ctx/" --include="*.ts" | grep -v "src/$ctx/" || true
done3. **Check aggregate invariant enforcement**:
- Scan aggregate root entities for public setters that bypass validation
- Flag mutable public properties without invariant checks
- Verify that child entities are not directly accessible (must go through aggregate root)
4. **Check event naming conventions**:
- Domain events should be past-tense named (e.g., `OrderCreated`, not `CreateOrder`)
- Events should be immutable (no public setters)
- Events should carry the aggregate ID
5. **Check repository patterns**:
- Repository interfaces should exist in `domain/repositories/`, not `infrastructure/`
- Repository implementations should exist in `infrastructure/`, not `domain/`
- Each aggregate root should have exactly one repository
6. **Report findings**:
- Output a table of violations with file path, line number, violation type, and suggestion
- Categorize as: `BOUNDARY`, `INVARIANT`, `EVENT`, `REPOSITORY`
- Exit with summary: total violations, by category, severity
7. **Store results**:
npx @claude-flow/cli@latest memory store --key "ddd-validation-TIMESTAMP" --value "RESULTS_SUMMARY" --namespace tasks
npx @claude-flow/cli@latest hooks post-task --task-id "ddd-validate" --success true --store-results true
Read more
name: ddd-validate description: Validate domain boundaries -- detect cross-context import violations and aggregate invariant issues. Use when auditing a DDD codebase for leaks between bounded contexts, before merging cross-cutting changes, or as a CI gate to catch boundary erosion early. argument-hint: "" allowed-tools: Bash Read Grep Glob mcp__plugin_ruflo-core_ruflo__memory_store mcp__plugin_ruflo-core_ruflo__memory_search mcp__plugin_ruflo-core_ruflo__hooks_pre-task mcp__plugin_ruflo-core_ruflo__hooks_post-task
Validate domain boundary integrity across all bounded contexts.
Steps
1. **Discover contexts**: Scan `src/*/domain/` to find all bounded contexts.
2. **Check cross-boundary violations**:
- For each context, scan all `.ts` files for import statements
- Flag any import that reaches into another context's `domain/` directory directly
- Allowed: importing from another context's public `index.ts` (application layer)
- Violation: importing from `src/<other-context>/domain/entities/...` directly
# Find cross-boundary imports
for ctx in $(find src -maxdepth 2 -name "domain" -type d | sed 's|src/||;s|/domain||'); do
grep -rn "from ['\"].*src/" "src/$ctx/" --include="*.ts" | grep -v "src/$ctx/" || true
done3. **Check aggregate invariant enforcement**:
- Scan aggregate root entities for public setters that bypass validation
- Flag mutable public properties without invariant checks
- Verify that child entities are not directly accessible (must go through aggregate root)
4. **Check event naming conventions**:
- Domain events should be past-tense named (e.g., `OrderCreated`, not `CreateOrder`)
- Events should be immutable (no public setters)
- Events should carry the aggregate ID
5. **Check repository patterns**:
- Repository interfaces should exist in `domain/repositories/`, not `infrastructure/`
- Repository implementations should exist in `infrastructure/`, not `domain/`
- Each aggregate root should have exactly one repository
6. **Report findings**:
- Output a table of violations with file path, line number, violation type, and suggestion
- Categorize as: `BOUNDARY`, `INVARIANT`, `EVENT`, `REPOSITORY`
- Exit with summary: total violations, by category, severity
7. **Store results**:
npx @claude-flow/cli@latest memory store --key "ddd-validation-TIMESTAMP" --value "RESULTS_SUMMARY" --namespace tasks npx @claude-flow/cli@latest hooks post-task --task-id "ddd-validate" --success true --store-results true
📖 RuFlo Explained — Build an AI Team That Plans, Remembers, Tests, and Improves A 14-chapter guide: from the basic idea to a first useful task, then memory, agent teams, plugins, cost and verification. Agent = Model + Harness.
Other skills on ruflo.
More skills from other plugins.
agentmail
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
bmad
Answers BMad questions and recommends the next skill from what is installed. Use when the user asks bmad for help, what to do…
Questions about ddd-validate.
- Which coding agents can use ddd-validate?
- ddd-validate installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

