---
name: adr-assistant
source: ../../../../skills/adr-assistant/SKILL.md
source_version: 1.0.0
source_hash: 7d8bf5944cf4
translation_version: 1.0.0
last_synced: 2026-06-01
status: current
description: "[UDS] 建立、管理和追蹤架構決策記錄（ADR）"
---

# 架構決策記錄助手

> **語言**: [English](../../../../skills/adr-assistant/SKILL.md) | 繁體中文

建立、管理和追蹤架構決策記錄。捕捉重大技術決策的背景、選項和理由。

## 工作流程

```
CAPTURE ──► ANALYZE ──► DECIDE ──► RECORD ──► LINK
  捕捉背景    分析選項    做出決策    記錄 ADR    建立連結
```

### 階段 1：CAPTURE | 捕捉背景

識別驅動決策的背景與限制條件。

| 步驟 | 動作 |
|------|------|
| 1 | 識別問題或機會 |
| 2 | 列出限制條件（時間、預算、團隊技能） |
| 3 | 定義決策驅動因素 |

### 階段 2：ANALYZE | 分析選項

至少探索 2 個選項，列出優缺點。

| 步驟 | 動作 |
|------|------|
| 1 | 腦力激盪候選方案 |
| 2 | 根據決策驅動因素評估各方案 |
| 3 | 記錄各方案優缺點 |

### 階段 3：DECIDE | 做出決策

選擇最佳方案並闡述理由。

### 階段 4：RECORD | 記錄 ADR

依照標準模板產生 ADR 檔案。

### 階段 5：LINK | 建立連結

與相關工件（規格、PR、程式碼）建立交叉引用。

## 快速參考

### 何時撰寫 ADR

| 撰寫 ADR | 不需要 ADR |
|----------|-----------|
| 框架/函式庫選擇 | 例行性依賴更新 |
| API 合約或資料格式 | 現有架構內的 Bug 修復 |
| 部署策略變更 | 程式碼風格決策 |
| 建立新模式 | 瑣碎的實作選擇 |

**經驗法則**：如果 6 個月後有人可能會問「為什麼？」，就寫一份 ADR。

### 狀態生命週期

```
Proposed ──► Accepted ──► Deprecated
                │
                └──► Superseded by ADR-NNN
```

| 狀態 | 說明 |
|------|------|
| **Proposed** | 討論中，尚未決定 |
| **Accepted** | 已接受，應遵循 |
| **Deprecated** | 不再適用 |
| **Superseded** | 已被新 ADR 取代 |

### 模板摘要

```markdown
# ADR-NNN: [決策標題]

- Status: [Proposed | Accepted | Deprecated | Superseded]
- Date: YYYY-MM-DD
- Deciders: [參與決策者]
- Technical Story: [SPEC-ID 或 Issue]

## Context（背景）
## Decision Drivers（決策驅動因素）
## Considered Options（考慮的選項）
## Decision Outcome（決策結果）
### Consequences（後果：Good / Bad / Neutral）
## Links（相關連結）
```

### 存放位置

```
docs/adr/
├── ADR-001-short-description.md
├── ADR-002-short-description.md
└── README.md    # 索引（可選）
```

## 指令

| 指令 | 說明 |
|------|------|
| `/adr` | 互動式建立 ADR |
| `/adr create` | 建立新 ADR |
| `/adr list` | 列出所有 ADR 及狀態 |
| `/adr search [關鍵字]` | 依關鍵字搜尋 ADR |
| `/adr supersede [ADR-NNN]` | 取代現有 ADR |
| `/adr review` | 審查過期的 ADR |

## 與其他技能的整合

| 技能 | 整合方式 |
|------|---------|
| `/sdd` | 在技術設計中引用 ADR；重大決策時建議建立 ADR |
| `/review` | 程式碼審查時引用 ADR 作為設計依據 |
| `/commit` | 提交時在 footer 加入 ADR 編號 |
| `/brainstorm` | 腦力激盪結果作為 ADR 選項分析輸入 |

## 品質檢查清單

| 檢查項目 | 標準 |
|----------|------|
| ☐ 背景 | 清楚說明問題 |
| ☐ 選項 | 至少考慮 2 個選項 |
| ☐ 驅動因素 | 決策驅動因素明確列出 |
| ☐ 後果 | 包含正面與負面結果 |
| ☐ 連結 | 相關工件已引用 |

## 下一步引導

`/adr` 完成後，AI 助手應建議：

> **ADR 已建立。建議下一步：**
> - 執行 `/sdd` 建立規格（若決策需要實作）
> - 執行 `/commit` 提交 ADR 檔案
> - 更新相關規格以引用此 ADR
> - 若狀態為 `Proposed`，分享給團隊審查

## AI 代理行為

當使用者呼叫 `/adr` 時，AI 助手必須：

1. **檢查現有 ADR** — 搜尋 `docs/adr/` 以確定下一個 ADR 編號
2. **互動式引導** — 逐步詢問背景、驅動因素和選項
3. **產生檔案** — 將 ADR 寫入 `docs/adr/ADR-NNN-title.md`
4. **建議連結** — 識別相關規格或 ADR 以建立交叉引用
5. **提供下一步** — 顯示上方的下一步引導

當使用者呼叫 `/adr list` 時：
1. 掃描 `docs/adr/` 目錄
2. 解析每個 ADR 檔案的狀態
3. 以表格顯示：編號、標題、狀態、日期

當使用者呼叫 `/adr supersede [ADR-NNN]` 時：
1. 讀取現有 ADR
2. 引導建立新 ADR
3. 將舊 ADR 狀態更新為 `Superseded by ADR-NNN`
4. 在新 ADR 中加入 `Supersedes ADR-NNN`

## 參考

- 核心規範：[adr-standards.md](../../../../core/adr-standards.md)
- 詳細指南：[guide.md](./guide.md)
