AI agent skill · by @proffesor-for-testing
Coverage Guard
Use when you want to prevent coverage regressions during development. Activate with /coverage-guard to warn when coverage drops below threshold after code changes.
Archived 2026-10-23 · Source updated 2026-09-13 · License: MIT. Check the original repository for the latest version.
SKILL.md instructions
# Coverage Guard Mode
When activated, checks coverage after test runs and warns if it drops below the configured threshold.
## What It Does
After any test execution (via Bash tool), compares coverage to the threshold in config.json. Warns (doesn't block) if coverage decreased.
## Activation
```
/coverage-guard
```
## Configuration
Edit `config.json` in this skill directory to set thresholds:
```json
{
"thresholds": {
"statements": 80,
"branches": 70,
"functions": 75,
"lines": 80
},
"coverageCommand": "npx jest --coverage --coverageReporters=json-summary",
"coverageFile": "coverage/coverage-summary.json"
}
```
## Hook Configuration
```json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hook": ".claude/skills/coverage-guard/scripts/check-coverage.sh",
"condition": "command contains 'jest' OR command contains 'vitest' OR command contains 'npm test'"
}
]
}
}
```
## Enforcement Logic
```bash
#!/bin/bash
# check-coverage.sh
COVERAGE_FILE="coverage/coverage-summary.json"
THRESHOLD=80
if [ -f "$COVERAGE_FILE" ]; then
STATEMENTS=$(jq '.total.statements.pct' "$COVERAGE_FILE")
BRANCHES=$(jq '.total.branches.pct' "$COVERAGE_FILE")
if (( $(echo "$STATEMENTS < $THRESHOLD" | bc -l) )); then
echo "WARNING: Statement coverage ($STATEMENTS%) below threshold ($THRESHOLD%)"
echo "Coverage dropped — check which files lost coverage."
fi
if (( $(echo "$BRANCHES < 70" | bc -l) )); then
echo "WARNING: Branch coverage ($BRANCHES%) below 70%"
fi
fi
```
## Gotchas
- Coverage check runs AFTER the test command — if tests crash, no coverage report is generated
- Coverage-summary.json must be configured as a reporter — default Jest config may not include it
- Threshold comparisons use floating point — `79.999%` will trigger below `80%` threshold
- Branch coverage is typically 10-15% lower than line coverage — set thresholds accordingly