mcpField
O
opencode-delegate

opencode-delegate

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

opencode-delegate について

opencode-delegateは、範囲を定めたコーディング作業をOpenCode CLIに委任し、その成果を確認してコミットするスキルです。シェルコマンドの実行とファイルの読み取りができるエージェント向けで、モデル選択も委任時に明示します。

主な機能

  1. 01OpenCode CLIへのタスク委任
  2. 02モデルまたはfleet laneの選択
  3. 03自己完結したタスク概要の作成
  4. 04実行情報のresult.jsonへの記録
  5. 05変更の確認とプロジェクトチェックの再実行
  6. 06コミットをオーケストレーターが担当

活用シーン

  1. 01範囲を限定したリポジトリ変更の委任
  2. 02タスクに応じたモデル選択
  3. 03読み取り専用のレビューや診断
  4. 04差分の概要で作業を再開

インストール

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

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

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

同梱ファイル

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

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

詳細

OpenCode Delegate

あなたはオーケストレーターです。このスキルを使うと、範囲を限定したコーディングタスクを別の実装担当者である OpenCode CLI に委任し、その成果をレビューして、自分で取り込みます。ブリーフを作成し、判断の責任を負うのはあなたです。OpenCode は独自のセッションでコードを書き、あなたが検証してコミットします。

この仕組みは特定のオーケストレーターに限定されません。このループに必要なのは、シェルコマンドを実行してファイルを読み取る機能だけです。そのため、Claude Code、兄弟セッションを操作する OpenCode、または同等のエージェントなど、この2つの機能を備えたエージェントなら実行できます。(Claude Code 用に設計され、実際に Claude Code で運用されています。他のオーケストレーターは、設計上の対象ではありますが、まだ実証されていないものとして扱ってください。)

使用しない場合

  • タスクが小さく、そのまま対応できる場合 — 委任のオーバーヘッドに見合いません。
  • opencode CLI がインストールされていない、または認証されていない場合(opencode auth login を実行してください)。
  • 自分でコードを書きたい場合、またはレビューだけが必要な場合(--read-only を指定して plan エージェントを使用してください)。

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

  1. opencode --version が成功すること。成功しない場合は、インストールして(npm i -g opencode-ai、または opencode.ai のネイティブインストーラーを使用)、opencode auth login を実行してください。
  2. PATH 上のどの opencode が使われるかを確認してください。 command -v opencode で有効なバイナリを確認でき、opencode --version でそのバージョンを確認できます。リレーは実行したバージョンを result.json に記録するため、古いバイナリを使った場合は後から確認できます。
  3. モデルプロバイダーが認証済みであること — opencode auth list に少なくとも1つの認証情報が表示される必要があります。
  4. 対象の Git リポジトリ内にいること(または --cd でそのリポジトリを指定すること)。

実装担当モデルを選ぶ

OpenCode には安全なデフォルトがありません — 引数なしの opencode run はエラーになるため、新しい実行では --model でモデルを指定するか、モデルを設定するフリート --lane を指定する必要があります(再開した実行では、そのセッションのモデルが引き継がれます)。モデル名の指定は、codex-delegate のような単一モデルのバックエンドにはなかった判断事項であり、その責任を負うのは2者です。

  • 使用を許可するモデルは、人間が決めます。 opencode models には何百もの候補が表示され、その大半はトークン単位で課金されます(OpenRouter など)。定額制サブスクリプションの対象モデルを把握しているのは人間だけであり、CLI ではその違いを判別できません。そのため、使用可能なモデルの範囲は人間が決めます。理想的には、リポジトリの AGENTS.md または CLAUDE.md に一度記載しておきます(例:「機械的な作業は opencode-go/… に、複雑なロジックは … に委任する」)。
  • あなた、つまりオーケストレーターは、その範囲からタスクごとにモデルを選びます。 ブリーフに合わせてモデルを選んでください。機械的な一括処理(名前変更、移行、削除)には低コストで高速なモデルを、微妙なバグや金銭・セキュリティに関わる処理には高性能なモデルを使います。
  • 使用可能なモデルの範囲が明記されていない場合は、推測せずに確認してください。 カタログから推測すると、従量課金モデルを選んで予想外の請求が発生するおそれがあります。制約を人間に伝え、選択してもらってください。

詳しくは、references/writing-the-brief.md を参照してください。

手順

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

1. ブリーフを作成する

OpenCode が参照できるのは、あなたが送るテキストと作業ツリーから読み取れる内容だけです。チャット履歴や共有コンテキストはありません。タスクに必要なすべての情報をブリーフに含めてください。目的、現状、変更内容、変更せずに残すもの、プロジェクトで実際に使われているゲートコマンド(リポジトリの AGENTS.md/CLAUDE.md/Makefile から確認し、推測しないでください)、および報告に関する取り決めを含めます。OpenCode はコミットしない(コミットするのはあなた)と伝えてください。1つのブリーフにつきタスクは1つにしてください。詳しいガイダンスとテンプレートは、references/writing-the-brief.md を参照してください。

2. ディスパッチ

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

バンドルされたヘルパーを使って、ブリーフを OpenCode に送信します。このヘルパーは opencode run をラップして実行を捕捉し、構造化された result.json を書き出します。つまり、あなたがすることは「コマンドを実行して、ファイルを読む」だけです。(以下の <skill-dir> は、このスキルがインストールされたディレクトリ、つまり SKILL.md を含むフォルダーです。Claude Code ではスキルの読み込み時に「このスキルのベースディレクトリ」として表示されます。他のオーケストレーターでは同じディレクトリを使用してください。保存場所がわからない場合は、find ~ -name relay.mjs -path '*opencode-delegate*' を実行し、 その親ディレクトリを指定してください。)

node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --model <provider/model> --cd /path/to/repo
# --model (or a --lane that sets model) is required on a fresh run
# fleet lane from delegate-setup:           add --lane <name>  (dials apply; flags still win)
# read-only (review/diagnosis, no edits):   add --read-only   (uses the plan agent)
# continue the previous OpenCode session:   add --resume-last  (delta brief only; keeps the model)
# hard time limit (watchdog):               add --timeout 2h  (default: off; implementation runs routinely need 1-2h)
# see all options:                          node .../relay.mjs --help

ヘルパーは、デフォルトで書き込み可能な build エージェントを使用し、成果物を一時ディレクトリに書き込むため、レビュー対象のリポジトリはクリーンな状態に保たれます。このヘルパーがコミットすることはありません。手順 5 を参照してください。仕組み、フラグ、result.json の形式については、references/dispatch-and-poll.md を参照してください。

3. 完了を待つ

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

ヘルパーは OpenCode の処理が終了するまでブロックするため、オーケストレーターが提供する方法で実行し、完了通知を受け取ったら再開してください。

  • Claude Code: run_in_background: true を指定して Bash 呼び出しを実行します。完了すると通知されます。
  • 通常のシェル/その他のエージェント: 短いタスクならフォアグラウンドで実行します。そうでない場合はバックグラウンドで実行し、結果ファイルをポーリングします。bash/zsh(Git Bash/WSL を含む)では … & を使用します。PowerShell の Start-Job や cmd の start /b など、使用中のシェルに応じた方法も利用できます。result.json が存在し、status が含まれていれば実行は完了です。(実行前の使用エラー――引数が不正、またはブリーフが空――の場合はコード 2 で終了し、結果ファイルは書き込まれません。そのため終了コードも確認してください。opencode バイナリが見つからない場合はコード 127 で終了しますが、status が opencode_unavailable の result.json は書き込まれます。)

進捗トラッカーを実際の状態より優先してはいけません。実行の完了は、result.json が書き込まれ、プロセスが終了した時点です。ステータス行ではなく、作業ツリーを確認してください。実装者の完全な報告は result.json の finalMessage フィールドにあります(報告マーカーで囲まれた形で stdout にも全文が出力されます)。

4. レビュー — 自己報告を鵜呑みにしない

OpenCode の result.json には、最終メッセージとゲートに関する申告が含まれています。再検証し、鵜呑みにしないでください。

  • プロジェクトのゲートを自分で再実行します(手順 1 のテスト/lint/ビルドのコマンド)。「ゲートを通過した」という報告を決して鵜呑みにしないでください。
  • ブリーフに照らして差分を読みます。 OpenCode は依頼された内容を実行し、範囲を逸脱した余計な変更も、必要な変更の抜けもないでしょうか。最初の確認には、結果内の touchedFiles を使ってください。
  • インストール済みであれば、差分に関連するガードスキルを実行します(guard-skills の clean-code-guard、test-guard など)。このスキルが作業を生み出し、それらのスキルが作業を評価します。
  • スキーマやマイグレーションの変更では往復検証を行います。削除では、参照が残っていないか grep で確認します。

完全なチェックリストについては、references/review-and-land.md を参照してください。

5. 取り込む

実装者が作業ツリーを編集し、オーケストレーターがコミットします。 作業を検証した当事者がコミットを行うべきです。ゲートを通過し、差分に問題がないことを確認してから、次の手順に進みます。

  • 検証済みの作業を、自分でわかりやすいメッセージを付けてコミットします。
  • 変更が必要な場合は、--resume-last を指定して差分ブリーフを送信し(タスク全体を言い直さないでください)、再度レビューします。

自律性モデル

OpenCode の自律性は、サンドボックスの列挙型ではなく、エージェントによって決まります。

  • build(リレーのデフォルト)— 書き込み可能で、作業ディレクトリ内のファイルをヘッドレスで編集します。「実装させる」に相当します。
  • plan(--read-only 経由)— 読み取り専用で、ツリーに変更を加えずにレビューと診断を行います。「確認させるが、編集はさせない」に相当します。

権限はデフォルトで自動承認されます。リレーは --auto を渡すため、ヘッドレス実行が誰も回答できないプロンプトで止まることはありません。これが無人委任の目的です。安全策となるのは、オーケストレーターによる差分レビューと実装担当者による総点検(ステップ 4)であり、アクションごとのプロンプトではありません。代わりに --no-auto を渡すと、エージェント独自の権限設定(アクションごとの allow/ask/deny)が適用されます。この場合は、ワークスペース内の権限が allow に設定されたエージェントと組み合わせてください。そうしないと、ヘッドレス実行が ask 待ちで停止することがあります。読み取り専用(plan)の実行では --auto を使いません。自動承認を有効にすると、plan エージェントの ask が必要な編集/bash 権限が通ってしまい、「読み取り専用」が損なわれるため、レビュー中にツリーを変更させられるおそれがあります。

認可モデル

委任するかどうかは、人間が選択します。一度(「このキューを実行して」「進めて」などと)選択したら、検証済みでゲートを通過した作業をコミットすることが合意事項になります。それが委任の目的だからです。この権限には 2 つの制限があります。隠さず伝える(OpenCode の設計上の判断、依頼されていないものの妥当な変更、処理を妨げない細かな指摘を、黙ってそのまま取り込むのではなく報告する)こと、そしてスコープの変更時には止まる(正しく完了するためにブリーフの範囲を超える必要がある場合は、自分で権限を拡大せず、確認する)ことです。詳細は references/review-and-land.md を参照してください。

リファレンス

  • references/writing-the-brief.md — OpenCode が指示なしで実行できるブリーフの書き方。構成、XML ブロック、レポートの取り決め、実際のゲートコマンドの埋め込み方法を説明します。
  • references/dispatch-and-poll.md — relay.mjs のフラグ、result.json の取り決め、オーケストレーターごとのバックグラウンド実行、実行が正常に動作しない場合の復旧方法を説明します。
  • references/review-and-land.md — レビューチェックリスト、コミットの境界、--resume-last を使った手直しサイクルを説明します。
  • references/multi-task-queues.md — 順次キューの実行方法。制約の引き継ぎ、進捗の追跡、実行終了時の整合性チェックを説明します。

コメント