Skills
Chapter 16 of 28
Iterate on a PR until actionable CI passes and high/medium review feedback is addressed.
2 minutes · 406 words · 11 sections
Goal: fix actionable CI failures and high/medium review feedback. Stop and report human approval, draft-readiness, and merge-readiness gates.
Requires:
ghuvscripts/fetch_pr_checks.py| 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_GATERun:
gh pr view --json number,url,headRefName,isDraft,reviewDecisionStop when:
DRAFT_PR_WITH_NO_CHECKSDraft 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:
review_bot: true: fix real issues, explain false positivesLow-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:
gh run view <run-id> --log-failedBefore commit:
git add <files>
git commit -m "fix: <descriptive message>"
git pushLoop:
uv run scripts/fetch_pr_checks.pyactionable_pending > 0, run uv run scripts/fetch_pr_feedback.pyClaude 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:
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}/commentsInstall this repository
npx skills add getsentry/skills/plugin marketplace add getsentry/skillsSkills install per repository, not per chapter — the CLI has no documented per-skill form, so we do not print one.
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.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 8 August 2026.SKILL.md, not by matching a directory convention. One layout observed: skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Sentry, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./getsentry/skills.md, and each chapter at its own .md URL.6 files · 41 KB
Everything this skill ships beside its prose. All of it is set here, as subchapters of chapter 16.
Executable code the skill can run.
Everything else published alongside the skill.