agentleFS
bwkwbwkw/dotagents/skills/da-adr/SKILL.md

da-adr

Skill0 starsChanged 20 days agoMITView on GitHub

アーキテクチャ上の判断を、このリポジトリが実際に ADR を置いている場所へ「判断の記録」として書く。判断が難しく、新規参加者が驚き、トレードオフがある時に使う(grilling・設計レビュー・調査で何かが決まった後)。置き場所はツリーではなくプロファイルから解決する。書くのは ADR だけで、ソースは触らない。

The file

Files
SKILL.md

/da-adr — 判断を、見つけてもらえる場所に書く

このスキルが書くのは ADR 1 本だけ。ソース・スキーマ・マイグレーション・設定は触らない。実装を始めず、判断の出どころの spec や計画も編集しない。

結論に加え、その結論を使える範囲と、条件が変わったときに確かめ直すことを残す。過去の選択を、後続の人が従い続ける要件にしない。

ツリーから置き場所を推すと、誰も読まないディレクトリに整った ADR ができる。ADR の置き場所はリポジトリごとの事実なので、spec_system と同じくプロファイルに置く。

実行条件

1 行でも満たさなければ即座に止まり、どの条件かを報告する。続けない。

条件満たさない場合
作業ディレクトリが origin リモートを持つ git リポジトリ内にある止まってそう書く。置き場所を推測しない
判断が述べられている(何を選び、何より選んだか)止まって聞く。推測した判断から書いた ADR は権威があるように読まれ、肝心の 1 点で誤る
このリポジトリに合うプロファイルがあり、adr_system を持つ止まる。ツリーで見たものを報告し、ブロックを提案して待つ。ADR のディレクトリが見えることは、そこに書けと言われたことではない
adr_system.kind が none止まる。このリポジトリは ADR を持たないと書き、聞く。ディレクトリを作らない
判断が下の 3 つの条件をすべて満たす止まり、どれを満たさないかを書く。代わりに spec かコミットに記録する

3 つの条件。ADR に書くのは、難しい(妥当なエンジニアが逆を選びうる)、文脈なしでは驚く(コードを読んだ新規参加者が「なぜこうなのか」と聞く)、トレードオフがある(実際に何かを諦めた)判断である。1 つでも欠ければ change の design ドキュメントかコミットメッセージに書く。たいていの判断はどれかが欠ける。

ワークフロー上の位置

上流このスキル下流
/grilling, /da-design-review, /da-investigate, /da-spec/da-adr/executing-plans

読むファイル

常に読む

ファイル理由
合致する profiles/*.json → adr_systemADR をどこに、どのサブツリーに置いてよいか
adr_system.rules が指すファイルリポジトリ自身の書き方の規則。基準が書かれているのに汎用テンプレートで書くと、自分のレビューに落ちる
adr_system.roots 配下の既存 ADR 1 本実際に使われている形(見出し、言語、却下案の書き方)。それに合わせる
${CLAUDE_SKILL_DIR}/reference/final-design.mdADR が誰に向けて書かれるか。会話にいた人にしか読めない書き方
${CLAUDE_SKILL_DIR}/reference/adr-shape.mdADR そのものの形。結論を題にする、問い ↔ 要約 ↔ 節を 1 対 1 で番号づける、条件・優先事項・仮定や見込み、失うもの、再検討時の確認。見出しや配置は既存 ADR に合わせ、判断の適用範囲と根拠の時点は残す

条件つきで読む

ファイル条件
判断の出どころの change や spec判断が /da-spec の change で決まった時。ADR はそれと矛盾してはいけない
判断が支配するコードADR が識別子を名指す時。バッククォートの名前はすべて存在を確かめる
CLAUDE.md, AGENTS.md, .claude/rules/*リポジトリにあり、adr_system.rules がそれらに委ねている時

「念のため」全部を読むことは禁止。

手順

Step 1. 置き場所を解決する(選ばない)

プロファイルから adr_system を読む。ADR がありそうに見えるからディレクトリを選ぶことはしない。ツリーは移行途中のことがあり、そうなると整ったファイルが誰も見ない実在の場所に黙って落ちる。

kind: colocated なら、ADR は支配するコードの隣、roots のいずれかの中に置く。選んだサブツリーと理由を書く。kind: directory なら唯一のルートの下に置く。

Step 2. 既存の ADR を探す

タイトルではなく対象で探す。同じ判断の ADR が別名であると記録が割れ、どちらの半分も単独では誤りでない。

rg -l "<the entity, table, endpoint or rule>" --glob 'ADR.*' --glob 'docs/**'
git log --oneline -20 -- '**/ADR.*'

この判断を扱うものがあれば、同じ判断の説明を整えるのか、判断自体を選び直すのかを区別する。説明の更新では、当時の根拠を後日の知識で上書きしない。判断を選び直す場合は、以前の判断と根拠を残し、置き換えた範囲・理由・新旧の関係を明示する(supersede)。ファイルを分けるかはリポジトリの規則に従い、食い違う判断を黙って並べない。

Step 3. 選び直せる判断の記録として書く

${CLAUDE_SKILL_DIR}/reference/final-design.md に従う。読み手、削る書き方、下書きを終える前の確認がある。da-spec と共有しているが、ADR では判断時点の根拠と、後日の確認・判断の置き換えを区別して残す。

そのうえで ${CLAUDE_SKILL_DIR}/reference/adr-shape.md に沿って並べる。見出しは既存の形に合わせながら、守るべき条件・優先したこと・前提にした仮定や見込みを区別し、採用時に未確認だったものを明記する。結論、比較した代替案、失うもの、適用範囲、再検討の引き金と確認事項をつなげ、変化を確認する担当と確認の機会も残す。未定なら未定と書き、担当や確認方法を補作しない。後日の実装確認や計測は、当時の判断理由とは分けて書く。

同ファイルの「業務全体と判断の前提」に従い、業務の目的・完了条件と今回の判断の範囲を前提や判断の節へ組み込む。資料にある情報は聞き直さず、未確認事項がどの判断を変えうるかと確認先を残す。判断を支える根拠が足りなければ、その判断を確定事項として補わず上流の検討へ戻す。

このスキル固有の規則が 1 つある。真剣に検討した代替案は、すべて却下した代替案として書く。却下案の無い ADR は判断ではなく説明である。案は、それを退けた判断の節の末尾(### N-k. 却下した代替案)に置き、「手に入るもの」「採らなかった理由」「勝つ条件」の 3 点で書く。採らなかった理由も本文の理由も、あるべき設計として何が正しいかを仕組みまで書き、同じ change の spec・design の決定を根拠にしない(spec は ADR から導かれるので、引くと理由が循環する)。書き方は adr-shape.md の「理由の書き方」と「却下した代替案」にある。まだ本番に出ていない判断は、同じファイルの「リリース前の ADR」に従い、開発中の変遷を書かない。

Step 4. すべての名前を裏付ける

バッククォートの識別子(ファイル、テーブル、カラム、クラス、フラグ)は、書く前に存在を確かめる。改名されたシンボルがあると、ADR は権威があるように読まれて誤る。読み手が探す羽目になる場所は path/file.ts:L42 で示す。

Step 5. 日本語の ADR なら表示を確かめる

CommonMark は、日本語の句点・読点の直後の ** を閉じない(right-flanking の規則を満たさず、アスタリスクがそのまま出る)。句読点は太字の外に出す。

根拠の扱い

  • 直接確かめたことだけを報告する。
  • 場所は path/to/file.ts:L42 で示す。
  • 根拠が無いときは「確認できなかった」と書く。判断者が引き受けた未確認の前提は本文に明記し、AI が推定した理由は当時の根拠として扱わない。
  • 事実と推論をはっきり分ける。
  • 外部についての主張には URL を付ける。

出力

解決した場所に、既存の ADR と同じ形のファイルを 1 本。

そのうえで次の順で報告する。

  1. 置き場所 —— どのプロファイルから解決したか。解決できなければ欠けているものと質問
  2. 新規か更新か —— パス。更新なら既にあった内容
  3. 3 つの条件をどう満たしたか —— 各 1 行
  4. 未決のこと —— 引き受けた未確認の前提は本文に残す。判断が決まらない不足情報は質問し、結論や理由を補作しない

完了条件

  • 置き場所はツリーの見た目ではなくプロファイルから来た
  • 書く前に adr_system.rules を読んだ
  • 同じ対象の既存 ADR を探し、更新か新規かを理由つきで書いた
  • 却下した代替案は、それを退けた判断の節の末尾にあり、すべてに「手に入るもの」「採らなかった理由」「勝つ条件」がある
  • adr-shape.md のチェックリストを通る。題が結論を述べ、問い・要約・節が 1 つの § 番号を共有する
  • 条件・優先事項・仮定や見込みが区別され、結論を使える範囲が分かる
  • 業務全体に対する今回の範囲が分かり、判断に影響する未確認事項と確認先が残っている
  • 再検討の引き金に、先に確かめることと比較し直す選択肢があり、確認する担当・機会が分かる(未定なら明記した)
  • 当時の根拠と後日の確認が分かれ、判断の置き換えがあれば新旧の関係を残した
  • バッククォートの識別子はすべて存在を確かめた
  • 解決した場所の外には何も書いておらず、実装も始めていない

次に

判断が属する change に /executing-plans を掛ける。ADR は残り続ける記録で、change は作業である。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.