worktrees-hives スキル は何をしますか?
worktrees-hives ハイブリッドオーケストレーターのためのインストール可能なエージェントスキル。
使用タイミング
以下の場合にこのスキルを使用します:
- GitHub または Linear のイシューから作業を発見する
- コード変更のためにワーカーサブエージェントを起動する
- CI を通じてプルリクエストを監視する
- 結果をオペレーターに報告する
安全ガードレール
これらのルールは交渉不可能です。エージェント、オーケストレーター、プラットフォームのオーバーライドによって緩和することはできません。
拒否リスト(決して実行しない)
| コマンド / 操作 | 理由 |
|---|---|
gh pr merge | エージェントはPRをマージしません。人間がマージする必要があります。 |
gh pr merge --auto | 同じ禁止事項。自動マージはマージです。 |
git push --force(単体) | 破壊的。履歴を失います。--force-with-lease のみ使用可能。 |
git push -f(単体) | 同じ破壊的プッシュの短縮形。 |
GraphQL mergePullRequest | API経由のマージもマージです。 |
REST PUT /repos/.../merge | REST経由のマージもマージです。 |
| マージコミットの作成 | ワーキングツリーでPRブランチを結合するための git merge。 |
force-with-lease の許可リスト
git push --force-with-lease は以下の場合にのみ許可されます:
- エージェントが自身のフィーチャーブランチを更新されたベースにリベースしている場合。
- エージェントが古いリモート参照により失敗したフォースプッシュを修正している場合。
- オペレーターが明示的にフォースプッシュを指示した場合。
--force-with-lease を使用する前に、エージェントは以下を必須で確認します:
- 現在のブランチが割り当てられたワークツリーブランチであること(
main、master、または他のエージェントのブランチではない)。 - リモート参照がエージェントの想定通りであること(他の人による予期しないプッシュがないこと)。
Fix-cap セマンティクス
ルール: 各PRは、1回のベビーシットサイクルあたり最大 3つのコード修正コミット を受け取ります。
- カウントされるもの: ソースコード、テスト、設定、または動作に影響を与えるドキュメントを変更するコミット。
- カウントされないもの: リベースによるマージコミット、CIトリガーによるコミット(例:ロックファイルの更新)、PRへの返信コメント。
- 上限に達した場合: エージェントはコミットを停止し、残存問題をPRコメントとして報告する必要があります。エージェントはレビューコメントへの返信とCIの監視を続けますが、新しいコード変更はプッシュしません。
- 残存報告: 上限に達した場合、エージェントは以下の内容を含むコメントを投稿します: 残存するCI失敗、未解決のレビュースレッド、人間または次のサイクルへの推奨される次のステップ。
- リセット: 上限は、オペレーターが新しいベビーシットサイクルを開始したときにリセットされます(明示的な再起動、自動ではありません)。
ブランチ/ワークツリー編集前チェックリスト
コード変更を行う前に、エージェントは以下を必須で確認します:
- ワークツリーの分離:
pwdが割り当てられたワークツリーパス({worktree_root}/{owner}/{repo}/{job_id})内にあること。 - ブランチの正確性:
git branch --show-currentが割り当てられたフィーチャーブランチと一致すること。 - クリーンステート:
git statusに他の作業からの未コミット変更がないこと。 - リモートとの整合性:
git fetch && git statusでブランチが想定通りのリモートを追跡していることを確認。 - 境界外編集の禁止: ワークツリー外のファイルを変更しない(
../パスやワークツリールート外の絶対パスは不可)。
いずれかのチェックに失敗した場合、エージェントは処理を中断し、不一致を報告する必要があります。
最終ステータスガイダンス
ベビーシットサイクルが終了したとき(成功時または上限到達時)、エージェントは以下を報告します:
- PRステータス: オープン / レビュー準備完了 / ブロック中
- 修正カウント: このサイクルでプッシュされたコード修正コミット数(例:「2/3」)
- 残存問題: 未解決のCI失敗、レビューコメント、またはブロッカーのリスト
- エージェント帰属: すべてのPRコメントとコミットメッセージにはエージェントの識別情報を含める
エージェントはPRをマージしたと主張してはいけません。PRがマージされたように見える場合、エージェントは「PRは人間によってマージされました」と報告し、停止します。
プラットフォーム非依存のワーカープロンプトテンプレート
ワーカーサブエージェントを起動する際は、プロンプトに以下の安全指示を含めます:
安全ルール(交渉不可):
- PRをマージしたり、マージAPI/CLIを呼び出したりしてはならない
- 単体の `git push --force` または `git push -f` を使用してはならない
- `git push --force-with-lease` は自身のブランチのリベースにのみ許可される
- 割り当てられたワークツリー外のファイルを編集してはならない
- 1回のベビーシットサイクルで3つを超えるコード修正コミットを行ってはならない
- 編集前に以下を確認すること: ワークツリーパス、ブランチ名、クリーンステート
- プッシュ後はSHAとエージェント帰属を返信すること
- 上限に達した場合は残存問題を報告し、これ以上コードをプッシュしてはならない
実施レイヤー
これらのガードレールは複数のレイヤーで実施されます:
- エージェントスキル(このファイル): ポータブルなドキュメントとプロンプトテンプレート。セキュリティ境界ではありません — プラットフォームによって制約されていない場合、エージェントがバイパスする可能性があります。
- Python オーケストレーター: サブプロセスブリッジを介したポリシー実施。修正コミットをカウントし、パスを検証し、拒否リストに登録されたコマンドをRustに到達する前にブロックします。
- Rust コア(
wh-core): ハード実施。プロセス境界で安全でないgit/GitHub操作を拒否します。これが権威ある安全レイヤーです。
多層防御:3つのレイヤーすべてが同じルールを実施します。1つのレイヤーでの障害は別のレイヤーで捕捉されます。