Communityライティング&編集github.com

netheremp/baton-pass-netheremp

低トークンでエージェント間の作業を引き継ぐためのハンドオフスキル。ClaudeとCodexがCLIおよびアプリ上でお互いの作業を引き継げます。francisN21/baton-pass(MITライセンス)から派生。

baton-pass-netheremp とは?

Baton Passは、複数のAIエージェント(Claude Code、Codex CLI、Codexデスクトップアプリ)間で最小限のテキストで作業の継続性を保つための低トークンユーティリティです。エージェントはセッションをまたいでメモリを保持できないため、このスキルは明示的な状態の保存(save-state)、転送(baton-pass)、受信・再開(foresight)、ワークフローの改善(dragon-dance)、所有権の確認(party-check)、完全な監査(hindsight)といった「技」を提供します。各技は、現在のタスク、完了した作業、ファイル、環境前提条件、リスクなど、必要最小限の情報のみを出力するように設計されており、無駄な要約を避けます。また、状態ファイル(baton-pass.state.json)とドキュメントファイル(docs/current-state.mdなど)を用いて所有権と進行状況を一元管理し、git作業ツリーの状態や検証結果を正確に伝えることで、不整合や手戻りを防止します。これにより、開発チームは複数のエージェントを効率的に連携させ、大規模なタスクを中断・再開・引き継ぎながら進めることができます。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add netheremp/baton-pass-netheremp

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

バトンパス

目的:最小限のテキストで複数のエージェント間の継続性を維持する。

これは低トークンワークフローユーティリティであり、ドキュメント作成の儀式ではありません。

クイックセットアップ

すべてのエージェントにインストール(マシンごとに1回)

npx github:netheremp/baton-pass-netheremp install

このスキルを~/.claudeとすべての~/.codex*ホームにインストールします。その後:

  • Claude Code(CLI + IDE) — スキルが自動で読み込まれます。/new-game /save-state /baton-pass /foresight /dragon-dance /party-check /hindsight が使用可能
  • Codex CLI — スキルが自動で読み込まれます。$baton-pass で明示的に実行
  • Codexデスクトップアプリ — スキルが自動で読み込まれます。コンポーザーで /prompts:baton-pass を使用

代替方法:/plugin marketplace add netheremp/baton-pass-netheremp(Claude Code)または /plugins → インストール(Codex)。

マルチエージェント作業用にリポジトリを初期化

npx github:netheremp/baton-pass-netheremp init

--track-state を追加すると、ハンドオフ状態をgitにコミットします(共有履歴が必要なチーム向け)。デフォルトはローカルのみ(gitignoreされます)。

これにより以下が作成されます:

  • baton-pass.config.json — ワークフローがメモリファイルを見つける場所
  • baton-pass.state.json — 軽量な共有所有権状態
  • docs/agent-handoff.md — すべてのエージェント向けのリポジトリ固有ルール
  • docs/current-state.md — 現在進行中の状況
  • docs/next-task.md — 作業の所有者と次に行うこと
  • docs/progress.md — 実行中のセッションログ(追記のみ)

init はさらに /move スラッシュコマンドをリポジトリの .claude/commands/ に配置します。

技一覧

  • new-game = 新しいリポジトリでワークフローを初期化
  • save-state = ハンドオフせずに安全に一時停止
  • baton-pass = トークンが少なくなったときや所有権が変わるときに作業を転送
  • foresight = 作業を受け取るか再開し、整合性を確認してから続行
  • dragon-dance = 実際に学びがあった場合のみワークフローを改善
  • party-check = 最後に行動したエージェント、次に行動すべきエージェント、現在のリポジトリ状態を確認
  • hindsight = 完全なバトンチェーンを監査 — 達成されたマイルストーン、検証状況、引き継がれたリスク、未解決のアイテム

基本ルール

デフォルトは差分で、要約ではありません。

受信側が安全に続行できない場合を除き、安定したプロジェクト履歴を再記述しないでください。

各技を使用すべきタイミング

new-game

リポジトリの開始時、または共有メモリファイルがまだ存在しないリポジトリにこのワークフローを導入するときに1回使用します。

save-state

以下の場合に使用:

  • 突然停止する必要がある
  • 後で作業を再開するために一時停止する
  • 所有権はまだ変わらない

save-state はローカルチェックポイントであり、転送ではありません。

baton-pass

以下の場合に使用:

  • トークンが少ない
  • 別のエージェントが引き継ぐ
  • 転送可能な継続性パッケージが必要

baton-pass は転送チェックポイントです。

foresight

以下の場合に使用:

  • バトンを受け取るとき
  • save-state 後に戻ってきたとき
  • 書き込まれた状態がまだリポジトリと一致しているか疑わしいとき

dragon-dance

以下の場合のみ使用:

  • ワークフロー自体が何かを学んだ
  • 受信側がずれ(ドリフト)を発見した
  • バトンが重要な何かを省略していた
  • 新しいルールが明らかに繰り返しの無駄を防ぐ場合

dragon-dance を反射的にトリガーしないでください。 すべてのセッションや baton-pass にデフォルトで含めないでください。

party-check

以下の場合に使用:

  • 誰の番か忘れた
  • 複数のエージェントがリポジトリを共有している
  • 完全な foresight を実行せずに現在のステータスを知りたい

party-check はセッション内の技です。プレーンなターミナル(エージェントなし、トークンなし)からは、 baton-pass status を実行 — 同じ所有権情報と最近のバトンチェーンを表示し、 baton-pass status --json はスクリプトやフック用の機械可読な出力を提供します。

hindsight

以下の場合に使用:

  • マイルストーンや主要機能が完了し、クリーンな記録が必要
  • 何かがおかしいと感じ、実際に主張されたことと実行されたことを追跡する必要がある
  • 新しいエージェントが参加し、最後のバトンだけでなく履歴全体を把握する必要がある
  • foresight で重大なずれが見つかり、それがどの程度前から始まっていたかを理解する必要がある
  • プロジェクトがレビュー、人間への引き継ぎ、またはアーカイブされる

すべてのバトンの後に hindsight を実行しないでください。 これは監査であり、ルーチンチェックポイントではありません。

各技が書き込むべき内容

save-state

最小限の出力:

  • 現在のタスク
  • 停止した場所
  • 触れたファイル
  • 次の即時アクション
  • ブロッカーまたはリスク

baton-pass

最小限の出力:

  • 目標
  • 完了したこと
  • タスク(タスク計画を使用している場合 — 各タスクのステータス:完了 / 進行中 / 保留中をリスト)
  • ファイル
  • ワークツリー(gitワークツリーを使用している場合、ブランチ名とワークツリーパス)
  • 検証済み
  • 逸脱(元の計画と異なる、セッション中に行われた意思決定)
  • 環境(次のエージェントが確認すべき前提条件:実行中のサービス、.env変数、テストDBなど)
  • 次に行うこと
  • リスク
  • 次のエージェント

コミットの規律:

  • ハンドオフ前にコミットするか、その理由を文書化する。
  • 未コミットの状態を明示的に指定せずに、ダーティなワーキングツリーをハンドオフしない。
  • 検証を実行しなかった場合は、そのように述べる — 合格したと暗示しない。

タスク、ワークツリー、逸脱、環境が重要な理由: セッションメモリはハンドオフ時に失われます。20タスクの計画の途中にいる場合、次のエージェントはgitログだけからどのタスクが完了したかを再構築できません — ステータスを明示的に書きましょう。ワークツリー内で作業している場合、次のエージェントには正確なパスが必要です。計画と異なる方法で何かを修正した場合は、それを書き留めてください — 次のエージェントは計画を再読し、間違った方法でやり直す可能性があります。環境が特定の状態(データベース実行中、.envが設定済みなど)でなければならない場合は、それを明示してください — 新しいエージェントはそれなしで同じブロッカーに直面します。

foresight

最小限の出力:

  • 整合しているか否か
  • 整合していない場合、何が古いか不足しているか
  • 必要な場合のみ、修正された次のステップ

ずれが深刻な場合(バトンは作業が完了したと主張しているが、リポジトリはそうでないことを示している)、続行する前に構造化されたずれレポートを書きます:

  • 何が主張されたか
  • リポジトリが実際に示しているもの
  • 何をやり直す必要があるか
  • このずれが dragon-dance を正当化するか

dragon-dance

最小限の出力:

  • 問題
  • 影響
  • 改善
  • 新しい規約

party-check

最小限の出力:

  • 状態
  • 最後の技
  • 最後のエージェント
  • 次のエージェント
  • 更新日時
  • 短い概要

hindsight

最小限の出力:

  • 監査範囲(全チェーンまたは範囲指定)
  • バトンチェーンテーブル(From → To、日付、目標概要)
  • エージェントごとに主張されたマイルストーンと検証ステータス
  • 検証の欠落(証拠なしで行われた主張)
  • バトン間で引き継がれたリスク
  • バトン間で見つかったずれ
  • 未解決のままの未処理項目
  • 監査評決:clean(クリーン)、gaps found(欠落あり)、risks unresolved(未解決リスク)、action required(アクション必要)

確認するソース:

  • docs/progress.md — 完全なセッションログ
  • docs/next-task.md — ターン状態の履歴
  • baton-pass.state.json — プログラム上の状態
  • gitログ — コミットメッセージと日付
  • progressで参照されている保存されたバトンまたはsave-stateファイル

foresight の受信手順

誤ったステップを避けるために最小限のみ確認:

  • 現在のユーザー目標
  • ワーキングツリーのステータス
  • 最新のコミット
  • current-state
  • next-task
  • 最新の progress エントリ
  • 保存された状態またはバトンで指定されたファイル
  • 進行中のタスク計画のタスクリストステータス

その後判断:

  • 整合している場合、続行
  • 整合していない場合、バトンを修正して続行
  • 整合性の欠如が再利用可能な教訓を明らかにした場合、dragon-dance を実行

エージェント間のスキル発見

スキルがプロジェクトローカルにインストールされている場合(.claude/commands/ またはプラグインインストール経由でリポジトリに)、リポジトリを取得するCodexなどのエージェントは同じスキル定義を見つけます。スキルファイルはリポジトリとともに移動します。

セッション境界を越えて引き継がれないもの:

  • メモリ内タスクマネージャーからのタスク状態(TaskCreateリストはセッション終了時に失われる)
  • サブエージェント実行状態(どのレビューループが完了したか、どのエージェントが実行されたか)
  • 環境状態(どのサービスが実行中か、どの.env変数が設定されているか)

バトンパスはこれらすべてを明示的に書き込まなければなりません。スキルはエージェントに作業方法を指示し、バトンは状況を伝えます。

状態モデル

共有状態ファイルを使用して以下を追跡:

  • 現在の状態
  • 最後の技
  • 最後のエージェント
  • 次のエージェント
  • 更新時刻
  • 概要

推奨状態:

  • active
  • paused
  • handed-off
  • claimed
  • blocked

検証語彙

受信側が何がチェックされたかを正確に理解できるように、一貫した言語を使用します。

  • passed — ローカルで実行され、出力がクリーンであることを確認
  • passed outside sandbox — ローカルで実行されたが、CI/ビルド環境ではない
  • not run — [理由] — スキップ、理由を明記
  • expected to pass, unverified — 実行されていないが、正しいと信じられている

expected to pass, unverified を意味するときに passed と書かないでください。 その単一の曖昧さがハンドオフの手戻りの最大の原因です。

ターン状態

next-task の「ターン状態」ブロックは、主要な人間可読な所有権シグナルです。 baton-pass.state.json はプログラム上の使用のためにそれをミラーリングします。

一方を更新するときは、両方を更新してください。それらが矛盾する場合、next-task が優先されます。

両方での推奨 state 値:

  • active — 誰かが現在作業中
  • paused — 安全に停止、同じエージェントが再開予定
  • handed-off — 転送済み、受信側が主張するのを待機中
  • claimed — 受信側が foresight を実行し、続行中
  • blocked — 続行不可、理由は next-task に記載されるべき

アンチパターン

避けるべきこと:

  • すべての小さなチェックポイントに baton-pass を使用する
  • 何も学んでいないときに dragon-dance を使用する
  • 些細な作業のためにすべてのメモリファイルを書き換える
  • foresight を毎回完全なリポジトリ監査に変える
  • すべてのバトンの後に hindsight を実行する — これは監査であり、ルーチンステップではない
  • 差分ではなくプロジェクト全体を再記述する
  • expected to pass, unverified を意味するときに passed と書く
  • 未コミット状態を指定せずにダーティなワーキングツリーをハンドオフする
  • 番号付き計画の途中でタスクステータスを省略する
  • 作業がgitワークツリー内にある場合にワークツリーパスを省略する
  • 新しいエージェントが知らない環境前提条件を省略する

ベストプラクティスフロー

一時停止:

  • save-state
  • 後で foresight

転送:

  • baton-pass
  • 受信側が foresight を実行

改善:

  • foresight が意味のあるワークフローの問題を明らかにした場合のみ dragon-dance

ターン所有権の確認:

  • party-check

完全なチェーンの監査:

  • hindsight
  • 欠落や未解決リスクが見つかった場合、dragon-dance を実行

関連スキル