ship-pr
このスキルを呼び出すと、1つのPRをマージ可能な状態にするために必要なブランチ作成、ステージング、コミット、プッシュ、PRの作成・更新、該当するコメントへの返信が承認されます。マージ自体は承認しません。
references/repo-specific-pr-policy.md が存在する場合は、ワークフローを開始する前にそれを読み、権威あるものとして扱ってください。
入力
pr_worker ディスパッチターゲットを必須とし、すべてのディスパッチに /dispatch-agent を使用します。追加の呼び出し元入力をすべての pr_worker プロンプトに中継します。
ユーザーが範囲を絞り込まない限り、現在の作業ツリー全体を含めます。
ワークフロー
-
リポジトリの規範でブランチが必要な場合はブランチを作成します。意図した変更をコミットし、プッシュし、PRを作成または再利用します。タイトルは変更内容から導出し、
assets/pr-body-template.mdの不要なセクションやプレースホルダーを削除して埋めます。 -
管理されたバックグラウンドセッションで1つのウォッチャーを起動します。PRがマージされるかワークフローが停止するまで実行し続け、その後停止します。一時的な転送障害で終了した場合は、権威ある状態を再取得し、同じ追記専用ログで再起動します。
bash <skill_dir>/scripts/watch-pr-events.sh \ --repo <owner/name> \ --pr <pr-number> \ --log-file .agent-layer/tmp/ship-pr-events-<pr-number>.jsonl \ --interval-seconds 300 -
ghを使用して現在のHEAD、チェック、マージ可能性を取得します。このステートレスなコマンドでコメントを読みます。ウォッチャーログから現在の状態を推測しないでください。bash <skill_dir>/scripts/read-pr-comments.sh \ --repo <owner/name> \ --pr <pr-number>未解決のフィードバックがある場合は、正確なPR、HEAD、および
references/address-pr-comments.mdを使用してpr_workerをディスパッチします。必要なチェックが失敗した場合は、その証拠とreferences/fix-ci.mdも提供します。ワーカーはローカルツリーを編集しますが、コミット、プッシュ、返信の投稿は行いません。機械的な競合は自動的に解決します。PRがマージ可能になるのは以下の場合のみです。
- PRが最新のHEADでマージ可能である。
- 少なくとも1人のエージェントまたは人間のレビュアーが正式なレビューまたはコメントとしてフィードバックを投稿している。
- すべての必須チェックとリポジトリゲートがグリーンである。
- 該当するすべてのコメントに検証済みの返信が付いている。
- オプションのリポジトリポリシーが存在する場合、そのポリシーで定義されたすべてのマージ基準を満たしている。
PR作成から10分以内にエージェントまたは人間のレビュアーがフィードバックを投稿しなかった場合は、停止してフィードバックがなかったことを報告します。準備ができている場合はステップ5に進みます。それ以外の場合は、コミットする前に完全なアクション可能なラウンドに対応します。
-
承認された修正をコミットしてプッシュします。ワーカーから提案された返信を1つずつ投稿します。インラインコメントにはネイティブに返信します。会話コメントやレビューサマリーの場合は、ソースにリンクするIssueコメントを投稿します。コメントコマンドを再実行し、不足またはサポートされていない返信を修正します。準備ができるまでステップ3に戻ります。チェックやレビューのみが保留中の場合は、ウォッチャーを待ちます。
-
正確なPRとHEADに対して単一使用のマージ承認を要求します。実質的な発見事項、簡潔なコメント処理サマリー、および準備完了の証拠を報告します。
-
承認後、HEAD、チェック、マージ可能性、コメントを再取得します。ローカルツリーが完全であり、該当するすべてのコメントにサポートされた投稿済み返信があることを確認します。何か変更された場合はステップ3に戻り、結果として得られたPR HEADに対して新しい承認を取得します。それ以外の場合はマージします。
-
チェックアウトがクリーンであることを確認し、デフォルトブランチに切り替え、それをfast-forwardし、このワークフローで作成されたブランチやワークツリーを削除します。状態を保持し、実行が安全でないクリーンアップを報告します。