前セッションの project-state.json から未完了タスク(in_progress/blocked)を特定し、 ユーザー承認後に作業を再開する。/continue の明示呼び出し、"continue from handover" のような継続指示、handover.md への言及を検出した時に使用する。worktree 切り替えと Pipeline Detection も含む。
前セッションからの引き継ぎを確認し、未完了タスクがあれば承認後に作業を再開する。
.agents/handover/{team-name}/{agent-name}/{cwd}/.agents/handover/ を走査し、利用可能なセッション(status が READY)を収集する(グループ: CWD)git worktree list で全 worktree パスを取得する{path}/.agents/handover/ を走査し、READY セッションを収集する(グループ: worktree)workspace.root を検証する。git worktree list の結果に存在しないパスを指すセッションは orphan とマークする0件 → 「再開可能なセッションがありません」と報告して終了
1件以上 → AskUserQuestion で以下のグルーピングで一覧表示し選択させる:
📂 現在のディレクトリ (CWD)
[1] master/20260330-120000 — 残2件 / 完3件 — 次: execute 実装
📂 worktree: feature/auth-refactor (.worktrees/auth-refactor)
[2] feature/auth-refactor/20260329-140000 — 残3件 / 完1件 — 次: DB マイグレーション
⚠ worktree 削除済み
[3] feature/old-feature/20260325-100000 — 残2件 / 完0件 — 次: 初期実装
各セッションの表示項目:
workspace.root が存在しない)には「⚠ worktree 削除済み」と警告を付けるlast_touched が 48 時間以上前のタスクがある場合は「⚠ stale(48h 以上未更新)」と警告を付けるステップ 2-3 は CWD の候補数に関係なく常に実行する。
Worktree 切り替え(選択されたセッションが CWD 以外の場合のみ実行)
選択されたセッションの所属に応じて分岐する:
既存 worktree のセッション:
wt switch <branch> を実行して worktree に切り替える.agents/handover/ から project-state.json を読み込むorphan セッション(worktree 削除済み):
project-state.json の workspace.branch からブランチ名を取得するgit branch --list <branch>)
wt switch --create <branch> で再作成しますか?」
wt switch --create <branch> で worktree を再作成するproject-state.json, handover.md)を新しい worktree の .agents/handover/{branch}/{fingerprint}/ にコピーするwt 未インストールの場合:
wt コマンドが利用できない場合は「wt が見つかりません。手動で cd <worktree-path> してから /continue を再実行してください」と報告して終了する
0.5. Pipeline Detection(手順1の前に実行)
project-state.json の pipeline フィールドを確認する:
pipeline が存在しない、または "feature-dev" / "debug-flow" 以外の値の場合:
→ 手順1以降の従来フローを実行するpipeline が "feature-dev" または "debug-flow" の場合:Phase Summary の読み込みと表示:
version が 5 であることを確認する(4 の場合はレガシーフローにフォールバック)phase_summaries マッピングから完了済みフェーズを特定するcurrent_phase を判定する(pipeline.yml のフェーズ配列順で、phase_summaries に存在しない最初のフェーズ)concerns / directives を target_phase で現在フェーズにフィルタするsession オブジェクトから session_id と resume_hint を取得する表示フォーマット:
前回セッション:
Session ID: {session.session_id}
Resume hint: {session.resume_hint}
Phase Progress:
design ✅
spec-review ✅
plan ✅
→ Current: plan-review
Concerns for current phase:
- <concerns with target_phase matching current phase>
Pipeline: {pipeline} のセッションを検出しました。
{phase_id} から Resume Mode で起動します。
→ Skill tool で /{pipeline} を invoke する
→ continue の処理はここで終了(ワークフローに委譲)
ローカルの phase-summaries/ が不在または不完全で、linear.issue_id が設定されている場合:
/linear-sync の read_phase_summary を invokephase-summaries/ に書き戻しLinear API 失敗時はワークフロー続行(ベストエフォート)。
上記のパス解決で選択されたセッションの project-state.json を読み込む
version が 4 または 5 であることを確認する。それ以外 → 「サポートされていないバージョンです(version: {version})」と報告して終了git log --oneline -5 を実行し、直近のコミット履歴を確認する
status フィールドを確認する
ALL_COMPLETE の場合 → 「全タスク完了済みです。新しい作業の指示を待ちます。」と報告して即座に終了する。コードベースの探索は行わないREADY の場合 → 次のステップへ未完了タスク(status が in_progress または blocked)を以下の形式で一覧表示する:
last_touched が 48 時間以上前のタスクには「⚠ stale(48h 以上未更新)」と警告を付ける作業開始の確認:
承認後、未完了タスクを一覧の順序で実行する
project-state.json を更新する:
done に変更done になったら、トップレベルの status を ALL_COMPLETE に設定最後に選択されたセッションの handover.md を project-state.json から再生成する
# Session Handover
> Generated: {ISO8601}
> Session: {session_id}
> Status: {READY | ALL_COMPLETE}
## Completed
- [ID] タスク説明 (commit_sha)
## Remaining
- [ID] **status** タスク説明
- files: ファイルパス
- next: 次のアクション
## Blockers
- ブロッカー一覧
## Context
- recent_decisions から決定事項とその理由
## Architecture Changes (Recent)
- sha: 要約
## Known Issues
- [severity] 問題の説明
continue 実行時に、CWD および全 worktree の .agents/handover/ 配下で ALL_COMPLETE かつ generated_at が7日以上前のセッションディレクトリを自動削除する。削除前にログ出力する。