gh-fix-ci
npx machina-cli add skill OutlineDriven/odin-claude-plugin/gh-fix-ci --openclawGh Pr Checks Plan Fix
Overview
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.
- Depends on the
planskill 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.
Inputs
repo: path inside the repo (default.)pr: PR number or URL (optional; defaults to current branch PR)ghauthentication for the repo host
Quick start
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"- Add
--jsonif you want machine-friendly output for summarization.
Workflow
- Verify gh authentication.
- Run
gh auth statusin the repo with escalated scopes (workflow/repo) after runninggh auth login. - If sandboxed auth status fails, rerun the command with
sandbox_permissions=require_escalatedto allow network/keyring access. - If unauthenticated, ask the user to log in before proceeding.
- Run
- Resolve the PR.
- Prefer the current branch PR:
gh pr view --json number,url. - If the user provides a PR number or URL, use that directly.
- Prefer the current branch PR:
- Inspect failing checks (GitHub Actions only).
- Preferred: run the bundled script (handles gh field drift and job-log fallbacks):
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"- Add
--jsonfor machine-friendly output.
- Manual fallback:
gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflow- If a field is rejected, rerun with the available fields reported by
gh.
- If a field is rejected, rerun with the available fields reported by
- For each failing check, extract the run id from
detailsUrland run:gh run view <run_id> --json name,workflowName,conclusion,status,url,event,headBranch,headShagh run view <run_id> --log
- If the run log says it is still in progress, fetch job logs directly:
gh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<path>"
- Preferred: run the bundled script (handles gh field drift and job-log fallbacks):
- Scope non-GitHub Actions checks.
- If
detailsUrlis not a GitHub Actions run, label it as external and only report the URL. - Do not attempt Buildkite or other providers; keep the workflow lean.
- If
- Summarize failures for the user.
- Provide the failing check name, run URL (if any), and a concise log snippet.
- Call out missing logs explicitly.
- Create a plan.
- Use the
planskill to draft a concise plan and request approval.
- Use the
- Implement after approval.
- Apply the approved plan, summarize diffs/tests, and ask about opening a PR.
- Recheck status.
- After changes, suggest re-running the relevant tests and
gh pr checksto confirm.
- After changes, suggest re-running the relevant tests and
Bundled Resources
scripts/inspect_pr_checks.py
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
Source
git clone https://github.com/OutlineDriven/odin-claude-plugin/blob/main/skills/gh-fix-ci/SKILL.mdView on GitHub Overview
gh-fix-ci helps you debug failing GitHub Actions checks on a PR by using gh to locate failures, fetch logs, and summarize the failure context. It then drafts a concise fix plan and applies the approved changes, reinforcing CI reliability. External checks (like Buildkite) are reported by URL and kept out of scope.
How This Skill Works
The tool uses gh to identify failing checks on the PR, fetches GitHub Actions logs, and extracts a concise failure snippet. It then relies on the plan skill to draft a fix strategy and awaits your approval before applying changes and summarizing diffs. If a check is external (non-GHA), it only reports the details URL and marks it out of scope.
When to Use It
- When a PR's GitHub Actions checks fail and you need a clear root-cause summary.
- When you want a concrete, approved fix plan before touching code.
- When you need to fetch and inspect detailed run logs for failing checks.
- When non-GitHub Actions checks appear (e.g., Buildkite) and you want them scoped out.
- When you want to re-run checks after applying fixes and confirm status.
Quick Start
- Step 1: Run python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>" --json
- Step 2: Review the failure snippet and proposed plan
- Step 3: Approve the plan to apply fixes and recheck PR status
Best Practices
- Ensure gh is authenticated with repository and workflow scopes before use.
- Prefer the current PR or explicitly specify PR URL/number.
- Use --json outputs for machine-readable logs and summaries.
- Validate failure logs to avoid chasing flaky messages.
- Document changes and seek explicit approval before implementing fixes.
Example Use Cases
- PR failing at a GitHub Actions job due to a flaky step; logs are parsed and a fix plan is proposed.
- Workflow YAML error blocks actions; plan focuses on correcting the step or env config.
- Missing secret causes failure; plan includes adding the secret to repo secrets or CI vars.
- External check like Buildkite; only the details URL is reported and no changes attempted.
- Post-fix, re-run gh pr checks to verify status and prepare for PR update.