ddd-validate — скилл для Claude Code: что делает и как установить
Проверяет границы ограниченных контекстов в коде на TypeScript и выявляет утечки между доменами. Пригодится при аудите архитектуры DDD и перед слиянием общих правок.
npx skills add ruvnet/ruflo --skill ddd-validate -a claude-codeЧто делает ddd-validate
Скилл проверяет архитектурную целостность проектов по правилам предметно-ориентированного проектирования (DDD). Сначала он ищет ограниченные контексты в папках src/*/domain/. Затем сканирует файлы .ts и ищет прямые импорты из доменного слоя чужих модулей. Разрешены только обращения через публичный index.ts прикладного уровня, а прямые ссылки вроде src/<context>/domain/entities/... отмечаются как нарушение.
Кроме импортов, анализ затрагивает сущности и репозитории. Скилл находит открытые сеттеры в корнях агрегатов, прямой доступ к дочерним сущностям в обход корня и события с именами не в прошедшем времени. Он также следит, чтобы интерфейсы репозиториев лежали строго в domain/repositories/, а реализации — в infrastructure/.
Итоговый отчёт выводится в виде таблицы по категориям BOUNDARY, INVARIANT, EVENT и REPOSITORY с номерами строк и рекомендациями. Для сохранения истории запуска скилл использует вызов npx @claude-flow/cli@latest memory store и хуки ruflo. Если ваша кодовая база использует структуру путей, отличную от src/*/domain/, сканирование контекстов просто ничего не найдёт.
Какие задачи решает
- Найти прямые импорты между изолированными доменами
- Выявить открытые сеттеры и мутации в корнях агрегатов
- Проверить размещение интерфейсов и реализаций репозиториев
- Проконтролировать прошедшее время в названиях доменных событий
Примеры запросов агенту
- Запусти ddd-validate для проверки границ доменов в src/
- Проверь соблюдение инвариантов агрегатов и структуру репозиториев с помощью ddd-validate
- Выполни аудит DDD архитектуры через ddd-validate перед мерджем
Как установить ddd-validate
1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-validate -a claude-code2Вручную: положить файлы
~/.claude/skills/ddd-validate/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/ddd-validate/
1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-validate -a codex2Вручную: положить файлы
.agents/skills/ddd-validate/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-validate -a cursor2Вручную: положить файлы
.cursor/skills/ddd-validate/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install ruvnet/ruflo ddd-validate2Вручную: положить файлы
.github/skills/ddd-validate/SKILL.md1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-validate -a gemini-cli2Командой платформы
gemini skills install https://github.com/ruvnet/ruflo --path plugins/ruflo-ddd/skills/ddd-validateВручную: положить файлы
.devin/skills/ddd-validate/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-validate -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора104
Весь набор →Похожие
Вопросы о ddd-validate
Как установить ddd-validate в Claude Code?
Выполните команду npx skills add ruvnet/ruflo --skill ddd-validate -a claude-code. Также можно вручную поместить файл спецификации в ~/.claude/skills/ddd-validate/SKILL.md.
Что делает ddd-validate?
Скилл инспектирует кодовую базу на TypeScript на предмет нарушений принципов DDD: выявляет прямые зависимости между доменами, неинкапсулированные свойства агрегатов, ошибки в именовании событий и некорректное расположение репозиториев.
Какую структуру проекта ожидает ddd-validate?
Скилл рассчитан на структуру src/*/domain/ с файлами TypeScript. Он разрешает импортировать данные другого контекста только через прикладной index.ts, запрещая прямые ссылки на внутренние сущности домена.
Исходный текст
SKILL.md · MIT
---
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
```bash
# 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
done
```
3. **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**:
```bash
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
```
© ruvnet · MIT · ruvnet/ruflo