Diagnose GitHub Actions CI failures and suggest fixes. Use when the user reports CI failed, GitHub job failed, Actions failed, build failed on remote, upload artifact failed, or pastes a failure from the Actions tab.
Installs into .claude/skills of the current project.
Are you the author of Ci Failure?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/diegosouzapw-ci-failure)
---
name: ci-failure
description: Diagnose GitHub Actions CI failures and suggest fixes. Use when the user reports CI failed, GitHub job failed, Actions failed, build failed on remote, upload artifact failed, or pastes a failure from the Actions tab.
---
# CI Failure Diagnosis
When the user reports a **remote GitHub Actions / CI failure** (or pastes a failure from the Actions tab), apply this skill.
## 1. Load Context First
Read these files **immediately** to understand this repo’s CI:
- **Workflow:** `.github/workflows/ci.yml` (and `.github/workflows/security.yml` if the failure mentions security)
- **Pipeline summary:** `docs/ci.md`
Use them to map the failure to a job and step and to apply repo-specific fixes.
## 2. Identify Job and Step
From the user’s message or pasted log, determine:
- **Job name** (e.g. Lint, Type Check, Test, Build, Docker Build, Notify Slack)
- **Step name** (e.g. "Run ESLint", "Build application", "Upload build artifacts")
If the user only pastes an error line (e.g. "No files were found with the provided path: .next"), infer the step from the message and the workflow.
## 3. Map to Fix
| Failure / Log | Job | Step | Action |
|--------------|-----|------|--------|
| ESLint error, file:line | Lint | Run ESLint | Fix the reported file/line; run `npm run lint` locally. |
| Type error, tsc | Type Check | Run TypeScript compiler | Fix the type; run `npx tsc --noEmit` locally. |
| Test failure, vitest | Test | Run tests | Fix test or app code; run `npm test` locally. |
| Build error, Next.js, OOM | Build | Build application | Check "Build application" logs; confirm `NODE_OPTIONS=--max-old-space-size=4096` in workflow; fix build error or increase memory. |
| No files .next, upload artifact | Build | Build application / Upload | Build didn’t produce `.next`; check "Build application" step logs. Ensure workflow has List build output, "Fail if build did not produce .next", and conditional upload (see docs/ci.md). |
| Docker build failed | Docker Build | Build Docker image | Check Dockerfile and build-args (MONGODB_URI, MONGODB_DB). |
| Notify Slack / health | Notify Slack | — | Check Secrets (SLACK_WEBHOOK_URL) and Variables (APP_URL); see docs/ci.md and readme. |
## 4. Respond
1. **Say which job and step failed** (and link to workflow if helpful).
2. **Give a short cause** (e.g. "Build didn’t produce `.next`" or "ESLint error in `src/foo.ts`").
3. **Suggest a concrete fix** (workflow change, code change, or env/secret), using `docs/ci.md` and `.github/workflows/ci.yml` as the source of truth.
4. If the user pasted only one line, **ask for the full job log** for the failing step if you need it to be precise (e.g. "Paste the full 'Build application' step log from the Build job").
## 5. Optional: Cursor Rule
For more detail on mapping failures and repo-specific CI, see `.cursor/rules/github-ci.mdc` (it aligns with this skill and docs/ci.md).