SuperAPI AI 工具集

ddd-aggregate

编程与开发

查看项目

更新于 10-15 15:44

技能介绍

用途

ddd-aggregate 用于在既有的限界上下文(bounded context)内脚手架生成一个完整的聚合根(aggregate root)。当需要向已有 DDD 项目添加新聚合、并希望保持领域层结构一致时使用。

输入与前置条件

  • 参数格式:<context-name> <aggregate-name>,两者均为 kebab-case。
  • 上下文必须已存在于 src/ 下:技能会校验 src/<context>/domain/ 是否存在;如果不存在,会建议先运行 /ddd-context <context> 创建上下文。

主要能力

该技能会创建以下文件与结构(均为 TypeScript):

  1. 聚合根实体:src/<context>/domain/entities/<aggregate-name>.entity.ts

    • 包含唯一 ID 字段、带不变性(invariant)校验的构造函数、强制业务规则的领域方法、基于标识的 equals()。
    • 导出一个扩展或实现基础 AggregateRoot 接口的 TypeScript 类。
  2. 值对象:src/<context>/domain/value-objects/<aggregate-name>-id.value-object.ts

    • 包含不可变 ID 值对象,带工厂方法与校验。
    • 会根据聚合属性建议添加额外的值对象。
  3. 仓储接口:src/<context>/domain/repositories/<aggregate-name>.repository.ts

    • 包含 findById、save、delete 方法。
    • 使用聚合根与其 ID 值对象作为类型。
    • 仅为接口,不含实现(实现属于基础设施关注点)。
  4. 领域事件:src/<context>/domain/events/<aggregate-name>-created.event.ts 与 <aggregate-name>-updated.event.ts

    • 包含事件名称(过去时)、时间戳、聚合 ID、payload。
  5. 单元测试桩:src/<context>/domain/entities/<aggregate-name>.entity.test.ts

    • 包含针对构造不变性、领域方法、相等性的测试用例。
    • 使用 describe/it 的 should [behavior] when [condition] 命名方式。
  6. 更新 barrel 导出:将新文件加入相关 index.ts barrel 文件。

  7. 存入领域模型图与记忆:通过 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 插件工具。
  • 具体的收费、价格、平台支持等信息暂未提供。