handoff について
Handoffは、別セッション間でコンテキストを引き継ぐエージェント向けスキルです。promptとartifactの経路に対応し、参照先を使った簡潔な共有、進捗の正確な報告、クライアント別の受け渡し方法を定めています。
主な機能
- 01promptまたはartifact経路の選択
- 02本文ではなく参照先を共有
- 03完了・進行中・停滞の状態を区別
- 04秘密情報と個人情報の伏せ字処理
- 05クライアント別の引き継ぎ方法の対応付け
活用シーン
- 01新しいチャットで作業を続行
- 02artifact経由でモデル起点のコンテキストを引き継ぐ
- 03完全なコンテキストパックなしでレビュー状況を共有
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ csark0812/ toolbox --skill handoffインストール後、Claude Code で/handoffを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/handoff-subagent-dispatch.mdoutput.mdpack.mdresearch-basis.md詳細
引き継ぎ
Orchestrator — セッションをまたぐ A2A(channel:prompt と channel:artifact)。共通語彙 → process-skill-composition.md。
参照: pack.md · output.md · handoff-subagent-dispatch.md
主張を調整する際は、research-basis.md を読んでください。
開始条件
- 新しいチャットを想定します — 転送を伴わない同一セッション内の継続は対象外です。
- チャネルを選択します —
prompt(ユーザー)またはartifact(モデル呼び出し)。
必須事項
- 本文ではなくポインター — パス、URL、SHA を使用します。引き継ぎに計画、PRD、差分を貼り付けないでください。
- 状態を正直に示す — 完了、進行中、または不具合あり。進捗を主張する場合は、コミットまたはテストを引用してください。
- 書き込みまたは貼り付けの前に、秘密情報、トークン、PII をマスキングします。
- チャネル prompt — ユーザーによる
/handoff→ ディスクに書き込まない(_agent/handoffs/は禁止)。 - チャネル artifact — モデル呼び出し時 → サブエージェントによる書き込みが必須です。コーディネーターが主に書き込むことは違反です。
ワークフロー
- チャネル、パック、目標を選択する — pack.md で最も近い行を使用します。これらの値は生成のみを制御します。
- 情報を集める — スレッドから最小限の箇条書きをまとめます。空のカテゴリは省略します。
- 引き渡す —
channel:prompt→ output.md に従って、明確な英語で受け取り用プロンプトをコードフェンスで囲んで提示しますchannel:artifact→ handoff-subagent-dispatch.md → スタブのみ貼り付けます
実行インターフェースの対応表
リクエストに「X クライアント経由で引き継ぎ」とある場合は、この対応表を使用します。
- 実行側の意図からチャネルを選択します。
- ユーザー向けの引き継ぎ(
/handoff)にはprompt - モデル呼び出しによる、コンテキスト圧迫時の継続には
artifact
- ユーザー向けの引き継ぎ(
pack、goal、スレッド内の主張から、正規のペイロードを 1 つ作成します。- クライアントのインターフェースにルーティングします。
prompt:受け取り用プロンプトブロックを出力し、次のチャットの開始時に渡します。artifact:<workspace>/_agent/handoffs/<filename>.mdに書き込み、読み取り用スタブのみを出力します。
- クライアント固有のルールに従って、出力を検証します。
クライアント横断のデフォルト動作
| インターフェース | トランスポートのルール | 生成側のアクション | 必須の受信成果物 |
|---|---|---|---|
| Codex | チャットスレッドで制御 | ユーザーへの引き継ぎには channel:prompt、モデルによる呼び出しには channel:artifact を使用します | channel:prompt ブロックまたは引き継ぎ成果物のパス |
| Cursor | 会話を継続 | 成果物フックが明示的に利用可能でない限り、新しいチャットに channel:prompt を渡します | プロンプトブロック |
| Claude Code | チャットを継続 | 新しいチャットに channel:prompt を渡します。クライアント固有のタスク API がある場合は、ブロックを最初のユーザーメッセージとして渡します | プロンプトブロック |
| Claude API / GPT-like interface | チャットを継続 | channel:prompt が必須です。フィールドをユーザーに表示される引き継ぎメッセージにマッピングします | プロンプトブロック |
| ChatGPT UI / web chat | チャットを継続 | 1 行目のターゲットを Open workspace にして channel:prompt を使用します | プロンプトブロック |
| GitHub Copilot Chat | IDE で継続 | channel:prompt のみを使用します。ローカルホストが引き継ぎの書き込みを公開していない限り、共有成果物パスは使用しません | プロンプトブロック |
| 汎用 MCP / カスタムクライアント | API 固有 | 正規のペイロードフィールドにマッピングします。成果物をサポートしていない場合は、プロンプトに切り替えます | プロンプトブロック(またはサポートされている場合は成果物のパス) |
インターフェースが成果物 API を公開していない場合は、必ず channel:prompt にフォールバックしてください。
Codex API 分岐
依頼で Codex API の実行が明示的に指定されている場合に使用します。
- 計画の主張から
channel:promptペイロードを作成します。 - 次のいずれかを優先します。
- オーケストレーションがユーザーフロー内にある場合は、プロンプトペイロードを使って新しいチャットを開始します。
- 新しい Codex タスクには
create_threadを使用し、引き継ぎの初期化のためにプロンプトブロックを指定してsend_message_to_threadを呼び出します。
channel:artifactの場合は、オーケストレーションフローを通じてchannel:artifactを指定してhandoffを呼び出し、サブエージェントのライター経路を起動してから、<workspace>/_agent/handoffs/<filename>.mdを指すスタブのみを出力します。
サポートされていない Codex ツール呼び出しを捏造しないでください。必須の API が利用できない場合は、channel:prompt へのフォールバックを記載してください。
大量処理を行うインターフェースに関する注意
- UI モードと API モードの両方を備えるクライアントでは、独自のオーケストレーションでモードを明示してください。
- 構造化された会話 API を備えるクライアントでは、同じフィールドを保持し、最初のメッセージのペイロードにのみマッピングしてください。
- IDE ネイティブのチャットクライアントでは、ワークスペースを明示したプロンプトモードを優先してください。
インターフェース実行の境界
- いずれか 1 つのチャットスタックの制御 API を、唯一のサポート対象経路としてハードコードしないでください。
- 受信コンテンツに
channelとpackを含めないでください。 - どのインターフェースでも、秘匿化ルールを省略しないでください。
channel:artifactでは、コーディネーターから引き継ぎファイルを書き込まないでください。必要に応じて、サブエージェントの経路を起動または調整してください。
次のセッションでレビュー状態のみが必要な場合は、Pack: full の代わりにコンシューマーオーバーレイブロックを使用してください。
コンシューマーバインディング
プロジェクト固有の注入コンテキストは、スキルの読み込み時に追加されます。
コメント
Markdown 対応