mcpField
H
handover-to-herdr

handover-to-herdr

github.com/yahyabedirhanエージェントワークフロー261 回インストール1 週間前に更新
リポジトリ

handover-to-herdr について

herdr のタブで新しいエージェントセッションを開き、開始プロンプトを送るスキルです。起動前にワークツリーとセッションの状態を確認し、プロンプトの受信も確かめます。

主な機能

  1. 01herdr のタブでエージェントを起動
  2. 02ワークスペースとワークツリーを照合
  3. 03ライブのペインとプロセスを確認
  4. 04開始プロンプトを送信して確認

活用シーン

  1. 01引き継ぎ内容に基づく別エージェントの起動
  2. 02指定ワークツリーでのエージェント起動

インストール

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

$npx skills add https://github.com/yahyabedirhan/skills --skill handover-to-herdr

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

同梱ファイルagents/openai.yamlsettle-commands.md

詳細

Herdr への引き継ぎ

herdr タブで新しいエージェントセッションを開き、開始時のプロンプトを送信します。呼び出し元のスキル /handover または /init-effort では、書面の引き継ぎドキュメントとプロンプトが必要です。新しいセッションで何をするかは、呼び出し元のスキルが決定します。引き継ぐ入力は4つです。作業ツリーのパス、トピック(取り組みの名前または作業内容)、新しいセッションの役割(orchestrator、thinking、またはほかの1語の役割など)、開始時のプロンプトです。

このスキルは、herdr ペイン内からでも、デスクトップアプリのセッションなど、ペインの外からでも実行できます。対応している場合は、--no-focus を使ってユーザーのフォーカスを変えないようにします。変更操作には明示的なライブ ID を使い、呼び出し元を考慮した調査で ID を特定します。

パラメーター

  • <worktree-tool>:作業ツリーを作成・解放するツール(例:treehouse、または通常の Git worktree)。
  • <agent>:新しいエージェントセッションを開始するコマンド(例:claude または codex)とそのフラグ。

手順

/settle-session がこのスキルを呼び出した場合は、以下の手順ではなく settle-commands.md を読んでください。

  1. herdr status がサーバーに接続できることを確認し、インストール済みコマンドのヘルプを調べます。test -n "$HERDR_PANE_ID" で呼び出し元のコンテキストが存在するか確認します。存在する場合は、herdr pane current --current で解決し、返されたペイン、ターミナル、タブ、ワークスペースの ID を読み取ります。継承された ID は、ペインの移動後も残っている場合がありますが、ライブ ID は変わることがあります。ペインの外から実行する場合は、呼び出し元の解決を省略します。呼び出し元のコンテキストなしでこのコマンドを実行すると、別のクライアントのフォーカスが解決される可能性があります。

    • サーバーが応答しない場合: その旨を伝えて呼び出し元のスキルに戻します。呼び出し元のスキルは、その後、セッションホストがない場合と同様に処理します。
  2. 作業ツリーがチェックアウトされているワークスペースにタブを開くか、リポジトリ本来のワークスペースから作業ツリーを新しいワークスペースとして開きます。変更の前後に、それぞれの対象を確認します。

    • ワークスペース一覧: herdr workspace list には、各ワークスペースの worktree と、その checkout_path、repo_root、is_linked_worktree が表示されます。Git を使って、作業ツリーの正規パスとリポジトリを確認します。
    • 変更前の確認: それぞれの変更操作の直前に、呼び出し元が存在する場合は呼び出し元を最新の状態に更新し、対象のワークスペース、タブ、ペインの階層を調べて、意図したリポジトリとパスに一致するか確認します。
    • 既存のペイン: herdr pane get <pane_id> と herdr pane process-info --pane <pane_id> を調べ、実際にフォアグラウンドにある場所とプロセスを確認します。ワークスペースのチェックアウトメタデータやペインの cwd だけでは、プロセスが実際にどこで動いているかは判断できません。
    • 不一致または不明な対象: 推測せず、その状態を維持して報告します。
    • 作業ツリーの作成: <worktree-tool> を使って作業ツリーを作成します。herdr worktree create は使わないでください。
    • 作成後の確認: 作成結果から新しい ID を読み取り、エージェントを起動する前に、新しいペインの階層、実際の場所、シェルの占有状態を再確認します。
    • 中断または結果が不確かな場合: 再試行によってトポロジーが重複して作成されないよう、再試行前にライブ状態を調べます。
    • ペインの移動: 許可されたペインの移動を行った後は、返された最新の ID を使い、もう一度調べます。

    次にタブを開きます。

    • ワークスペースの checkout_path が作業ツリーの場合: herdr tab create --workspace <workspace_id> --cwd <worktree> --no-focus を使ってタブを追加します。タブとそのルートペインが返されます。

    • それ以外の場合: リポジトリ本来のワークスペース、つまり repo_root がリポジトリと一致し、is_linked_worktree が false のワークスペースから、作業ツリーを開きます。

      herdr worktree open --workspace <repo workspace_id> --path <worktree> --label <topic> --no-focus
      

      ワークスペース、最初のタブ、およびルートペインを返します。--workspace は必ず指定してください。指定しないと、ペインの外から呼び出した場合に linked_worktree_source で失敗することがあります。

    • リポジトリにワークスペースがない場合: まず herdr workspace create --cwd <main checkout> --label <repo> --no-focus で作成します。メインチェックアウト上の通常のワークスペースをソースとして使えます。

  3. herdr tab rename <tab_id> "<harness> · <role> · <topic>" でタブに <harness> · <role> · <topic> というラベルを付け、保守担当者がそのタブで何を実行しているか確認できるようにします。ハーネス名は短縮形で記述します。Claude Code は CC、または Codex、OpenCode、Cursor、ハーネス固有の名前を使います。

  4. タブのルートペインで <agent> を <topic>-<role> という小文字のエージェント名で起動します。

    herdr agent start <name> --kind <kind> --pane <pane_id> -- <agent flags>
    
    • 起動画面が妨げになっている場合: agent_not_ready が報告されます。herdr agent read <name> --source visible で画面を読み取り、保守担当者に見せて判断を仰ぎます。新しいワークツリーのパスでは通常、ハーネスの「このフォルダーを信頼しますか?」というプロンプトが表示されます。これはセキュリティ上の判断なので、タブ内で保守担当者に承認してもらいます。その後、herdr agent wait <name> --until idle を実行します。
  5. herdr agent get <name> で新しいエージェントを解決し、入力を送信する前に、作成したターミナルと検証済みのライブ階層に引き続き存在することを確認します。呼び出し元のスキルが記述したとおりに開始プロンプトを送信し、新しいエージェントが作業中であることを確認します。herdr agent prompt は貼り付けとして送信するため、1 行で送信してください。Codex の $skill 参照がシェルで展開されないように、シングルクォートで囲み、その中の各 ' は '\'' と記述して、アポストロフィで文字列が終了しないようにします。

    herdr agent prompt <name> '<starting prompt>'
    herdr agent wait <name> --until working --timeout 60000
    

    プロンプトから --wait を省略してください。これを付けるとエージェントが再びアイドル状態になるまで待機するため、長時間の実行ではその前にタイムアウトします。

    • 待機がタイムアウトした場合: 何かを再送信する前にエージェントを確認します。herdr agent get <name> で状態を確認でき、herdr agent read <name> --source visible で画面を確認できます。エージェントの作業中は失敗するため、--lines は省略してください。プロンプトが届いている可能性があるので、画面を確認して届いていない場合にのみ再送信します。
  6. このセッション自身の作業が完了したら、settle-commands.md を読み、settle-commands.md > 「Settled marker」に記載されたとおりに、ライブタブを settled としてマークします。呼び出し元のセッション、そのセッションが使用中のワークツリー、および Herdr のトポロジーはすべて開いたままにします。

  7. 呼び出し元のスキルに、新しいエージェントが実行されているワークスペースとタブを伝え、保守担当者に知らせられるようにします。

参照

  • settle-commands.md:呼び出し元と占有者のライブ状態の確認、セッションの settled マーク付け、およびセッションとトポロジーの維持。

コメント