CI失败
diegosouzapw2026-10-28查看 1345复制 1217
诊断 GitHub Actions CI 失败并建议修复方案。当用户报告 CI 失败、GitHub 作业失败、Actions 失败、远程构建失败、上传制品失败,或粘贴来自 Actions 选项卡的失败信息时使用。
📘如何使用这个技能
- 1复制技能内容·点击上方「Copy SKILL.md」复制全部内容,或 Download 下载到本地
- 2打开你的 AI 客户端·支持 Claude Code、Trae、Cursor、ChatGPT、DeepSeek、Kimi 等任意 AI 助手
- 3粘贴为系统提示/知识文件·Claude Code:放入 .claude/skills/ 目录;普通对话:作为首条消息发送并说「请严格按这份技能文档执行」
- 4直接提出你的需求·AI 会按技能定义的工作流、格式和约束来处理,无需再解释背景
💡 提示:技能生效后,每次对话只需一句需求,AI 会按 SKILL.md 的流程执行。
SKILL.md2923 chars
--- 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).