--- name: delegation description: > 作業へ着手する前に担当範囲の一部を委譲先へ分けるかと委譲単位を判定する時 (計画の起草前、独立した複数の作業単位か長い工程を含む作業の着手前)、 サブエージェントまたは委譲先を起動、観測、継続もしくは巻き取るとき、または停滞検知・複数のエージェントの調整が必要な場合に起動し、委譲の共通契約と実行手段ごとの契約を提供する。 user-invocable: false --- # 委譲 委譲先を起動したエージェントを委譲元と呼ぶ。委譲先は`Agent`ツールで起動する子(サブエージェント)と`agents_server`で起動する子sessionの総称とする。委譲先がさらに起動したエージェントも、起動したエージェントを基準に委譲先と呼び、「孫」「子孫」は基準となるエージェントを同じ文に示す場合だけ使う。 委譲先が行う用途固有の作業は、委譲先が読む`<役割名>.subagent.md`またはagent定義が定める。 ## 読込表 次の時点の前に、同じ行の資料を全文読む。同じセッションで読了済みで、その後の変更を観測していない資料は読み直さない(会話圧縮後は読み直す)。 | 時点または条件 | 全文読む資料 | | --- | --- | | Codexで委譲、待機、状態確認または中断へ着手する前(agents_serverのexplore・shellの起動から受領までを除く) | `references/codex-runtime.md` | | `<役割名>.parent.md`が起動手順を定めない委譲(`start`の`delegate`・`write`、`Agent`ツール、Codexの組み込み委譲)を開始する前 | `references/base-contract.md`、`references/mandatory-rules.md`、`references/sending.md` | | 作業へ着手する前に、担当範囲の一部を委譲先へ分けるかと委譲単位を判定する時(計画の起草前、独立した複数の作業単位か長い工程を含む作業の着手前) | `references/routing.md` | | `<役割名>.parent.md`が起動手順と必須入力を定めていない委譲を開始する前(explore・shellを除く)と、確定した委譲単位の構成を変更する前 | `references/routing.md` | | agents_serverのexplore・shellを起動する前 | 本書「explore・shellの起動」 | | `<役割名>.parent.md`を持つ委譲を起動する前 | 起動する`${CLAUDE_PLUGIN_ROOT}/share/<役割名>.parent.md`と、同書の読込表が条件付きで挙げる資料 | | 委譲先とモデルを選ぶ時点(explore・shellと、`<役割名>.parent.md`を持つ起動で`model_type`を指定しない場合を除く) | `references/runtime-routing.md` | | Claude Codeで`Agent`ツールの委譲先かバックグラウンドタスクを最初に起動する前、定期再確認を自ら装着する前(装着できなかった通知を受けた場合と、装着の通知も定期再確認のtaskも無い場合)、およびClaude Code固有の手順を確定する時(explore・shellの起動から受領までの操作は除き、本書の同名節に従う) | `references/claude-code-runtime.md` | | 完了通知および待機・停滞を確定する時 | `references/waiting-and-monitoring.md` | | `atk agents wait`が終了コード4・8・10または待機対象0件の非0で終わった時、待機の呼び出しがホストの上限で失敗した時、委譲先か自身のツール呼び出しが終端statusを返さずに終わった時、`agents_server`のMCPサーバーが再起動した後 | `references/wait-anomalies.md` | | 稼働中の委譲先へ追送する前 | `references/base-contract.md` | | 同じworktreeへ後続または並列の書込担当を起動する前(shellを除く。shellは本書「explore・shellの起動」に従う) | `references/mandatory-rules.md` | | 委譲先の完了報告を受領して検収する前(explore・shellを除く) | `references/receiving.md`、`references/mandatory-rules.md` | | 委譲先が、委譲プロンプトで`引き継ぎ記録先`を受け取って最初の記録を書く前 | `references/handoff-record.md` | | 実行工程を委譲するときの受領の取り決めを確定する時(explore・shellを除く) | `起動経路`に対応する文書(`agent-toolkit:process-wi`による起動では同スキルの`references/run-lanes.md`、`agent-toolkit:plan-mode`による直接起動では同スキルのSKILL.md) | | 指摘の採否と修正を確定する時 | `agent-toolkit:review-standards`を起動し、同スキルの`references/reviewee.md` | ## 送信 委譲は`<役割名>.parent.md`と`<役割名>.subagent.md`のペアで定め、ペアがある委譲はペアで起動する。自由本文の起動(`start`の`mode`が`delegate`・`explore`・`write`・`shell`)はペアの無い単発の作業に使う。 ペアの委譲では観点、判定基準、手順と返却形式を`<役割名>.subagent.md`が持ち、委譲元は対象と実行時の値だけを渡す。 委譲プロンプトは1行目の命令と必須入力の列挙の2要素とし、構成と列挙書式は`references/sending.md`「委譲プロンプトの構成」に従う。載せてよい要素は`references/base-contract.md`の入力の適格性が定める。explore・shellは次節に従う。 ## explore・shellの起動 1件の調査やコマンドを自ら行うかexplore・shellへ委ねるかは、agents_serverのserver instructionsの採算の目安で判定する。`references/routing.md`を全文読む契機はこの判断でなく、作業の分割の判定である。 両modeの起動から受領までの必須義務は本節が定める。括弧内の参照先は詳細を確かめる所在を示すだけで、読込の義務は読込表の行が決める。 - 起動前に対象、読取・書込権限、完成条件と返す観測値を確定し、委譲先が読む既存の絶対パスの実在、比較基準と実行する版を確かめる。大きな本文の調査には読み取りツールの範囲指定を渡し、切り詰めと上限到達を網羅性の根拠にしない(base-contract.md「起動前の確認」「分離実行の受領物」) - 入力は命令1文と必要な値(原要求、対象、完成条件、返却形式と基準記録)とし、配送済みの制約、経緯、推測と既存記録の転記を加えない。自ら裏付けていない値は未検証として区別する。exploreへ成果ファイルの生成を求めず、返却本文は委譲元が保存する(base-contract.md「入力の適格性と追送」、sending.md「委譲プロンプトの構成」「未検証情報の取り扱い」) - 各modeの入力・能力は公開された`start`の説明とスキーマで確かめ、`cwd`へ作業ディレクトリの絶対パスを渡す。exploreは`prompt`、shellは`command`と`summary_policy`を使う。スキルの手順が必要な作業は`task`・`delegate`へ渡す(sending.md「起動と観測」) - `model_type`の指定が無ければ工程別設定を使う。新しい候補・評価軸を導く調査は`high_tier`を明示し、WIがモデルを指定した場合はその指定を使う。受領時は指定・起動候補と観測した実値を区別する(runtime-routing.md「工程別モデル設定」) - exploreは読取専用とする。shellの書込先は生成物も含めて他の担当と交わらない集合へ確定し、同じ担当の交代は先行担当の終端後に行う。commit・Git hook・indexと履歴の操作、全体の整形・生成同期・依存更新・環境構築は、全担当の終端後に呼び出し元が直列に行う。担当ごとのcommitや書き換えを伴う検証が必要な場合と、書込先を確定できない場合は別worktreeとbranchへ分ける(mandatory-rules.md「作業ツリーの保護」)。軽量起動に配送されないプロジェクト固有の指示と、コマンドの入力境界・終了状態・両出力の保持を渡す(base-contract.md「起動前の確認」、sending.md「権限と成果物の取り決め」) - 返された`session_id`を保持し、`atk agents wait`で終端と結果本文を受け取る。待機の発行形、終了コード、背景化と通知後の受領は読込表の`references/waiting-and-monitoring.md`、ホスト別の待機は次の「軽量起動のホスト別待機」に従う - 終端後に対象の差分と結果・診断を確かめ、返却形式と対象・権限・完成条件との一致を検収する。件数・不在・網羅性は省略されていない取得から判定し、事実の主張は実物の根拠で裏付ける。受領前の値だけで完了とせず、不足する結果は同じ担当へ戻す(receiving.md「返却形式の適合確認」「終端と報告内容の確認」、sending.md「権限と成果物の取り決め」) ### 軽量起動のホスト別待機 Codexでは、`functions.exec`内の起動応答が返した`root_session_id`を保持し、ランタイム間の識別子の受渡しとして`atk agents wait`の`--root-session-id`へ渡す(待機対象のsession集合の指定とは別物である)。 待機CLIと外側の実行セルは別々に回収する。CLIへ待機対象やtimeoutを指定せず、外側のcell IDは`functions.wait`、exec_commandのsession IDは`write_stdin`で同じターンに回収する。外側がyieldした間は同じCLIを再発行せず、CLI自身が上限で`running`を返した後に次の待機を発行する(codex-runtime.md「agents_serverの二層待機」)。 Claude Codeのメインは、最初の`start`でmodが装着した定期再確認のtask IDを保持する。装着失敗の通知を受けた場合と、装着通知も`CronList`の該当taskも無い場合は、`CronCreate`・`CronList`・`CronDelete`を使えるときだけ自ら装着する。 - `atk wait-schedule --request-bucket main --format json`を1回実行し、返った`cron`と`prompt`を変更せず`CronCreate`へ渡して`recurring: true`で1件作成する - 所有taskはpromptの1行目の標識``と保持したIDで確認する。再開・会話圧縮後も`CronList`の実在taskと比べ、一意に確認できないtaskの操作や重複作成はしない - 未完了の対象がある間は同じtaskを再利用し、全対象の終端後に保持したIDを`CronDelete`へ渡す。定期promptは待機CLIが所有する対象を再照会せず、終端はCLIの結果と完了通知から確定する - 固有の経過時間起動の義務がある場合は、義務ごとの測定コマンドと閾値を共通promptの終了タグの前へ加え、所有taskを削除して同じ開始標識で作成し直す - Cronツールを使えない場合と`atk wait-schedule`の失敗時は、背景タイマーを加えず完了通知による待機を保つ。`Agent`ツールのサブエージェントは装着せず、agents_serverで起動された独立sessionのメインは同じ装着条件を使う(claude-code-runtime.md「待機中の定期再確認と背景転換」) ## `<役割名>.parent.md`を持つ委譲の起動 `${CLAUDE_PLUGIN_ROOT}/share/`配下の`<役割名>.parent.md`が起動を定める委譲は次の定型で起動する。委譲元は起動前にその`<役割名>.parent.md`を全文読み、同書の起動前の前提、入力の値の確定規則および受領と検収に従う。`<役割名>.parent.md`は役割ごとに異なる引数の値だけを書く。 - `agents_server`の`start`を呼び、`cwd`へ`<役割名>.parent.md`が定める作業ディレクトリの絶対パスを渡す - `subagent_md_path`へ役割名(例: `add-wi`)を渡す。サーバーが自身のplugin rootの`share/<役割名>.subagent.md`へ解決する - `extra_params`へ`<役割名>.parent.md`が列挙する入力名と値を渡す - `mode`は指定しない。`model_type`は`<役割名>.parent.md`が値の決め方を定める場合だけ指定する(指定しなければサーバーが工程別設定を使う) - `引き継ぎ記録先`の扱いは`references/base-contract.md`「引き継ぎ記録先」が定める - 起動後は`session_id`を`atk agents wait`で観測する。Claude Codeでは最初の`start`の処理の中でagent-toolkitのmodが定期再確認を装着し、その結果が`start`の結果の後に届く `extra_params`の値には`references/sending.md`「委譲プロンプトの構成」の「値へ書かない内容」と「未検証の値」、`references/base-contract.md`の`forwarded-user-input`標識と絶対パスの規定を適用する。 必須入力の欠落と宣言外の入力名の拒否、`引き継ぎ記録先`の用意、応答言語の伝達、`<役割名>.subagent.md`の実在確認と`${CLAUDE_PLUGIN_ROOT}`の展開はサーバーが行う。拒否された場合は応答が示す項目と次の操作に従って起動し直す。 ## 継続と新規起動 元担当の回復、置換、再起動、代替起動または役割引継ぎには、`references/codex-runtime.md`「後続操作の共通先行条件」を先に適用する。識別子の再利用と新規起動の選択は`references/runtime-routing.md`「継続と新規起動」に従う。 - 同じ作業を継続し、計画、進捗ログ、保存済みのレビュー指摘管理表のいずれかが状態を持つ場合は、同じroute・`model_type`・識別子へ該当ファイルの絶対パス、対象IDと未記録の差分だけを送る。状態記録が無い場合は未完了事項と検収済み状態を委譲プロンプト内で完結させる(レビュー指摘管理表が必要なら委譲元がmanaged-tempへ作成し、絶対パスで渡す) - 委譲先が調査中か調査済みの要求へ追加調査が必要になった場合(ユーザーの指摘・質問、検収その他の後続工程から)は、その要求を担当した委譲先へ追加の情報と調査の論点を渡す。委譲元は同じ目的の調査を自ら行わない。稼働中なら追送、終端済みなら継続・回復・置換の条件に従って渡す - 独立したレビュー系統、異なる観点、先行履歴に依存しない評価は新しい識別子で起動する。これは前項の重複に当たらない - 同一応答で複数の継続を発行する場合は、各呼び出しの宛先識別子と本文の組み合わせが正しいことを送信前に確かめる - ユーザーの介入が生じた場合は、強制停止を前提にせず、`agent-toolkit:review-standards`の`references/reviewee.md`「指摘発生時の扱い」で採否を終えた差分だけを追加指示として委譲先へ伝える。停止するのは、介入で対象範囲や前提が無効になり続行が誤った成果物を生み、かつ介入を稼働中の作業の完了後まで遅らせられない場合に限る - 委譲を停止した場合は、再起動の前に停止時点の成果物を検収する。完成条件を満たせば委譲元が引き取り、満たさない場合だけ、完了済み工程、試行済みのアプローチと観測した失敗を渡して続きから再起動する ## 受領と検収 explore・shellの受領と検収は「explore・shellの起動」の最終項に従い、本節はそれ以外を対象とする。 完了報告は次の順で扱う。各工程の細則は`references/receiving.md`の同名の節が定める。 1. 委譲先の終端を観測してから成果本文を受領し、通常完了の報告様式を選ぶ(「受領手段と報告様式の選択」) 2. 受領本文が報告様式を満たすかを確かめ、不適合なら返却形式だけの再送を1回要求する(「返却形式の適合確認」) 3. 実行識別子、必須欄、対象、権限、完了条件との一致を確認し、自身の委譲元へ返す(「委譲元への返却」) 4. 対象ファイル、退避物、指摘の採否、`気付いた改善点:`の行を扱う(「受領後の扱い」) サブエージェント出力(レビュー指摘・調査結果)は、指定されたレビュー指摘管理表へ記録してから修正に着手する。指摘を追加するエージェントは`track`を付けて記録し、`指摘内容`へ実際値、期待値、違反する規範または契約の出典、対象への適用根拠を残す。レビューイーは行を一意に特定するキーで応答欄を更新する。 応答欄の本文は、記録する前に`agent-toolkit:review-standards`の`references/reviewee.md`「レビュー指摘管理表への応答」を読み、同節が定める行頭のラベルと内容で書く(ラベルが欠けると`atk review-table respond`は失敗する)。noの行の`根拠の所在:`にはメイン判断とユーザー判断のどちらかも書く。 ## 停滞の検知と巻き取り 観測の優先順は`references/waiting-and-monitoring.md`「待機区間の構成」、Codexで元担当が稼働中の間の保留は`references/codex-runtime.md`「後続操作の共通先行条件」に従う。 - Codex以外では、同一種別・同一用途の起動を反復しても収束しない場合に収束を促す - 委譲先の役割を巻き取る場合は、その役割の`<役割名>.subagent.md`が定める義務(判断の所有者、加工せず配送する対象、収束条件)をそのまま自身へ適用する ## 再委譲する場合に守る事項 上流から委譲を受けたエージェントがさらに委譲する場合は、本スキルが委譲元へ課す規定を自身へ適用する。委譲先一般の規定は`agent-toolkit/share/rules-subagent.md`が定める。 - 上流から受け取った取り決め(作業場所、書込主体、出力言語、プロセス所有権、不可逆操作の権限と許可範囲)を同じ意味で引き継がせ、子孫の完了本文を自身で受け取って自身の完了報告へ含める