mcpField
D
ddd-aggregate

ddd-aggregate

github.com/ruvnet开发80.0k749 次安装今天更新
代码仓库

关于 ddd-aggregate

ddd-aggregate 是开发技能,可在已有的限界上下文中搭建领域驱动设计聚合根。它创建领域层文件和测试框架,并将模型记录到 Ruflo。

主要功能

  1. 01验证已有的限界上下文
  2. 02创建聚合根与值对象
  3. 03定义仓储接口
  4. 04添加创建和更新领域事件
  5. 05生成单元测试框架及 barrel 导出
  6. 06将模型存入 Ruflo

适用场景

  1. 01在已有上下文中开始构建聚合
  2. 02建立领域实体与 ID 结构
  3. 03搭建仓储和事件定义

MCP 相关

使用 Ruflo MCP 工具将聚合写入领域模型图和任务记忆。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ruvnet/ruflo --skill ddd-aggregate

安装后在 Claude Code 中输入/ddd-aggregate确认已加载。

详细介绍

在限界上下文中搭建完整的聚合根。

将 $ARGUMENTS 解析为 <context-name> <aggregate-name>(两者均采用 kebab-case)。该上下文必须已存在于 src/ 下。

步骤

  1. 验证:确认 src/<context>/domain/ 存在。如果不存在,建议先运行 /ddd-context <context>。

  2. 任务前钩子:npx @claude-flow/cli@latest hooks pre-task --description "DDD aggregate: <aggregate-name> in <context>"

  3. 创建聚合根实体:

    • 文件:src/<context>/domain/entities/<aggregate-name>.entity.ts
    • 包含:唯一 ID 字段、带不变量验证的构造函数、执行业务规则校验的领域方法,以及基于身份的 equals()
    • 导出一个扩展或实现基础 AggregateRoot 接口的 TypeScript 类
  4. 创建值对象:

    • 文件:src/<context>/domain/value-objects/<aggregate-name>-id.value-object.ts
    • 包含:带工厂方法和验证逻辑的不可变 ID 值对象
    • 根据聚合的属性添加其他值对象
  5. 创建仓储接口:

    • 文件:src/<context>/domain/repositories/<aggregate-name>.repository.ts
    • 包含:findById、save、delete 方法
    • 使用聚合根及其 ID 值对象作为类型
    • 这仅是一个接口——不包含实现(基础设施关注点)
  6. 创建领域事件:

    • 文件:src/<context>/domain/events/<aggregate-name>-created.event.ts
    • 文件:src/<context>/domain/events/<aggregate-name>-updated.event.ts
    • 包含:事件名称(过去时)、时间戳、聚合 ID、负载
  7. 创建单元测试桩:

    • 文件:src/<context>/domain/entities/<aggregate-name>.entity.test.ts
    • 包含:用于测试构造不变量、领域方法和相等性的用例
    • 使用 describe/it,用 should [behavior] when [condition] 格式命名
  8. 更新导出汇总文件:将新文件添加到相关的 index.ts 导出汇总文件中。

  9. 存入领域模型图:

    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
    
  10. 任务后钩子:npx @claude-flow/cli@latest hooks post-task --task-id "ddd-aggregate-<aggregate-name>" --success true --train-neural true

评论

支持 Markdown