mcpField
I
iterate-pr

iterate-pr

github.com/davila7テスト・品質33.0k245 回インストール今日更新
リポジトリ

iterate-pr について

iterate-prは、現在のGitHubプルリクエストでCIの失敗と妥当なレビュー指摘に順次対応するスキルです。GitHub CLIでチェック、コメント、ログを調べ、解決または停止条件に達するまで対象を絞って修正します。

主な機能

  1. 01最初にプルリクエストのCI状態を確認
  2. 02人とボットのレビュー指摘を収集
  3. 03失敗したワークフローログを確認
  4. 04修正前に指摘の妥当性を検証
  5. 05解決までコミット、プッシュ、再確認

活用シーン

  1. 01進行中のPRでCI失敗に対処
  2. 02レビュアーやボットのコメントに対応
  3. 03チェック待ち中の重複修正を回避

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill iterate-pr

インストール後、Claude Code で/iterate-prを入力して読み込まれたか確認します。

詳細

CI が通るまで PR を反復修正する

すべての CI チェックが通過し、レビューのフィードバックに対応するまで、現在のブランチを継続的に修正します。

必要条件: GitHub CLI (gh) が認証済みで利用可能であること。

手順

ステップ 1: PR を特定する
gh pr view --json number,url,headRefName,baseRefName

現在のブランチに対する PR が存在しない場合は、処理を停止してユーザーに知らせてください。

ステップ 2: まず CI の状態を確認する

レビューのフィードバックを確認する前に、必ず CI/GitHub Actions の状態を確認してください:

gh pr checks --json name,state,bucket,link,workflow

bucket フィールドは状態を pass、fail、pending、skipping、cancel のいずれかに分類します。

重要: 以下のチェックのいずれかがまだ pending の場合は、先に進む前に待機してください:

  • sentry / sentry-io
  • codecov
  • cursor / bugbot / seer
  • リンターやコード分析のチェック

これらのボットは、チェックが完了した後に追加のフィードバックコメントを投稿することがあります。待機することで重複作業を避けられます。

ステップ 3: レビューのフィードバックを収集する

CI チェックが完了したら(少なくともボット関連のチェック)、人間とボットのフィードバックを収集します:

レビューコメントとステータス:

gh pr view --json reviews,comments,reviewDecision

インラインのコードレビューコメント:

gh api repos/{owner}/{repo}/pulls/{pr_number}/comments

PR の会話コメント(ボットのコメントを含む):

gh api repos/{owner}/{repo}/issues/{pr_number}/comments

Sentry、Codecov、Cursor、Bugbot、Seer、その他の自動化ツールからのボットコメントを探してください。

ステップ 4: 失敗の原因を調査する

CI の失敗ごとに、実際のログを取得します:

# List recent runs for this branch
gh run list --branch $(git branch --show-current) --limit 5 --json databaseId,name,status,conclusion

# View failed logs for a specific run
gh run view <run-id> --log-failed

チェック名だけから失敗の原因を推測しないでください。必ず実際のログを読んでください。

ステップ 5: フィードバックを検証する

各フィードバック(CI の失敗またはレビューコメント)について:

  1. 関連するコードを読む - 変更を加える前に文脈を理解する
  2. 問題が実在するか確認する - すべてのフィードバックが正しいとは限らず、レビュアーやボットが誤っている場合もあります
  3. すでに対処済みか確認する - 後続のコミットで問題が修正されている可能性があります
  4. 無効なフィードバックはスキップする - 指摘が妥当でなければ、次に進みます
ステップ 6: 有効な問題に対処する

最小限かつ的を絞ったコード変更を行います。実際に壊れている箇所だけを修正してください。

ステップ 7: コミットしてプッシュする
git add -A
git commit -m "fix: <descriptive message of what was fixed>"
git push
ステップ 8: CI の完了を待つ

組み込みの監視機能を使用します:

gh pr checks --watch --interval 30

すべてのチェックが完了するまで待機します。終了コード 0 はすべて成功、終了コード 1 は失敗があったことを意味します。

より細かく制御する必要がある場合は、手動でポーリングすることもできます:

gh pr checks --json name,state,bucket | jq '.[] | select(.bucket != "pass")'
ステップ 9: 繰り返す

以下のいずれかに該当する場合は、ステップ 2 に戻ります:

  • CI チェックが1つでも失敗した
  • 新しいレビューのフィードバックが届いた

すべてのチェックが通過し、未対応のフィードバックが残っていない状態になるまで続けます。

終了条件

成功:

  • すべての CI チェックが緑色(bucket: pass)である
  • 未対応の人間によるレビューのフィードバックがない

支援を求める:

  • 同じ失敗が 3 回の試行後も解消しない(不安定なテストや、より深刻な問題の可能性が高い)
  • レビューのフィードバックに、ユーザーからの説明や判断が必要である
  • CI の失敗がブランチの変更と無関係である(インフラの問題)

直ちに停止する:

  • 現在のブランチに対する PR が存在しない
  • ブランチが同期されておらず、リベースが必要である(ユーザーに知らせること)

ヒント

  • gh pr checks --required を使うと、必須のチェックだけに絞り込めます
  • gh run view <run-id> --verbose を使うと、失敗したものだけでなく、すべてのジョブのステップを確認できます
  • チェックが外部サービスによるものである場合、checks の JSON にある link フィールドに、調査すべき URL が含まれています

コメント