ddd-aggregate — скилл для Claude Code: что делает и как установить
Генерирует корень агрегата DDD с сущностью, объектами-значениями, интерфейсом репозитория, событиями и тестами. Пригодится при моделировании бизнес-логики внутри ограниченного контекста.
npx skills add ruvnet/ruflo --skill ddd-aggregate -a claude-codeЧто делает ddd-aggregate
Скилл принимает имя контекста и агрегата в kebab-case. Первым делом он проверяет наличие каталога src/<context>/domain/. Если папка отсутствует, генерация не начнётся: скилл предложит сначала запустить /ddd-context <context>. После проверки запускается pre-task хук через CLI @claude-flow/cli.
Внутри контекста создаются TypeScript-файлы: сущность агрегата в domain/entities/, неизменяемый объект-значение идентификатора в domain/value-objects/, интерфейс репозитория без реализации и доменные события в domain/events/. Для проверки инвариантов и равенства генерируется заготовка модульного теста в domain/entities/<aggregate-name>.entity.test.ts.
В конце обновляются реэкспорты в файлах index.ts, а структура агрегата заносится в граф модели с помощью MCP-инструментов памяти Ruflo. Завершает цепочку post-task хук.
Какие задачи решает
- генерировать класс корня агрегата с контролем бизнес-инвариантов
- описывать интерфейс репозитория с методами findById, save и delete
- создавать шаблоны доменных событий в прошедшем времени
- подготавливать заготовки модульных тестов для проверки равенства и инвариантов
Примеры запросов агенту
- /ddd-aggregate billing invoice
- /ddd-aggregate ordering customer-order
- Создай корень агрегата: /ddd-aggregate checkout cart
Как установить ddd-aggregate
1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-aggregate -a claude-code2Вручную: положить файлы
~/.claude/skills/ddd-aggregate/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/ddd-aggregate/
1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-aggregate -a codex2Вручную: положить файлы
.agents/skills/ddd-aggregate/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-aggregate -a cursor2Вручную: положить файлы
.cursor/skills/ddd-aggregate/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install ruvnet/ruflo ddd-aggregate2Вручную: положить файлы
.github/skills/ddd-aggregate/SKILL.md1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-aggregate -a gemini-cli2Командой платформы
gemini skills install https://github.com/ruvnet/ruflo --path plugins/ruflo-ddd/skills/ddd-aggregateВручную: положить файлы
.devin/skills/ddd-aggregate/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill ddd-aggregate -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора104
Весь набор →Похожие
Вопросы о ddd-aggregate
Как установить ddd-aggregate в Claude Code?
Выполните команду npx skills add ruvnet/ruflo --skill ddd-aggregate -a claude-code.
Что делает ddd-aggregate?
Скилл создаёт файлы сущности агрегата, объекта-значения ID, интерфейса репозитория, событий и тестов, а также записывает сущность в граф модели Ruflo.
Что требуется перед запуском ddd-aggregate?
В проекте должен существовать каталог src/<context>/domain/. Если его нет, скилл остановится и предложит сначала выполнить команду /ddd-context <context>.
Исходный текст
SKILL.md · MIT
---
name: ddd-aggregate
description: Scaffold an aggregate root with entity, value objects, repository interface, domain events, and test stubs. Use when adding a new aggregate to an existing bounded context, modeling a new business concept that owns invariants, or generating the boilerplate for an entity + repo + events triplet.
argument-hint: "<context> <aggregate-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 mcp__plugin_ruflo-core_ruflo__hooks_pre-task mcp__plugin_ruflo-core_ruflo__hooks_post-task
---
Scaffold a complete aggregate root inside a bounded context.
Parse `$ARGUMENTS` as `<context-name> <aggregate-name>` (both kebab-case). The context must already exist under `src/`.
## Steps
1. **Validate**: Confirm `src/<context>/domain/` exists. If not, suggest running `/ddd-context <context>` first.
2. **Pre-task hook**: `npx @claude-flow/cli@latest hooks pre-task --description "DDD aggregate: <aggregate-name> in <context>"`
3. **Create aggregate root entity**:
- File: `src/<context>/domain/entities/<aggregate-name>.entity.ts`
- Include: unique ID field, constructor with invariant validation, domain methods that enforce business rules, `equals()` based on identity
- Export a TypeScript class extending or implementing a base `AggregateRoot` interface
4. **Create value objects**:
- File: `src/<context>/domain/value-objects/<aggregate-name>-id.value-object.ts`
- Include: immutable ID value object with factory method and validation
- Add additional value objects as properties of the aggregate suggest them
5. **Create repository interface**:
- File: `src/<context>/domain/repositories/<aggregate-name>.repository.ts`
- Include: `findById`, `save`, `delete` methods
- Use the aggregate root and its ID value object as types
- This is an interface only -- no implementation (infrastructure concern)
6. **Create domain events**:
- File: `src/<context>/domain/events/<aggregate-name>-created.event.ts`
- File: `src/<context>/domain/events/<aggregate-name>-updated.event.ts`
- Include: event name (past tense), timestamp, aggregate ID, payload
7. **Create unit test stubs**:
- File: `src/<context>/domain/entities/<aggregate-name>.entity.test.ts`
- Include: test cases for construction invariants, domain methods, equality
- Use `describe`/`it` with `should [behavior] when [condition]` names
8. **Update barrel exports**: Add new files to the relevant `index.ts` barrel files.
9. **Store in domain model graph**:
```
mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store({ key: "domain/context-<context>/aggregate-<aggregate-name>", value: "Aggregate <aggregate-name> (parent: context-<context>)", tier: "semantic" })
mcp__plugin_ruflo-core_ruflo__agentdb_causal-edge({ sourceId: "entity:context-<context>", targetId: "entity:aggregate-<aggregate-name>", relation: "contains" })
mcp__plugin_ruflo-core_ruflo__memory_store({ key: "ddd-aggregate-<context>-<aggregate-name>", value: "AGGREGATE_SUMMARY", namespace: "tasks" })
```
10. **Post-task hook**: `npx @claude-flow/cli@latest hooks post-task --task-id "ddd-aggregate-<aggregate-name>" --success true`
© ruvnet · MIT · ruvnet/ruflo