mcpField
C
copilot-delegate

copilot-delegate

github.com/amelnagdyエージェントワークフロー2.5k3.1k 回インストール2 週間前に更新
リポジトリ

copilot-delegate について

copilot-delegateは、範囲を限定したコーディングタスクをGitHub Copilot CLIに委任し、成果を確認してコミットするためのスキルです。構造化イベントを記録し、読み取り専用計画と明示的なツール自律制御を備えます。

主な機能

  1. 01独立したタスク概要による委任
  2. 02JSONLイベントの取得と結果ファイル
  3. 03モデルと推論レベルの選択
  4. 04読み取り専用の計画モード
  5. 05ツールの完全な自律実行を明示するオプション
  6. 06確認・検証後にコミットする手順

活用シーン

  1. 01Gitリポジトリ内の範囲限定変更の委任
  2. 02実行時のモデルや推論レベルの選択
  3. 03編集ツールを使わない実装前の計画
  4. 04生成された変更の確認とプロジェクトチェックの再実行

MCP 対応

Codexのバックグラウンドオーケストレーションでは、別途codex-backgroundを設定し、そのdelegate_run MCPツールを呼び出すよう案内します。それ以外ではシェルのリレーを使います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/amelnagdy/delegate-skills --skill copilot-delegate

インストール後、Claude Code で/copilot-delegateを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
dispatch-and-poll.md
multi-task-queues.md
review-and-land.md
writing-the-brief.md
scripts/
relay.mjs

詳細

Copilot Delegate

あなたはオーケストレーターです。範囲を限定したコーディングタスクを別の実装担当である GitHub Copilot CLI に委任し、その成果をレビューして、自分で取り込みます。依頼内容を作成し、判断の責任を担うのはあなたです。実装担当はクリーンな作業ツリーで独自のセッションを使って変更を行い、あなたが検証してコミットします。

この一連の作業に必要なのはシェルコマンドとファイルアクセスだけなので、同等のオーケストレーターであれば実行できます。

使用しない場合

  • タスクがインラインで済むほど小さい場合。委任にかかる手間に見合いません。
  • copilot CLI がインストールされていない、または認証されていない場合。
  • 強固なサンドボックスが必要な場合。Copilot にはサンドボックス制御がありますが、アップストリームで実験段階の機能(MXC ベースで、/sandbox コマンドと設定から制御され、デフォルトでは無効)であり、このリレーでは設定しません。--read-only が無効にするのは編集ツール(--mode plan)だけです。シェルコマンドは引き続き実行されます。プロジェクトファイルを一切変更してはならない場合は、クリーンまたは分離された作業ツリーを対象にディスパッチしてください。

前提条件(一度だけ確認)

  1. copilot をインストールします(npm install -g @github/copilot。CLI には Node 22 以降が必要ですが、リレー自体は Node 18 以降で動作します。リレーは copilot version を確認します)。
  2. 認証します。copilot login(対話型のウェブ/デバイスフロー)を実行するか、環境に COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN を設定します。
  3. copilot version が成功することを確認します。
  4. 対象の git リポジトリ内で作業するか、--cd でそのリポジトリを指定します。

モデルを選択する(任意)

Copilot はデフォルトのモデル(auto)を選択します。別のモデルを選ぶには、--model <name> を渡します。 リレーが受け付ける文字は、英数字と . _ : / - のみです(この値は Windows ではシェルに渡されます)。

労力レベルを選択する(任意)

Copilot は推論の労力レベルを調整できます。--effort <level> に指定できる値は low、medium、high、xhigh、max です。リレーはディスパッチ前に、これ以外の値を拒否します。

一連の作業

タスクごとに、次の 5 つの手順を実行します。手順 1、4、5 には判断が必要で、2 と 3 は機械的な作業です。

1. 依頼内容を作成する

Copilot に見えるのは、送信したテキストだけです。あなたとの会話を読むことはできないため、依頼内容だけで完結するように、目標、現在の状態、変更する内容、変更しない内容、プロジェクトの実際のゲート、報告形式の要件を含めてください。依頼はタスクごとに 1 つに限定します。依頼内容をファイルに書き込み、リレーの --brief に渡してください。references/writing-the-brief.md を参照してください。

2. ディスパッチする

Codex によるバックグラウンド作業のオーケストレーションでは、まず別個のサポートユーティリティである codex-background をインストールして設定します。MCP ツールまたはレジストリが見つからない場合は、停止してセットアップが必要であることを報告してください。モデル駆動のポーリングに黙って切り替えてはいけません。その後、以下のシェル例の代わりに、登録済みの delegate_run MCP ツールを一度呼び出します。 共通引数の構造化、プロバイダーのフラグの維持、runId による再接続については、そのスキルに従ってください。完了するまでリクエストを保留し、その後、このスキルのレビューと取り込みの手順を続けます。その他のオーケストレーターは、以下のシェルワークフローを使用します。

同梱のリレーを使用します。リレーは --output-format json --no-color --stream off を指定して copilot -p を実行し、JSONL イベントストリームを取得して、result.json を書き込みます。

node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --cd /path/to/repo
# choose a model:                    add --model <name>
# set reasoning effort:              add --effort <level>
# read-only planning pass:           add --read-only  (forces --mode plan)
# full tool autonomy:                add --allow-all-tools
# hard time limit (watchdog):        add --timeout 2h   (the 30m default suits brief runs)
# resume a session:                  add --session <id>  or  --resume-last
# see all options:                   node .../relay.mjs --help

子プロセスの cwd によって、ワークスペースが固定されます。リレーはデフォルトでシステムの一時ディレクトリに成果物を書き込み、コミットは行いません。references/dispatch-and-poll.md を参照してください。

3. 完了を待つ

codex-background を使用する Codex は、元の MCP リクエストを保留状態に保ちます。モデルによる sleep、ステータス確認、ログのポーリングは行いません。中断されたリクエストに再接続する場合に限り、delegate_wait を使用してください。

リレーは Copilot が完了するまで待機します。オーケストレーターのバックグラウンドコマンド機能を使用して実行するか、シェルでバックグラウンド実行して result.json をポーリングしてください。実行前の使用方法エラーでは終了コード 2 で終了し、結果は書き込まれません。copilot が見つからない場合は終了コード 127 で終了し、status: "copilot_unavailable" が書き込まれます。

完了とは、プロセスが終了し、result.json が存在することです。進捗表示ではなく、プロセスの状態と作業ツリーを信頼してください。Copilot の最後のアシスタントメッセージは、result.json の finalMessage フィールドにあります。

4. レビュー — 自己申告を信頼しない
  • プロジェクトのゲートを自分で再実行してください。
  • ブリーフと照らして差分を読み、まず touchedFiles を確認してください。
  • インストールされている場合は、関連するガードスキルを実行してください。

references/review-and-land.md を参照してください。

5. 取り込む

作業に問題がなければ、コミットしてください。リレーはコミットしません。差分と result.json が記録となるため、まず git status と git diff を実行して変更内容を正確に確認してください。グループで PR のフローがある場合は、コミットしてブランチをプッシュし、人間によるレビューを受けてください。差分に誤りがあるか不完全な場合は、新しい実行で修正したブリーフを再度ディスパッチし、もう一度レビューしてください。

自律性と権限

--allow-all-tools を指定しない場合、Copilot はヘッドレスモードでツール呼び出しを自動的に拒否します。プロセスは終了コード 0 で終了しますが、リレーは拒否イベントを検出し、CLI 独自のエラーメッセージと --allow-all-tools を指定するよう促すヒントを添えて status: "failed" を報告します。これが誠実なデフォルト動作です。オーケストレーターには、何も行われなかったことが隠されず、失敗として伝わります。

--allow-all-tools は、すべてのツールを自律的に使用する権限を明示的に付与します。--read-only は --mode plan を選択し、編集ツールを無効にするため、直接編集によってプロジェクトのファイルが変更されることはありません。これは --allow-all-tools がなくても動作します。プランモードでもシェルコマンドは実行されるため、編集は防止できますが、それ以外のすべてを防止できるわけではありません。この 2 つのフラグは同時に指定できません。

Copilot にはサンドボックス制御もありますが、これは上流で実験段階にある機能です(MXC ベースで、/sandbox コマンドと設定から制御し、デフォルトでは無効になっています)。このリレーはサンドボックスを設定しません。

認可モデル

委任を選択するのは人間です。ブリーフを受け取った後、Copilot は使用を承認されたツールとして動作します。境界となる原則は、自己申告による結論を受け入れず、すべてをディスク上で確認することです。認証情報、本番データ、取り消せない操作に関わる場合は、ブリーフに含めるのではなく、いったん止めて人間に確認してください。

参考資料

コメント