Skip to main content

github-review-failures

Fix every failing CI check on a PR — fetch the failed job logs (and a merge-queue eviction report), diagnose the root cause, fix, verify locally, push. Use when a PR's checks are red; /flow:github-review-pr runs it as its Phase A.

Source facts

Repository
zoolutions/claude-plugins
Last source activity
October 26, 2026 at 14:08
Detected SKILL.md language
English
Stars
2
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
github-review-failures
description
Fix every failing CI check on a PR — fetch the failed job logs (and a merge-queue eviction report), diagnose the root cause, fix, verify locally, push. Use when a PR's checks are red; /flow:github-review-pr runs it as its Phase A.
argument-hint
PR number (e.g. 41 or #41); empty = the current branch's PR
model
sonnet
allowed-tools
Bash(*), Read, Write, Edit, Glob, Grep, Agent
# CI failures: $ARGUMENTS `main` below is the default branch: Workflow → Base when set, else `main`. Repository facts: `AGENTS.md` → `## Workflow` (CI: the jobs, the required check, where the full suite runs and how a failure is reported; Verify; Specs). PR number as in `/flow:github-review-comments` Phase 0. ## Phase 1: What failed `gh pr checks <PR> --json name,state,bucket,link` — every check whose bucket is `fail` or `cancel`. The run and job ids are in the link (`…/actions/runs/<RUN_ID>/job/<JOB_ID>`). A roll-up gate that fails because another job failed is fixed by fixing that job. A PR-body contract check is fixed in the body (`gh pr edit <PR> --body-file …`), not in code. **Evicted from a merge queue** (Workflow → CI says the full suite runs only in the queue): the PR's own checks can be green while the queue's run failed. Read the report Workflow → CI names (often a PR comment with a marker, edited in place: current only when its `updated_at` is newer than the first CI run on the PR's head, `gh run list --commit <headRefOid> --limit 50 --json createdAt --jq 'map(.createdAt) | min'`; a commit's own date is its authoring time, not when it was pushed), and the run it links. Workflow → CI names no report: find the failed queue run itself — `gh run list --event merge_group --limit 20 --json databaseId,headBranch,conclusion --jq '.[] | select(.headBranch | startswith("gh-readonly-queue/main/pr-<PR>-"))'` — and read `gh run view <id> --log-failed`. The failure is on the merge commit — this PR, whatever was ahead of it, and main — so merge `origin/main` before reproducing. Whether main itself is red comes from Workflow → Main health, never from the report: red, and the same specs fail on `origin/main` → report it; the fix belongs on main. Nothing failing and no current eviction report → report and stop. ## Phase 2: Logs `gh run view <RUN_ID> --job <JOB_ID> --log-failed`; if that is unclear, the full `--log` for the job. Spec failures: also the run's artifacts (`gh api "repos/{owner}/{repo}/actions/runs/<RUN_ID>/artifacts" --jq '.artifacts[].name'`). ## Phase 3: Diagnose Per failure: the error, the file and line, which commit on this branch introduced it, and whether it is code, environment or ordering. Read the failing code before deciding. ## Phase 4: Fix and verify Order: lint first (fast, deterministic), then schema/migration, then specs, then security and build. Reproduce locally only the failing tests CI names (Workflow → Specs → fast loop), not the suite, fix, re-run them, then Workflow → Verify on the changed files. ## Phase 5: Commit and push One commit per logical fix, `fix(ci): …` saying why it failed; push. ## Phase 6: Report Which checks failed, the cause, the fix SHA, and which checks are now running. Do not poll in a loop: the caller (`/flow:finish-prs`) waits. ## Rules - Fix the root cause; never silence a linter with a disable comment. - **Fix every failure the PR's CI shows**, one already failing on main included: the PR does not merge red, and main gets the fix with it. (A red main that only a merge queue sees is reported, not fixed here.) - **Flaky tests have a cause** (timing, ordering, shared state, environment): find it and fix it. No retries, sleeps or skips as workarounds. `/flow:debug-flaky` is the long form. - The same check failing with the same error after your fix means the diagnosis was wrong: re-read the log and fix differently. Never push the same fix twice; never re-run CI blindly.
View on GitHub