Coverage Ratcheting Skill
Enforce a coverage ratchet: coverage for each package must never decrease from its high-water mark.
Trigger Conditions
- Test suite run completes with coverage data
- PR is submitted for review
- Coverage thresholds are checked in CI
- User invokes with "coverage check" or "coverage-ratcheting"
Input Contract
- Required: Current coverage data (from
go test -cover) - Optional: Previous coverage baseline for comparison
Output Contract
- Per-package coverage percentages
- Coverage delta from baseline (improved / unchanged / regressed)
- Packages below minimum threshold per rule 123
- Ratchet violations (packages that decreased from high-water mark)
- Recommended test additions to close gaps
Tool Permissions
- Read: Test files, coverage reports, source files
- Write: Coverage baseline file (if updating)
- Shell: Run
go test -coverprofile - Search: Grep for untested functions
Execution Steps
- Run tests with coverage: Execute
go test -coverprofile=coverage.out ./... - Parse coverage: Extract per-package and per-function coverage
- Compare to baseline: Check each package against its previous high-water mark
- Check thresholds: Verify each package meets minimum thresholds per rule 123
- Identify regressions: Flag any package where coverage decreased
- Recommend: For packages below threshold, identify the uncovered functions
- Update baseline: If coverage improved, update the high-water mark
Minimum Thresholds (from rule 123)
internal/service/— 90%internal/repository/— 85%internal/handler/— 80%internal/middleware/— 80%internal/models/— 75%
References
.cursor/rules/123-test-requirement-matrix.mdc