Skip to content
Back to skills

Ddd Aggregate

ASecurity

Scaffold an aggregate root with entity, value objects, repository interface, domain events, and test stubs

  • 73,733 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
data-aitypescriptbash

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add ruvnet/ruflo --skill ddd-aggregate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ddd Aggregate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ddd Aggregate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ruvnet-ddd-aggregate/badge)](https://www.skillsdirectory.com/skills/ruvnet-ddd-aggregate)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ddd-aggregate
description: Scaffold an aggregate root with entity, value objects, repository interface, domain events, and test stubs
argument-hint: "<context> <aggregate-name>"
allowed-tools: Bash(mkdir * find * ls *) Read Write Edit Grep Glob mcp__claude-flow__memory_store mcp__claude-flow__memory_search mcp__claude-flow__agentdb_hierarchical-store mcp__claude-flow__hooks_pre-task mcp__claude-flow__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__claude-flow__agentdb_hierarchical-store --parent "context:<context>" --child "aggregate:<aggregate-name>" --relation "contains"
   mcp__claude-flow__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 --train-neural true`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.