| name | pr-monitor |
| description | Monitor a GitHub PR for CI failures and review comments, then automatically fix issues. Use this skill when the user wants to watch a PR, fix CI, respond to review comments, or automate PR maintenance. Triggers on "PR監視", "PRを見て", "CIが落ちた", "レビュー対応", "pr monitor", "watch pr", "fix ci", or "pr fix". |
PR Monitor
GitHub PRのCIステータスとレビューコメントを監視し、自動で修正・対応するスキル。
前提
gh CLIが認証済みであること
- 対象リポジトリのローカルクローン内で実行すること
ワークフロー
1. PR特定
PRの特定方法(優先順位):
- ユーザーがPR番号を指定した場合はそれを使う
- 指定がなければ現在のブランチに紐づくPRを
gh pr view --json number で取得
2. CI監視と修正
gh pr checks <PR番号> --json name,state,description,link
failedなcheckがある場合:
- ログ取得:
gh run view <run-id> --log-failed でエラーログを取得
- 原因分析: エラーメッセージからlint/format/build/testのどれが失敗したか判別
- 修正: コードを読み、原因を特定して修正。修正は最小限に留める
- 検証: ローカルで同等のコマンドを実行して修正を確認(可能な場合)
- コミット&プッシュ: 修正をコミットしてpush
コミットメッセージは fix: <何を修正したか> の形式で簡潔に。
push前にローカルで該当するlint/format/build/testを実行できる場合は、必ず先にローカルで通してからpushする。ローカル実行ができない場合は、その理由をユーザーへの報告に含める。
CIが全て通るまでこのループを繰り返す。ただし同じエラーが3回連続で解消しない場合は、ユーザーに報告して停止する。
3. レビューコメント対応
gh api repos/{owner}/{repo}/pulls/<PR番号>/comments --jq '.[] | select(.in_reply_to_id == null)'
未対応のレビューコメント(エージェントがまだ返信していないスレッド)を検出する。
各コメントに対して:
- コンテキスト理解: 指摘されたファイルと行を読み、周辺コードを把握
- 指摘の評価: 以下の観点で指摘が正当かを判断
- 正確性: コードにバグや誤りがあるか
- 設計: より良い設計パターンがあるか、責務の分離は適切か
- バグ: エッジケースやエラーハンドリングの漏れがないか
- 対応を決定:
指摘が正しく、修正方針に自信がある場合
- コードを修正してコミット&プッシュ
- push前にローカルで該当するlint/format/build/testを実行できる場合は、必ず先にローカルで通す
指摘が正しいが、修正方針に自信がない場合
- pushせず、ユーザーに方針を確認する
- 何が不明確か、どういう選択肢があるかを提示する
指摘が正しくない場合
- 技術的な根拠を添えて、なぜ現状の実装が妥当かをスレッドに返信
- 攻撃的にならず、建設的に。コードや仕様を引用して具体的に説明する
- 判断に自信がない場合(60%未満)は、その旨も正直に伝えて議論を促す
4. 報告
1回の実行で行った対応をまとめてユーザーに報告:
- CI: 修正した内容と結果
- レビュー: 対応したコメント数、修正/反論の内訳
- 未解決: 自動対応できなかった項目
継続監視
ユーザーが継続監視を求めている場合は、利用中の環境で利用できるループ機能やスケジューラを使い、ワークフロー(1〜4)を一定間隔で再実行する。
- デフォルトの間隔は5分
- 重複実行を避けるため、既存の監視ジョブやループがある場合は再登録しない
- ユーザーが「1回だけ」「ループ不要」と指示した場合は継続監視を設定しない
- 継続監視を設定した場合は、停止方法をユーザーに伝える
注意事項
- force pushはしない。常に新しいコミットで修正する
- push前にローカルで確認可能な検証コマンドがある場合は、必ずローカルで通してからpushする
- レビュアーとの議論が平行線になった場合(同じスレッドで2往復以上)は、ユーザーに判断を委ねる
- セキュリティに関わる変更(認証、暗号化、権限周り)は自動修正せず報告のみ
- 既存のコードスタイルやプロジェクトの規約に従う