用途
adr-manage 是一个用于创建或更新 ADR(Architecture Decision Record,架构决策记录)的技能,来自 juanca202/sdd-devkit。当用户希望记录、登记或更新某项架构决策时使用该技能。
ADR 的范围仅限于记录架构决策及其理由。它可以包含示例、图表或内部/外部参考(如文档链接、RFC、PR、其他 ADR 等),但不展开实现。实现和面向 AI 的操作指令由其他技能负责。
主要能力
- 创建新的 ADR,并自动推断序号、构建文件名、收集必要信息。
- 更新已有 ADR,并遵守不变量规则(如创建日期永不修改)。
- 维护 docs/adr/README.md 索引,按编号升序添加链接。
- 在撰写前校验与已有 ADR 的冲突。
使用方式
该技能必须通过 docs-specialist 子代理执行,不能直接运行。
文件位置:
- ADR:docs/adr/ADR-XXX-<slug>.md
- 索引:docs/adr/README.md
文件名约定:格式为 ADR-XXX-<slug>.md;XXX 为三位数字,前导补零(001、012、123);slug 为小写、kebab-case、简短且具描述性(例如 auth-strategy、db-engine-selection)。
必填元数据:
- 状态:Draft、Proposed、Accepted、Deprecated、Superseded 之一
- 创建日期:真实创建日期,之后永不修改
- 最后更新:每次写入文件(创建或编辑)时填写当天日期
- 决策者:做出决策的人员姓名或角色
- 标签:相关关键词(技术、领域等)
撰写前需要明确的信息:问题或架构张力、具体决策、决策者、技术栈、相关的前置 ADR 或文档。若用户未明确提供,应向用户询问,不得编造。备选方案仅在用户明确提及时才包含。即使 ADR 处于 Draft 或 Proposed 状态,也需要知道问题和暂定决策。
冲突校验:撰写新 ADR 前,需读取 docs/adr/ 中所有已有 ADR 的标题和 ## Decision 部分,比较范围与拟议决策。若存在冲突(同一组件/技术/架构模式已有 Accepted 决策、直接矛盾或使 Accepted/Proposed 的 ADR 失效、范围重复),则不撰写 ADR,向用户说明冲突并附上冲突 ADR 的链接,建议用户选择:(a) 更新已有 ADR,(b) 创建新 ADR 替代并将旧 ADR 标记为 Superseded,或 (c) 调整范围以消除冲突。
创建新 ADR 的流程:推断序号(列出 docs/adr/ 中 ADR-*.md,取最大编号加 1;若无则从 ADR-001 开始;用户未指定编号时始终从序列推断,不要询问);构建文件名;收集必要信息;使用 references/adr-template.md 中的模板撰写;创建日期与最后更新均为当天;更新 docs/adr/README.md(若不存在则创建,按编号升序添加链接,不重排或删除已有条目);最后确认并展示创建的 ADR 路径及 README 中新增的行。
更新已有 ADR 的流程:按编号、slug 或标题定位文件;编辑前完整读取当前内容;应用用户要求的修改;始终将最后更新改为当天,永不修改创建日期;若状态为 Superseded,必须在 ## Referencias 中添加替代 ADR 的引用(若用户未提供替代 ADR,保存前询问);若标题变更,更新 docs/adr/README.md;最后确认并展示修改的字段。
适用场景
适用于需要记录或更新架构决策、维护 ADR 索引、校验决策冲突的软件开发项目。
限制
- 必须通过 docs-specialist 子代理执行。
- ADR 只记录决策及理由,不展开实现或面向 AI 的操作指令。
- 不得编造信息,缺失数据需向用户询问。
- 备选方案仅在用户明确提及时才包含。
- 关于收费、价格、平台、效果等信息暂未提供。