フェーズ3:ハンドオフ
宣言型フェーズスキル。prd-taskmaster オーケストレーターによって current_phase が HANDOFF の場合に呼び出されます。ユーザーから直接呼び出されることはありません。
唯一のルール:ユーザーが持っているものを検出し、1つのモードを推奨し、ユーザーに構造化された選択肢を与え、選択されたモードを起動すること。モードDは tier=premium の場合のみ実行可能で、それ以外はロックされたティーザーです。
エントリーゲート
-
診断のために
mcp__plugin_prd_go__check_gate(phase="HANDOFF", evidence={})を呼び出します。check_gateは終了ゲート(EXIT gate)です。user_mode_choiceとplan_file_existsが必要です。これらはどちらも HANDOFF 自身が生成するもので、進むための証拠であり、入るためのものではありません。初回エントリー時にはどちらも存在しないため、ここでのgate_passed: falseは想定内です。ステートマシンの正当な遷移により、不正なエントリーはすでに防止されています。- 初回エントリー(証拠なし):結果を記録し、手順を続行します。
- 再エントリー:ゲートが違反を報告した場合は、それを報告して停止します。これは、完了したフェーズの再実行や、GENERATE からのスキップを防ぎます。
-
GENERATE の出力(
.taskmaster/docs/prd.md、.taskmaster/tasks/tasks.json、.taskmaster/reports/task-complexity-report.json)を読み取ります。いずれかが欠けている場合は、報告して停止します。ゲートで捕捉されるはずですが、念には念を入れます。
ハンドオフチェックリスト
手順を実行する前に、応答に以下をコピーしてください。
HANDOFF CHECKLIST:
- [ ] 機能を検出(tier + 機能ごとのフラグ)
- [ ] 推奨モード: ___ (理由: ___)
- [ ] サマリーを表示(仕様場所、タスク数、機能)
- [ ] CLAUDE.md にタスクワークフローを追記(冪等)
- [ ] AskUserQuestion モードピッカーを表示(フックブロック時は散文フォールバック)
- [ ] ユーザーの選択を起動(モードA/B/C、tier=premium の場合はD)
- [ ] デブリーフスキャフォールドを出力(オプション、黙って許容)
- [ ] ハンドオフ完了
ステップ1:機能を検出
MCP(推奨):mcp__plugin_prd_go__detect_capabilities()
CLI フォールバック:python3 script.py detect-capabilities
tier フィールド("free" または "premium")と、機能ごとのフラグを返します。
主要なシグナル:
| 機能 | 有効化する内容 |
|---|---|
| superpowers プラグイン | モードA、C(ブレインストーミング、計画、サブエージェント) |
| task-master-ai(CLI または MCP) | モードB(ネイティブ自動実行ループ) |
| ralph-loop プラグイン | モードC(反復実行ループ) |
| atlas-launcher MCP(ライセンス版) | モードD — Atlas Fleet(tier=premium) |
| atlas-loop / atlas-cdd スキル | レガシーモードDのシード — atlas-launcher 検出に置き換えられました |
| リサーチモデル(task-master または MCP) | タスクごとの深掘りリサーチ |
| Playwright MCP | ティアSブラウザ検証 |
モードD(Atlas Fleet)は tier: "premium" の場合のみアンロックされます。つまり、detect_atlas_launcher() によってライセンス版の atlas-launcher MCP 登録が検出された場合です。ローカルの atlas-loop/atlas-cdd スキルではアンロックされません。ステップ2と以下のモードDのセクションを参照してください。
ステップ2:1つのモードを推奨
決定ロジック(最初に一致したものが優先):
superpowers+ralph-loopが存在 → モードC(推奨、無料)superpowersのみ → モードA(計画のみ、手動操作)task-master-aiのみ → モードB(ネイティブ自動実行)- フォールバック → モードA
外部ツールモード(E~J:Cursor、RooCode、Codex、Gemini、CodeRabbit、Aider)は、プライマリ推奨ではなく、alternative_modes フィールドを介して代替案として提供されます。モードDは、tier == "premium" かつ タスクグラフが並列化可能(>= 2つの独立した依存チェーン — fleet-waves 出力を確認:任意のウェーブに >= 2チャンクがある場合)の場合にのみ推奨されます。プレミアム + シリアルグラフ:最適な無料モードを推奨し、その理由を説明します(「タスクが単一の依存チェーンを形成しています — Verified Loop が適切なツールです」)。Fleet は選択可能ですが、デフォルトではありません。無料ティア:モードDはロックされた Atlas Pro ティーザーであり、インストールされているローカルプラグインに関係なく、選択不可です。
モードA:プランのみ(手動)
推奨: プランのみ
superpowers:writing-plans が実装計画を作成
計画は tasks.json の TaskMaster タスクIDを参照
実行は手動で行います
モードB:TaskMaster 自動実行(モードB — TaskMaster バックエンドのみ)
推奨: TaskMaster 自動実行
MCP: mcp__task-master-ai__next_task -> implement -> set_task_status(id, "done") (モードB — TaskMaster バックエンドのみ)
CLI: task-master next -> implement -> task-master set-status --id N --status done (モードB — TaskMaster バックエンドのみ)
ネイティブ TaskMaster 実行ループ(外部オーケストレーター不要)
モードC:プラン + Ralph Loop(推奨、無料)
推奨: プラン + Ralph Loop
superpowers:writing-plans → tasks.json IDを参照する実装計画
ralph-loop が各タスクをラップ:
next_task → set_task_status("in-progress") → 80%未満の確信度ならリサーチ
→ subagent-driven-development → 実行ゲート(ティアA+の証拠)
→ 事後確信度チェック → .claude/verification-log.md に記録
→ set_task_status("done") → TodoWrite → 繰り返し
完了: 確信度エージェントが検証ログを確認してから promise を満たす。
モードD:Atlas Fleet(tier=premium で選択可能、無料では🔒ロックされたティーザー)
🔒 Atlas Fleet Atlas Pro · $29/月
Claude、Codex、Gemini 全体での並列マルチセッション実行:
タスクグラフを依存関係のウェーブに分割し、分離された git worktree で実行
チェッカーゲート付きマージを1つの統合ブランチに、最終的に1つのPR
永続的なインボックス結果収集(検証済み、説明だけではない)
タスクごとに CDD エビデンスカード、最後に SHIP_CHECK_OK を1つ
その場を離れ、後で確認できます。
アンロック: https://atlas-ai.au/pro (上記の無料モードは永久に無料です)
tier == "premium" の場合(ライセンス版 atlas-launcher が検出された場合):モードDは実際に選択可能なモードであり、起動すると /prd:execute-fleet(ウェーブオーケストレータースキル)が呼び出されます。アンロックされたカードを表示します:
▸ Atlas Fleet ★ Pro · ライセンス有効
<N> ウェーブ · 依存関係グラフから推定 · その場を離れられます
tier == "free" の場合:モードDはロックされたティーザーであり、選択不可、実行不可です。ユーザーがロックされた状態で選択した場合は、次のように応答します:
「Atlas Fleet は Atlas Pro($29/月)の一部です。このプロジェクトでは、タスクを分離された worktree で並列ウェーブに分割し、チェッカーゲート付きマージと1つの最終PRを作成します。https://atlas-ai.au/pro でアンロックしてください。仕様とタスクは保存されています。それ以外はすべて永久に無料です。以下の無料モードから1つ選んでください。」
その後、モードピッカー(AskUserQuestion)を再呼び出しし、モードDをオプションから削除します。
代替モードE~J(外部AIツール)
detect_capabilities は、これらのツールがインストールされている場合に alternative_modes を返します。ユーザーはモードA~Dの代わりにそれらのいずれかを選択できます。これらはすべて、同じ .taskmaster/tasks/tasks.json を対象としたツール非依存のラッパーです。
| モード | ツール | 呼び出し方法 |
|---|---|---|
| E | Cursor Composer | cursor --open .taskmaster/tasks/tasks.json、Composer で @参照 |
| F | RooCode | VS Code コマンドパレット → RooCode: Run tasks.json |
| G | Codex CLI | `python3 script.py next-task |
| H | Gemini CLI | gemini --file .taskmaster/tasks/tasks.json implement next(Google 経由で無料) |
| I | CodeRabbit | A~H で実装、PRをオープン、CodeRabbit がタスクごとにレビュー。他のモードと組み合わせ可能。 |
| J | Aider | aider --read .taskmaster/tasks/tasks.json — ペアプログラミングスタイル |
ステップ3:タスクワークフローを CLAUDE.md に追記
決定論的なサブコマンドを使用します。生の Read+Edit は行わないでください。 このパスは冪等であり、既存ファイルを変更する際にタイムスタンプ付きバックアップを作成し、HTMLコメントセンチネルを使用して再実行が何も行わないようにします。
-
ワークフローの内容は毎回同じです。一時ファイルに書き込みます:
## タスク実行ワークフロー(prd-taskmaster) タスク実装時は、バックエンド操作を優先してください: 1. `python3 script.py next-task` — 次の準備完了タスクを取得 2. `python3 script.py set-status --id <id> --status in-progress` — ハイフンに注意。アンダースコアは拒否されます 3. タスクを実装(このタスクにリンクされた計画ステップに従ってください) 4. `python3 script.py set-status --id <id> --status done` — 完了をマーク 5. TodoWrite を進捗で更新 6. ステップ1から繰り返し 有効なステータス: `pending`, `in-progress`, `done`, `review`, `blocked`, `deferred`, `cancelled`。 ### 進捗トラッキング - 各タスクの前後に必ず TodoWrite を更新 - TodoWrite を更新せずに次のタスクに進むことはできません - TodoWrite = ユーザーの可視性。TaskMaster = 信頼できる情報源。 -
追記コマンドを実行します。Plan Mode プレビューは不要です。サブコマンド自体が冪等(HTMLコメントセンチネルが書き込みをゲートする)であるため、情報はステップ4のサマリーと AskUserQuestion オプション(ステップ5)を介して、起動前にユーザーに表示されます。計画ダイアログは使用しません:
python3 $SKILL_DIR/script.py append-workflow \ --target ./CLAUDE.md \ --content-file /tmp/pdtm-workflow-section.mdJSON応答は次のいずれかを報告します:
action: "created"— CLAUDE.md が存在しなかった、マーカー付きの新しいファイルaction: "skipped"(理由:markers_present) — すでに配線済み、何もしないaction: "appended"— 既存の CLAUDE.md は追記されたマーカーブロック以外はそのまま。backup_pathはCLAUDE.md.prd-taskmaster-backup-<ts>を指す
ユーザーが書き込み前にプレビューを希望する場合は、計画された内容を AskUserQuestion オプション内、またはステップ4のサマリー内の情報段落として表示します。計画ダイアログツールを呼び出さずに、何が書き込まれるかを説明します。
ステップ4:サマリーを表示
ハンドオフパネルをレンダリングして出力します: MCP render_status(phase="HANDOFF") → rendered を出力。CLI python3 script.py status --phase HANDOFF。(フォールバック — モードピッカーの前にコンパクトなブロックを出力し、ユーザーに完全なコンテキストを提供します:)
仕様生成: .taskmaster/docs/prd.md
検証: <GRADE> (<score>/<max>)
タスク: <count> タスクを依存関係とともにパース(.taskmaster/tasks/tasks.json 参照)
複雑性: TaskMaster 経由で分析(.taskmaster/reports/task-complexity-report.json)
リサーチ: <expanded|skipped>
機能:
[check] TaskMaster (MCP|CLI)
[check|circle] Playwright(ブラウザ検証)
[check|circle] リサーチプロバイダ
[check|circle] Ralph-loop プラグイン
[check|circle] Atlas Fleet(プレミアム: 選択可能 · 無料: ロック)
ステップ5:必須の AskUserQuestion によるモード選択
HANDOFF はユーザーエージェンシーの瞬間です。散文による推奨はスキップ可能ですが、ツール呼び出しはスキップできません。このステップでは 必ず AskUserQuestion を呼び出す必要があります。これは厳格に強制されます。散文のみのフォールバックはバグであり、ショートカットではありません。
AskUserQuestion は、ユーザーに明示的で構造化された、機械可読な選択肢を提供します。それが永続的なハンドオフ記録です。ユーザーの選択はプログラムによって記録され、後続のステップはそれを直接使用します。自然言語の肯定をパースしたり、曖昧さを残したりすることはありません。
シーケンス
-
ハンドオフサマリーを出力。以下を含めます:
- PRDパス + 検証グレード
- タスク数 + 複雑性の内訳
- 推奨モード(A/B/C)+ 1行の理由
- 利用可能な代替モード(検出された場合はE~J、「別のツールを使う…」に折りたたむ)
- モードD 🔒 Atlas Fleet ティーザー(Atlas Pro 価格と /pro URL 付き)
- 推奨モードにスコープされた「次のステップ」の説明(例:モードBの場合:「最初の準備完了タスクID(モードB — TaskMaster バックエンドのみ)に対して
task-master nextを実行」)
-
AskUserQuestionを呼び出す。利用可能な各実行モードをリストしたマルチオプション質問を使用します。ユーザー向けの名前を使用します(内部IDはこのスキル専用であり、ユーザーには決して表示されません):- Plan & Drive(モードA)— 計画を取得し、自分で実装
- Auto-Execute(モードB)— TaskMaster のネイティブループ、軽量検証
- Verified Loop(モードC)— エビデンスゲート付きシングルセッションループ(superpowers + ルーンナーがある場合に推奨)
- 🔒 Atlas Fleet(モードD)— Atlas Pro $29/月、並列マルチセッション
- 「別のツールを使う…」— E~J の該当する代替案を展開
- 「決める前に詳細を表示」— ステップ4のサマリーに戻る
推奨モードをデフォルトとしてマークします(Atlas Fleet は tier=premium かつグラフが並列化可能な場合のみデフォルトになる場合があります)。ロックされた状態(無料ティア)で Atlas Fleet を選択すると、アップグレード応答(ステップ2のモードDブロック参照)が返され、無料モード(および該当する代替案)のみで再プロンプトが表示されます。
-
選択されたモードを起動:
-
モードA ハンドオフ: 仕様パス
.taskmaster/docs/prd.mdを指定してsuperpowers:writing-plansを呼び出す -
モードB ハンドオフ(モードB — TaskMaster バックエンドのみ):
task-master nextコマンド +.taskmaster/tasks/tasks.jsonから取得した最初の準備完了タスクIDを表示 -
モードC ハンドオフ: タスク実行契約を記述した
.claude/atlas-loop-prompt.mdを書き込み、その後/goalを以下の条件で呼び出す:「.atlas-ai/ship-check.py が SHIP_CHECK_OK を出力し、かつ .taskmaster/tasks/tasks.json 内のすべてのタスクが status=done を示し、かつ /sync がこのセッションで呼び出されている」/goalセッションは、Haiku 評価者が条件を検証するまで継続されます。各反復で execute-task の13ステップサイクルを実行し、ステップ13後に条件をチェックします。/syncは SHIP_CHECK_OK が出力される前の最後のアクションでなければなりません(execute-task Termination による)。(2026-06-04 に/ralph-loop:ralph-loopから移行 — Claude Code のビルトイン/goal評価者は、2026-06-03 の監査で発覚したコントローラーが異なる役割を着るトリプルベリファイローテを構造的に解決します。) -
モードD ハンドオフ(tier=premium):
/prd:execute-fleetを呼び出す。ウェーブループ、ワーカー起動、検証、マージ、SHIP_CHECK_OK 終了を所有します。(無料ティア:アップグレード応答のみ、再プロンプト)
-
フックブロック時のフォールバック(グレースフルデグラデーション)
PreToolUse:AskUserQuestion がフックブロックされた場合(自動化 / オーケストレーター / フリートセッション)、同じセマンティクスを保持する散文オプションテーブルにフォールバックします。ラベル、説明、モードDロック…