Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

ddd-aggregate — Claude Code skill: what it does, how to install

Scaffolds a DDD aggregate root with an entity, value objects, a repository interface, domain events, and test stubs. Useful when modeling business logic in an existing bounded context.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add ruvnet/ruflo --skill ddd-aggregate -a claude-code
Open on GitHub

What ddd-aggregate does

The skill accepts <context-name> and <aggregate-name> in kebab-case. It first checks whether src/<context>/domain/ exists. Scaffolding halts if that directory is missing, prompting you to run /ddd-context <context> first. A pre-task hook then triggers via @claude-flow/cli.

Inside the context, it creates TypeScript files: the aggregate root class in domain/entities/, an immutable ID value object, an interface-only repository, and past-tense domain events. It also writes unit test stubs targeting construction invariants and equality in domain/entities/<aggregate-name>.entity.test.ts.

Finally, it updates barrel exports in index.ts and registers the aggregate structure in the domain model graph via Ruflo MCP memory tools. A post-task hook marks the task finished.

What it helps with

  • scaffold an aggregate root class with invariant validation
  • define a domain repository interface with findById, save, and delete methods
  • create past-tense domain event templates for created and updated states
  • generate unit test stubs for identity equality and construction rules

Example prompts for the agent

  • /ddd-aggregate billing invoice
  • /ddd-aggregate ordering customer-order
  • Scaffold an aggregate root: /ddd-aggregate checkout cart

How to install ddd-aggregate

1Skills CLI (Vercel)

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

2Manually: put the files in place

~/.claude/skills/ddd-aggregate/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/ddd-aggregate/

From the same set104

The whole set →
ruflo ruvnet This skill adds multi-agent orchestration, memory, routing, and MCP tools to a project. Use it for swarm tasks and multi-step workflows. Claude Code CX Codex Cursor +1 4,000installs Swarm Orchestration ruvnet Skill for managing agent swarms with parallel execution, dynamic topology, and automatic load balancing. Use when a single agent is not enough and you need to orchestrate specialists of different types. Claude Code CX Codex Cursor +1 2,100installs github-project-management ruvnet Turns issue triage and board upkeep into gh and ruv-swarm calls: labels, subtasks, duplicate lookup. Useful when the tracker holds more tickets than order. Claude Code CX Codex Cursor +1 1,400installs github-workflow-automation ruvnet Automates GitHub Actions with AI agent coordination. Generates optimised pipelines, manages pull requests, analyzes failed runs, and deploys updates with risk assessment. Claude Code CX Codex Cursor +1 1,300installs github-code-review ruvnet Runs a swarm of specialized AI agents to inspect GitHub pull requests for security, performance, and architecture issues. Claude Code CX Codex Cursor +1 1,300installs stream-chain ruvnet Chains sequential agent steps together using streaming JSON flow and provides ready-to-run pipelines. Claude Code CX Codex Cursor +1 1,200installs flow-nexus-swarm ruvnet Deploy cloud-based AI agent swarms and define event-driven workflows with message queues. Use it to coordinate tasks, inspect runs, and scale a swarm. Claude Code CX Codex Cursor +1 1,200installs performance-analysis ruvnet Detects bottlenecks in Claude Flow swarms, profiles agent operations, and generates reports with actionable optimization recommendations. Claude Code CX Codex Cursor +1 1,200installs

Similar

backend-security-coder sickn33 Hardens backend application code with allowlist validation, safe database queries, secure cookie handling, and API authentication logic. Claude Code CX Codex Cursor +1 1,000installs twilio-communications sickn33 Helps build Twilio communication features: SMS, voice calls, WhatsApp messaging, and two-factor verification. Useful when wiring IVR systems or securing account logins. Claude Code CX Codex Cursor +1 994installs wp-performance WordPress Backend profiling skill for optimizing WordPress sites using WP-CLI, REST headers, and diagnostic scripts without browser access. Claude Code CX Codex Cursor +1 6,100installs mcp-builder official anthropics This skill walks through building an MCP server in TypeScript or Python, from reading the protocol spec to writing tests and evaluation questions. Claude Code Claude.ai 130,949installs google-agents-cli-adk-code official Google A reference skill for building ADK agents with tools, callbacks, state, and workflows. Use it when an agent project needs concrete API patterns or code examples. Claude Code CX Codex Cursor +1 511,400installs lark-im larksuite This skill lets an agent work with Lark IM messages, chats, files, and interactive cards. Use it when coding tasks need access to team conversations. Claude Code CX Codex Cursor +1 472,300installs lark-event larksuite Listens to Lark/Feishu events and streams them as NDJSON. Use it for bots, message processing, and long-running subscribers. Claude Code CX Codex Cursor +1 466,200installs caveman-discover JuliusBrussee Finds and labels every LLM workflow in your repository so Caveman Cloud breaks down spend by actual job rather than grouping everything into one bucket. Claude Code CX Codex Cursor +1 103,500installs

Questions about ddd-aggregate

How to install ddd-aggregate in Claude Code?

Run npx skills add ruvnet/ruflo --skill ddd-aggregate -a claude-code.

What does ddd-aggregate do?

It scaffolds a TypeScript aggregate root entity, an ID value object, a repository interface, domain events, test stubs, and updates the Ruflo domain graph.

What is required before running ddd-aggregate?

The src/<context>/domain/ path must already exist. If it does not, the skill stops and asks to run /ddd-context <context> first.

Source text

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

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor