| name | ci-fix |
| description | Diagnose and fix GitHub Actions CI failures for Rust projects. Use when CI fails, tests timeout, or linting issues occur. Captures common patterns from CLAUDE_INSIGHTS_REPORT.md. |
CI Fix Skill
Diagnose and fix GitHub Actions CI failures using patterns from past CI issues.
Quick Diagnosis Pattern
- Get CI status:
gh run list --limit 5 --json status,conclusion,name,headBranch
- Get failed job logs:
gh run view <run_id> --log --job <job_name>
- Categorize failure:
- lint: fmt/clippy warnings
- test: test failures or timeouts
- build: compilation errors
- security: cargo audit/deny failures
- coverage: coverage threshold missed
- deprecated: old action versions (common!)
Common Fixes (From History)
Deprecated GitHub Actions
grep -r "actions/checkout@v1" .github/workflows/
grep -r "actions-rs" .github/workflows/
Optional Dependency Issues (libclang, wasmtime)
cargo build --workspace --exclude do-memory-mcp
Clippy Lint Allow-List
./scripts/code-quality.sh clippy --workspace 2>&1 | grep "warning:"
Coverage Threshold
cargo tarpaulin --workspace
Benchmark Timeout
Check Quick Check Status CANCELLED after 15m
Insta snapshot fails only on macOS
Fix Commands
cargo fmt --all
cargo clippy --workspace --fix --allow-dirty
cargo test --workspace -- --nocapture
cargo audit
cargo deny check
cargo build --workspace
Success Criteria
- All CI jobs pass
- No new warnings introduced
Codecov Patch Coverage Gap Fix
When Codecov reports "Patch coverage is X% with N lines missing coverage":
Step 1: Parse the Report
Identify files with missing lines from the Codecov comment:
| File | Patch % | Missing Lines |
|------|---------|---------------|
| path/to/file.rs | 0.00% | 24 Missing |
Step 2: Locate Uncovered Code
For each file, read the specific lines identified. They are typically:
- New functions without tests
- Extracted submodules (refactored code moved to new files)
- Changed branches not exercised by existing tests
Step 3: Write Targeted Tests
Add tests to the existing #[cfg(test)] mod tests in each file, or to a sibling test file:
- For new public functions: unit test exercising the function directly
- For new structs: test Default, Debug, Clone impls + key methods
- For refactored code: test that the extracted module works identically to before
- For branch coverage: test each match arm / if-else branch
Step 4: Verify
cargo nextest run -p <crate> -E 'test(<test_name_pattern>)'
cargo clippy --workspace -- -D warnings
Step 5: Commit
Single atomic commit: test(coverage): add tests for Codecov patch gaps in N files
Common Patterns
- Extracted submodule (e.g.
stats.rs from wrapper.rs): test the new module's public API directly
- New monitoring metric: test the recording method + snapshot/getter
- New heuristic function: test boundary conditions (empty input, short/long input, edge cases)
- New StorageType enum: test Debug, Clone, and pattern matching
- Changes committed if needed