Gh 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
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.
Inputs
repo: path inside the repo (default .)
pr: PR number or URL (optional; defaults to current branch PR)
gh authentication for the repo host
Quick start
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"
- Add
--json if you want machine-friendly output for summarization.
Workflow
- Verify gh authentication.
- Run
gh auth status in the repo with escalated scopes (workflow/repo) after running gh auth login.
- If sandboxed auth status fails, rerun the command with
sandbox_permissions=require_escalated to allow network/keyring access.
- If unauthenticated, ask the user to log in before proceeding.
- 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.
- 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
--json for machine-friendly output.
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" --json
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --max-lines 200 --context 40