mcpField
D
ddd-validate

ddd-validate

github.com/ruvnet测试与质量80.0k736 次安装今天更新
代码仓库

关于 ddd-validate

ddd-validate 是用于检查 TypeScript 项目领域驱动设计边界与约定的开发技能。它会审查限界上下文、聚合、事件和仓储,并报告及存储检查结果。

主要功能

  1. 01发现限界上下文
  2. 02检查跨上下文导入
  3. 03审查聚合不变量
  4. 04验证事件约定
  5. 05检查仓储位置
  6. 06报告并存储结果

适用场景

  1. 01审计领域上下文间的导入
  2. 02查找绕过验证的聚合设置器
  3. 03检查领域事件命名与不可变性
  4. 04检查仓储接口和实现的位置

安装

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

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

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

详细介绍

验证所有限界上下文的领域边界完整性。

步骤

  1. 发现上下文:扫描 src/*/domain/,查找所有限界上下文。

  2. 检查跨边界违规:

    • 对每个上下文,扫描所有 .ts 文件中的导入语句
    • 标记任何直接导入其他上下文 domain/ 目录内容的语句
    • 允许:从其他上下文的公共 index.ts(应用层)导入
    • 违规:直接导入 src/<other-context>/domain/entities/...
    # Find cross-boundary imports
    for ctx in $(find src -maxdepth 2 -name "domain" -type d | sed 's|src/||;s|/domain||'); do
      grep -rn "from ['\"].*src/" "src/$ctx/" --include="*.ts" | grep -v "src/$ctx/" || true
    done
    
  3. 检查聚合不变量的强制执行:

    • 扫描聚合根实体,查找绕过验证的公共 setter
    • 标记缺少不变量检查的可变公共属性
    • 确认子实体不能被直接访问(必须通过聚合根访问)
  4. 检查事件命名约定:

    • 领域事件应使用过去时命名(例如,OrderCreated,而非 CreateOrder)
    • 事件应不可变(没有公共 setter)
    • 事件应携带聚合 ID
  5. 检查仓储模式:

    • 仓储接口应位于 domain/repositories/,而非 infrastructure/
    • 仓储实现应位于 infrastructure/,而非 domain/
    • 每个聚合根应恰好对应一个仓储
  6. 报告发现结果:

    • 输出一个违规项表格,包含文件路径、行号、违规类型和建议
    • 分类为:BOUNDARY、INVARIANT、EVENT、REPOSITORY
    • 以摘要结束:违规总数、各类别数量、严重程度
  7. 存储结果:

    npx @claude-flow/cli@latest memory store --key "ddd-validation-TIMESTAMP" --value "RESULTS_SUMMARY" --namespace tasks
    npx @claude-flow/cli@latest hooks post-task --task-id "ddd-validate" --success true --store-results true
    

评论

支持 Markdown