用途
ddd-aggregate 用于在既有的限界上下文(bounded context)内脚手架生成一个完整的聚合根(aggregate root)。当需要向已有 DDD 项目添加新聚合、并希望保持领域层结构一致时使用。
输入与前置条件
- 参数格式:
<context-name> <aggregate-name>,两者均为 kebab-case。 - 上下文必须已存在于
src/下:技能会校验src/<context>/domain/是否存在;如果不存在,会建议先运行/ddd-context <context>创建上下文。
主要能力
该技能会创建以下文件与结构(均为 TypeScript):
-
聚合根实体:
src/<context>/domain/entities/<aggregate-name>.entity.ts- 包含唯一 ID 字段、带不变性(invariant)校验的构造函数、强制业务规则的领域方法、基于标识的
equals()。 - 导出一个扩展或实现基础 AggregateRoot 接口的 TypeScript 类。
- 包含唯一 ID 字段、带不变性(invariant)校验的构造函数、强制业务规则的领域方法、基于标识的
-
值对象:
src/<context>/domain/value-objects/<aggregate-name>-id.value-object.ts- 包含不可变 ID 值对象,带工厂方法与校验。
- 会根据聚合属性建议添加额外的值对象。
-
仓储接口:
src/<context>/domain/repositories/<aggregate-name>.repository.ts- 包含
findById、save、delete方法。 - 使用聚合根与其 ID 值对象作为类型。
- 仅为接口,不含实现(实现属于基础设施关注点)。
- 包含
-
领域事件:
src/<context>/domain/events/<aggregate-name>-created.event.ts与<aggregate-name>-updated.event.ts- 包含事件名称(过去时)、时间戳、聚合 ID、payload。
-
单元测试桩:
src/<context>/domain/entities/<aggregate-name>.entity.test.ts- 包含针对构造不变性、领域方法、相等性的测试用例。
- 使用
describe/it的should [behavior] when [condition]命名方式。
-
更新 barrel 导出:将新文件加入相关
index.tsbarrel 文件。 -
存入领域模型图与记忆:通过 MCP 工具写入层级存储与记忆存储。
使用方式
调用时提供上下文名称与聚合名称两个 kebab-case 参数。技能执行流程包括:前置任务 hook(npx @claude-flow/cli@latest hooks pre-task --description "DDD aggregate: <aggregate-name> in <context>")、生成上述文件、写入领域模型图与记忆、以及后置任务 hook(--task-id "ddd-aggregate-<aggregate-name>" --success true --train-neural true)。
适用场景
- 在既有 DDD 分层项目中快速、一致地添加新聚合。
- 需要在领域层同时生成实体、值对象、仓储接口、事件与测试桩的场合。
限制
- 目标上下文必须已存在,且需要
src/<context>/domain/目录。 - 仓储仅生成接口,不生成基础设施实现。
- 依赖
npx @claude-flow/cli及相关的 MCP 插件工具。 - 具体的收费、价格、平台支持等信息暂未提供。