| name | fix-ci |
| description | Investigate and fix the latest failing CI workflow |
| user-invocable | true |
| argument-hint | [run-id] |
Fix CI Workflow
Investigate the latest CI failure, reproduce locally, and fix it.
Steps
1. Identify the Failure
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:
| Type | Indicators |
|---|
| typecheck | error TS, tsc --noEmit |
| lint | eslint, warning/error with rule names |
| unit test | vitest, FAIL, expect( |
| e2e test | playwright, spec.ts, timeout, locator |
| build | npm run build, vite build, rollup |
| dependency | npm ci, ERESOLVE, peer dep |
Extract the exact error message, file path, and line number.
Use superpowers:systematic-debugging to find root cause before attempting any fix.
3. Reproduce Locally
Run the failing CI step locally from apps/web/:
| CI Step | Local Command |
|---|
| typecheck | npm run typecheck |
| lint | npm run lint |
| unit test | npm run test |
| e2e test | npm run test:e2e |
| build | npm run build |
| install | npm 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:
- Start the dev server if not running: check
lsof -i :3000
- Navigate to the failing page:
mcp__playwright__browser_navigate
- Take a screenshot:
mcp__playwright__browser_take_screenshot
- Check console errors:
mcp__playwright__browser_console_messages
- Check network failures:
mcp__playwright__browser_network_requests
- Get the accessibility tree:
mcp__playwright__browser_snapshot
- Interact as the test would — click, fill forms, etc.
- 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:
cd apps/web
Then run the full quality suite to ensure no regressions:
cd apps/web
npm run typecheck
npm run lint
npm run test
npm run build
7. Report
Output a summary:
## 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