SKILL.md
$27
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:
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,reviewDecision
gh pr checks --json name,state,bucket,description,link
gh run view <run-id> --log-failed
gh api repos/{owner}/{repo}/pulls/{number}/comments