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ステータスとレビューコメントを監視し、自動で修正・対応するスキル。
前提
ghCLIが認証済みであること- 対象リポジトリのローカルクローン内で実行すること
ワークフロー
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往復以上)は、ユーザーに判断を委ねる
- セキュリティに関わる変更(認証、暗号化、権限周り)は自動修正せず報告のみ
- 既存のコードスタイルやプロジェクトの規約に従う