agents-md
Creates and maintains concise AGENTS.md and CLAUDE.md project instruction files. Use when asked to create AGENTS.md, update…
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.
Claude Code
$ npx -y skills add getsentry/skills --skill iterate-pr --agent claude-code
Codex
$ npx skills add getsentry/skills --skill iterate-pr -a codex -y
Cursor
$ npx skills add getsentry/skills --skill iterate-pr -a cursor -y
Gemini CLI
$ npx skills add getsentry/skills --skill iterate-pr -a gemini-cli -y
GitHub Copilot
$ npx skills add getsentry/skills --skill iterate-pr -a github-copilot -y
OpenCode
$ npx skills add getsentry/skills --skill iterate-pr -a opencode -y
Windsurf
$ npx skills add getsentry/skills --skill iterate-pr -a windsurf -y
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. disable-model-invocation: false
Goal: fix actionable CI failures and high/medium review feedback. Stop and report human approval, draft-readiness, and merge-readiness gates.
Requires:
| 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:
Run:
gh pr view --json number,url,headRefName,isDraft,reviewDecision
Stop when:
Draft rule: inspect existing checks/feedback only. Do not mark ready for review unless asked.
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:
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")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.
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
Before commit:
git add <files> git commit -m "fix: <descriptive message>" git push
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 repeat 7. after checks pass, wait 10 seconds, fetch feedback once more 8. 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 | |------|------------| | 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 |
If scripts fail, use `gh` CLI directly:
Agent skills for Sentry employees, following the Agent Skills open format.
Creates and maintains concise AGENTS.md and CLAUDE.md project instruction files. Use when asked to create AGENTS.md, update…
Write, review, and improve blog posts for the Sentry engineering blog following Sentry's specific writing standards, voice, and…
Write copy following Sentry brand guidelines. Use when writing UI text, error messages, empty states, onboarding flows, 404…
Analyze a repository to generate recommended Claude Code settings.json permissions. Use when setting up a new project, auditing…
Perform code reviews following Sentry engineering practices. Use when reviewing pull requests, examining code changes, or…
Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when asked to…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.