Use by any agent before writing specs, editing code, or changing workflow files when the change could add compatibility behavior, aliases, silent fallbacks, or default-value fallbacks.
日本語の概要は準備中です。原文の説明を表示しています。
herdr 上の別 pane で claude などのワーカーレーンを起動し、複数タスクの割り振り・監視・承認代行・報告集約を親として一括で行う。
「issue 3をやってほしい」「この3件を並列でやらせて」「ワーカーに振って」「レーンで進めて」「レーンを見て」とユーザーが依頼したとき、またはユーザーが /orchestrator と打ったときに使う。HERDR_ENV=1 必須。
実行スコア 未検証
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
親は入力待ちの状態を保ち、依頼ごとに渡す先だけを決める。
SendMessage で送る親が自分で実行するのは次のものだけにする。
herdr コマンド
ListAgents
SendMessage
/tmp 配下にWriteツールで書く| レーン | 数 | 役割 | 閉じる条件 |
|---|---|---|---|
| 作業レーン | タスクごとに1つ | 自分のworktreeでタスクを進める | 「10. レーンを閉じる」のきっかけを得たとき |
| 裏取りレーン | 1つ | 作業レーンの報告を git と gh で確かめる | 作業レーンをすべて閉じたとき |
初回の指示は herdr agent start の起動引数としてclaudeへ渡す。それ以外のメッセージは、向きを問わずClaude Codeの SendMessage で送る。
宛先は相手のセッション名にする。
herdrは次の操作に使う。
herdr tab createherdr agent startherdr tab closeherdr agent readherdr agent getherdr agent waitherdr agent send-keysListAgents を呼び、出力先頭の This session is <名> [<ref>] の <名> を控える。
控えた名前は、レーンへ渡す報告規約の <親のセッション名> に一字違わず書き込む。セッションを再開したときは ListAgents で名前を確かめ直し、変わっていたら稼働中の全レーンへ新しい名前を SendMessage で伝える。
ユーザーの依頼をタスクに分け、タスクごとに次を決める。別のissueや別の依頼は、別のタスクにする。
task_id
gh issue view で読む依存や担当範囲が曖昧なら、ユーザーへ問う。
この承認をpushとPR作成の承認とする。
ユーザーがPRを作らないよう指示したタスクは、末尾の「PRを作らないタスク」に従う。
herdr tab create --workspace <ws> --cwd <対象リポジトリの絶対パス> --label <task_id> --no-focus
# 出力の root_pane.pane_id を控える(監視・承認で使う)
herdr agent start <task_id> --kind claude --pane <pane> -- "<指示ファイルの絶対パス> を読んで従ってください"
herdr agent start がtimeoutを返した場合
herdr agent get <pane> でclaudeが起動したかを確かめる最初の作業レーンの直後に立てる。立て方は作業レーンと同じで、--label は verify、指示文は「裏取りレーンへ渡す指示文の雛形」を使う。
レーンは最初の報告に、ListAgents で調べた自分のセッション名を書く。作業レーンは、ブランチ名とworktreeの絶対パスも書く。親はこれらをレーンごとに控え、以後の指示はその名前宛ての SendMessage で送る。
最初の報告にセッション名が無いレーンがあれば、親はユーザーへ報告し、そのレーンについてユーザーの判断を待つ。
レーンごとにバックグラウンドBashで herdr agent wait <pane> を張る。イベントを処理したらwaitを張り直し、直後に herdr agent get <pane> で現在状態を直接確認する。
<cross-session-message from="..."> に包まれた [orchestrator:report ...] 形式の報告が会話に届いたら、次の内容を裏取りレーンへ SendMessage で送り、[orchestrator:verify ...] の結果を受けてから次の行動を決める。
task_idwaitが返ったら herdr agent read <pane> --source recent-unwrapped --lines 120 で画面を見て判断する。
herdr agent send-keys <pane> enter などの承認キーを送るherdr agent send-keys <pane> esc でダイアログを閉じるSendMessage で送る1回の呼び出しで送る承認は1件だけにする。次のダイアログは herdr agent read で読んでから応答する。
次のものは、そのタスクのレーンのセッション名宛てに SendMessage で送る。
誤って選択肢を確定したら、ワーカーがその結果をコミットする前に訂正指示を送る。
SendMessage で送るmerged で報告する親は、次の両方がそろったら作業レーンを閉じる。
merged の報告を受けたSendMessage で指示する
cleaned の報告を受けるherdr tab close でタブを閉じるユーザーが自分でタブを閉じたら、親はそのレーンを控えた一覧から外す。
作業レーンをすべて閉じたら、裏取りレーンを herdr tab close で閉じる。
指示文は「やること」と「完了条件」のあとに、次の規約セクションを連結する。
作業レーンの規約:
- 最初に、<対象リポジトリの絶対パス>/.claude/worktrees/<task_id> に作業用ブランチのworktreeを作り、その中で作業する
- .claude/worktrees/ がignore対象でなければ、.git/info/exclude に追記してから作る
- 次に ListAgents で自分のセッション名を調べ、SendMessage ツールで to に "<親のセッション名>"、message に "[orchestrator:report <task_id>] started: session=<自分のセッション名> branch=<ブランチ名> worktree=<worktreeの絶対パス>" を渡して親へ報告する
- 以後、親からの指示は SendMessage で届く
- 完了・ブロック・承認が要る判断に出くわしたら、止まる直前に
SendMessageツールで to に "<親のセッション名>"、message に "[orchestrator:report <task_id>] <状態>: <要約>" を渡して親へ報告する
- 一時ファイルは mktemp 等で一意な名前を付けて作り、作業が終わっても残しておく(削除の確認ダイアログがレーンを止めるため)
- push と PR 作成は承認済みとして進める
- PRを作ったら "[orchestrator:report <task_id>] pr-created: <PRのURL>" で報告して止まる
- 親からマージの指示が届いたらマージし、"[orchestrator:report <task_id>] merged: <PRのURL>" で報告する
- 親から後片付けの指示が届いたら、次の順に進めてから "[orchestrator:report <task_id>] cleaned: <要約>" で報告する
- 指示はPRのマージを親が確かめてから届くので、確認を挟まずに消す
1. 対象リポジトリの絶対パスへ cd してworktreeを出る
2. 分岐元のブランチを git pull でリモートに追従させる
3. git worktree remove でworktreeを消す
4. git branch -D で作業用ブランチを消す
裏取りレーンの規約:
- 最初に ListAgents で自分のセッション名を調べ、SendMessage ツールで to に "<親のセッション名>"、message に "[orchestrator:verify] started: session=<自分のセッション名>" を渡して親へ報告する
- 親から SendMessage で、task_id、対象リポジトリとworktreeの絶対パス、ブランチ名、確かめる報告が届く
- git -C <パス> status、git -C <パス> log、git -C <パス> worktree list、git -C <パス> branch、gh pr list --head <ブランチ名>、gh pr view で、報告と事実を突き合わせる
- リポジトリの状態を読むコマンドだけを使う
- 結果は SendMessage ツールで to に "<親のセッション名>"、message に "[orchestrator:verify <task_id>] <一致 / 不一致>: <根拠>" を渡して親へ送る
herdr agent get <pane> で在否を確認するherdr pane process-info <pane> でshellへ戻ったことを確かめるenv -u CLAUDE_CODE_CHILD_SESSION -u CLAUDE_CODE_SESSION_ID -u CLAUDE_CODE_BRIDGE_SESSION_ID -u CLAUDE_CODE_MESSAGING_SOCKET -u CLAUDE_CODE_MESSAGING_TOKEN -u CLAUDE_CODE_ENTRYPOINT claude --continueherdr tab close でタブを閉じるまだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Use by any agent before writing specs, editing code, or changing workflow files when the change could add compatibility behavior, aliases, silent fallbacks, or default-value fallbacks.
日本語の概要は準備中です。原文の説明を表示しています。
Cascade merge changes through a chain of dependent branches. Use when updating stacked/chained PRs, propagating changes from a parent branch to all downstream branches, or when the user mentions "cascade merge", "propagate changes", "update dependent branches", or "merge to downstream branches".
日本語の概要は準備中です。原文の説明を表示しています。
Interview the user in rounds until no branch of the design tree stays open.
日本語の概要は準備中です。原文の説明を表示しています。
外部のスキルをこのリポジトリにコピーして自分のスキルにする。ユーザーがスキルのURLやリポジトリ名を渡して「入れたい」「導入したい」と言ったとき、「上流を参照せずコピーしたい」と言ったとき、またはユーザーが `/import-skill` と打ったときに使う。Vendors an external Claude skill into this repository.
Forces the laziest solution that actually works, simplest, shortest, most minimal. Channels a senior dev who has been paged at 3am for a factory class that wrapped one function: question whether the task needs to exist at all, reach for the standard library before custom code, native platform features before dependencies, one line before fifty. Supports intensity levels: lite, full, ultra. The default is full. Use on ANY coding task: writing, adding, refactoring, fixing, reviewing, or designing code, and choosing libraries or dependencies. Also use whenever the user says "ponytail", "be lazy", "lazy mode", "simplest solution", "minimal solution", "yagni", "do less", or "shortest path", or complains about over-engineering, bloat, boilerplate, or unnecessary dependencies. Do NOT use for non-coding requests such as general knowledge, prose, translation, summaries, recipes.
日本語の概要は準備中です。原文の説明を表示しています。
PRを作る、または既存PRのbodyを直す。ユーザーが「PRを作る」「PR出して」「PRのbodyを直して」と言ったとき、ユーザーが `/pr-create` と打ったとき、または `gh pr create` や `gh pr edit --body` がhookにブロックされたときに使う。Creates or edits a pull request with a three-line body.