| name | poll |
| description | Stateful PR poller: tracks GitHub Actions CI, CodeRabbit, Codecov, and human reviews across polls. Loops with adaptive backoff internally. Run via the Bash tool with run_in_background: true so the platform notifies the agent on exit.
|
| argument-hint | PR_NUMBER |
| disable-model-invocation | false |
| allowed-tools | ["Bash(bash .claude/scripts/poll-pr.sh *)","Bash(bash .claude/scripts/format-and-lint.sh *)","Bash(git *)","Bash(gh *)","Bash(make *)","Bash(pytest *)","Bash(pre-commit *)","Bash(npm *)","Read","Write","Edit","Glob","Grep","Agent","AskUserQuestion","CronCreate","CronDelete","CronList"] |
Poll PR and Act on Feedback
Poll PR #$ARGUMENTS for CI, CodeRabbit, and human review status, then fix what's broken.
The script manages its own state in .claude/poll-state/pr-$ARGUMENTS.json and loops
internally with adaptive backoff (120-600s). It shows a full report on the first run,
then delta-only on subsequent polls so only new events surface.
CRITICAL: always use run_in_background: true
Run the script via the Bash tool with run_in_background: true. Never use & to
background it in the shell — that detaches the process and makes the exit code invisible.
bash .claude/scripts/poll-pr.sh $ARGUMENTS
The script sleeps and polls on its own. Do not interrupt it. When it exits, you will
be notified automatically.
Exit codes — what to do when notified
| Code | Meaning | Action |
|---|
| 0 | All checks pass | Ready to merge |
| 1 | CI failures | Fix code, push, re-run (background again) |
| 2 | Checks pending | Should not exit 2 unless --max-polls hit; re-run |
| 3 | Inline review comments | Address comments, push, re-run (background again) |
| 4 | Awaiting human review | Reviewer team notified; CronCreate to re-poll later |
Exit 4 — schedule a re-poll cron
When the script exits 4, it has already posted a comment and requested reviewers.
Use CronCreate to check back automatically:
CronCreate: every 2 hours, /poll $ARGUMENTS
Delete the cron (CronDelete) once the PR is approved or merged.
Exit 1 — CI failures
Run the relevant test/lint commands per the project's AGENTS.md to reproduce
and fix failures locally. After fixing: push, then re-run the script via Bash
with run_in_background: true.
Exit 3 — inline review comments
Run --once --full to see comments with reply/resolve commands:
bash .claude/scripts/poll-pr.sh $ARGUMENTS --once --full
Evaluate each comment critically — automated reviewers are often right but not always.
Read the full context, understand what it's flagging, and make a genuine judgment call:
- Valid: fix the code, then reply explaining what you changed before resolving
- Invalid or inapplicable: reply with your reasoning, then resolve
- Unclear: reply asking for clarification (do NOT resolve)
Steps:
- Read all inline comments (reply command + resolve command shown per thread)
- Evaluate: fix, reply with rationale, or ask a follow-up question
- Once settled, resolve the thread via GraphQL
- Push and re-run the script via Bash with
run_in_background: true
Push and re-run
git add -A && git commit -m "type(scope): address feedback"
git push origin <branch>
Repeat until exit 0.