install
source · Clone the upstream repo
git clone https://github.com/dlupiak/claude-session-dashboard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/dlupiak/claude-session-dashboard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/fix-ci" ~/.claude/skills/dlupiak-claude-session-dashboard-fix-ci && rm -rf "$T"
manifest:
.claude/skills/fix-ci/SKILL.mdsource content
Fix CI Workflow
Investigate the latest CI failure, reproduce locally, and fix it.
Steps
1. Identify the Failure
# 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:
| Type | Indicators |
|---|---|
| typecheck | , |
| lint | , / with rule names |
| unit test | , , |
| e2e test | , , , |
| build | , , |
| dependency | , , |
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 | |
| lint | |
| unit test | |
| e2e test | |
| build | |
| install | |
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 # Run the specific failing command
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