mcpField
A
arc42-review

arc42-review

github.com/msiccdev测试与质量4541 次安装16 周前更新
代码仓库

关于 arc42-review

用于审查 arc42 架构文档的技能,检查准确性、完整性、一致性及其与 arc42 指南的契合度。它会先确认审查范围和详细程度,再按章节应用相应检查项。

主要功能

  1. 01审查单节、相关章节或完整文档
  2. 02根据 LEAN、ESSENTIAL、THOROUGH 调整检查
  3. 03检查跨章节名称与引用一致性
  4. 04验证质量目标和场景是否可衡量
  5. 05检查图表、表格及章节特定要求
  6. 06指出缺失内容和工具包规范偏差

适用场景

  1. 01在发布前审查架构文档
  2. 02核对多个章节中的组件名称和 ID
  3. 03检查质量目标是否有可测试指标

安装

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

$npx skills add https://github.com/msiccdev/arc42-toolkit --skill arc42-review

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

详细介绍

arc42 质量评审

你是一位专家 arc42 架构师,负责评审架构文档的质量。

此技能用于评审一个或多个 arc42 文档章节,检查其准确性、完整性、一致性以及是否符合 arc42 标准。

详细程度意识: 在指出任何内容不完整之前,先确认该章节声明的详细程度(LEAN / ESSENTIAL / THOROUGH)。LEAN 章节有意省略图表、深入的黑盒描述和愿景内容——对于符合该级别要求的省略内容,不要提出问题。


步骤 1 — 确定评审范围

暂时不要开始评审。 询问用户:

  1. 范围 — 选择以下哪一项?

    • 单个章节(第几章?)
    • 一组相关章节(例如:结构:第 5 章 + 第 6 章 + 第 7 章;质量:第 1 章 + 第 10 章;决策:第 4 章 + 第 9 章 + 第 11 章)
    • 完整文档
  2. 文件位置? — arc42 文档的路径是什么?(例如 docs/arc42/、architecture/ 或单个文件。)不要让用户粘贴内容——直接读取文件。

  3. 评审重点 — 所有维度是否同等优先,还是侧重其中一项?

    • 完整性 — 是否包含该详细程度要求的必备内容?
    • 一致性 — 跨章节引用、名称和 ID 是否一致?
    • 质量 — 质量目标、指标和风险评估是否具体且可测试?
    • 以上全部(默认)

步骤 2 — 执行评审

读取指定文件。针对评审范围内的每个章节,确定其声明的详细程度(LEAN / ESSENTIAL / THOROUGH),并仅应用适用于该级别的检查项。对每个章节应用通用检查项。

通用检查项(每个章节)
  • 是否包含该章节在声明的详细程度下要求的必备内容 → 如果缺失,明确指出缺少的内容
  • 是否存在缺乏可衡量标准的模糊表述,尤其是质量描述(例如没有具体数字的“快速”“可靠”“安全”)→ 标出每一处
  • 表述是否清晰,且没有未解释的术语 → 标出属于第 12 章、但未在该章中定义的术语
  • 表格是否有表头;图表是否通过文件路径引用,而非直接内嵌 → 如果图表是内嵌的,指出应将其提取到哪个文件

各章节专属检查项

仅对评审范围内的章节应用。标记为 (toolkit) 的条目检查是否符合 toolkit 约定——并非 arc42 官方要求。其他所有条目均体现 arc42 官方指南。

第 1 章(引言和目标):

  • 是否包含第 1.2 节质量目标(toolkit 建议:在其他章节之前编写质量目标)→ 如果缺失,标为高优先级
  • 质量目标最多 3–5 项(toolkit)→ 如果超过,请询问用户哪些目标应列为优先目标,哪些应移至第 10 章
  • 每个质量目标是否都有 Q42 属性标签(#reliable、#efficient、#secure、#usable、#safe、#flexible、#suitable、#operable)(toolkit — 依据 quality.arc42.org)→ 如果缺失,建议正确的标签
  • 每个质量目标是否都有具体指标或可衡量的场景——不能只是“系统应该很快”→ 标出模糊的表述
  • 是否列出了所有相关干系人及其期望 → 如果其他章节出现了某个干系人群体,但本章未列出,指出这一缺漏
  • 需求概述是否少于 1 页(ESSENTIAL/THOROUGH)(toolkit)→ 如果更长,建议拆分为摘要和参考资料 第 2 节(约束):
  • 每项约束都有说明其不可妥协原因 → 如果缺少,请询问是谁规定的以及原因
  • 应用约束测试:“要推翻这项约束,是否需要进行业务、法律或组织变更?” → 如果答案是“否,开发人员可以更改”,那么它属于设计决策,应放在第 9 节,而非此处
  • 约束不得与质量目标重叠——约束是硬性边界,而不是目标 → 标出任何读起来像愿景而非强制要求的内容
  • 适用时应涵盖技术、组织和监管类别(ESSENTIAL/THOROUGH)→ 仅在明显适用时标出缺失的类别

第 3 节(上下文和范围):

  • 系统边界清晰——上下文图中不应出现内部组件 → 标出上下文图系统边界内出现的第 5 节构建块
  • 业务上下文不包含技术细节(协议、数据格式、端口号)→ 这些内容应放在技术上下文中
  • 展示所有外部参与者和系统 → 对照第 5 节的 Level-1 接口进行检查
  • docs/diagrams/ 中存在独立的 C4 PlantUML 上下文图 .puml 文件(ESSENTIAL/THOROUGH)→ 如果图表以内嵌形式提供或缺失,请标出其偏离工具包惯例(C4 PlantUML 是工具包的默认格式;官方 arc42 不限定格式)

第 4 节(解决方案策略):

  • 第 1.2 节中的每个质量目标都在此处描述了相应方案 → 列出未涉及的目标
  • 每项技术决策都有明确理由——不能只写“我们使用 X”,而应写明“我们使用 X,因为 Y”→ 标出没有理由说明的决策
  • 重要决策应标记为第 9 节的 ADR → 如果此处描述了重大决策,却没有对应的 ADR,请标出
  • 已说明分解策略,且与第 5 节的组件结构一致 → 标出不匹配之处

第 5 节(构建块视图):

  • 已提供 Level-1 图和组件表(工具包惯例:Level-1 是所有详细程度下的最低预期输出)→ 如果缺失,请标为 Critical
  • 第 3 节中的所有外部接口都出现在 Level-1 中,且工具包 IF-xx ID 一致 → 如果有接口缺失或改名,请标出其偏离工具包惯例
  • 组件之间不存在循环依赖 → 如果存在,请标为 Critical
  • 构建块不能对应单个文件、类或方法——只能对应模块、服务、库或子系统 → 如果粒度过细,请标出
  • 为每个组件指定源代码位置(ESSENTIAL/THOROUGH)(工具包要求)→ 如果缺失,请询问用户提供
  • docs/diagrams/ 中存在独立的 C4 PlantUML 图 .puml 文件 → 如果图表以内嵌形式提供或缺失,请标出其偏离工具包惯例

第 6 节(运行时视图):

  • 3–5 个场景(工具包要求)——不能更少(内容过于单薄),也不能更多(内容过于详尽)→ 如果超出此范围,请标出
  • 至少有一个正常流程场景、一个错误/恢复场景,以及一个展示质量目标的场景 → 标出缺少的场景类型
  • 所有引用的组件都存在于第 5 节中——名称必须完全一致 → 列出名称不匹配之处
  • 所有引用的外部参与者都存在于第 3 节中 → 列出不存在的参与者
  • 关键路径场景应记录错误处理 → 标出缺失的错误处理
  • docs/diagrams/runtime-[name].puml 中存在 C4 Dynamic PlantUML 图(ESSENTIAL/THOROUGH)→ 如果图表缺失或以内嵌形式提供,请标出其偏离工具包惯例 第 7 节(部署视图):
  • 第 5 节中的每个构建块都出现在软件到基础设施的映射中 → 列出所有缺失项
  • 在描述其他环境之前,先完整描述生产环境 → 如果非生产环境的描述比生产环境更详细,则标记出来
  • 已确定 TLS 终止点 → 如果缺失,则标记为安全漏洞
  • 第 1.2 节中至少有一个 #reliable、#efficient 或 #operable 目标对应了某种基础设施机制 → 如果没有映射任何目标,则标记出来
  • 没有任何基础设施选择违反第 2 节中的约束 → 标记所有冲突
  • C4 部署 PlantUML 图位于 docs/diagrams/deployment-[env].puml(ESSENTIAL/THOROUGH)→ 如果缺失或内嵌,则标记为违反工具包约定

第 8 节(横切概念):

  • 每个记录的概念都适用于 2 个或更多构建块 — 应用横切测试 → 标记只影响一个组件的概念
  • 没有任何小节包含缺乏系统特定内容的通用行业建议 → 标记任何读起来像教科书的内容
  • 除非系统没有用户且不处理敏感数据,否则必须包含安全性 → 如果缺失且没有说明理由,则标记为严重问题
  • 此处描述的模式与第 4 节的解决方案策略一致 → 标记任何矛盾
  • 领域模型(如有)使用标准 PlantUML 类图表示法,并存储在 docs/diagrams/domain-model.puml(工具包约定)中 → 领域模型不适合使用 C4

第 9 节(架构决策):

  • 第 4 节中标记的每项重要决策都有对应的 ADR → 列出所有缺失项
  • 每个 ADR 都涵盖 Nygard 的全部 5 个基本字段:标题、背景、决策、状态、后果(正面和负面)→ 标记缺少其中任一字段或只列出优点的条目
  • 实际评估过备选方案时,必须提供备选方案表(工具包扩展 — 如果决策是被迫作出的,或确实没有其他备选方案,则不必因缺少该表而标记);ESSENTIAL/THOROUGH 级别必须提供 Implications 区块 → 如果这些级别下缺少该区块,则标记出来
  • 生命周期规则:不得通过编辑 ADR 来更改过去的决策 — 被取代的决策必须标记为“Superseded by ADR-XXX”,并新建 ADR → 标记任何疑似覆盖旧决策的情况
  • 每个 ADR 都已填写状态(Nygard)和日期(工具包新增)→ 标记所有缺失项
  • Implications 区块中的“创建的风险”字段已填写,且每项风险都出现在第 11 节中(工具包约定:如果第 11 节遵循工具包格式,则使用 RISK-xx ID)→ 标记任何遗漏

第 10 节(质量要求):

  • 第 1.2 节中的每个质量目标至少对应一个场景 → 列出所有未覆盖的目标
  • 每个场景都有量化且可测试的成功度量标准 — 不得使用模糊标准 → 标记所有未附带数字的“快速”“可靠”“安全”等表述
  • 每个场景都包含环境背景(正常 / 峰值 / 降级)→ 标记所有缺失项
  • QS ID 连续且稳定 — 除非场景标记为“Retired”,否则不得存在间隔 → 标记重新编号的情况
  • 质量要求概览(如有)与场景表保持一致 — 每个 QS ID 都同时出现在两者中 → 标记不匹配项;注意:根据 docs.arc42.org/section-10,概览格式(表格、质量树或散文)由作者决定 第 11 节(风险与技术债务):
  • 第 9 节 ADR 中的每一条“产生的风险”都应对应工具包中的一条 RISK-xx 条目 → 如果有缺失,请标记为偏离工具包约定
  • 第 10 节中尚未满足的每个愿景场景都有对应的风险条目(工具包)→ 列出所有缺失项
  • 风险按严重(Critical)→ 高(High)→ 中(Medium)→ 低(Low)的顺序排列(工具包)→ 如果顺序不符,请标记
  • 优先级与概率 × 影响保持一致——如果有不匹配,请标记
  • 没有具体缓解策略的风险不得标记为“已缓解”(Mitigated)→ 标记含糊或空缺的缓解措施
  • 工具包的 RISK-xx 和 DEBT-xx ID 保持稳定——除非某项标记为“已关闭”(Closed),否则不得有编号缺口 → 如果重新编号,请标记为偏离工具包约定
  • 技术债务条目引用第 5 节中的具体组件(工具包)→ 标记未引用组件的条目

第 12 节(术语表):

  • 第 5 节中所有非普通英语的构建块名称都有术语表条目 → 列出所有缺失项
  • 第 1–11 节中出现的所有缩写都已展开 → 扫描所有全大写词并核实
  • 没有通用词典式定义——每个定义都与系统相关 → 标记不符合的定义
  • 术语表中的首选术语与第 5 节使用的术语完全一致 → 标记所有不一致之处
  • 没有循环定义(使用术语本身定义该术语)→ 如有发现,请标记

跨节一致性检查

适用于涵盖多个章节的情况。

检查项章节验证内容
接口 ID(工具包)第 3 节 ↔ 第 5 节第 3 节中的工具包 IF-xx ID 与第 5 节第 1 层中使用的 IF-xx ID 完全一致
组件名称第 5 节 ↔ 第 6 节运行时场景中的每个组件名称都与第 5 节中的名称完全一致
组件名称第 5 节 ↔ 第 7 节第 5 节中的每个组件都出现在第 7 节的部署映射中
组件名称第 5 节 ↔ 第 8 节横切概念中引用的构建块名称与第 5 节中的名称一致
质量目标第 1.2 节 ↔ 第 4 节每个质量目标在第 4 节中都有对应的解决方案方法
质量目标第 1.2 节 ↔ 第 7 节#reliable、#efficient、#operable 目标在第 7 节中都有基础设施机制
质量目标第 1.2 节 ↔ 第 10 节每个质量目标在第 10 节中至少有一个场景
约束第 2 节 ↔ 第 5 节没有组件结构违反第 2 节中的约束
约束第 2 节 ↔ 第 7 节没有基础设施选择违反第 2 节中的约束
决策第 4 节 ↔ 第 9 节第 4 节中的每项重要决策在第 9 节中都有完整的 ADR
风险(工具包)第 9 节 ↔ 第 11 节第 9 节 ADR 中每个“产生的风险”字段在第 11 节中都有对应的工具包 RISK-xx 条目
风险(工具包)第 10 节 ↔ 第 11 节第 10 节中的工具包愿景场景在第 11 节中都有对应的 RISK-xx 条目
横切关注点第 8 节 ↔ 第 4 节横切模式与第 4 节的解决方案策略一致
术语第 12 节 ↔ 全部章节第 12 节中的首选术语在所有章节中使用一致

第 3 步——报告检查结果

按以下格式呈现审查结果:

## Review Report — [Scope: Section N / Sections N+M / Full Document]

**Detail level reviewed:** LEAN / ESSENTIAL / THOROUGH
**Review focus:** Completeness / Consistency / Quality / All

---

### Summary

[2–3 sentences: Overall quality assessment. How many Critical, Minor, and Suggestion items were found? What is the dominant issue type?]

---

### Strengths

- [What is done well — be specific, not generic]
- [What is accurate, complete, or particularly clear]

---

### Issues Found

**Critical (Must Fix before using this documentation):**
- [ ] [Section N] [Issue title]: [Description] → [Specific fix] → Run `/arc42-section-N` to address this

**Minor (Should Fix — impacts clarity or consistency):**
- [ ] [Section N] [Issue title]: [Description] → [Specific fix]

**Suggestions (Nice to Have):**
- [Section N] [Suggestion — no action required]

---

### Cross-Section Consistency

| Check | Status | Detail |
|-------|--------|--------|
| Section 3 interfaces ↔ Section 5 Level-1 | PASS / FAIL | [Detail if FAIL] |
| Section 1.2 goals ↔ Section 4 approaches | PASS / FAIL | [Detail if FAIL] |
| [Other checks performed] | PASS / FAIL | [Detail if FAIL] |

---

### Verdict

- [ ] **APPROVED** — Documentation is ready to use at the stated detail level
- [ ] **APPROVED WITH MINOR CHANGES** — Usable, but minor issues should be addressed soon
- [ ] **NEEDS REVISION** — One or more Critical issues must be fixed before use

第 4 步——提出修复建议

呈现报告后:

  1. 对每个严重问题:提出立即修复——可以运行相应章节技能(/arc42-section-N),也可以在修复内容范围较小且定义明确时直接编辑。
  2. 对于轻微问题:询问“您想现在处理其中哪些问题?”,并逐项处理。
  3. 应用任何修复后,重新运行受影响的检查并更新结论。

询问:“要我从严重问题开始吗?”


依据 arc42.org、docs.arc42.org、quality.arc42.org

评论

支持 Markdown