mcpField
S
spawn-agent

spawn-agent

github.com/alannklエージェントワークフロー054 回インストール今日更新
リポジトリ

spawn-agent について

spawn-agent は、隔離されたコンテキストやヘッドレス実行が必要なタスクで、外部のコーディングエージェント CLI を起動するスキルです。4種類の対応ハーネスを扱い、起動から実行確認、成果物の検証までの手順を示します。

主な機能

  1. 014種類のエージェントハーネスに対応
  2. 02サブエージェント起動の要否を判断
  3. 03権限・制限・出力形式を設定
  4. 04実行プロトコルと成果物を検証

活用シーン

  1. 01別の Git worktree でサブタスクを実行
  2. 02スクリプト化された CI やビルドを実行
  3. 03適切な組み込みサブエージェントがないホストから委任

インストール

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

$npx skills add https://github.com/alannkl/skills --skill spawn-agent

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

同梱ファイル

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

references/
antigravity.md
claude.md
codex.md
cursor.md
scripts/
verify-run.py

詳細

エージェントを起動する

対応しているハーネス

ハーネスCLIリファレンス
Google Antigravity CLIagyreferences/antigravity.md
Claude Codeclaudereferences/claude.md
Cursor Agentagentreferences/cursor.md
Codex CLIcodexreferences/codex.md

Gemini CLI など、ここにリファレンスがないハーネスをユーザーが指定した場合は、未対応であることを伝え、対応しているハーネスを提案してください。

ワークフロー

  1. 起動する必要があるかどうかを判断します。

    • サブタスクに独立したコンテキストウィンドウ、異なる作業ディレクトリ・リポジトリ・Git worktree、スクリプトで実行できる CI やビルド手順、または適切な組み込みサブエージェントがないエージェントホストが必要な場合は、起動してください。
    • ホストに組み込みのサブエージェントまたはタスクツールがあり、それで対応できる場合は、そちらを優先してください。ホストのコンテキストを維持でき、通常はコストも抑えられます。
    • 対話型の承認やターミナル UI が必要なものはホスト上で実行してください。ヘッドレス実行では人に確認を求められません。
  2. ハーネスを選択します。ユーザーが指定したもの、対応していればホスト自身の CLI、次にインストール済みの別の対応 CLI を使います。command -v <cli> で確認してください。見つからない場合は停止し、リファレンスに記載されたインストール手順を案内してください。ユーザーに断りなく CLI をインストールしたり、別のハーネスに黙って切り替えたりしないでください。

  3. 選択したハーネスのリファレンスを読み、フラグ、権限、出力の解析、セッションの再開、認証に関する記述に従ってください。ヘッドレスインターフェースはツールやリリースによって異なるため、記憶に頼ってフラグを作り出さないでください。リファレンスに記載のない動作を確認するとき、またはフラグや出力に問題があったときに限り、--help とリンク先の公式ドキュメントを参照してください。通常の事前確認としては使わないでください。リファレンスが古くなっている場合は更新してください。

  4. サブタスクを単独で実行できるようにしてください。起動した実行環境には会話履歴がないものとして扱います。目標、関連するパス、制約、期待する出力を具体的にプロンプトへ記載してください。大きな入力はインラインテキストではなく、ファイルパスで渡してください。

  5. 動作に影響する設定を明示してください。リファレンスに従って、モデル、権限モード、ディレクトリアクセスを指定します。ヘッドレス実行ではローカル設定、拡張機能、プロジェクトのメモリが引き継がれるため、同じコマンドでもマシンによって動作が異なる場合があります。呼び出し元またはユーザーが lean モードを求めている場合は、リファレンスに記載された lean 起動フラグを使い、サブタスクで指定されている場合に限り、MCP サーバー、スキル、追加ツールを読み込んでください。

  6. サブタスクに必要なすべてのツールを、リファレンスに記載された権限フラグで事前に許可してください。ヘッドレス実行では承認を求められません。未承認のツール呼び出しが拒否またはスキップされても、実行自体は成功と報告されることがあるため、権限の付与不足が成功に見える場合があります。完全な無人実行を許可する設定では、シェルとネットワークへの無制限のアクセスも許可されます。この設定を使うのは、サンドボックス、コンテナ、または破棄可能な worktree 内に限り、その旨を明記してください。

  7. 実行前に上限を設定してください。利用可能な場合は CLI のターン数または反復回数の上限を指定し、timeout 600 <cli> ... のようにホスト側のタイムアウトで呼び出しを囲んでください。編集が呼び出し元のチェックアウトに影響してはならない場合は、破棄可能な worktree またはコンテナで実行し、その環境で結果を確認してください。

  8. 呼び出し元が解析できる出力形式を選んでください。プログラムから利用する場合は JSON、長時間の実行状況を示す場合はストリーミングを使います。

  9. stdout と stderr をファイルに記録し、終了コードも保存して実行してください。例:timeout 600 <cli> ... > run.out 2> run.err; echo $?。認証に失敗した場合は停止し、リファレンスに記載されたログインコマンドを案内してください。ユーザーに代わって認証したり、コマンド、設定ファイル、コミット済みスクリプトに認証情報を直接記述したりしないでください。

  10. 同梱の検証ツール(Python 3、依存関係なし)を使って出力プロトコルを確認します。このスキルのインストール先ディレクトリを示す <skill-dir> を指定し、絶対パスで実行します:python3 <skill-dir>/scripts/verify-run.py --harness <claude|codex|antigravity|cursor> --stdout run.out --stderr run.err --exit-code <code>。このツールは json または stream-json 出力を検出し、リファレンスの合格条件を適用して、最終応答のテキストを <stdout>.result.txt または --result <file> で指定したファイルに書き込み、status、reason、session_id、result_file、structured_output、permission_notices、stderr_tail、usage を含む JSON オブジェクトを 1 つ出力します。テキスト出力を指定した実行では、--format text を渡します。この場合、終了コードと空でない出力のみを確認し、セッション ID は返されません。

    • 終了コード 0 は、プロトコルが完了したことを示します。実行結果を信頼する前に、permission_notices を確認してください。
    • 終了コード 1 は、実行が失敗したことを示します。原因は reason に記載されます。原因には、ゼロ以外の終了コードまたはタイムアウト、不正または不完全な出力、成功以外のステータス、セッションまたは結果の欠落、ツール呼び出しの拒否、Cursor サンドボックスの起動エラーがあります。ツール呼び出しが拒否された場合、手順 6 での許可が不足しています。修正して再実行し、バイパスモードに切り替えないでください。
    • 終了コード 2 は、入力を使用できないことを示します。引数エラーの場合、JSON ではなく使用方法が出力されます。
  11. タスク自体を検証します。何も作業せずにプロトコルを完了することもあります。成功を報告する前に、git status、git diff、関連するテスト、またはファイルの直接確認によって成果物を確かめてください。

  12. 生成された会話を続ける場合は、リファレンスに記載されたセッション再開の仕組みのみを使用し、検証ツールが出力した session_id を指定してください。

注意点

  • ユーザーが入れ子の委任を依頼していない限り、生成された実行にさらにエージェントを起動しないよう指示してください。入れ子にすると、呼び出し元には見えないままコストが増加します。
  • 長時間稼働するサーバーはホストから起動してください。生成された実行が開始したバックグラウンド処理は、その実行の終了時に停止します。

コメント