关于 doc-adr
doc-adr 是用于编写和检查架构决策记录的 Skill,每份记录聚焦一项决策。它按背景、决策与后果组织内容,并规定备选方案、追溯关系和就绪度检查。
主要功能
- 01单项决策记录结构
- 02背景、决策与后果
- 03备选方案比较指引
- 04上游标签与追溯关系
- 05基于模板的验证
适用场景
- 01记录技术选择及其理由
- 02实施前比较不同方案
- 03为后续 SPEC 工作准备决策
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vladm3105/ aidoc-flow-framework --skill doc-adr安装后在 Claude Code 中输入/doc-adr确认已加载。
详细介绍
doc-adr
用途
创建一份架构决策记录(ADR)——SDD 工作流的第 5 层。 ADR 使用“背景—决策—后果”模式记录一项架构决策:为什么需要该决策、选择了什么、权衡过哪些替代方案,以及接受了哪些后果。
层级:第 5 层——连接容器(PRD)与组件(SPEC)的决策桥梁;ADR 本身不是 C4 层级。 上游:EARS、BDD(遵循必要上游契约;通过 @ 标签链可传递追溯到上游 PRD/BRD)。 下游:SPEC → TDD → IPLAN → Code。
每份 ADR 都只涉及一项决策。出现新的架构选择时,应新建一份 ADR(ADR-02、ADR-03……),而不是扩展现有 ADR;使用 @depends: ADR-NN 关联它们。
适用场景
以下情况适用 doc-adr:
- BRD §8 / PRD §14 中的架构主题需要记录决策。
- 需要在多个替代方案中选择技术、模式或集成方式。
- 需要记录长期架构选择的理由和后果。
如需根据上游制品或提示词端到端生成,请使用
../doc-adr-autopilot/SKILL.md。如需规划项目所需的 ADR 集合,请参阅
../adr-roadmap/SKILL.md。
前置条件
ADR 属于第 5 层,因此在编写前,请确认所需的上游制品(EARS + BDD)已存在,并阅读规范:
- 模板(事实来源):
${CLAUDE_PLUGIN_ROOT}/framework/layers/05_ADR/ADR-TEMPLATE.yaml - 层级 README:
${CLAUDE_PLUGIN_ROOT}/framework/layers/05_ADR/README.md - ID 和标签标准:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md - 编写风格:
${CLAUDE_PLUGIN_ROOT}/framework/governance/AUTHORING_STYLE.md
确认所需的上游制品:ls docs/0{3,4}_*/ 2>/dev/null(EARS
和 BDD)。仅引用已存在的文档;切勿臆造 ADR-XXX 之类的占位符,也不要引用尚不存在的 SPEC 编号。确认 ID 无冲突:ls docs/05_ADR/ 2>/dev/null。通过 EARS/BDD 的 @ 标签链可传递追溯到上游 PRD/BRD。
层级指南
状态生命周期(ADR 特有)
ADR 使用Proposed → Accepted → Deprecated → Superseded,而非 Draft/In Review/Approved。状态与 SPEC-Ready 评分对应:
| 状态 | SPEC-Ready | 含义 |
|---|---|---|
| Proposed | 70–89% | 正在评估的决策 |
| Accepted | ≥90% | 已批准,可用于 SPEC |
| Deprecated | — | 不再相关(保留作历史记录) |
| Superseded | — | 已被更新的 ADR 取代(附上链接) |
必需结构(10 个编号章节 + 术语表 + 附录后置内容)
document_control 是第 1 节(状态、日期、决策者、作者、
originating_topic → PRD §14、brd_reference、SPEC-Ready 评分、修订
历史)。随后依次为:
- 背景(问题陈述、业务驱动因素、约束、技术背景)· 3. 决策(选定的解决方案、关键组件、MVP/下一周期范围)·
- 考虑过的替代方案(选定方案加上 2–3 个被否决的方案,每个方案均列出优缺点;被否决的方案须指出具体的否决因素,成本和契合度可选)· 5. 后果(积极结果、权衡/风险及严重程度;如果决策涉及支出,还需给出成本估算)· 6. 架构流程(图示 + 集成点)· 7. 实施评估(阶段、回滚、监控基线)· 8. 验证(成功标准、BDD 交叉引用)· 9. 可追溯性 · 10. 相关决策。
还必须包含术语表(glossary: 键)和附录(appendix: 键),作为必需的后置内容(不编号)。章节编号和标识符取自
ADR-TEMPLATE.yaml 自带的 # Section N: 编号——模板是事实来源。
各章节的内容要求和编写 _antipatterns 请参阅 ADR-TEMPLATE.yaml。
元素 ID 和标签
- 元素 ID(在 ADR 内):
ADR.{doc_id}.{section_id}.{hash}(例如ADR.01.03.e5b1)。为每个元素生成一个稳定的 4 位十六进制标识符,并确保其在所属章节内唯一(HASH01);发生冲突时扩展为 8 位。在此提示词中不要计算 SHA-256——哈希形式是由确定性工具流程生成的规范化目标,而精确到字节的字段提取仅针对 BRD §7 定义(ADR 在 Phase 2+ 中处理)。权威依据:framework/governance/ID_NAMING_STANDARDS.md。 不存在数字类型代码——元素的类型由其所在章节决定。 - ADR 是文档级工件。 引用时使用连字符形式
ADR-NN,绝不使用带点的元素 ID。自标记为@adr: ADR-NN(例如@adr: ADR-033);交叉链接使用@depends: ADR-NN和@discoverability: ADR-NN (rationale)。 - 必需的上游标签(Layer 5):
@ears @bdd——两者都必须提供(依据必要上游约定),并使用各自上游的元素 ID 形式 (@ears: EARS.01.03.5e2a、@bdd: BDD.01.03.8f4c)。通过 EARS/BDD 的 @-标签链可追溯上游 PRD/BRD 血缘关系——不要在 ADR 元素上添加@brd:/@prd:。 - 已移除的模式(不要使用):
DEC-XXX、ALT-XXX、CON-XXX、旧版 3 段式ADR.NN.xxxx、数字类型代码段,以及 3 位数的ADR-NNN。
创建流程
- 确认主题——一项决策,追溯至 PRD §14 的起始主题和 BRD §8 的驱动因素。
- 预留 ID——下一个可用的
ADR-NN(两位数,仅在需要时扩展:ADR-01、ADR-99、ADR-102)。 按层独立(CLEANUP-PR-F 条目 18): 在你所在层的索引中选取下一个可用编号——上游的编号不是你的编号 (文档编号按层依次递增且相互独立;参见framework/governance/ID_NAMING_STANDARDS.md§Cross-layer cardinality)。 - 创建嵌套文件夹——每个 ADR 都存放在
docs/05_ADR/ADR-NN_{slug}/中。单文件形式:其中的ADR-NN_{slug}.md; 分章节形式(>25 KB):ADR-NN.S_{section}.md,并从${CLAUDE_PLUGIN_ROOT}/framework/layers/05_ADR/ADR-00_index.TEMPLATE.md创建索引。 - 先完成文档控制(第 1 节),然后根据模板完成 §2–§10、词汇表和附录末尾内容。
- 在所选方案旁评估 2–3 个备选方案(使
options:包含 3–4 项)——为每个被否决的方案说明否决理由,并指出具体的不合格因素。每个方案的estimated_cost/fit均为可选;如果已有更完整的调研,则在prior_analysis中引用,而不是重复陈述。明确给出决策及其理由。 - 添加必需的上游标签
@ears @bdd;添加@adr: ADR-NN自标签及任何@depends:交叉链接。 - 在同一次更改中更新 ADR 索引
docs/05_ADR/ADR-00_index.md。 8.验证(见下文),并将 ADR 和索引一并提交。
验证
此技能就是验证器(无运行时代码)。针对 ${CLAUDE_PLUGIN_ROOT}/framework/layers/05_ADR/README.md 和 ${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md 进行检查。
- Document Control 是第一节;状态为 Proposed/Accepted/Deprecated/Superseded 之一。
- 10 个章节均存在且非空;恰好有一个决策。
- 所选方案旁边列出 2–3 个被否决的备选方案,每个方案都包含优点/缺点以及具体的否决因素。成本和适配性可选;应引用已有调研,而非重述。
- 后果涵盖积极结果和权衡(含严重程度);仅当决策涉及支出时才提供成本估算。
- 元素 ID 符合
ADR.NN.SS.xxxx;文档引用使用连字符形式ADR-NN;不得包含已移除的模式。 - 存在必需的上游标签
@ears @bdd(依据必要上游契约);自标签为@adr: ADR-NN。 - 若状态为 Accepted,SPEC-Ready 评分 ≥ 90。
- 图示契约:Architecture-Flow 章节包含决策/交互序列图(
@diagram: sequence-*),依据${CLAUDE_PLUGIN_ROOT}/framework/governance/DIAGRAM_STANDARDS.md— ADR 是决策桥接层,因此不使用 C4 层级(请使用../charts-flow/SKILL.md);索引已更新;无失效链接。
| 代码 | 含义 | 严重程度 |
|---|---|---|
| XDOC-002 | 缺少必需的上游标签 | error |
| XDOC-006 | 标签格式无效 | error |
| XDOC-008 | 内部链接失效 | error |
| XDOC-009 | 缺少可追溯性章节 | error |
**质量门禁(阻断性):**继续前,SPEC-Ready 评分必须达到 ≥ 90/100。若发现问题,请修复并重新检查;若无法修复,则记录下来以供人工审核。
ADR-REF 文档(
ADR-REF-NN_{slug}.md,通过../doc-ref/SKILL.md)是自由格式的参考目标,不受 Ready 评分、必需上游标签和质量门禁的约束。
下一个技能
../doc-spec/SKILL.md — SPEC 会通过 @adr: ADR-NN 引用此 ADR,并带上自身必需的上游标签 @ears @bdd,将决策转化为组件接口、数据模型和行为契约。
适配
读取 .aidoc/profile.yaml;仅遵循此技能的配置项
(section_toggles、glossary)。忽略未知键;若无配置文件,则使用框架默认值。依据文件:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ADAPTATION.md。
相关资源
- 模板/编写规则:
${CLAUDE_PLUGIN_ROOT}/framework/layers/05_ADR/ADR-TEMPLATE.yaml - 层 README:
${CLAUDE_PLUGIN_ROOT}/framework/layers/05_ADR/README.md - 索引模板:
${CLAUDE_PLUGIN_ROOT}/framework/layers/05_ADR/ADR-00_index.TEMPLATE.md - ID 与标签标准:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md - 质量门禁:
../doc-adr-audit/SKILL.md· 修复:../doc-adr-fixer/SKILL.md - 生成流水线:
../doc-adr-autopilot/SKILL.md - 决策规划:
../adr-roadmap/SKILL.md
快速参考
| 用途 | 记录一项架构决策(Context-Decision-Consequences) |
| 层级 | 5(决策桥接层:PRD → SPEC) |
| 上游标签 | @ears @bdd(依据必要上游契约) |
| 自引用 | 连字符形式 @adr: ADR-NN(文档级) |
| 元素 ID | ADR.NN.SS.xxxx(仅限内部元素) |
| 状态 | Proposed → Accepted → Deprecated → Superseded |
| 必须包含 | Document Control(第一节)、10 个章节、所选方案旁的 2–3 个备选方案 |
| 下一步 | doc-spec |