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

这个技能用于从软件规范中自动提取和生成架构决策记录(ADR),遵循MADR格式,帮助团队记录技术选择、架构模式、集成方法等决策,便于文档化和知识管理。关键词:架构决策记录、ADR、MADR、规范驱动开发、软件架构、文档化、技术决策。

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

name: adr-create description: “从规范上下文创建架构决策记录。” argument-hint: “<规范文件> [–decision <决策摘要>]” allowed-tools: 读取, 全局搜索, 文本搜索, 写入, 编辑, 技能, 任务

创建架构决策记录

从规范上下文创建ADR(架构决策记录)。

何时创建ADR

当规范包含以下内容时创建ADR:

  • 技术选择(数据库、框架、库)
  • 架构模式(微服务、CQRS、事件溯源)
  • 集成方法(同步 vs 异步、REST vs GraphQL)
  • 安全决策(认证方法、加密)
  • 显著权衡(性能 vs 简洁性)
  • 偏离现有模式

MADR格式

使用Markdown Any Decision Records(MADR)格式:

# ADR-NNN: [标题以命令形式]

## 状态
[提议 | 接受 | 弃用 | 被ADR-XXX取代]

## 上下文
[作用力、促使此决策的情境]

## 决策
我们将[以命令形式决策]。

## 后果
### 正面
- [益处]

### 负面
- [缺点]

### 中性
- [权衡]

## 考虑的替代方案
### [替代方案1]
**优点:**[优势]
**缺点:**[劣势]
**拒绝原因:**[原因]

工作流程

  1. 加载规范

    • 读取规范文件
    • 识别决策点
  2. 提取决策

    • 启动adr-creator代理
    • 找到明确决策(“我们将使用X”)
    • 找到隐含决策(提到的技术)
    • 收集上下文和约束
  3. 研究替代方案

    • 如果替代方案未记录:
      • 识别合理替代方案
      • 研究优缺点
      • 记录拒绝原因
  4. 生成ADR

    • 应用MADR格式
    • 链接到规范
    • 交叉引用需求
  5. 保存ADR

    • 分配ADR编号
    • 保存到docs/adr/(或用户指定位置)
    • 更新ADR索引

参数

  • $1 - 规范文件路径
  • --decision - 要记录的特定决策
  • --output - 输出目录(默认:docs/adr/
  • --number - ADR编号(如未提供则自动分配)

示例

# 从规范提取ADR
/spec-driven-development:adr-create .specs/auth/spec.md

# 创建特定决策ADR
/spec-driven-development:adr-create .specs/auth/spec.md --decision "使用JWT进行会话令牌"

# 指定输出位置
/spec-driven-development:adr-create .specs/auth/spec.md --output docs/adr/

# 分配特定编号
/spec-driven-development:adr-create .specs/auth/spec.md --number 42

ADR示例

# ADR-015: 使用Redis进行会话缓存

<!--
生成自:SPEC-AUTH-001
需求:NFR-1(性能)、FR-3(会话管理)
创建日期:2024-01-15
-->

## 状态

提议

## 上下文

认证规范(SPEC-AUTH-001)要求会话令牌在50毫秒内验证(NFR-1)。当前仅数据库方法显示p95延迟为150毫秒,超出需求。

我们需要一种缓存策略以减少会话验证延迟。

## 决策

我们将使用Redis作为会话令牌的内存缓存。

- 缓存会话数据,TTL匹配会话过期时间
- 使用缓存旁路模式(懒加载)
- 在注销和密码更改时失效

## 后果

### 正面

- 预计会话验证延迟减少80%
- 减少会话查询的数据库负载
- 行业标准解决方案,文档丰富
- 团队有Redis经验

### 负面

- 额外的基础设施组件
- 缓存失效复杂性
- 内存成本随活跃会话扩展

### 中性

- 需要Redis集群以实现高可用性
- 需要设置监控和告警

## 考虑的替代方案

### 应用内内存缓存

每个应用实例的本地缓存。

**优点:** 无额外基础设施
**缺点:** 实例间不共享,重启时丢失
**拒绝原因:** 多实例部署需要共享缓存

### 数据库物化视图

数据库中预计算的会话数据。

**优点:** 无新技术
**缺点:** 仍有数据库延迟,刷新逻辑复杂
**拒绝原因:** 不符合50毫秒延迟需求

## 相关

- **规范:** SPEC-AUTH-001
- **需求:** NFR-1、FR-3
- **相关ADR:** ADR-012(Redis基础设施)

ADR索引更新

创建ADR时更新索引:

## ADR索引

| ADR | 标题 | 状态 | 规范 | 日期 |
| --- | --- | --- | --- | --- |
| ADR-014 | 使用PostgreSQL | 接受 | SPEC-001 | 2024-01-10 |
| ADR-015 | 使用Redis进行会话缓存 | 提议 | SPEC-AUTH | 2024-01-15 |

相关命令

  • /spec-driven-development:specify - 生成规范
  • /spec-driven-development:plan - 生成设计
  • /spec-driven-development:validate - 验证规范