用途:把一项已确定的架构或设计决策记录为目标仓库中的编号、不可变 ADR 文件,承载代码和提交信息无法表达的“为什么”。它记录的是已做出的决策,而非讨论中的提案;若决策尚未确定,应先帮助确定再写。
主要能力与步骤:
- 定位 ADR 存放位置。查找仓库既有约定,如 docs/adr/、docs/decisions/、adr/,或 docs/ 下已有的 NNNN-*.md 序列,并沿用其编号宽度与模板风格;若不存在,则创建 docs/adr/ 并从 0001 开始。
- 收集决策信息。从对话中获取决策本身、促成决策的背景与约束、考虑过的替代方案及被否决的具体原因;若决策来自本次会话,直接使用已有证据,不重复询问。
- 起草 ADR,使用英文,作为仓库产物。模板包含:标题(NNNN. 祈使式决策标题)、Date、Status: Accepted,以及 Context、Decision、Alternatives considered、Consequences 各节;仅在确实为空时跳过某节,并保留标题写“None.”。
- 确认后写入。向用户展示草稿,获批准后写入 NNNN-<标题的 kebab 短名>.md。若本 ADR 取代旧 ADR,还需把旧 ADR 的 Status 改为 Superseded by NNNN,这是 ADR 不可变性的唯一例外。
- 报告文件路径,并建议与相关变更一起提交,提交信息如 docs: add ADR NNNN — <title>。
适用场景:需要为已定架构决策留下可追溯记录时;决策来自本次会话并已有具体证据时。
限制与失败模式:决策仍是开放问题时,不应写 Status: Accepted 的 ADR,可先帮助决定,或按用户意愿使用 Status: Proposed 并说明;一次请求包含两个决策时应拆成两个 ADR,一项记录只对应一个决策。资料未提供安装命令、收费、平台或效果信息。