Watch a PR's CI, diagnose every failing check, fix what's actually broken, resolve CodeRabbit's major findings, and keep iterating until the PR is green. Use when the user says "handhold the PR", "check CI", "get CI green", "resolve any issues until green", or asks why a PR's checks are failing.
80
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Take a pull request from "checks failing" to "all green". This skill owns watching CI, diagnosing failures, deciding whether a failure is yours, and driving fixes until every required check passes.
Target the PR the user names (number or URL). With no argument, use the PR for the current branch: gh pr view --json number,url,headRefName. If the branch has no PR, say so and stop — this skill doesn't open PRs (that's open-pr).
gh pr checks <n> — the whole picture in one call. Netlify skipping rows are noise; ignore them.gh pr view <n> --json statusCheckRollup). A failing advisory check may not block, but still report it.Don't diagnose from a check name. Read the log.
gh api repos/<owner>/<repo>/actions/runs/<runId>/jobs -q '.jobs[] | "\(.id) \(.name) \(.conclusion)"' to find the failing job id.gh run view --job <jobId> --log-failed for the failing step.--log-failed is often not enough on this repo. Nx distributed execution prints a task summary table there; the actual test/build output is earlier in the full log. Pull it and search:
gh run view --job <jobId> --log | grep -n "FAIL\|Error:\|✖\|<task-name>" then sed -n '<start>,<end>p' the surrounding block (pipe through sed 's/\x1b\[[0-9;]*m//g' to strip ANSI).cloud.nx.app/logs/...) are auth-gated — don't burn turns fetching them; the GitHub job log has the output.For each failure, answer: is this caused by the diff on this branch?
git diff <base>...HEAD --name-only. A failure in a package the PR never touched is a strong signal it isn't yours.gh run list --branch beta --limit 5 --json conclusion,name. A red base means pre-existing breakage.@analogjs/vitest-angular/setup-testbed) because tsconfig.base.json maps only the bare specifier, so test → ^build doesn't guarantee that dist is on the agent that picked up the task.node --version against .node-version; a newer Node changes TS/ESM resolution in Vite config loading and produces failures CI never sees.nx test <project>, nx build <project>, nx format:check, nx lint <project>. Say plainly when you could not reproduce.open-pr), push. Keep fixes scoped to the failure; don't fold in unrelated cleanups.gh run rerun <runId> --failed. Re-run once. If the same task fails a second time, treat it as real and investigate — don't re-run a third time hoping.until [ "$(gh run view <runId> --json status -q .status)" = "completed" ]; do sleep 30; done
(run it with run_in_background, then read the output file when notified).Green CI isn't done. CodeRabbit reports as a passing check even when it has posted actionable inline comments, so its review has to be read separately.
gh pr view <n> --json reviews for the summary (it states how many actionable comments it posted), and gh api repos/<owner>/<repo>/pulls/<n>/comments for the inline findings. Each is tagged with a severity — 🟠 Major, 🟡 Minor, and so on.gh pr checks result.8a11ca9
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.