ruvnet/ruflo1 file

Ddd Aggregate

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.

Specification
Skill ID
ruvnet/ruflo/ddd-aggregate
Publisher
ruvnet
Repository
ruflo
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

ruvnet/ruflo/ddd-aggregateInstalls these files
  • SKILL.md

What this skill tells the agent

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.
  1. Pre-task hook: npx @claude-flow/cli@latest hooks pre-task --description "DDD aggregate: <aggregate-name> in <context>"
  1. 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
  1. 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
  1. 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)
  1. 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
  1. 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
  1. Update barrel exports: Add new files to the relevant index.ts barrel files.
  1. Store in domain model graph: `` mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store --parent "context:<context>" --child "aggregate:<aggregate-name>" --relation "contains" mcp__plugin_ruflo-core_ruflo__memory_store --key "ddd-aggregate-<context>-<aggregate-name>" --value "AGGREGATE_SUMMARY" --namespace tasks ``
  1. Post-task hook: npx @claude-flow/cli@latest hooks post-task --task-id "ddd-aggregate-<aggregate-name>" --success true --train-neural true

Use this skill in a project

Open any RiverX project, search the Skills panel for ruvnet/ruflo/ddd-aggregate, and install it in one click.

Use this skill