iterate-pr
持续迭代PR直至CI通过。适用于需要修复CI失败、处理评审反馈或不断推送修复直到所有检查项通过的情况。自动化实现"反馈-修复-推送-等待"的循环流程。
Iterate on PR Until CI Passes
Continuously iterate on the current branch until all CI checks pass and review feedback is addressed.
When to Use This Skill
Use this skill when:
Requires: GitHub CLI (gh) authenticated and available.
Process
Step 1: Identify the PR
gh pr view --json number,url,headRefName,baseRefNameIf no PR exists for the current branch, stop and inform the user.
Step 2: Check CI Status First
Always check CI/GitHub Actions status before looking at review feedback:
gh pr checks --json name,state,bucket,link,workflowThe bucket field categorizes state into: pass, fail, pending, skipping, or cancel.
Important: If any of these checks are still pending, wait before proceeding:
sentry / sentry-iocodecovcursor / bugbot / seerThese bots may post additional feedback comments once their checks complete. Waiting avoids duplicate work.
Step 3: Gather Review Feedback
Once CI checks have completed (or at least the bot-related checks), gather human and bot feedback:
Review Comments and Status:
gh pr view --json reviews,comments,reviewDecisionInline Code Review Comments:
gh api repos/{owner}/{repo}/pulls/{pr_number}/commentsPR Conversation Comments (includes bot comments):
gh api repos/{owner}/{repo}/issues/{pr_number}/commentsLook for bot comments from: Sentry, Codecov, Cursor, Bugbot, Seer, and other automated tools.
Step 4: Investigate Failures
For each CI failure, get the actual logs:
# List recent runs for this branch
gh run list --branch $(git branch --show-current) --limit 5 --json databaseId,name,status,conclusionView failed logs for a specific run
gh run view <run-id> --log-failedDo NOT assume what failed based on the check name alone. Always read the actual logs.
Step 5: Validate Feedback
For each piece of feedback (CI failure or review comment):
Step 6: Address Valid Issues
Make minimal, targeted code changes. Only fix what is actually broken.
Step 7: Commit and Push
git add -A
git commit -m "fix: <descriptive message of what was fixed>"
git push origin $(git branch --show-current)Step 8: Wait for CI
Use the built-in watch functionality:
gh pr checks --watch --interval 30This waits until all checks complete. Exit code 0 means all passed, exit code 1 means failures.
Alternatively, poll manually if you need more control:
gh pr checks --json name,state,bucket | jq '.[] | select(.bucket != "pass")'Step 9: Repeat
Return to Step 2 if:
Continue until all checks pass and no unaddressed feedback remains.
Exit Conditions
Success:
bucket: pass)Ask for Help:
Stop Immediately:
Tips
gh pr checks --required to focus only on required checksgh run view --verbose to see all job steps, not just failureslink field in checks JSON provides the URL to investigate