mcpField
I
iterate-pr

iterate-pr

github.com/getsentry開発1.1k4.6k 回インストール5 日前に更新
リポジトリ

iterate-pr について

開発者向けのPR反復スキルで、対応可能なCI失敗や高・中優先度のレビュー指摘を修正し、チェックを監視します。自動対応できる作業と、報告が必要な人間の承認・ドラフト・マージ準備のゲートを区別します。

主な機能

  1. 01PRチェックとレビュー指摘の取得
  2. 02高・中優先度の指摘を優先
  3. 03根本原因の修正とローカル検証の指針
  4. 04チェックと指摘の反復監視
  5. 05人間とドラフトの準備ゲートを報告

活用シーン

  1. 01オープン中のPRにおけるCI失敗の対応
  2. 02対応可能なレビュー指摘への対処
  3. 03修正のプッシュ後のチェック監視
  4. 04人間のゲートで進めない場合の報告

MCP 対応

認証済みの `gh` と同梱スクリプトでPRを確認し、チェックや指摘を取得してスレッドに返信します。入力にはMCP機能の記載がありません。

インストール

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

$npx skills add https://github.com/getsentry/skills --skill iterate-pr

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

SPEC.md
agents/
openai.yaml
scripts/
fetch_pr_checks.py
fetch_pr_feedback.py
monitor_pr_checks.py
reply_to_thread.py

詳細

PR に対して CI が通るまで反復する

目標:対応可能な CI の失敗と、レビューでの重要度が高または中の指摘を修正します。人による承認、レビュー準備完了、マージ準備完了の各ゲートで停止し、報告します。

必要なもの:

  • 認証済みの gh
  • uv
  • 作業ディレクトリ(cwd)を対象リポジトリのルートにすること
  • スキルのルートからの相対パスを使ったスクリプトのパス。例:scripts/fetch_pr_checks.py

同梱スクリプト

スクリプト実行方法出力
scripts/fetch_pr_checks.pyuv run scripts/fetch_pr_checks.py [--pr NUMBER]JSON:pr、summary、checks、失敗箇所の抜粋
scripts/fetch_pr_feedback.pyuv run scripts/fetch_pr_feedback.py [--pr NUMBER]JSON の分類:high、medium、low、bot、resolved
scripts/monitor_pr_checks.pyuv run scripts/monitor_pr_checks.py [--pr NUMBER]ターミナルマーカーとタブ区切りのチェック
scripts/reply_to_thread.pyuv run scripts/reply_to_thread.py THREAD_ID BODY [...]JSON の返信結果

チェックのサマリーフィールドには、failed、pending、actionable_pending、human_gate_pending が含まれます。

モニターのマーカー:

  • ALL_CHECKS_PASSED
  • CHECKS_DONE_WITH_FAILURES
  • NO_CHECKS_REGISTERED
  • DRAFT_PR_WITH_NO_CHECKS
  • CHECKS_BLOCKED_BY_REVIEW_GATE

ワークフロー

1. PR を特定する

実行:

gh pr view --json number,url,headRefName,isDraft,reviewDecision

次の場合は停止します:

  • PR が存在しない
  • モニターの猶予期間後もドラフト PR にチェックがない:DRAFT_PR_WITH_NO_CHECKS を報告します

ドラフトのルール:既存のチェックとフィードバックのみを確認します。依頼がない限り、レビュー準備完了にはしません。

2. フィードバックに対応する

uv run scripts/fetch_pr_feedback.py [--pr NUMBER] を実行します。

分類対応
high修正する
medium修正する
lowどれに対応するかユーザーに尋ねる
bot情報提供のみのコメントはスキップする
resolvedスキップする

フィードバック修正チェックリスト:

  • 根本原因を確認する
  • 関連コードを検索する
  • 該当するすべての箇所を修正する
  • review_bot: true の場合:実際の問題を修正し、誤検知には説明を加える

優先度が低い場合の質問形式:

Found 3 low-priority suggestions:
1. [l] "Consider renaming this variable" - @reviewer in api.py:42
2. [nit] "Could use a list comprehension" - @reviewer in utils.py:18
3. [style] "Add a docstring" - @reviewer in models.py:55

Which should I address? ("1,3", "all", or "none")
3. CI の状態を確認する

uv run scripts/fetch_pr_checks.py [--pr NUMBER] を実行します。

状態対応
failed > 0 かつ actionable_pending == 0失敗を修正する
actionable_pending > 0待機する。待機中にフィードバックを確認する
pending > 0 かつ actionable_pending == 0CHECKS_BLOCKED_BY_REVIEW_GATE を報告する
猶予期間後もチェックがないNO_CHECKS_REGISTERED または DRAFT_PR_WITH_NO_CHECKS を報告する
すべての対応可能なチェックに合格CI 後のフィードバック確認を実行する

対応可能なレビュー Bot(sentry、warden、cursor、bugbot、seer、codeql)を待ちます。 承認、isDraft、REVIEW_REQUIRED、Codecov、情報提供のみの Bot は待ちません。

4. CI の失敗を修正する

失敗ごとに:

  1. ログ全体を読む:gh run view <run-id> --log-failed
  2. アサーション/例外/Lint ルールからソースまでたどる
  3. 編集前に原因を明示する:「X が原因で失敗し、Y の影響を受けています」
  4. 関連する呼び出し箇所やパターンを検索する
  5. 症状ではなく根本原因を修正する
  6. 必要に応じて、対象を絞ったテストカバレッジを追加する
5. ローカルで検証してから、コミットしてプッシュする

コミット前に:

  • テストの修正:該当するテストを再実行する
  • Lint/型の修正:影響を受けるチェッカーを再実行する
  • コードの修正:対象となるテストを再実行する
  • ローカルで失敗した場合:プッシュ前に修正する
git add <files>
git commit -m "fix: <descriptive message>"
git push
6. CI を監視してフィードバックに対応する

ループ:

  1. uv run scripts/fetch_pr_checks.py を実行する
  2. 手順 3 の表に従って対応する
  3. actionable_pending > 0 の間は、uv run scripts/fetch_pr_feedback.py を実行する
  4. 新しい重要度が高または中のフィードバックがあれば、すぐに修正する
  5. 変更した場合は、検証してコミット、プッシュし、ループを再開する
  6. それ以外の場合は、30 秒待って繰り返す
  7. チェックに合格したら、10 秒待ってからフィードバックをもう一度取得する
  8. 新しい重要度が高または中のフィードバックがあれば、手順 4 に戻る

Claude Code の任意手順:uv run scripts/monitor_pr_checks.py を MonitorTool 経由で persistent: false を指定して実行します。タイムアウトは通常のリポジトリの CI 所要時間に設定します。プッシュのたびにモニターを再起動してください。

終了条件

終了条件
成功対応可能な CI が成功している;CI 後のフィードバックに問題がない;優先度の低い選択事項に対応済み
ユーザーに確認2 回試行しても同じ失敗が発生する;フィードバックが不明確;インフラの問題がある
停止PR がない;ブランチのリベースが必要;チェックがない;チェックなしのドラフト;人による確認のみが残っている

フォールバック

スクリプトが失敗した場合は、gh CLI を直接使用します。

  • gh pr view --json number,url,headRefName,isDraft,reviewDecision
  • gh pr checks --json name,state,bucket,description,link
  • gh run view <run-id> --log-failed
  • gh api repos/{owner}/{repo}/pulls/{number}/comments

コメント