decision-rationalelisted
Install: claude install-skill ozzy-labs/opshub
# decision-rationale — 「あの決定はなぜ」を opshub から組み立てる
opshub MCP server (`opshub mcp serve`、ADR-0022) 経由で、過去の意思決定の **根拠** と **経緯** を、関連する source / 先行 decision / 関連 task まで遡って提示する Tier 1 skill。Phase 12 H3 (`docs/phase-12-plan.md` §3 H3) で導入。
decisions は ADR-0002 で immutable な append-only event として保存され、各 decision は graph (ADR-0017) 経由で source / proposal / 先行 decision に backward link を持つ。本 skill はこの構造を活用し、`graph.trace` で provenance を遡って「な���その決定に至ったか」を再現する。
## 何が起きるか (host 側の流れ)
1. ユーザーが「あの決定はなぜ」「X を選んだ理由」「Y の決定経緯」のような表現で問い合わせる
2. 外部ホスト (Claude Code 等) が本 skill を発火させる
3. ホストがユーザー発言から **トピック語彙** (X / Y / 「あの方針」が指す対象) を抽出する
4. ホストが下記「呼び出し順」に従って opshub MCP read tool を呼び出す
5. 戻り値を集約し、「決定 → 直接の根拠 source → 先行 decision → 関連 context」の順で提示する
decisions は immutable のため、本 skill は **読み取り専用**。decision の修正・取り消しは別の write 経路 (新しい decision を append する) であり、本 skill の責務外。
## 呼び出し順 (MCP tool)
### Step 1: トピックを decision コーパスから引く
ユーザーが指している decision の候補を絞る。トピック語彙が明確 (例:「auto-merge」「Phase 11 の Outlook」) なら recall.search、期間が明確 (例:「先月の決定」) なら decision.list の時間フィルタを使う。両方使ってもよい。
#### 1a. recall.search でトピック絞り
```text
tool: recall.search
input:
query: "<topic vocabulary、例: 'auto-merge 方針' / 'Outlook body deep retention'>"
entity_type: "decision"
limit: 10
```
戻り値の `hits[]` から `entity_id` (decision の ULID) を取り出して Step 2 / Step 3 に渡す。
#### 1b. (任意) decision.list で期間絞り
ユーザーが「先月の」「今期の」のような期間指定を含めている場合:
```text
tool: decision.list
input:
recorded_after: "<期間開始 ISO 8601>"
recorded_before: "<期間終