Community生產力與協作github.com

rhpxgr8pzm-max/claude-skills

在編碼過程中,將架構決策捕捉為帶有編號的 ADR Markdown 檔案,存放於 docs/adr/ 目錄下,包含背景脈絡、考慮過的替代方案、影響以及索引 README。當使用者說「記錄這個決定」或「ADR 這個」、在框架或資料庫之間做選擇、討論權衡取捨,或詢問程式碼庫為何如此設計時啟動。

claude-skills 是什麼?

此技能旨在於 AI 輔助開發的編碼工作階段中,系統性地捕捉架構決策。它遵循 Michael Nygard 提出的輕量級 ADR 格式,將決策記錄為結構化的 Markdown 文件,並存放於專案內的 `docs/adr/` 目錄。其主要用途是將原本散落在 Slack 討論串、PR 評論或個人記憶中的關鍵決策,轉化為與程式碼共存、易於查閱的持久化文件,提升團隊協作與專案的可維護性。 技能支援多種觸發情境,包括使用者的明確請求(例如「記錄這個決定」),或是在對話中察覺到架構權衡的隱含訊號(例如比較兩個框架後做出結論)。工作流程涵蓋從偵測決策、收集脈絡、記錄替代方案與影響,到最終產生帶有編號的 ADR 文件,並自動更新索引。對於使用者詢問「為何選擇 X」的情況,技能也能讀取現有 ADR 並提供相關的「背景脈絡」與「決定」章節。 此技能的生命週期管理包括 proposed、accepted、deprecated 與 superseded 四種狀態,確保決策記錄的時效性。同時,它也提供清晰的指引,說明哪些類型的決策值得記錄(例如技術選擇、架構模式、API 設計等),以及一份 ADR 撰寫指南,鼓勵簡潔、具體且誠實地陳述權衡取捨,避免記錄瑣碎或不完整的決策。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/rhpxgr8pzm-max/claude-skills/tree/HEAD/plugins/tally-dev/skills/architecture-decision-records

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

架構決策記錄 (ADR)

在編碼工作階段中捕捉架構決策。這些決策不再只存在於 Slack 討論串、PR 評論或某人的記憶中,而是產生結構化的 ADR 文件,與程式碼共存於專案中。

啟用時機

  • 使用者明確說「讓我們記錄這個決定」或「ADR 這個」
  • 使用者在重要的替代方案之間做選擇(框架、函式庫、模式、資料庫、API 設計)
  • 使用者說「我們決定要...」或「我們這麼做而不是那麼做的原因是...」
  • 使用者問「我們為什麼選擇 X?」(讀取現有 ADR)
  • 在規劃階段討論架構權衡取捨時

ADR 格式

採用 Michael Nygard 提出的輕量級 ADR 格式,並針對 AI 輔助開發進行調整:

# ADR-NNNN:[決策標題]

**日期**:YYYY-MM-DD
**狀態**:proposed | accepted | deprecated | superseded by ADR-NNNN
**決策者**:[參與者]

## 背景脈絡

我們看到什麼樣的問題,促使了這個決策或變更?

[2-5 句話描述情境、限制條件與影響因素]

## 決策

我們提議及/或正在進行的變更是什麼?

[1-3 句話清楚陳述決策]

## 考慮過的替代方案

### 替代方案 1:[名稱]
- **優點**:[好處]
- **缺點**:[壞處]
- **不採納原因**:[拒絕此方案的具體理由]

### 替代方案 2:[名稱]
- **優點**:[好處]
- **缺點**:[壞處]
- **不採納原因**:[拒絕此方案的具體理由]

## 影響

因為這個變更,哪些事情變得更容易或更困難?

### 正面影響
- [好處 1]
- [好處 2]

### 負面影響
- [取捨 1]
- [取捨 2]

### 風險
- [風險與緩解措施]

工作流程

捕捉新的 ADR

當偵測到決策時刻時:

  1. 初始化(僅限首次) — 如果 docs/adr/ 目錄不存在,請在使用者確認後再建立目錄、一個內含索引表格表頭(見下方 ADR 索引格式)的 README.md,以及一個供手動使用的空白 template.md。未經明確同意,不得建立任何檔案。
  2. 識別決策 — 提取核心的架構選擇
  3. 收集脈絡 — 什麼問題引發了這個決策?存在哪些限制條件?
  4. 記錄替代方案 — 考慮過哪些其他選項?為何被拒絕?
  5. 陳述影響 — 有哪些權衡取捨?哪些事情變得更容易/更困難?
  6. 指定編號 — 掃描 docs/adr/ 中的現有 ADR 並遞增編號
  7. 確認並寫入 — 向使用者呈現 ADR 草稿供審查。僅在使用者明確批准後,才寫入 docs/adr/NNNN-decision-title.md。如果使用者拒絕,則捨棄草稿,不寫入任何檔案。
  8. 更新索引 — 將新條目附加到 docs/adr/README.md

讀取現有 ADR

當使用者問「我們為什麼選擇 X?」時:

  1. 檢查 docs/adr/ 是否存在 — 如果不存在,回覆:「此專案中找不到任何 ADR。您想要開始記錄架構決策嗎?」
  2. 如果存在,掃描 docs/adr/README.md 索引以尋找相關條目
  3. 讀取相符的 ADR 檔案,並呈現「背景脈絡」與「決策」章節
  4. 如果找不到相符項目,回覆:「找不到該決策的 ADR。您想要現在記錄一個嗎?」

ADR 目錄結構

docs/
└── adr/
    ├── README.md              ← 所有 ADR 的索引
    ├── 0001-use-nextjs.md
    ├── 0002-postgres-over-mongo.md
    ├── 0003-rest-over-graphql.md
    └── template.md            ← 供手動使用的空白模板

ADR 索引格式

# 架構決策記錄

| ADR | 標題 | 狀態 | 日期 |
|-----|------|------|------|
| [0001](0001-use-nextjs.md) | 使用 Next.js 作為前端框架 | accepted | 2026-01-15 |
| [0002](0002-postgres-over-mongo.md) | 選擇 PostgreSQL 而非 MongoDB 作為主要資料儲存 | accepted | 2026-01-20 |
| [0003](0003-rest-over-graphql.md) | 選擇 REST API 而非 GraphQL | accepted | 2026-02-01 |

決策偵測訊號

在對話中留意以下模式,這些模式表示一項架構決策:

明確訊號

  • 「我們用 X 吧」
  • 「我們應該用 X 而不是 Y」
  • 「這個取捨是值得的,因為...」
  • 「把這個記錄為 ADR」

隱含訊號(建議記錄 ADR — 未經使用者確認不得自動建立)

  • 比較兩個框架或函式庫後得出結論
  • 基於明確理由做出資料庫綱要設計選擇
  • 在架構模式之間做選擇(單體 vs 微服務、REST vs GraphQL)
  • 決定驗證/授權策略
  • 評估替代方案後選擇部署基礎設施

良好 ADR 的要素

應該做

  • 要具體 — 使用「使用 Prisma ORM」而非「使用一個 ORM」
  • 記錄原因 — 理由比結果更重要
  • 包含被拒絕的替代方案 — 未來的開發者需要知道考慮過哪些選項
  • 誠實陳述影響 — 每個決策都有取捨
  • 保持簡短 — 一份 ADR 應可在 2 分鐘內閱讀完畢
  • 使用現在式 — 使用「我們使用 X」而非「我們將使用 X」

不該做

  • 記錄瑣碎的決定 — 變數命名或格式化選擇不需要 ADR
  • 寫成長篇大論 — 如果「背景脈絡」章節超過 10 行,就太長了
  • 遺漏替代方案 — 「我們就是選了它」不是有效的理由
  • 未標記狀態就補記錄 — 如果記錄的是過去的決策,請註明原始日期
  • 讓 ADR 過時 — 被取代的決策應引用其替代者

ADR 生命週期

proposed → accepted → [deprecated | superseded by ADR-NNNN]
  • proposed:決策正在討論中,尚未定案
  • accepted:決策生效並正在被遵循
  • deprecated:決策已不再相關(例如功能已移除)
  • superseded:較新的 ADR 取代了這個(務必連結取代者)

值得記錄的決策類別

類別範例
技術選擇框架、語言、資料庫、雲端服務商
架構模式單體 vs 微服務、事件驅動、CQRS
API 設計REST vs GraphQL、版本策略、驗證機制
資料建模綱要設計、正規化決策、快取策略
基礎設施部署模型、CI/CD 管道、監控堆疊
安全性驗證策略、加密方法、機密管理
測試測試框架、涵蓋率目標、端到端 vs 整合測試的平衡
流程分支策略、審查流程、發布節奏

與其他技能的整合

  • 規劃代理人:當規劃者提出架構變更時,建議建立一個 ADR
  • 程式碼審查代理人:標記那些引入了架構變更卻沒有對應 ADR 的 PR

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能