| name | handoff |
| description | このセッションの作業を引き継ぐ時に使う。状況を判定して2モードに分岐する — compact(同一セッションを /compact で圧縮して続ける) / new-session(セッションが壊れた・新しいセッションで続ける)。どちらも引き継ぎ内容を tmp ファイル(構造化 md)に書き出し、それを読んで再開させる短い起動文を出す。「コンパクト前準備」「コンパクトしたい」「圧縮して続けたい」「/compact の前に」「セッションが壊れた」「次のセッションに引き継ぐ」「クラッシュした」「session handoff」「新しいセッションで続けたい」などで発火。writing-plans → executing-plans 移行直前や worktree 切替直後の /compact 前にも使う。 |
Handoff
Overview
このセッションの作業を引き継ぐための skill。引き継ぎ内容を tmp ファイル(構造化 md)に書き出し、それを正(source of truth)とする。出力する起動文は「そのファイルを読んで再開手順に従って続けて」の短い1行で、長い引き継ぎ本文を再開先の context に貼り込まない。
状況に応じて2モードに分岐する:
| モード | いつ | 出力する起動文 |
|---|
| compact | セッションは生きていて /compact で圧縮して同一セッションを続けたい | /compact 用 focus 文 + 圧縮後に貼る1行(ファイルを読んで再開) |
| new-session | セッションが壊れた/怪しい、または新しいセッションで続けたい(今のを捨てる) | 新セッションで貼る1行(ファイルを読んで再開) |
/compact 自体は CLI スラッシュコマンドのためモデルからは実行できない。ユーザー操作が必須。
モード判定(skill 冒頭で必ず行う)
起動時にまずモードを判定する。
| signal | → モード |
|---|
| 「compact」「圧縮して続けたい」「/compact の前に」「コンパクト前準備」「context 逼迫だが続けたい」、writing-plans → executing-plans 移行直前、worktree 切替直後の /compact | compact |
| 「セッションが壊れた」「クラッシュ」「次のセッションに引き継ぐ」「新しいセッションで」「session handoff」「壊れたので引き継ぎ」 | new-session |
| どちらとも取れる(signal が弱い/拮抗) | 1問だけ AskUserQuestion で確認 |
- 判定が明白なら「○○モードと判断しました」と1行宣言して即実行。質問しない。
- 曖昧な時のみ AskUserQuestion で compact / new-session を1問確認 → 実行。
共通フロー(基本ノンストップ)
引数がなければ聞き返さない。 会話履歴から自動抽出して即書き出す。
1. 引数(あれば次の作業予定の自然文) + 会話履歴から引き継ぎ内容を自動抽出
↓
2. scratchpad ディレクトリ直下に構造化 md を書く(絶対パス・命綱)
↓
3. モード別の起動文を出力(コードフェンスでコピペ可能に)
↓
4. 「補足あれば言って(無ければそのまま進めてOK)」の1行を添えて完了。応答は待たない
- 引数: あれば「次にやること」として後述
## 再開手順 の先頭に反映する。無ければ会話履歴から推測する。
- 書き出しを最優先: Step 2 が命綱。起動文を出す前にセッションが死んでもファイルは残る。new-session モードでは特に、Read/Grep を増やさず手元の会話 context だけで一気に書き切る。
- 聞き返さない: 引数が無くても自動抽出で完成させる。補足確認は Step 4 の1行を添えるだけで、ユーザーの応答は待たない(補足が来たらファイルに追記し直す)。
Step 1: 引き継ぎ内容を抽出
抽出する(該当するものは漏らさない):
- 作業カテゴリ(機能開発/バグ修正/レビュー対応/調査 など)
- worktree path / branch
- 編集中ファイルの絶対パス
- 直前の検証・テスト・ビルド・lint の結果
- 完了タスク/未着手タスク
- 確定済みの判断・accept 済み Ops Risks
- 採用しない案(却下した代替案)
- 適用中の skill 名
- (引数があれば)次にやる作業
抽出しない:
- 既存コードを読めば再構築できる事実(API シグネチャ・既存実装の詳細)
- 議論の経緯(再開後に必要なのは結論のみ)
- ファイルの中身そのもの(パスがあれば再開先が再 Read できる)
Step 2: tmp ファイルに構造化 md を書く
環境で案内されている scratchpad ディレクトリ直下に書く(パスはハードコードしない。セッションごとに異なる)。ファイル名は固定 handoff-session.md。既に存在する場合は handoff-session-2.md のように連番を付ける(時刻ベースの命名はしない)。
セクション構成(固定順):
# Handoff: <作業のひと言>
## 作業概要
<何の作業中か。1-3行>
## 状態
- worktree / branch: <絶対パス・ブランチ名>
- 編集中ファイル: <絶対パス列挙>
- 直前の検証結果: <テスト/ビルド/lint の結果。無ければ「未実行」>
## 残タスク
- [ ] <未着手・進行中のタスク>
## 確定済み判断 / 採用しない案
- <accept 済み Ops Risks・確定した設計判断・却下した代替案>
## 再開手順
1. <最初にやる具体アクション>
2. <起動すべき skill。例: /bugfix を起動して継続>
---
(このファイルは tmp。永続化したいなら docs/ 等へ移すこと)
## 再開手順 が構造化の肝。 再開するエージェントは context ゼロから始まる。①最初にやる具体アクション ②起動すべき skill を番号付きで明示すること。これで Read 直後に手が動く。引数で次の作業予定が渡されていれば、その内容をここの先頭に落とす。
パスはすべて絶対パスで書く(再開先は別プロセス・CWD が違う場合がある)。
Step 3: モード別の起動文を出力
ユーザーがコピペできるようコードフェンスで囲む。
compact モード
2 ブロックを出す。
## 1. /compact 用 focus
```
以下を必ず要約に保持してください:
- 引き継ぎファイル: <handoff md の絶対パス>
- <他に要約後も即参照したい最小の path / 確定判断があれば>
他は適宜要約してよい。
```
実行: `/compact` 実行後、focus 入力欄に上記を貼る
---
## 2. /compact 後に貼るプロンプト
```
<handoff md の絶対パス> を読んで、再開手順に従って続けてください。
```
実行: /compact 完了後、本セッションで上記をそのまま送信
- focus には引き継ぎファイルの絶対パスを必ず含める(要約後にこのパスを見失うと再開できない)。
- focus は「保持すべき最小の固有情報」だけを箇条書きにする。引き継ぎ本文は md 側にあるので、focus に本文を再記述しない。
new-session モード
1 ブロックを出す。
## 新セッションで貼るプロンプト
```
<handoff md の絶対パス> を読んで、再開手順に従って続けてください。
```
実行: 新しいセッションを起動し、最初のターンで上記をそのまま送信
両モードとも起動文は短い1行を基本とし、長い引き継ぎ本文を再開先の context に再注入しない(ファイルが正)。
Step 4: 完了
最後に1行だけ添える:
引き継ぎを <絶対パス> に書きました。補足があれば言ってください(無ければそのまま進めて OK です)。
ユーザーの応答は待たない。補足が来たらファイルに追記する。
superpowers ワークフロー特例(compact モード)
writing-plans 完了直後の compact では、conventions §6.2.1 に従い handoff md と focus に以下を必ず含める:
- spec ファイルパス(
docs/superpowers/specs/xxx.md)
- plan ファイルパス(
docs/superpowers/plans/xxx-plan.md)
- worktree path(現 CWD)
- 残タスク状態(完了 / 未着手)
- accept 済み Ops Risks の状態
handoff md の ## 再開手順 には /superpowers:executing-plans <plan-path> の起動指示を含める。Pre-flight Ops alignment は plan を都度 Read して再 alignment する不変条件があるため(conventions §6.4)、md 内では「accept 済み」と書くだけで十分(plan が source of truth)。
Common Mistakes
- モード判定を飛ばす → 冒頭で必ず判定する。明白なら宣言して即実行、曖昧時のみ1問。
- 引数なしで聞き返す → 基本は聞き返さない。会話履歴から自動抽出して書き切る。
- 「現状の要約」をファイルに延々と書く → ファイルに残すのは保持すべき固有情報(path / 状態 / 確定判断 / 再開手順)。議論の経緯や既存コードの説明は書かない。
- 起動文に引き継ぎ本文を埋める → 本文は md にある。起動文は「ファイルを読んで再開手順に従って」の1行。再開先の context を食わない。
## 再開手順 を曖昧にする → 最初のアクションと起動 skill を番号付きで具体的に。ここが弱いと再開先が迷う。
- path を相対で書く → 再開先は別プロセス・CWD が違うことがある。すべて絶対パス。
- モデルが /compact を実行しようとする → CLI スラッシュコマンドのためモデルからは実行不可。ユーザー操作必須。
- compact の focus に引き継ぎファイルパスを入れ忘れる → 要約後にパスを見失い再開不能になる。focus に必ず含める。
- tmp 揮発を過信する →
/tmp はマシン再起動で消える。プロセスが死んだ程度なら残るが、長期保存したいなら md 末尾の注記どおり docs/ 等へ移すよう案内する。
Skip 条件
以下は skill を起動せず直接案内してよい:
- ユーザーが「次の作業は無し、ただ圧縮だけ」と明示(compact だけ案内)
- /clear したい(handoff ではなく完全クリア)
- 5 ターン以内に完結する短い作業の続きで、引き継ぎコストが効果を上回る