Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Inspect GitHub PR checks with gh, pull failing GitHub Actions logs, summarize failure context, then create a fix plan and implement after user approval. Use when a user asks to debug or fix failing PR CI/CD checks on GitHub Actions and wants a plan + code changes; for external checks (e.g., Buildkite), only report the details URL and mark them out of scope.
.claude/skills/davila7-gh-fix-ci/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -46% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 130% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 26% | 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.
plan skill for drafting and approving the fix plan.Prereq: ensure gh is authenticated (for example, run gh auth login once), then run gh auth status with escalated permissions (include workflow/repo scopes) so gh commands succeed. If sandboxing blocks gh auth status, rerun it with sandbox_permissions=require_escalated.
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 with escalated scopes (workflow/repo) after running gh auth login.sandbox_permissions=require_escalated to allow network/keyring access.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.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-05 | fail→fail | 7,209 | 6,562 | -9% | 1 | 1 | 0% | 291 | 1,218 | +319% | 0 | 0 | — |
case-01 | fail→fail | 4,002 | 5,533 | +38% | 1 | 1 | 0% | 382 | 1,232 | +223% | 0 | 0 | — |
case-02 | fail→fail | 6,270 | 12,463 | +99% | 1 | 1 | 0% | 420 | 1,253 | +198% | 0 | 0 | — |
case-03 | fail→fail | 9,179 | 6,179 | -33% | 1 | 1 | 0% | 334 | 1,229 | +268% | 0 | 0 | — |
case-04 | fail→fail | 12,055 | 6,981 | -42% | 1 | 1 | 0% | 1,252 | 1,271 | +2% | 0 | 0 | — |
case-06 | fail→fail | 5,574 | 7,448 | +34% | 1 | 1 | 0% | 973 | 1,303 | +34% | 0 | 0 | — |
case-07 | fail→fail | 13,543 | 3,415 | -75% | 1 | 1 | 0% | 2,003 | 1,373 | -31% | 0 | 0 | — |
case-08 | fail→pass | 7,100 | 2,089 | -71% | 1 | 1 | 0% | 1,215 | 1,247 | +3% | 0 | 0 | — |
case-09 | fail→pass | 16,396 | 3,084 | -81% | 1 | 1 | 0% | 2,552 | 1,376 | -46% | 0 | 0 | — |
case-10 | fail→fail | 7,262 | 2,948 | -59% | 1 | 1 | 0% | 1,371 | 1,378 | +1% | 0 | 0 | — |
case-11 | fail→pass | 3,774 | 2,851 | -24% | 1 | 1 | 0% | 622 | 1,429 | +130% | 0 | 0 | — |
case-12 | pass→pass | 8,551 | 2,418 | -72% | 1 | 1 | 0% | 1,489 | 1,397 | -6% | 0 | 0 | — |
case-13 | fail→pass | 11,537 | 3,938 | -66% | 1 | 1 | 0% | 1,941 | 1,350 | -30% | 0 | 0 | — |
case-14 | pass→pass | 13,510 | 3,528 | -74% | 1 | 1 | 0% | 2,154 | 1,470 | -32% | 0 | 0 | — |
case-15 | pass→pass | 11,607 | 6,899 | -41% | 1 | 1 | 0% | 1,747 | 1,922 | +10% | 0 | 0 | — |
case-16 | pass→pass | 9,385 | 2,529 | -73% | 1 | 1 | 0% | 1,519 | 1,379 | -9% | 0 | 0 | — |
case-17 | pass→fail | 7,764 | 3,013 | -61% | 1 | 1 | 0% | 1,262 | 1,389 | +10% | 0 | 0 | — |
case-18 | fail→pass | 9,305 | 5,570 | -40% | 1 | 1 | 0% | 1,422 | 1,796 | +26% | 0 | 0 | — |
case-19 | fail→pass | 12,338 | 2,694 | -78% | 1 | 1 | 0% | 1,078 | 1,393 | +29% | 0 | 0 | — |
case-20 | pass→pass | 11,385 | 2,567 | -77% | 1 | 1 | 0% | 1,704 | 1,256 | -26% | 0 | 0 | — |
case-21 | pass→pass | 10,708 | 5,337 | -50% | 1 | 1 | 0% | 1,620 | 1,732 | +7% | 0 | 0 | — |
case-22 | pass→pass | 9,794 | 4,147 | -58% | 1 | 1 | 0% | 1,589 | 1,566 | -1% | 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. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 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 +23 percentage points is the difference between those two pass rates over the 16 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.