关于 ddd-validate
ddd-validate 是用于检查 TypeScript 项目领域驱动设计边界与约定的开发技能。它会审查限界上下文、聚合、事件和仓储,并报告及存储检查结果。
主要功能
- 01发现限界上下文
- 02检查跨上下文导入
- 03审查聚合不变量
- 04验证事件约定
- 05检查仓储位置
- 06报告并存储结果
适用场景
- 01审计领域上下文间的导入
- 02查找绕过验证的聚合设置器
- 03检查领域事件命名与不可变性
- 04检查仓储接口和实现的位置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill ddd-validate安装后在 Claude Code 中输入/ddd-validate确认已加载。
详细介绍
验证所有限界上下文的领域边界完整性。
步骤
-
发现上下文:扫描
src/*/domain/,查找所有限界上下文。 -
检查跨边界违规:
- 对每个上下文,扫描所有
.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 - 对每个上下文,扫描所有
-
检查聚合不变量的强制执行:
- 扫描聚合根实体,查找绕过验证的公共 setter
- 标记缺少不变量检查的可变公共属性
- 确认子实体不能被直接访问(必须通过聚合根访问)
-
检查事件命名约定:
- 领域事件应使用过去时命名(例如,
OrderCreated,而非CreateOrder) - 事件应不可变(没有公共 setter)
- 事件应携带聚合 ID
- 领域事件应使用过去时命名(例如,
-
检查仓储模式:
- 仓储接口应位于
domain/repositories/,而非infrastructure/ - 仓储实现应位于
infrastructure/,而非domain/ - 每个聚合根应恰好对应一个仓储
- 仓储接口应位于
-
报告发现结果:
- 输出一个违规项表格,包含文件路径、行号、违规类型和建议
- 分类为:
BOUNDARY、INVARIANT、EVENT、REPOSITORY - 以摘要结束:违规总数、各类别数量、严重程度
-
存储结果:
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