CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/test-coverage-targeter

Builds a "what to test next" recommendation by combining a coverage report (LCOV / Cobertura / coverage.py JSON / Jest JSON / JaCoCo XML) with the PR's `git diff`, ranking uncovered branches by risk × cost - risk weighted by McCabe cyclomatic complexity and code-churn frequency, cost weighted by the unit-test pyramid layer (unit tests cheaper than integration than E2E). Also carries the coverage debt ledger: a weekly per-file drift report over N historical main runs flagging `falling` (line% slid >M pp from peak), `stale` (flat coverage + high churn), and `orphan` (lost last covering test) files, whose rows feed the same targeting. Emits a prioritized list with concrete file:line targets and the test layer recommended for each. Use when a team has the budget to write 5 - 10 new tests and needs help picking which uncovered code to target first instead of blindly chasing 100% coverage, or when specific modules are eroding silently while whole-repo coverage looks fine.

64

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Quality

Content

63%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A genuinely actionable, well-sequenced procedure with concrete commands, code, and worked examples. Its weaknesses are token efficiency — background explanations of the test pyramid and cyclomatic complexity with repeated verbatim quotes — and the absence of any bundle structure despite referencing a script the CI example expects to exist.

Suggestions

Trim the background concept explanations: keep the McCabe formula and one-line risk caveat, and drop the threshold blockquote and the two long Fowler quotes (the References section repeats them nearly verbatim) — the body should assume Claude knows what cyclomatic complexity and the test pyramid are.

Split the per-format parsing details (LCOV BRDA / Cobertura condition-coverage / Jest b-field / JaCoCo counters) and the coverage debt ledger into references/ files, keeping SKILL.md as the 8-step overview with well-signaled one-level-deep links.

Ship scripts/coverage_targets.py (the CI snippet invokes it) or rewrite the snippet to inline the logic so no nonexistent bundle file is referenced.

DimensionReasoningScore

Conciseness

The core procedure is efficient, but the body over-explains concepts Claude already knows: the full McCabe threshold-convention blockquote ('1 - 10: Simple procedure, little risk'...), two long verbatim Fowler quotes ('UI tests are brittle, expensive to write, and time consuming to run'), and a References section that repeats the same quoted rationale nearly verbatim. This is more than the 'minor instances' of anchor 4 but far from the heavily padded anchor 2.

3 / 5

Actionability

Mostly executable guidance: copy-paste commands (`git log --since='90 days ago' --format= -- src/checkout/cart.ts | wc -l`, `radon cc src/ -a`, `npx complexity-report src/ -f json`), concrete risk_weight/layer functions, exact record formats to parse, a worked render example, and ready CI YAML. It falls short of anchor 5 because the Python snippets depend on undefined helpers (mccabe_complexity, git_churn, normalize) and the CI snippet invokes scripts/coverage_targets.py, which does not exist in the bundle.

4 / 5

Workflow Clarity

The 8 steps (Inputs → Extract → Risk → PR-touch → Cost → Rank → Render → CI advisory) are clearly numbered and sequenced, with failure-mode checkpoints woven in (`fetch-depth: 0` or 'every file looks low-churn', skipping `pragma: no cover` / `istanbul ignore`, advisory-not-gating). The gap that keeps it at anchor 4 rather than 5 is the absence of an explicit validation step (e.g., verifying the coverage report parsed correctly before ranking).

4 / 5

Progressive Disclosure

The skill is a ~350-line monolithic SKILL.md with no references/ files: per-format parsing details (LCOV BRDA / Cobertura / Jest b-field / JaCoCo counters) and the entire second debt-ledger workflow are inline and clearly belong in separate reference files. The CI example also points to scripts/coverage_targets.py that is not shipped in the bundle. Structure is good, matching anchor 3 ('content that should be separate is inline') rather than anchor 4.

3 / 5

Total

14

/

20

Passed

Description

88%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A dense, highly concrete description that explicitly answers both what the skill does and when to use it, with genuinely natural trigger scenarios. It is on the long side — the ledger's flag definitions (falling/stale/orphan thresholds) are detail that belongs in the body rather than the description — and it misses a few common synonyms like 'code coverage'.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions with comprehensive coverage: combining a coverage report with the PR's git diff, ranking uncovered branches by risk × cost (complexity, churn, pyramid layer), running a weekly per-file drift ledger flagging falling/stale/orphan files, and emitting a prioritized file:line list with recommended test layers. It clearly matches the 'multiple specific concrete actions; comprehensive coverage' anchor rather than the level-4 anchor, which allows gaps in coverage.

5 / 5

Completeness

Both questions are explicitly answered: the 'what' ('Builds a "what to test next" recommendation... Emits a prioritized list with concrete file:line targets and the test layer recommended for each') and a concrete 'Use when...' clause with two specific trigger scenarios (5-10 test budget allocation; silent per-module erosion). This matches the anchor-5 example structure exactly.

5 / 5

Trigger Term Quality

Good natural trigger phrases ('what to test next', 'picking which uncovered code to target first', 'budget to write 5 - 10 new tests', 'modules are eroding silently') plus tool/format names (LCOV, Cobertura, Jest, JaCoCo). It falls short of anchor 5 because common user variations like 'code coverage', 'test gaps', or 'low coverage' are absent, but it is well above anchor 3's 'missing common variations'.

4 / 5

Distinctiveness Conflict Risk

The risk × cost targeting niche and debt-ledger triggers are distinct, but 'combining a coverage report' as a trigger overlaps with closely related sibling skills (coverage parsers, coverage-diff reporters) that share the coverage-report trigger. Mostly distinct with minor overlap risk fits anchor 4; anchor 5 would require minimal conflict with those siblings.

4 / 5

Total

18

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents