
Iterate on PR
FreeStreamline your PR feedback and CI checks workflow.
Free · Opens the source repo
What Iterate on PR does
The Iterate on PR skill is designed to assist developers in managing pull requests (PRs) by automating the process of addressing CI failures and review feedback. This skill allows users to iterate on their PRs until all actionable checks pass and high or medium review feedback is resolved. It eliminates the need for manual intervention at various stages, enabling a more efficient workflow. The skill is particularly useful in CI failure scenarios, where immediate action is required to fix issues and ensure that the code meets quality standards before merging.
The skill operates by leveraging a series of bundled Python scripts that interact with GitHub's API. These scripts fetch the current status of PR checks and feedback, monitor ongoing CI processes, and allow users to respond to review comments directly from the command line. By automating the feedback loop, developers can focus on fixing issues rather than getting bogged down in manual processes. The workflow is structured to handle high and medium priority feedback first, ensuring that critical issues are addressed promptly.
To use the skill, developers need to have the GitHub CLI (gh) and a few Python utilities (uv) set up. The skill requires the target repository to be the current working directory, and it operates through a series of commands that guide the user through identifying PRs, handling feedback, checking CI status, and fixing failures. This structured approach helps maintain clarity and efficiency throughout the PR process.
Overall, this skill is ideal for developers who regularly work with PRs and need a reliable way to ensure that their code is ready for review and merging. By automating the iteration process, it saves time and reduces the cognitive load associated with managing PRs, making it a valuable addition to any developer's toolkit.
When to use it
Use this skill when you need to quickly address CI failures or review feedback on your pull requests without waiting for human approval.
When not to use it
This skill is not suitable for cases where manual review or complex decision-making is required, such as handling nuanced feedback or when human gates must be respected.
What you can build with it
Fixing CI Failures Quickly
When a CI check fails, use this skill to automatically identify and address the issues without manual intervention.
Addressing Review Feedback
Use the skill to efficiently manage and respond to high and medium priority feedback on your pull requests.
Monitoring CI Status
Continuously monitor the status of your CI checks and feedback while iterating on your PR.
How to install Iterate on PR
View source1. Install with the skills CLI
npx skills add getsentry/skills/iterate-pr --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by getsentryIterate on PR Until CI Passes
Goal: fix actionable CI failures and high/medium review feedback. Stop and report human approval, draft-readiness, and merge-readiness gates.
Requires:
- authenticated
gh uv- target repository root as cwd
- skill-root-relative script paths, for example
scripts/fetch_pr_checks.py
Bundled Scripts
| Script | Run | Output |
|---|---|---|
scripts/fetch_pr_checks.py | uv run scripts/fetch_pr_checks.py [--pr NUMBER] | JSON: pr, summary, checks, failure snippets |
scripts/fetch_pr_feedback.py | uv run scripts/fetch_pr_feedback.py [--pr NUMBER] | JSON buckets: high, medium, low, bot, resolved |
scripts/monitor_pr_checks.py | uv run scripts/monitor_pr_checks.py [--pr NUMBER] | terminal marker plus tab-separated checks |
scripts/reply_to_thread.py | uv run scripts/reply_to_thread.py THREAD_ID BODY [...] | JSON reply results |
Check summary fields include failed, pending, actionable_pending, and human_gate_pending.
Monitor markers:
ALL_CHECKS_PASSEDCHECKS_DONE_WITH_FAILURESNO_CHECKS_REGISTEREDDRAFT_PR_WITH_NO_CHECKSCHECKS_BLOCKED_BY_REVIEW_GATE
Workflow
1. Identify PR
Run:
gh pr view --json number,url,headRefName,isDraft,reviewDecision
Stop when:
- no PR exists
- draft PR has no checks after monitor grace period: report
DRAFT_PR_WITH_NO_CHECKS
Draft rule: inspect existing checks/feedback only. Do not mark ready for review unless asked.
2. Handle Feedback
Run uv run scripts/fetch_pr_feedback.py [--pr NUMBER].
| Bucket | Action |
|---|---|
high | fix |
medium | fix |
low | ask user which to address |
bot | skip informational comments |
resolved | skip |
Feedback fix checklist:
- verify root cause
- search related code
- fix all instances
- for
review_bot: true: fix real issues, explain false positives
Low-priority prompt format:
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. Check CI Status
Run uv run scripts/fetch_pr_checks.py [--pr NUMBER].
| State | Action |
|---|---|
failed > 0 and actionable_pending == 0 | fix failures |
actionable_pending > 0 | wait; poll feedback while waiting |
pending > 0 and actionable_pending == 0 | report CHECKS_BLOCKED_BY_REVIEW_GATE |
| no checks after grace period | report NO_CHECKS_REGISTERED or DRAFT_PR_WITH_NO_CHECKS |
| all actionable checks passed | run post-CI feedback check |
Wait for actionable review bots: sentry, warden, cursor, bugbot, seer, codeql.
Do not wait for approval, isDraft, REVIEW_REQUIRED, Codecov, or informational bots.
4. Fix CI Failures
For each failure:
- read full log:
gh run view <run-id> --log-failed - trace from assertion/exception/lint rule to source
- state the cause before editing: "fails because X, affected by Y"
- search related call sites/patterns
- fix root cause, not symptom
- add focused test coverage when needed
5. Verify Locally, Then Commit and Push
Before commit:
- test fix: rerun specific test
- lint/type fix: rerun affected checker
- code fix: rerun covering tests
- local failure: fix before pushing
git add <files>
git commit -m "fix: <descriptive message>"
git push
6. Monitor CI and Address Feedback
Loop:
- run
uv run scripts/fetch_pr_checks.py - handle table in step 3
- while
actionable_pending > 0, runuv run scripts/fetch_pr_feedback.py - fix new high/medium feedback immediately
- if changed, verify, commit, push, restart loop
- otherwise sleep 30 seconds and repeat
- after checks pass, wait 10 seconds, fetch feedback once more
- if new high/medium feedback exists, return to step 4
Claude Code optional: run uv run scripts/monitor_pr_checks.py through MonitorTool with persistent: false; set timeout to normal repo CI duration. Restart the monitor after every push.
Exit Conditions
| Exit | Conditions |
|---|---|
| Success | actionable CI passed; post-CI feedback clean; low-priority choice handled |
| Ask user | same failure after 2 attempts; feedback unclear; infrastructure issue |
| Stop | no PR; branch needs rebase; no checks; draft no-checks; only human gates remain |
Fallback
If scripts fail, use gh CLI directly:
gh pr view --json number,url,headRefName,isDraft,reviewDecisiongh pr checks --json name,state,bucket,description,linkgh run view <run-id> --log-failedgh api repos/{owner}/{repo}/pulls/{number}/comments
Frequently asked questions about Iterate on PR
Similar skills
Quality Playbook Generator
Run comprehensive quality audits on any codebase.
PR Draft Summary
Automate PR summary generation for openai-agents-python.
Final Release Review
Streamline your release candidate audits with ease.
Unit Test Vue Pinia
Efficiently write and review unit tests for Vue 3 applications.
Slang Shader Expert
Optimize and integrate Slang shaders with ease.
Telemetry Standards
Ensure consistent event tracking in Supabase Studio.
