ddd-model-review · v1.1.0 · 2026-09-29 · sha256 c7311a8d3267bf00

ddd-model-review v1.1.0A

Immutable. This exact content never changes and is served at /api/v1/blob/c7311a8d3267bf00.

---
name: ddd-model-review
description: >-
  Global model quality assessment: consistency, completeness, coupling analysis, and
  feedback-loop triggers. Use when evaluating domain model quality, consistency/completeness/coupling
  checks, or model evolution review.
risk: safe
source: self
tags: "[ddd, validation, review, feedback-loop]"
date_added: "2026-05-08"
slug: ddd-model-review
version: 1.1.0
displayName: ddd-model-review
---

# DDD Model Review

> English version: [English](SKILL.en.md)

## 使用时机

- 战术建模完成后,需要对整体模型做质量门禁检查。
- 已有建模工件需要全面评估(可作为独立入口使用)。
- 定期模型健康检查:团队希望量化模型质量并识别退化趋势。

## 输入要求

- **必需**:至少需要以下工件中的 3 项以上:
  - 上下文目录与词汇表(来自 `ddd-contexts`)
  - 上下文关系矩阵(来自 `ddd-context-map`)
  - 聚合目录与不变量表(来自 `ddd-aggregates`)
  - 领域事件目录与服务定义(来自 `ddd-domain-interactions`)
- **可选**:子域分类(来自 `ddd-subdomains`)、事件流(来自 `ddd-discover`)、scope 定义(来自 `ddd-scope`)。

**输入不足时的可观察出口**:若可用工件少于 3 项,**不要**继续评分,也不做"降级标注"了事。直接输出一段缺失声明:列出已有 / 缺失工件、缺失项的来源 Skill(如"聚合目录 ← `ddd-aggregates`"),并停在"请先补齐以下工件"的请求上。收到补齐材料后从头重跑流程。

**NOT for(不适用,转交对应技能)**:

- 只审单个聚合 / 单个上下文的内部设计 → `ddd-aggregates` / `ddd-contexts`,本技能做的是跨工件全局评审。
- 尚无任何建模工件、需求还模糊 → `ddd-scope` / `ddd-discover` 先行。
- 用户只想要阶段契约 / DoD 断言 → `stage-spec`,本技能不产出验收断言。
- 本技能为评审类:只出报告,不直接改被审工件;改动须用户显式授权。

## 流程

1. **术语一致性检查**:扫描所有工件中的术语使用,检测跨工件的命名冲突、定义漂移、同名不同义。
   - **行业对标(可选但推荐)**:若业务域存在成熟的开源参考实现(如物流域 Cargo、电商域 Broadleaf、B2B 域 Pyramid),应将其作为第 9 维比对参考。逐条列出:本模型对参考的 **语义融合/拆分偏离**;参考 **已知局限的主动识别**(例如 Activity/Status/Event 重叠);**未建模但应考虑的未来域**(例如 Billing/Customer/Carrier)。
2. **边界一致性检查**:验证聚合边界是否与上下文边界一致——不变量不应跨越上下文。
3. **完整性检查**:核对事件流中的每个事件是否在事件目录中有正式定义;每个命令是否有对应聚合处理。
4. **耦合分析**:评估上下文间耦合度——依赖方向、共享数据量、同步调用数。
5. **评分**:对以下维度 0-10 评分:术语一致性、边界合理性、不变量表达率、事件完整性、耦合度;若启用了行业对标,追加 "对标偏离" 维度。
   - 评分判定规则(保证"相同输入得到相同分数"):术语一致性 = 10 −(术语冲突数 ÷ 术语总数 × 10,向下取整到 0.5);边界合理性 = 10 −(跨上下文不变量数 × 2);不变量表达率 = 聚合目录中带不变量的聚合占比 × 10;事件完整性 = 事件流中已在事件目录正式定义的事件占比 × 10;耦合度 = 10 −(同步调用依赖数 + 共享数据对象数,下限 0)。每个分数必须能从公式与工件计数复算出来。
6. **问题清单与回溯触发**:输出发现的问题、影响、证据、建议修复方案,并按触发条件生成回溯指令。

## 输出

| 工件         | 结构要求                                                                                         |
| :----------- | :----------------------------------------------------------------------------------------------- |
| 评分总览     | 表格:维度(术语一致性、边界合理性、不变量表达率、事件完整性、耦合度)、得分(0-10)、主要扣分原因 |
| 问题清单     | 表格:问题、影响、证据(引用具体工件)、建议修复、优先级                                         |
| 行业对标报告 | (仅当启用)表格:对比项、参考实现做法、本模型做法、是融合/拆分/遗漏、是否可接受、建议           |
| 回溯触发清单 | 表格:触发条件、回溯目标 Skill、说明                                                             |
| 实施就绪判定 | 结论:Ready / Not Ready + 阻塞项列表                                                             |

## 校验清单

- [ ] 每个扣分项都提供可复核的证据(引用具体工件与条目)
- [ ] 回溯触发条件明确且可执行
- [ ] 评分可重复(相同输入得到相同分数)
- [ ] 实施就绪判定有明确的通过/不通过标准
- [ ] 若业务域存在公认的开源参考实现,已至少做过一轮对标;对标结论已沉淀到问题清单

## 回溯触发

本 Skill 是反馈闭环的核心触发器。根据评估结果触发以下回溯:

| 触发条件                   | 回溯至                    | 说明                             |
| :------------------------- | :------------------------ | :------------------------------- |
| 聚合边界与上下文边界矛盾   | `ddd-contexts`            | 上下文需重新划分以容纳一致性需求 |
| 术语冲突率 > 20%           | `ddd-contexts`            | 通用语言定义不充分               |
| 不变量表达率 < 60%         | `ddd-aggregates`          | 聚合可能为数据容器而非行为边界   |
| 集成模式与上下文映射不一致 | `ddd-context-map`         | 战术层发现了新的集成需求         |
| 事件完整性 < 70%           | `ddd-domain-interactions` | 事件目录缺失或未覆盖关键流程     |

**防止无限循环**:同一回溯路径最多执行 3 次。若第 3 次仍触发,标记为"需人工介入的架构决策"。

## 示例

### 调用示例

```text
@ddd-model-review
请对以下建模工件做全局质量评估:
- 上下文目录:[粘贴]
- 聚合目录:[粘贴]
- 领域事件目录:[粘贴]
- 上下文关系矩阵:[粘贴]
请输出分维度评分、问题清单与回溯建议。
```

### 最短真实示例(前置 → 调用 → 产出摘录)

前置:`ddd-discover` 与 `ddd-contexts`、`ddd-aggregates` 已跑完,手上有 4 份工件(满足"至少 3 项")。

调用:

```text
@ddd-model-review
工件如下——上下文目录:订单、库存、支付;聚合目录:Order(不变量:总额=行项之和)、
Cart(无不变量)、Payment(不变量:金额>0);事件流含 OrderPlaced/OrderShipped/StockReserved,
事件目录缺 OrderShipped 的定义。……[粘贴完整工件]
```

产出摘录(应长这样):

```text
| 维度         | 得分 | 主要扣分原因                        |
| 边界合理性   | 10   | 无跨上下文不变量                    |
| 不变量表达率 | 6.7  | 3 个聚合中 2 个带不变量             |
| 事件完整性   | 6.7  | OrderShipped 未在事件目录定义       |
回溯触发:事件完整性 < 70% → 建议回溯 ddd-domain-interactions 补事件目录。
实施就绪判定:Not Ready(阻塞项:事件目录缺失 1 条)。
```

## 常见错法 → 改法

| 错法 | 改法 |
| :--- | :--- |
| 工件只有 1–2 份就硬评,输出"降级标注"的分数 | 停在缺失声明:列出缺失工件与来源 Skill,等补齐后重跑(见"输入不足时的可观察出口") |
| 凭感觉给分(如"耦合度大概 7 分") | 用"评分判定规则"的公式复算,分数旁写明计数来源(哪个工件哪几条) |
| 用户没让评就自动跑全局评审 | 本技能仅在用户点名或上游 DDD 技能回溯触发时执行,不自主触发 |
| 评审发现问题时顺手改掉建模工件 | 只出报告与修复建议;改工件须用户显式授权 |
| 同一问题反复回溯 3 次以上 | 第 3 次仍触发即标记"需人工介入的架构决策",停止再回溯(见"防止无限循环") |
| 行业对标杜撰不存在的参考实现 | 只对标确有其库的开源实现(如物流 Cargo、Broadleaf);没有就写"该域无公认参考"并跳过该维度 |