用途:维护架构决策记录(ADR)——每条记录说明决定了什么、为何这样决定、否决了哪些方案、代价是什么,作为只追加的项目记忆,让后续维护者不必翻 git 历史或聊天记录就能还原子系统成因。
主要能力:
- 新建与初始化:bash scripts/adr-new.sh --title "..." 生成下一条编号并预填 frontmatter;bash scripts/adr-init.sh --first-title "..." 在空仓库引导目录与一条可过校验的 ADR-001。所有脚本支持 --dir 指定目录,--help、--dry-run。
- 索引:bash scripts/adr-index.sh 以表格输出编号、状态、日期、标题,支持 --json 与 --output 生成 Markdown 索引。
- 发现面:python scripts/adr-touching.py <path> 按 touches 字段匹配路径/glob/配置键,exit 10 表示有 ADR 约束该文件,适合编辑前检查。
- 校验:python scripts/adr-lint.py --dir docs/adr 检查 frontmatter 必填与类型、标题与文件名一致、BLUF 位置、章节顺序、编号重复与双向取代关系;--strict 将警告计入退出码 10。
- 可接入 CI 与 pre-commit 钩子,退出码:0 正常、2 用法错误、3 未找到、5 前置条件、10 发现问题。
使用方式:一次决策写一条 ADR,编号按最大号加一、永不复用;格式含 status、date、supersedes、superseded-by、touches 等 frontmatter,正文固定顺序为 Decision → Context → Alternatives considered → Consequences → See also。改变决策须新建取代记录并同步翻转旧记录 frontmatter;仅可做错别字、失效链接等不改变含义的原地编辑。
限制:资料未提供具体安装步骤、依赖版本、各脚本完整参数表、许可证与收费信息;索引宗旨是目录即索引,其他位置的手写列表仅作参考且可能滞后。