← ClaudeAtlas

github-actions-public-ci-diagnosticslisted

Diagnose GitHub Actions CI or release workflow failures when full logs are inaccessible, especially public repositories where REST job logs return 403, pytest fails only on Linux runners, check annotations are sparse, PyPI Trusted Publishing fails, or Windows-only test fixtures break on ubuntu-latest.
JinNing6/Noosphere · ★ 18 · Code & Development · score 74
Install: claude install-skill JinNing6/Noosphere
# GitHub Actions Public CI Diagnostics Use this when a remote GitHub Actions run fails but local tests pass, full job logs are unavailable, or the failure only appears on `ubuntu-latest`/matrix runners. ## Workflow 1. **Check local rules first** - Inspect project agent rules before changing files. - Run the same local quality gates the workflow claims to run. - Keep unrelated dirty files out of staging. 2. **Map the remote failure without secrets** - Use public REST endpoints first: - `/repos/{owner}/{repo}/actions/runs?head_sha={sha}` - `/repos/{owner}/{repo}/actions/runs/{run_id}/jobs` - `/repos/{owner}/{repo}/commits/{sha}/check-runs` - `/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations` - If `/actions/jobs/{job_id}/logs` returns `403 Must have admin rights to Repository`, do not guess from missing logs. Treat it as an observability gap. - Record the failing workflow, job, step, Python version, event, ref, and exact annotation text. 3. **Add public failure annotations before blind fixes** - If annotations only say `Process completed with exit code 1`, add a small repository script that runs pytest, captures stdout/stderr as UTF-8, prints normal output, and emits a GitHub annotation such as `::error title=pytest failed::...` on failure. - Use a workspace-local pytest temp dir and disable cache when sandbox or CI permissions may differ, for example `python -m pytest -q -p no:cacheprovider --basetemp=.pytest-tmp-ci --