创建架构决策记录Skill create-adr

该技能用于创建架构决策记录(ADR),以文档化软件项目中的重大技术决策,包括上下文、选项和理由。关键词:架构决策记录、ADR、技术文档、软件开发、架构设计、决策管理。

架构设计 0 次安装 0 次浏览 更新于 3/11/2026

名称:创建-adr 描述:创建新的架构决策记录。当需要文档化重大技术决策时使用,包括上下文、选项和理由。 允许工具:读取、全局搜索、Grep、写入、技能 参数提示:<标题> [–状态 提议|接受|弃用|被替代] [–模板 基础|madr|扩展]

创建架构决策记录

创建一个新的ADR,用于文档化重大技术决策。

流程

1. 解析参数

从用户输入中提取:

  • 标题:决策主题(必需)- 例如,“使用PostgreSQL作为主数据库”
  • 状态提议接受弃用被替代(默认:提议
  • 模板基础(Nygard)、madr扩展(默认:madr

2. 确定ADR编号

  1. 在项目中查找现有ADRs:

    查找位置:docs/decisions/、docs/adr/
    模式:ADR-*.md、[0-9][0-9][0-9][0-9]-*.md
    
  2. 计算下一个编号:

    • 如果没有ADR存在,从001开始
    • 否则,递增现有最高编号

3. 收集上下文

如果上下文未提供,提示或推断:

  1. 问题陈述:什么问题促使了此决策?
  2. 约束:什么限制影响了决策?
  3. 考虑选项:存在哪些替代方案?
  4. 决策驱动因素:什么因素最重要?

4. 加载技能并生成

  1. 加载企业架构:adr管理技能以获取模板和指导
  2. 基于模板参数选择模板
  3. 生成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索引/注册表,添加条目:

输出内容

基础模板(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后,提醒用户:

  1. 填写占位符,标记为[括号]
  2. 添加具体选项,包括优缺点
  3. 文档化实际决策,一旦做出
  4. 链接相关ADRs,如果适用
  5. 更新状态,当决策最终确定时
  6. 获取评审,来自利益相关者

质量标准

生成的ADR必须:

  • [ ] 具有唯一、顺序编号
  • [ ] 遵循项目的ADR位置约定
  • [ ] 包括模板类型的所有必需部分
  • [ ] 有清晰的占位符指导
  • [ ] 从ADR索引链接(如果存在)
  • [ ] 使用一致的日期格式(ISO 8601)