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