Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Runs frontend unit tests with coverage, analyzes coverage reports, and implements meaningful tests to increase coverage by ~0.2%. Use when you want to systematically improve frontend test coverage with high-value test cases.
.claude/skills/streamlit-improving-frontend-coverage/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -18% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-04 | ✓→✗ | ▼ Worse | -49% | 0% |
| case-19 | ✓→✗ | ▼ Worse | -44% | 0% |
Increase frontend unit test coverage by ~0.2% through meaningful tests that add real value.
Be fully autonomous — Do NOT stop or pause to ask for confirmation. Keep iterating (analyze → implement → verify) until the 0.2% coverage target is reached. If you encounter ambiguities about what to test, make a reasonable choice and proceed.
Step 1: Run tests with coverage
bashCOVERAGE_JSON=1 make frontend-tests # ~5 min
Reports generated in frontend/coverage/:
coverage-summary.json - Per-file percentages (lines, branches, functions)coverage-final.json - Line-level data with uncovered line numbers (hit count 0 in s, f, b maps)Step 2: Analyze and prioritize
Read coverage-summary.json to find files with:
lib/src/components/utils/src/Skip: >97% coverage, auto-generated, .d.ts, test files.
Step 3: Implement tests (in subagent)
Launch a subagent to implement tests for each prioritized file. Provide the subagent with:
coverage-final.jsonThe subagent should:
cd frontend && yarn test path/to/Component.test.tsxStep 4: Verify and iterate
bashcd frontend && yarn test path/to/Component.test.tsx # Run new tests COVERAGE_JSON=1 make frontend-tests # Measure progress
Repeat steps 2-4 until coverage improves by ≥0.2%, then run make check.
Step 5: Simplify, review, and address feedback
Once all tests pass and coverage target is met:
simplifying-local-changes subagent to clean up and simplify the code changes. Wait for completion.reviewing-local-changes subagent to review the changes. Wait for completion and read the review output.DO test: Conditional rendering, user interactions, prop variations, error handling, accessibility, edge cases (null, empty, max values).
DON'T test: Pass-through props, styling, library internals, implementation details, already well-covered code.
Coverage exclusions: Use /* istanbul ignore next */ sparingly for code that genuinely doesn't need testing. Always include a reason (e.g., /* istanbul ignore next -- defensive */):
/* istanbul ignore next -- browser-only */)/* istanbul ignore next -- defensive */)/* istanbul ignore next -- exhaustive */)<Component>.test.tsx/checking-changes after implementing tests| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 6,532 | 16,616 | +154% | 1 | 1 | 0% | 219 | 1,011 | +362% | 0 | 0 | — |
case-02 | fail→fail | 5,749 | 9,694 | +69% | 1 | 1 | 0% | 203 | 1,059 | +422% | 0 | 0 | — |
case-03 | fail→fail | 12,587 | 6,369 | -49% | 1 | 1 | 0% | 269 | 1,019 | +279% | 0 | 0 | — |
case-04 | pass→fail | 46,324 | 8,172 | -82% | 1 | 1 | 0% | 2,348 | 1,202 | -49% | 0 | 0 | — |
case-05 | pass→pass | 37,162 | 11,940 | -68% | 1 | 1 | 0% | 2,999 | 2,650 | -12% | 0 | 0 | — |
case-06 | pass→pass | 18,056 | 141,315 | +683% | 1 | 1 | 0% | 2,819 | 2,304 | -18% | 0 | 0 | — |
case-07 | fail→fail | 26,510 | 21,561 | -19% | 1 | 1 | 0% | 2,287 | 1,128 | -51% | 0 | 0 | — |
case-08 | pass→pass | 14,287 | 8,015 | -44% | 1 | 1 | 0% | 2,280 | 1,748 | -23% | 0 | 0 | — |
case-09 | pass→pass | 20,367 | 7,121 | -65% | 1 | 1 | 0% | 1,633 | 1,836 | +12% | 0 | 0 | — |
case-10 | pass→pass | 11,039 | 8,061 | -27% | 1 | 1 | 0% | 1,845 | 1,962 | +6% | 0 | 0 | — |
case-11 | pass→pass | 15,200 | 10,298 | -32% | 1 | 1 | 0% | 2,395 | 2,549 | +6% | 0 | 0 | — |
case-12 | pass→pass | 12,950 | 18,963 | +46% | 1 | 1 | 0% | 2,228 | 2,841 | +28% | 0 | 0 | — |
case-13 | fail→pass | 11,943 | 5,235 | -56% | 1 | 1 | 0% | 1,521 | 1,402 | -8% | 0 | 0 | — |
case-14 | fail→fail | 15,169 | 8,237 | -46% | 1 | 1 | 0% | 1,856 | 1,199 | -35% | 0 | 0 | — |
case-15 | fail→pass | 16,434 | 3,817 | -77% | 1 | 1 | 0% | 1,663 | 1,360 | -18% | 0 | 0 | — |
case-16 | fail→pass | 23,565 | 4,735 | -80% | 1 | 1 | 0% | 1,757 | 1,324 | -25% | 0 | 0 | — |
case-17 | pass→pass | 14,835 | 9,639 | -35% | 1 | 1 | 0% | 2,215 | 1,523 | -31% | 0 | 0 | — |
case-18 | pass→pass | 17,158 | 10,883 | -37% | 1 | 1 | 0% | 2,473 | 2,381 | -4% | 0 | 0 | — |
case-19 | pass→fail | 17,764 | 3,933 | -78% | 1 | 1 | 0% | 2,018 | 1,126 | -44% | 0 | 0 | — |
case-20 | pass→fail | 26,545 | 10,116 | -62% | 1 | 1 | 0% | 2,370 | 2,366 | -0% | 0 | 0 | — |
case-21 | pass→pass | 31,018 | 5,421 | -83% | 1 | 1 | 0% | 1,782 | 1,317 | -26% | 0 | 0 | — |
case-22 | fail→fail | 9,217 | 2,632 | -71% | 1 | 1 | 0% | 1,200 | 1,077 | -10% | 0 | 0 | — |
case-23 | fail→fail | 39,055 | 12,023 | -69% | 1 | 1 | 0% | 2,505 | 1,215 | -51% | 0 | 0 | — |
case-24 | pass→pass | 34,786 | 12,666 | -64% | 1 | 1 | 0% | 1,562 | 1,490 | -5% | 0 | 0 | — |
case-25 | fail→fail | 15,425 | 3,148 | -80% | 1 | 1 | 0% | 2,080 | 1,173 | -44% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 18 counted toward the lift figure. The other 7 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of 0 percentage points is the difference between those two pass rates over the 18 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.