harness-subagent について
harness-subagent は、親エージェントがユーザー指定の CLI に範囲を限定したタスクを委任し、報告を評価するためのスキルです。起動、利用制限への対応、健全性確認、出力取得の手順を定めています。
主な機能
- 01指定された CLI とモデルへの委任
- 02ブリーフ作成とバックグラウンド起動
- 03利用制限への対応と再開
- 04CLI の状態とログイン確認
- 05レポートとセッション情報の取得
活用シーン
- 01範囲を限定したタスクを指定 CLI に委任
- 02CLI の導入状態とログイン状況を確認
- 03既知の利用制限後に実行を再開
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ realspqrk/ harness-subagent --skill harness-subagentインストール後、Claude Code で/harness-subagentを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitattributes.gitignoreLICENSEREADME.mdevals/evals.jsonreferences/models.mdscripts/health.shregistry.jsonharness_registry.pysession_capture.pyspawn.shtests/hello_world.shlib.shspawn_test.sh詳細
Harness サブエージェント
あなたは親です。子 CLI は範囲が限定されたタスクを 1 つ実行し、レポートを返します。レポートを評価してください。子を絶対視してはいけません。
どの CLI、どのモデル、どの作業量を使うかはホストが決めます。このスキルでは、ジョブの優先順位付けやペルソナの選択は行いません。
委任
- CLI とモデルはユーザーから指定されたものを使います。口頭で指定された名前については、references/models.md を参照してください。どちらも指定されていない場合は、1 回だけ質問します。今のターンで指定されていない CLI ファミリーを、自分で起動してはいけません。Cursor、cursor-agent、Grok Bot は
cursorファミリーです。Grok Build はgrokです。Claude Code はclaudeです。Codex はcodexです。Antigravity はagyです。 - タスクの規模が大きく、ベンダーのデフォルト設定が推測に頼ることになる場合は、references/models.md の表から
--effortを選びます。CLI のデフォルト設定を使う場合は--effortを省略します。料金はトークン単位です。作業量を増やすと、同じ単価でより多くのトークンを消費します。 - 新しい一時実行ディレクトリに
brief.mdを作成します。以下の形式を使います。 scripts/spawn.shをバックグラウンドで実行します。Windows では、スクリプトのパスを引数として Git Bash を呼び出します。PowerShell の二重引用符で囲まれた文字列にブリーフを入れてはいけません。brief.mdは UTF-8 で書き込みます。- プロセスが終了するまで待ちます。
report.mdまたはlast.mdに加え、capture-status.txtと終了コードを確認します。 - 同意する点、同意しない点、これから行うことを伝えます。レポート全体を回答として貼り付けてはいけません。
& "$env:ProgramFiles\Git\bin\bash.exe" -- "<skill-dir>\scripts\spawn.sh" --backend codex --model Astra --effort high --project "D:/Code/app" --run "C:/Users/<you>/AppData/Local/Temp/harness-subagent/<id>"
モデル名が 1 つの CLI に対応する場合、--backend は省略できます。--resume-id は同じ子の実行を再開します。--continue や --last は使用しないでください。
子は委任してはいけません。spawn.sh は HARNESS_SUBAGENT_RUN を設定し、2 回目の起動を拒否します。
ブリーフ
# YOU ARE THE WORKER. DO NOT SPAWN.
Do not load harness-subagent. Do not run scripts/spawn.sh.
## Task
One sentence.
## Where to look
Paths, commands, and exclusions.
## Already tried
## Done when
パスを指定します。リポジトリ全体を貼り付けてはいけません。spawn.sh は report.md のパスを追記します。子は終了前にそのファイルを書き込みます。1 行目は VERDICT の後に結果を記載します。
Grok が一時実行ディレクトリを読み取れるとは限りません。spawn.sh は起動時にプロンプトをプロジェクト内にコピーし、終了時にそのコピーを削除します。
子が制限に達した場合
spawn.sh は CLI のテキストを読み取り、リセット時刻を確認します。
- リセット時刻が判明しており、24 時間以内の場合。スクリプトは待機してから、同じセッションを 1 回だけ再開します。Claude Code 自体の自動続行機能は、24 時間を超える待機を拒否します(2026-09-22 にドキュメントを確認)。このスキルでは、すべての CLI にこの期限を適用します。
- リセット時刻がない場合、リセットまでさらに時間がかかる場合、メッセージがクレジットまたは利用額の上限によるものの場合、あるいは 2 回目の制限に達した場合。スクリプトは停止します。スクリプトとともに停止してください。根拠と、分かっている場合は時刻をユーザーに伝えます。指示を待ちます。CLI やモデルを切り替えてはいけません。リセット時刻をでっち上げてはいけません。
ヘルスチェック
scripts/health.sh は CLI ごとに 1 行を出力します。列は名前、バージョン、ログイン状態、更新です。--update を指定すると、各ベンダーの更新コマンドを実行します。ログイン確認があるインストール済み CLI のすべてがログイン済みの場合、終了コード 0 を返します。CLI が見つからない場合、その行は失敗になります。broken は、バイナリが PATH 上にあるものの、バージョン確認に失敗したことを示します。ログイン確認が失敗した場合は 1 回再試行します。これは、grok がトークンの有効期限切れ後、サイレントに更新している最初の呼び出しでログアウト状態を報告するためです。
| CLI | ログイン確認 | 更新 |
|---|---|---|
| claude | claude auth status | claude update |
| codex | codex login status | codex update |
| grok | grok models でログイン済みと表示される必要があります | grok update |
| agy | ログイン確認コマンドなし | agy update |
| cursor-agent | cursor-agent status | cursor-agent update |
キャプチャ
spawn.sh は、last.md、capture-status.txt(ok、ok-report、usage-limit、または no-verdict)、および session.json を書き込みます。VERDICT を含むレポートが最終標準出力より優先されます。Claude の最後のメッセージは、最後のターンにすぎないためです。ok はテキストがキャプチャされたことを意味します。タスクが成功したことを意味するわけではありません。終了コードが 0 でも、no-verdict なら成功ではありません。Windows では、実行ディレクトリは子プロセスに C:/...(cygpath -m)として渡されます。Git Bash の /tmp/... ではありません。ネイティブ CLI では /tmp/... が <drive>:\tmp として読み取られるためです。
再開するには、その実行のセッション ID が必要です。session-id と session.json を新しい実行ディレクトリにコピーし、短い継続用の brief.md を書いて、--resume-id を渡します。自動待機パスでは、これが一度自動的に行われます。