iterate-pr
Iterate on a PR until actionable CI passes and high/medium review feedback is addressed.
Skill by getsentryOfficial
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/getsentry-iterate-pr
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/iterate-pr
What's inside
- Skill name
iterate-pr- Description
- Iterate on a PR until actionable CI passes and high/medium review feedback is addressed. Use for PR CI failures, review feedback, or green-check loops; do not wait for human approval, draft status, or merge gates.
- License
- Apache-2.0
- Instructions
- 141 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (7)
- SKILL.md
- SPEC.md
- openai.yaml · agents/
- fetch_pr_checks.py · scripts/
- fetch_pr_feedback.py · scripts/
- monitor_pr_checks.py · scripts/
- reply_to_thread.py · scripts/
SKILL.md (first lines)
# Iterate 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_PASSED`
- `CHECKS_DONE_WITH_FAILURES`
- `NO_CHECKS_REGISTERED`
- `DRAFT_PR_WITH_NO_CHECKS`
- `CHECKS_BLOCKED_BY_REVIEW_GATE`
## Workflow
### 1. Identify PR
Run:
```bash
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:
```text
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:
1. read full log: `gh run view <run-id> --log-failed`
2. trace from assertion/exception/lint rule to source
3. state the cause before editing: "fails because X, affected by Y"
4. search related call sites/patterns
5. fix root cause, not symptom
6. 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
```bash
git add <files>
git commit -m "fix: <descriptive message>"
git push
```
### 6. Monitor CI and Address Feedback
Loop:
1. run `uv run scripts/fetch_pr_checks.py`
2. handle table in step 3
3. while `actionable_pending > 0`, run `uv run scripts/fetch_pr_feedback.py`
4. fix new high/medium feedback immediately
5. if changed, verify, commit, push, restart loop
6. otherwise sleep 30 seconds and repeatFrom getsentry/skills, Apache-2.0.
More from getsentry/skills
- 0.827score
security-model
getsentryOfficial
Define, review, or update SECURITY_MODEL.md files that tell security review tools a repository's threat model, trust boundaries, invariants, reportable…
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
django-access-review
getsentryOfficial
Django access control and IDOR security review.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
secret-serialization
getsentryOfficial
Finds secrets, tokens, passwords, and API keys that can leak through generated serialization: Python dataclass repr and asdict, attrs, pydantic model_dump…
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
gha-security-review
getsentryOfficial
GitHub Actions security review for workflow exploitation vulnerabilities.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
skill-scanner
getsentryOfficial
Scan agent skills for security issues.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
security-review
getsentryOfficial
Security code review for vulnerabilities.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
triage-frontend-issues
getsentryOfficial
Triage new issues in the Sentry `javascript` project by archiving non-actionable noise.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.821score
django-perf-review
getsentryOfficial
Django performance code review.
SkillAFreshness: A★ 1.1KClaude Code - 0.818score
pr-screenshots
getsentryOfficial
Capture screenshots of the Sentry UI in a web browser, lay them out in a pull request description as before/after tables, and upload them with `gh --attach`.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.817score
claude-settings-audit
getsentryOfficial
Analyze a repository to generate recommended Claude Code settings.json permissions.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.724score
prompt-optimizer
getsentryOfficial
Creates, optimizes, and iteratively refines agent prompts, system prompts, developer prompts, and reusable prompt templates.
SkillCFreshness: C★ 1.1KClaude Code +9 - 0.724score
gh-review-requests
getsentryOfficial
Fetch unread GitHub notifications for open PRs where review is requested from a specified team or opened by a team member.
SkillCFreshness: C★ 1.1KClaude Code +9
Signals
- Stars
- 1,083
- Forks
- 60
- Open issues
- 7
- Last commit (this folder)
- Aug 24, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/getsentry/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from getsentry
- 0.827score
secret-serialization
getsentryOfficial
Finds secrets, tokens, passwords, and API keys that can leak through generated serialization: Python dataclass repr and asdict, attrs, pydantic model_dump…
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
security-model
getsentryOfficial
Define, review, or update SECURITY_MODEL.md files that tell security review tools a repository's threat model, trust boundaries, invariants, reportable…
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
security-review
getsentryOfficial
Security code review for vulnerabilities.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
skill-scanner
getsentryOfficial
Scan agent skills for security issues.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
triage-frontend-issues
getsentryOfficial
Triage new issues in the Sentry `javascript` project by archiving non-actionable noise.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
gha-security-review
getsentryOfficial
GitHub Actions security review for workflow exploitation vulnerabilities.
SkillAFreshness: A★ 1.1KClaude Code
Cite this page
iterate-pr skill. Agent Mart. https://agentmart.dev/skills/getsentry-iterate-pr (last updated 2026-10-24)