handoff-draftlisted
Install: claude install-skill ozzy-labs/opshub
# handoff-draft — 引き継ぎ書 text を opshub の context から組み立てて返す
opshub MCP server (`opshub mcp serve`、ADR-0022) の read tool 群 (`task.list` / `decision.list` / `recall.search` / `graph.related`) をホスト LLM が合成して、後任向け引き継ぎ書の text を 1 発で組み立てる。Phase 12 H5 (`docs/phase-12-plan.md` §3 H5) で導入された Tier 2 draft 系 skill。
**persist しない**: `reply-draft` と異なり、本 skill は `propose.generate` + `propose.apply` 経路を **使わない**。引き継ぎ書は自発生成で natural key を持たないため (返信元 source のような対応付けがない)、proposal table に保存しても operator から見て idempotency / 削除 / 編集の semantics が曖昧になる。ADR-0016 §決定 (l)(a) で「返信元 source の有無」で persist 境界を切る方針が pin されており、本 skill は text-only 返却に留める。
## 何が起きるか
1. ユーザーが「引き継ぎ書作って」「handoff 書く」「後任向けにまとめて」と頼む
2. ホストが本 skill を発火
3. ホストが下記「呼び出し順」に従って read tool を順次呼ぶ
4. 戻り値を集約してホスト LLM が引き継ぎ書 text を 1 発で構成 (Markdown)
5. ユーザーに text を提示 (画面表示のみ)
6. ユーザーが手で SaaS (Notion / Confluence / docs / Slack 等) に貼り付ける
opshub 側に候補保存 / apply 経路は存在しない (`propose.generate` / `propose.apply` を呼ばない)。「保存」のような UX を提示しないこと。
## 呼び出し順 (MCP tool)
### Step 1: 進行中 task を列挙
```text
tool: task.list
input:
state: "in_progress"
limit: 50
```
戻り値の `items[]` を引き継ぎ書の「進行中タスク」セクション素材として使う。Phase 12 H1 (ADR-0022 改訂) で物理列ベースの時間フィルタが追加されたが、引き継ぎ書は時点スナップショットなので時間フィルタは不要 (state=in_progress で全進行中を拾う)。
`state` 値が `active` / `in_progress` のどちらか projection 側で正規化されているため、projection の SSOT に従う (`src/opshub/projections/tasks.py`)。
### Step 2: 最近の decision を列挙
```text
tool: decision.list
input:
recorded_after: "<引き継ぎ対象期間の開始 ISO 8601>" # 任意、例: 過去 3