用途
ddd-validate 用于在 DDD(领域驱动设计)代码库中校验领域边界完整性。当需要审计代码库中限界上下文之间是否存在泄漏、聚合不变量是否被正确执行时,可使用该技能。
主要能力
1. 发现上下文
扫描 src/*/domain/ 目录,找出所有限界上下文。
2. 检查跨边界违规
- 对每个上下文,扫描所有 .ts 文件中的 import 语句
- 标记任何直接深入到其他上下文 domain/ 目录的导入
- 允许:从其他上下文的公开 index.ts(应用层)导入
- 违规:直接从 src/<其他上下文>/domain/entities/... 导入
用于查找跨边界导入的命令:
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
适用场景
适用于对采用 DDD 架构、以 TypeScript 编写的代码库进行领域边界审计,检查限界上下文之间的耦合泄漏,以及聚合、事件、仓储等模式的一致性问题。
限制
该技能针对 src/*/domain/ 目录结构与 .ts 文件进行扫描,其检查规则基于上述边界、不变量、事件与仓储约定;关于收费、价格、平台支持范围及其他未在资料中说明的信息,暂未提供。