| name | create-adr |
| description | ADR(Architecture Decision Record)を作成、またはADR対象かどうかを判定する。意思決定の文書化・ADRの要否確認を依頼されたときに使う。 |
ADR 作成スキル
フロー
- ADR対象かどうかを判定する(下記「判定基準」参照)
- 対象外の場合:理由を説明し、それでも作成するか確認する
- 情報収集:必要情報をユーザーから収集する(不足分のみ質問する)
- 自動採番:
docs/adr/ の既存ファイルを確認し、最大番号+1を使用
- ファイル作成:
docs/adr/NNN-slug.md(テンプレート: docs/adr/adr-template.md を参照)
- 可視化:下記「可視化(必須)」に従い、表・図で構造を一目化する
- 一覧表を再生成:
npm run gen:adr-index を実行し docs/adr/adr-index.md を更新する(表は手で編集しない)
可視化(必須)
ADR も他ドキュメント同様、可視化ファーストで書く(docs/policy/documentation-policy.md「可視化されていないドキュメントは怠慢である」)。散文で構造を書かない。
- 検討した代替案 → 比較表(案/内容/却下理由)。2項目でも表にする。
- トレードオフ・影響 → 表(受け入れる制約・リスク/影響範囲/緩和策)。
- コンテキスト/決定 → フロー・順序依存・状態遷移・前後(旧→新)比較があれば図にする。図は
/design-doc-mermaid で作る(自前で Mermaid を書かない)。
- 逆変換テスト:表・箇条書きに戻しても文章を読まずに構造を掴めるなら図にしない(一直線 A→B→C など)。図にしないと決めたら、戻す先(表・箇条書き)で実際に書く。そう判断した理由はユーザーへの回答に書き、ADR 本文には残さない。
ADR判定基準
対象(いずれかを満たす場合):
- 技術スタック・フレームワーク・言語・ライブラリの選択
- アーキテクチャパターンの選択(構成方針、分割戦略等)
- インフラ設計の重要な決定
- 複数の代替案があり、後から変更が困難または高コストな決定
- セキュリティアプローチの選択
対象外:
- 単純な設定値の調整(メモリサイズ、タイムアウト等)
- 実装詳細・コーディングスタイル
- バグ修正
- 既存ADRが存在する決定の再文書化
判定が難しい場合は対象として扱う。
ファイル作成ルール
- 保存先:
docs/adr/NNN-slug.md
- NNN: ゼロ埋め3桁(例: 007)
- slug: タイトルから生成した英語スラッグ(例:
single-stack)
- テンプレート:
docs/adr/adr-template.md を参照すること
status / date は本文ではなく frontmatter に書く(一覧表 adr-index.md はここから機械生成される)
status は必ず proposed にする(許容値: proposed / accepted / rejected / deprecated / superseded)
date: 今日の日付(YYYY-MM-DD)
- 既存 ADR を
superseded にする場合は、その ADR の frontmatter に supersededBy: NNN(置換先の番号)を書く
収集する情報
必要な情報が不足している場合はユーザーに質問する:
| 項目 | 内容 |
|---|
| 決定内容 | 何を選択したか |
| コンテキスト | 問題の背景、検討した選択肢 |
| 採用理由 | なぜこの選択をしたか |
| 代替案 | 却下した選択肢と却下理由(比較表で整理する) |
| トレードオフ | 受け入れる制約・リスク、否定した選択肢(表で整理する) |
| 影響 | この決定が与える影響 |
| 参照 | 関連ドキュメント・実装ファイル(任意) |