AgentSkillsCN

fix-ci

深入调研并修复最新失败的 CI 工作流

SKILL.md
--- frontmatter
name: fix-ci
description: Investigate and fix the latest failing CI workflow
user_invocable: true
arguments:
  - name: run-id
    description: "Specific workflow run ID (optional — defaults to latest)"
    required: false

Fix CI Workflow

Investigate the latest CI failure, reproduce locally, and fix it.

Steps

1. Identify the Failure

bash
# Get latest (or specific) workflow run
gh run list --limit 5
gh run view <run-id>

If $ARGUMENTS.run-id is provided, use that. Otherwise pick the latest failed run.

  • Show which jobs failed and which passed
  • Download the failed job logs: gh run view <run-id> --log-failed

2. Analyze the Error

Read the logs and classify the failure:

TypeIndicators
typecheckerror TS, tsc --noEmit
linteslint, warning/error with rule names
unit testvitest, FAIL, expect(
e2e testplaywright, spec.ts, timeout, locator
buildnpm run build, vite build, rollup
dependencynpm ci, ERESOLVE, peer dep

Extract the exact error message, file path, and line number.

3. Reproduce Locally

Run the failing CI step locally from apps/web/:

CI StepLocal Command
typechecknpm run typecheck
lintnpm run lint
unit testnpm run test
e2e testnpm run test:e2e
buildnpm run build
installnpm ci

If reproducing a specific test:

  • Unit: npx vitest run <test-file>
  • E2E: npx playwright test <spec-file>

4. Investigate with Playwright (if E2E failure)

If the failure is an E2E test or a visual/runtime bug:

  1. Start the dev server if not running: check lsof -i :3000
  2. Navigate to the failing page: mcp__playwright__browser_navigate
  3. Take a screenshot: mcp__playwright__browser_take_screenshot
  4. Check console errors: mcp__playwright__browser_console_messages
  5. Check network failures: mcp__playwright__browser_network_requests
  6. Get the accessibility tree: mcp__playwright__browser_snapshot
  7. Interact as the test would — click, fill forms, etc.
  8. Compare actual behavior with what the test expects

5. Fix the Issue

  • Read the failing source code
  • Apply the minimal fix
  • If the test expectation is wrong (not the code), fix the test

6. Verify the Fix

Run the exact failing step again locally:

bash
cd apps/web
# Run the specific failing command

Then run the full quality suite to ensure no regressions:

bash
cd apps/web
npm run typecheck
npm run lint
npm run test
npm run build

7. Report

Output a summary:

code
## CI Fix Summary
- Run: #<run-id> (<branch>)
- Failed job: <job-name>
- Root cause: <description>
- Fix: <what was changed>
- Local verification: PASS / FAIL

Rules

  • Always reproduce locally before fixing — don't guess at fixes
  • If the failure is flaky (passes locally, fails in CI), check for:
    • Race conditions / timing issues
    • Missing env vars in CI
    • Different Node.js versions
    • CI-specific caching issues
  • Don't disable or skip tests to "fix" CI — fix the underlying issue
  • Close the Playwright browser when done: mcp__playwright__browser_close