--- name: ci-fix description: Diagnose and fix GitHub Actions CI failures. Inspects workflow runs and logs, identifies root causes, implements minimal fixes, and pushes to a fix branch. Use when CI is failing, red, broken, or needs diagnosis. license: MIT --- # CI Fix Diagnose CI failures and implement fixes with minimal, targeted diffs. Pushes fixes to a dedicated branch without creating PRs. ## Prerequisites Verify GitHub CLI authentication before proceeding: ```bash gh auth status ``` If not authenticated, instruct the user to run `gh auth login` first. ## Workflow ### 1. Locate the Failing Run Determine the failing workflow run. If working on a PR branch: ```bash gh pr view --json statusCheckRollup --jq '.statusCheckRollup[] | select(.conclusion == "FAILURE")' ``` If working from a branch or run ID: ```bash gh run list --branch --status failure --limit 5 gh run view --verbose ``` ### 2. Extract Failure Logs Pull logs from failed steps to identify the root cause: ```bash gh run view --log-failed ``` For deeper inspection: ```bash gh run view --log --job gh run download -D .artifacts/ ``` ### 3. Identify Root Cause Analyze logs for common failure patterns: - **Build/compilation errors**: Missing dependencies, type errors, syntax issues - **Test failures**: Assertion failures, timeouts, flaky tests - **Linting/formatting**: Style violations, unused imports - **Environment issues**: Missing secrets, permissions, resource limits Prefer the smallest fix that resolves the issue. Deterministic code fixes are better than workflow plumbing changes. ### 4. Implement the Fix Make minimal, scoped changes matching the repository's existing style: - Fix only what's broken—avoid unrelated refactoring - Keep changes to the failing job/step when possible - If modifying workflow files, preserve existing permissions and avoid expanding token access ### 5. Push to Fix Branch Create or update a dedicated fix branch: ```bash git checkout -b ci-fix/ git add -A git commit -m "fix: resolve CI failure in Co-Authored-By: Warp " git push -u origin ci-fix/ ``` If the fix branch already exists, update it: ```bash git checkout ci-fix/ git pull origin # make fixes git commit -m "fix: Co-Authored-By: Warp " git push ``` ### 6. Verify the Fix Trigger CI on the fix branch and monitor: ```bash gh run list --branch ci-fix/ --limit 1 gh run watch --exit-status ``` To rerun only failed jobs: ```bash gh run rerun --failed ``` ## Safety Notes - Avoid `pull_request_target` unless explicitly requested—it can expose secrets to untrusted code - Keep workflow `permissions:` minimal; don't broaden access to make tests pass - For flaky tests, prefer deterministic fixes over blind reruns ## Deliverable After fixing, provide a brief summary: - **Failing run**: Link or ID - **Root cause**: What broke and why - **Fix**: What changed - **Verification**: New run link showing green status