Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when a user asks to debug or fix failing GitHub PR checks that run in GitHub Actions. Uses `gh` to inspect checks and logs, summarize failure context, draft a fix plan, and implement only after explicit approval. Treats external providers (for example Buildkite) as out of scope and reports only the details URL. Do NOT use for addressing PR review comments (use gh-address-comments) or general CI outside GitHub Actions.
.claude/skills/tech-leads-club-gh-fix-ci/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -36% | 0% |
| case-23 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-20 | ✓→✗ | ▼ Worse | -32% | 0% |
| case-22 | ✓→✗ | ▼ Worse | -29% | 0% |
| case-10 | ✓→✓ | = Same ✓ | 61% | 0% |
Use gh to locate failing PR checks, fetch GitHub Actions logs for actionable failures, summarize the failure snippet, then propose a fix plan and implement after explicit approval.
create-plan) is available, use it; otherwise draft a concise plan inline and request approval before implementing.Prereq: authenticate with the standard GitHub CLI once (for example, run gh auth login), then confirm with gh auth status (repo + workflow scopes are typically required).
repo: path inside the repo (default .)pr: PR number or URL (optional; defaults to current branch PR)gh authentication for the repo hostpython "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"--json if you want machine-friendly output for summarization.gh auth status in the repo.gh auth login (ensuring repo + workflow scopes) before proceeding.gh pr view --json number,url.python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"--json for machine-friendly output.gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflowgh.detailsUrl and run:gh run view <run_id> --json name,workflowName,conclusion,status,url,event,headBranch,headShagh run view <run_id> --loggh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<path>"detailsUrl is not a GitHub Actions run, label it as external and only report the URL.create-plan skill to draft a concise plan and request approval.gh pr checks to confirm.Fetch failing PR checks, pull GitHub Actions logs, and extract a failure snippet. Exits non-zero when failures remain so it can be used in automation.
Usage examples:
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "123"python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "https://github.com/org/repo/pull/123" --jsonpython "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --max-lines 200 --context 40| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | pass→pass | 4,014 | 2,765 | -31% | 1 | 1 | 0% | 809 | 1,299 | +61% | 0 | 0 | — |
case-01 | fail→fail | 4,646 | 5,668 | +22% | 1 | 1 | 0% | 687 | 1,174 | +71% | 0 | 0 | — |
case-02 | fail→fail | 8,362 | 6,526 | -22% | 1 | 1 | 0% | 643 | 1,119 | +74% | 0 | 0 | — |
case-03 | fail→fail | 13,475 | 7,601 | -44% | 1 | 1 | 0% | 1,335 | 1,572 | +18% | 0 | 0 | — |
case-04 | pass→pass | 6,170 | 3,856 | -38% | 1 | 1 | 0% | 1,049 | 1,523 | +45% | 0 | 0 | — |
case-05 | pass→pass | 6,586 | 3,284 | -50% | 1 | 1 | 0% | 1,089 | 1,469 | +35% | 0 | 0 | — |
case-06 | pass→pass | 5,369 | 51,979 | +868% | 1 | 1 | 0% | 1,011 | 1,213 | +20% | 0 | 0 | — |
case-07 | fail→pass | 12,277 | 3,227 | -74% | 1 | 1 | 0% | 2,190 | 1,399 | -36% | 0 | 0 | — |
case-08 | pass→pass | 4,266 | 2,460 | -42% | 1 | 1 | 0% | 707 | 1,239 | +75% | 0 | 0 | — |
case-09 | pass→pass | 3,284 | 2,197 | -33% | 1 | 1 | 0% | 581 | 1,281 | +120% | 0 | 0 | — |
case-11 | pass→pass | 9,403 | 2,055 | -78% | 1 | 1 | 0% | 1,806 | 1,279 | -29% | 0 | 0 | — |
case-12 | pass→pass | 6,567 | 2,003 | -69% | 1 | 1 | 0% | 1,282 | 1,274 | -1% | 0 | 0 | — |
case-13 | pass→pass | 3,979 | 1,642 | -59% | 1 | 1 | 0% | 614 | 1,181 | +92% | 0 | 0 | — |
case-14 | pass→pass | 10,110 | 4,331 | -57% | 1 | 1 | 0% | 1,510 | 1,588 | +5% | 0 | 0 | — |
case-15 | pass→pass | 3,337 | 1,890 | -43% | 1 | 1 | 0% | 513 | 1,251 | +144% | 0 | 0 | — |
case-16 | pass→pass | 7,353 | 1,890 | -74% | 1 | 1 | 0% | 1,234 | 1,249 | +1% | 0 | 0 | — |
case-17 | pass→pass | 10,965 | 2,753 | -75% | 1 | 1 | 0% | 1,726 | 1,293 | -25% | 0 | 0 | — |
case-18 | pass→pass | 4,115 | 2,134 | -48% | 1 | 1 | 0% | 692 | 1,279 | +85% | 0 | 0 | — |
case-19 | pass→pass | 11,525 | 5,522 | -52% | 1 | 1 | 0% | 1,916 | 1,784 | -7% | 0 | 0 | — |
case-20 | pass→fail | 50,242 | 3,301 | -93% | 1 | 1 | 0% | 2,110 | 1,444 | -32% | 0 | 0 | — |
case-21 | pass→pass | 7,886 | 7,253 | -8% | 1 | 1 | 0% | 1,531 | 2,214 | +45% | 0 | 0 | — |
case-22 | pass→fail | 10,734 | 5,646 | -47% | 1 | 1 | 0% | 1,747 | 1,238 | -29% | 0 | 0 | — |
case-23 | fail→pass | 7,101 | 4,409 | -38% | 1 | 1 | 0% | 1,285 | 1,714 | +33% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 19 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of 0 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.