Instal·la
npx skillscat add bex-co/beancount-io/routine-useless-test-pruner Instal·la des del registre de SkillsCat.
Task: Delete tests that cannot fail
Usage: /routine-useless-test-pruner [package-or-path]
Find tests that pass no matter what the code does, prove it by sabotaging the
covered behavior and watching them stay green, delete them, and ship via/ship.
Contract
Read .agents/skills/routine-shared/contract.md first — preconditions,
scope resolution, verify gates, ship protocol, budget, universal STOPs. Floor
even without it: never ship red; one finding per ship; anything in aDO_NOT_DO.md is a hard STOP.
Workflow
1. Scope
Resolve scope per the contract. Test roots: mobile/src/__tests__/ (run by the
jest-lite runner), dashboard and backend __tests__/ beside features, cli's
pytest suite.
2. Discover
Read test files for the shapes that can't fail:
- No meaningful assertion (only "doesn't throw" on code that can't throw).
- Tautologies — asserting a mock returns the value the test just told it to
return. - Mock-everything tests where the unit under test is itself mocked away.
- Exact or near-exact duplicates of a neighboring test.
3. Prove it — mechanically, every time
For each candidate: temporarily break the behavior the test claims to cover
(invert the condition, corrupt the return value), run the test, and observe it
still green. Then revert the sabotage immediately. A test that went red is
a real test — leave it and move on. Reading alone is never proof.
4. Fix
Default: delete the test. Replace it with a real assertion only when the
intended behavior is unambiguous from the test's own name/context and the
replacement is a few lines — otherwise deletion is the honest change.
5. Verify
git diffmust show only test changes — every sabotage fully reverted.
This check is part of the finding, not cleanup; a shipped sabotage is the
worst outcome this routine has.- Owning package's full gate green.
6. Ship
Compose /ship for this one pruning. Loop within budget.
What NOT to do
- Never delete a test that went red under sabotage, however ugly it looks.
- Never prune a test for being slow, intermittent (
routine-flaky-test-fixer),
or attached to code some other routine is deleting. - Never leave sabotage in the tree — verify the revert with
git diffbefore
staging, every time. - Don't batch prunings across files into one ship; each finding stays
reviewable on its own.
Arguments
$ARGUMENTS