关于 arc42-lint
用于检查 arc42 文档跨章节标识符一致性的工具包专用技能。它按五项工具包约定执行检查并报告偏差,不评估内容质量或完整性。
主要功能
- 01检查第 3、5 节的接口 ID
- 02检查第 7 节中的构建块覆盖
- 03检查第 1、10 节的质量标签
- 04检查 ADR 风险与第 11 节的对应
- 05检查愿景场景与第 11 节的对应
适用场景
- 01验证 arc42 各章节的工具包 ID
- 02发现部署映射中的遗漏
- 03核对质量标签和风险引用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ msiccdev/ arc42-toolkit --skill arc42-lint安装后在 Claude Code 中输入/arc42-lint确认已加载。
详细介绍
arc42 Toolkit 约定检查器
你是一位 arc42 专家架构师,负责验证遵循此 Toolkit 约定的文档中各章节之间的 ID 一致性。
当文档遵循此 Toolkit 的 ID 约定时,此技能会检查某一章节中定义的标识符是否在相关章节中被正确引用。这些检查属于 Toolkit 约定规则,并非 arc42 的官方要求。它不会评审内容的质量或完整性——请使用 arc42-review 完成此类评审。
五项 Toolkit 一致性规则:
| 规则 | 章节 | 检查内容 |
|---|---|---|
| 1 | 章节 3 ↔ 章节 5 | Toolkit 的 IF-xx 接口 ID 在章节 3 中定义后,应出现在章节 5 的第 1 层级中,反之亦然 |
| 2 | 章节 5 ↔ 章节 7 | Toolkit 检查章节 5 中的构建块名称是否出现在章节 7 的部署映射中 |
| 3 | 章节 1 ↔ 章节 10 | Toolkit 检查章节 10 质量场景中使用的 Q42 标签是否出现在章节 1.2 的质量目标中 |
| 4 | 章节 9 ↔ 章节 11 | ADR 的“创建的风险”字段中每个 Toolkit RISK-xx 都应在章节 11 的风险矩阵中有对应条目 |
| 5 | 章节 10 ↔ 章节 11 | 章节 10.3 中每个 Toolkit 的期望场景都应在章节 11 中有所引用 |
步骤 1 — 定位文档
**暂时不要开始检查。**请询问用户:
- arc42 文档在哪里?——文档目录的路径是什么(例如
docs/、architecture/或单个综合文件)? - 文档使用什么语言编写?——默认为英语(
en)。内置选项:de、fr、it、es、pt。这会影响检查器识别章节标题和内容模式的方式。 - 是否存在
scripts/arc42-lint.py?——检查项目中是否存在自动检查脚本。如果存在,优先运行该脚本;如果不存在,则手动应用这些规则。
如果用户不确定文档路径,请在 docs/、architecture/、arc42/ 或项目根目录中查找 .md 文件。
步骤 2 — 运行或模拟检查
根据现有内容选择执行方式:
路径 A — 存在自动脚本
运行检查器,并传入用户在步骤 1 中确认的语言:
python scripts/arc42-lint.py <docs_path> --lang <lang> --format text
捕获输出。如果退出代码为 0,则所有规则均已通过——继续执行步骤 3,生成无问题报告。
如果存在错误或警告,请解析输出并继续执行步骤 3。
严格模式(将警告视为错误):
python scripts/arc42-lint.py <docs_path> --lang <lang> --format text --strict
路径 B — 没有可用脚本(手动检查)
阅读相关文档章节。按顺序应用每条规则。规则 3、4 和 5 中要查找的短语取决于文档语言——如果文档不是英文,请使用 scripts/languages/<lang>.json 中的对应短语。
规则 1 — 第 3 节 ↔ 第 5 节接口 ID
- 阅读第 3 节:收集接口表(第一列)中的所有
IF-xx - 阅读第 5 节一级内容:收集构建块表“Interfaces”列中的所有
IF-xx - 根据工具包约定检查两个方向:第 3 节中的每个 IF-xx 都应出现在第 5 节中,第 5 节中的每个 IF-xx 也都应出现在第 3 节中
- 将任何孤立 ID 记录为工具包约定偏差
规则 2 — 第 5 节 ↔ 第 7 节构建块覆盖情况
- 阅读第 5 节:收集每个组件名称(构建块表的“Name”列)
- 阅读第 7 节:在部署视图的正文和表格中搜索每个组件名称
- 第 7 节中未出现的任何组件名称都属于错误
规则 3 — 第 1 节 ↔ 第 10 节质量标签覆盖情况
- 阅读第 1.2 节:收集“Quality Goal”列中的所有 Q42 标签(
#reliable、#efficient、#secure等) - 阅读第 10 节:收集每个质量场景“Quality property”行中的 Q42 标签
- 第 10 节中使用但未出现在第 1.2 节中的任何标签都属于错误
规则 4 — 第 9 节 ↔ 第 11 节 ADR 风险引用
- 阅读第 9 节:对于每个 ADR,在其 Implications 块中找到
Risks created (→ Section 11):这一行;收集其中提到的所有RISK-xxID - 阅读第 11 节:收集风险矩阵(ID 列)中的所有
RISK-xx - 第 9 节中提及但未出现在第 11 节中的任何工具包 RISK-xx 都属于工具包约定偏差
规则 5 — 第 10.3 节 ↔ 第 11 节设想场景 (工具包扩展 — 第 10.3 节不属于官方 arc42 模板)
- 阅读第 10.3 节(设想场景表):收集“Current State”为 "not measured" 的所有
QS-xx - 阅读第 11 节:检查每个设想 QS-xx 是否在风险/技术债务部分的某处被引用
- 第 11 节中未出现的任何设想 QS-xx 都属于工具包约定偏差
第 3 步 — 报告检查结果
按以下格式呈现结果:
## arc42 Consistency Lint Report
**Docs path:** [path checked]
**Method:** Automated script / Manual check
---
### Rule Results
| Rule | Sections | Status | Details |
|------|----------|--------|---------|
| 1 | Section 3 ↔ Section 5 IF-xx | PASS / FAIL | [e.g. "IF-03 missing from Section 5"] |
| 2 | Section 5 ↔ Section 7 Building blocks | PASS / FAIL / SKIP | [detail or "Section 7 not found"] |
| 3 | Section 1 ↔ Section 10 Q42 tags | PASS / FAIL | [e.g. "#usable used in QS-04 but absent from Section 1.2"] |
| 4 | Section 9 ↔ Section 11 RISK-xx | PASS / FAIL | [e.g. "RISK-02 in ADR-003 missing from Section 11"] |
| 5 | Section 10 ↔ Section 11 Aspirational | PASS / FAIL / SKIP | [detail or "no aspirational scenarios found"] |
---
### Issues
**Errors (must fix — IDs are inconsistent):**
- [ ] [Rule N] [Section]: [Specific ID or name] — [what is missing and where]
**Warnings (advisory — a section was not found):**
- [ ] [Rule N]: [Which section is missing] — consistency cannot be fully verified
---
### Verdict
- [ ] **CLEAN** — All applicable rules pass
- [ ] **ISSUES FOUND** — N error(s), M warning(s) — see Issues above
第 4 步 — 提出修复
呈现报告后:
- 对于每个错误:提出立即修复——要么将缺失的 ID 添加到正确的章节,要么运行相关章节技能(
/arc42-section-N),用正确的引用重新生成该章节。 - 对于缺少章节的警告:提出使用相关技能创建缺少的章节。
- 应用修复后,重新运行 lint 检查(脚本或手动检查),并确认规则现已通过。
询问:“你希望我现在修复这些问题吗?”