Communityコーディング&開発github.com

baton

共有ローカルプロジェクト上でコーディングエージェントを調整し、タスク所有権、ファイルクレーム、Gitチェックポイント、コンテキストの引き継ぎ、独立したレビューとリカバリを実現します。ユーザーがCodex、Claude Code、Antigravityなどのエージェント間のコラボレーションを要求した場合に使用します。

baton とは?

Batonは、複数のコーディングエージェント(Codex、Claude Code、Antigravityなど)が同じローカルプロジェクト上で協調して作業するためのスキルです。バンドルされたPythonエンジンをタスクの台帳として使用し、各エージェントがタスクの所有権を主張したり、ファイルのクレームを設定したり、Gitチェックポイントを作成したり、他のエージェントにコンテキストを引き継いだり、独立したレビューとリカバリを実行できます。このスキルはエージェント間の直接通信を開始するわけではなく、ユーザーがチャットでアクションを要求することを前提としています。Batonはエージェントにファイルシステムとシェルアクセスを要求し、プロジェクトのセットアップにはPython 3.10以上とGitが必要です。

対応✓Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/Harshit1garg1/Baton/tree/HEAD/skills/baton

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

baton は何をしますか?

バンドルされたPythonエンジンを、信頼できるローカルタスク台帳として使用します。コマンドは明示的に実行してください。このスキルはデーモンを起動したり、モデルの使用制限を検出したり、他のエージェントに自動的に連絡したりしません。

チャットアクションの解釈

ユーザーは通常、チャットでこのスキルを呼び出します(例: /baton handover TASK-01 to pc1-codex、$baton continue TASK-01、またはホストに応じて /baton:baton status)。残りの単語をアクションリクエストとして解釈し、対応するエンジンコマンドをユーザーに対して実行します。これらはこの1つのスキルに対するリクエストであり、個別に登録されたコマンドやターミナルコマンドではありません。

要求されたアクションエンジンアクション
init必要に応じてブートストラップ; プロジェクトを検査; 新しいボードの場合のみ InitFresh。
joinJoinExisting。
status、tasks、packet TASKStatus、Tasks、WebPacket。
add TASK "Title" with files ...AddTask、依存関係が指定されている場合はそれも含む。
start TASK、claim TASKSilentHandshake; Git作業には --git-branch を、分離されたワークツリーが必要な場合はそれを要求に応じて使用。その後、ユーザーが実装を要求した場合にのみ実装する。
checkpoint TASK with message ...Checkpoint; ユーザーのアップロード承認の範囲内でのみ --push を追加。
progress TASK to 60 percentUpdateProgress、真実の進捗数値とメモを付けて。
handover TASK to AGENT、handoff TASK to AGENTAtomicHandoff; 現在のプロンプト、変更点、および会話からの残りの作業を含める。
continue TASK、resume TASKCheckOrContinue; 編集前にその所有権決定に従う。
done TASK関連するプロジェクトチェックを実行し、実装の準備ができたら Done を実行。
review TASK別のエージェントとしてピン留めされた変更と関連チェックを検査し、その後 SubmitReview を実行。
reopen TASK、merge TASK、release TAG、revert TASK、recover TAGそれぞれ ReopenTask、MergeTask、ReleaseTag、RevertTask、RecoverTag。
release files ... from TASK指定されたクレームに対して ReleaseFiles。
resolve recoveryResolveRecovery; 拒否された場合は未解決の作業とそのジャーナルを保持。
abandon recovery破棄が明示的に要求された場合のみ ResolveRecovery --abandon-recovery を実行。残りの修復を報告。
selftestSelfTest。
reset workspaceリーダーによる明確な承認されたリセットの場合のみ ResetWorkspace --confirm-reset を実行。

リクエストと現在のボードからタスクIDとパスを解決します。新しいプロジェクトのキーやあいまいなコラボレーターのIDなど、本当に不足している情報については質問します。この会話のコラボレーターIDを、IDを必要とするエンジンアクションに明示的に渡してください。別のエージェントが共有ローカルセッションの保存済みIDを変更している可能性があります。会話内の以前の承認を尊重します。MergeTask と ReleaseTag はリモートアップロードを試みるため、ユーザーのリクエストがアップロードを禁止している場合は、設定されたリモートに対してこれらを使用しないでください。

プロジェクトのセットアップ

要件: Python 3.10+ と Git。利用可能なPython 3インタプリタ(python3、python、Windowsの場合は py -3)を選択してください。Windowsの python3 エイリアスが機能するとは想定しないでください。

プロジェクトでの最初のエンジンコマンドの前に、このスキル自身の scripts/bootstrap.py を見つけ、選択したインタプリタと --project <絶対プロジェクトパス> を指定して実行します。これにより、バンドルされたエンジンが .collab/collab_engine.py にコピーされ、/.collab/ がプロジェクトの .gitignore に追加されます。台帳の初期化や、既存の別のエンジンの置き換えは行いません。アップグレードが拒否された場合は、個別に解決してください。

以下のコマンドはプロジェクトルートから実行します。必要に応じて python3 を選択したインタプリタに置き換えてください。Git対応タスクの場合は、まずプロジェクトがベースラインコミットと設定されたGit IDを持つGitリポジトリであることを確認してください。ベースブランチが main でない場合は、実際のベースブランチを --base-branch <ブランチ> で使用します。

編集前の所有権確立

  1. Status を実行します。初期化されたワークスペースに個別のコラボレーターIDで参加します。ユーザーの承認されたローカルコンテキストを通じてプロジェクトキーを取得します。新しいワークスペースの場合は、選択したリーダーとプロジェクトキーを指定して InitFresh を使用します。キーとローカルセッションはGitの管理外に置いてください。
  2. タスクが存在しない場合は、目的のファイルパスと依存関係を指定してタスクを追加します。
  3. 編集前に SilentHandshake を実行します。BUSY_REDIRECT はそのタスクのクレーム拒否です。適格な代替タスクを選択してください。同じプロジェクトを共有する同時並行のブランチバックタスクには --use-worktree を使用します。
  4. 意味のある進捗に対してチェックポイントを作成します。所有権を移行する場合は、AtomicHandoff を使用します。受信側のエージェントは CheckOrContinue を実行します。引き渡しを行ったエージェントは SKIP_ALREADY_HANDED_OFF を尊重する必要があります。
  5. 実装の準備ができたら Done を実行し、その後別のエージェントにピン留めされたコミットをレビューさせます。真のレビューとは、評決を提出する前に変更点と関連チェックを検査することを意味します。

コミット、アップロード、マージ、リリースに関して、ユーザーの範囲と既存の承認を尊重します。ピアの承認は、それ自体では外部への公開を許可しません。許可なく他のエージェントや人にメッセージを送信しないでください。引き継ぎレコードは、次のエージェントが実行するときに消費できます。

エンジンコマンド

各行の先頭に python3 .collab/collab_engine.py --local-path . を付けます。該当する場合は、安定した --collaborator-id <エージェント> を指定します。

アクション引数と動作
InitFresh--project-key <キー> --collaborator-id <リーダー>; 既存の台帳を拒否します。
JoinExisting--project-key <キー> --collaborator-id <エージェント> --device-cluster-id <クラスター> --same-device true を同一PCでのコラボレーションに使用。
Status / Tasks所有権、進捗、成果物を検査します。Status は --render-format CLI または Markdown を受け付けます。
AddTask--task-id T1 --task-title "機能を実装" --files src/feature.py; オプションで --depends-on T0。
SilentHandshake--task-id T1 --collaborator-id <所有者> --git-branch; オプションで --use-worktree。
Checkpoint--task-id T1 --collaborator-id <所有者> --commit-message "checkpoint: 意味のある進捗"; オプションで --push。現在所有しているファイルをコミットします。
ReleaseFiles--task-id T1 --collaborator-id <所有者> --files <パス> 意図的なクレーム解放用。
AtomicHandoff--task-id T1 --collaborator-id <所有者> --target-agent-id <受信者> --reason "実装を続行"; --last-prompt、--changes-summary、--remaining-todo でコンテキストを追加; オプションで --push。
CheckOrContinue--task-id T1 --collaborator-id <エージェント>; 引き継ぎをロードするか、再開スキップガードを尊重します。
Done--task-id T1 --collaborator-id <所有者>; レビュー用にクリーンな作業をピン留め; オプションで --push。
SubmitReview`--task-id T1 --collaborator-id <レビュアー> --review-verdict APPROVED
ReopenTask--task-id T1 --collaborator-id <所有者またはリーダー> 保留中または元に戻された作業を修正します。
MergeTask--task-id T1 --collaborator-id <エージェント> --squash; プッシュを試みます。--use-worktree を使用して別のタスクの共有チェックアウトを保持; --reapply は元に戻された作業を明示的に再適用します。
ReleaseTag--tag v1.0.0 --tag-message "承認されたマイルストーン" --collaborator-id <エージェント>; 検証されたベースブランチにタグを付け、アップロードを試みます。
RevertTask--task-id T1 --collaborator-id <エージェント>; 元に戻すコミットを作成; オプションで --push と --use-worktree。
RecoverTag--tag v1.0.0 --recovery-branch recover/v1.0.0 マイルストーンからブランチを作成します。
ResolveRecovery影響を受けるチェックアウトが修復された後にのみ解決します。--abandon-recovery はジャーナルをアーカイブし、手動での修復をリストします。それらの修復を実行するわけではありません。
SelfTest使い捨てフィクスチャでエンジンの42段階のスイートを実行します。

ワークツリーを使用するブランチバックタスクの場合、タスクの記録された worktreePath 内で編集し、プロジェクトチェックを実行します。

制限とリカバリ

  • クレームは協調的なエンジンレベルのチェックです。エディタや任意のGitコマンドはそれらをバイパスできます。コラボレーターIDはラベルであり、認証されたIDではありません。
  • 1台のPCのボードがローカルの権限です。別々のPCはブランチとGit同期を使用します。同期されたボードレプリカは分散ロックを提供しません。ドライブフォルダを共有トランザクション台帳として扱わないでください。
  • --backup-path <ローカル同期フォルダ> は、一方向のボードスナップショットを書き込みます。同期クライアントがクラウドアップロードを処理します。エンジンにはネイティブのDrive、OneDrive、またはTeraBox APIアダプタはありません。
  • レビュー承認はタスクを完了としてマークし、そのクレームを解放します。検証済みのマージ/デリバリーは別の操作です。エンジンがリモートプッシュを確認した場合のみ DELIVERY: COMPLETE を報告し、返された LOCAL_ONLY または INCOMPLETE は保持します。
  • リカバリが UNRESOLVED を報告した場合、ジャーナルとローカルファイルを保存します。指定されたチェックアウトを検査し、関連する編集を保存し、クリーンアップ後に再試行します。ファイルを保存する代わりに破棄を使用しないでください。
  • ResetWorkspace はボードをアーカイブし、リーダーIDと --confirm-reset が必要です。ワークスペースのリセットがユーザーのリクエストの範囲内である場合にのみ使用してください。

このスキルには、ファイルシステムとシェルアクセスを持つコーディングエージェントが必要です。ホストの実際のスキル呼び出しを使用してください。/baton は普遍的に登録されたターミナルまたはチャットボットAPIではありません。

関連スキル