名称:创建-adr 描述:创建新的架构决策记录。当需要文档化重大技术决策时使用,包括上下文、选项和理由。 允许工具:读取、全局搜索、Grep、写入、技能 参数提示:<标题> [–状态 提议|接受|弃用|被替代] [–模板 基础|madr|扩展]
创建架构决策记录
创建一个新的ADR,用于文档化重大技术决策。
流程
1. 解析参数
从用户输入中提取:
- 标题:决策主题(必需)- 例如,“使用PostgreSQL作为主数据库”
- 状态:
提议、接受、弃用、被替代(默认:提议) - 模板:
基础(Nygard)、madr或扩展(默认:madr)
2. 确定ADR编号
-
在项目中查找现有ADRs:
查找位置:docs/decisions/、docs/adr/ 模式:ADR-*.md、[0-9][0-9][0-9][0-9]-*.md -
计算下一个编号:
- 如果没有ADR存在,从001开始
- 否则,递增现有最高编号
3. 收集上下文
如果上下文未提供,提示或推断:
- 问题陈述:什么问题促使了此决策?
- 约束:什么限制影响了决策?
- 考虑选项:存在哪些替代方案?
- 决策驱动因素:什么因素最重要?
4. 加载技能并生成
- 加载
企业架构:adr管理技能以获取模板和指导 - 基于
模板参数选择模板 - 生成ADR内容:
- 合适的前端资料/标题
- 所有必需部分
- 为需要人工输入的部分提供占位符指导
5. 创建文件
基于项目约定确定文件位置:
优先顺序:
1. docs/decisions/ADR-{编号}-{slug}.md(如果docs/decisions/存在)
2. docs/adr/ADR-{编号}-{slug}.md(如果docs/adr/存在)
4. docs/decisions/ADR-{编号}-{slug}.md(创建目录)
Slug格式:小写、连字符,从标题派生
示例:“使用PostgreSQL” → ADR-001-use-postgresql.md
6. 更新索引
如果存在ADR索引/注册表,添加条目:
- 添加到决策文件夹中的ADR-INDEX.md或README.md
- 包括:编号、标题、状态、日期
输出内容
基础模板(Nygard)
# ADR-{编号}: {标题}
## 状态
{状态}
## 上下文
[我们看到的问题是什么?]
## 决策
[我们提议和/或执行的改变是什么?]
## 后果
[因为这个改变,什么变得更容易或更困难?]
MADR模板
# ADR-{编号}: {标题}
## 状态
{状态}
日期: {YYYY-MM-DD}
## 上下文和问题陈述
[描述上下文和问题陈述]
## 决策驱动因素
* [驱动因素1]
* [驱动因素2]
## 考虑选项
1. [选项1]
2. [选项2]
3. [选项3]
## 决策结果
**选择选项:** "[选项X]", 因为[理由]。
### 后果
**好:**
* [正面后果]
**坏:**
* [负面后果]
## 选项的优缺点
### [选项1]
* 好,因为[论据]
* 坏,因为[论据]
### [选项2]
* 好,因为[论据]
* 坏,因为[论据]
扩展模板
包括额外部分:
- 执行摘要
- 约束和假设
- 权衡表
- 实施行动项
- 验证标准
- 相关决策
- 参考文献
示例调用
/创建-adr "使用PostgreSQL作为主数据库"
→ 创建ADR-XXX-use-postgresql.md,使用MADR模板,状态=提议
/创建-adr "切换到事件溯源" 状态=接受 模板=扩展
→ 创建ADR-XXX-switch-to-event-sourcing.md,使用扩展模板
/创建-adr "弃用REST API v1" 状态=弃用
→ 创建ADR-XXX-deprecate-rest-api-v1.md,标记v1为弃用
创建后指导
创建ADR后,提醒用户:
- 填写占位符,标记为
[括号] - 添加具体选项,包括优缺点
- 文档化实际决策,一旦做出
- 链接相关ADRs,如果适用
- 更新状态,当决策最终确定时
- 获取评审,来自利益相关者
质量标准
生成的ADR必须:
- [ ] 具有唯一、顺序编号
- [ ] 遵循项目的ADR位置约定
- [ ] 包括模板类型的所有必需部分
- [ ] 有清晰的占位符指导
- [ ] 从ADR索引链接(如果存在)
- [ ] 使用一致的日期格式(ISO 8601)