Regression ratchet
Use when fixing a bug, incident, or regression. In the same change, add the guard that would have caught it — matched to the failure class — so the problem can recur at most once. A fix without its ratchet is half-done.From its SKILL.md
npx -y skills add selamy-labs/agent-skills --skill regression-ratchetAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.1 KB, 441 tokens by cl100k_base, as published. Nobody here has run it
Regression Ratchet
A bug that can silently recur is a bug you will fix twice. The ratchet makes the fix monotonic: the same change that fixes the problem also adds the guard that would have caught it. Quality only goes up — the class you just closed cannot reopen unnoticed.
Same change, not "later"
A follow-up "add tests" task rots while the bug is now invisible (it's fixed today). The guard ships in the fix's own PR, or the fix isn't done. If you're tempted to defer it, you're choosing to debug this again.
Match the guard to the failure class
The guard is whatever would have caught this failure — not always a unit test:
| Failure class | Ratchet |
|---|---|
| Logic bug in code | a unit/behavior test reproducing it |
| Wrong artifact / container / file shape | a structure or build test asserting the shape |
| Config / policy / permission gap | a policy or lint check that fails on the bad config |
| Integration / runtime edge | an integration test or a runtime assertion/precondition |
| Genuinely expensive to test | an alert/monitor that fires on recurrence |
Prove it actually ratchets
The guard must fail on the pre-fix state and go green after — run it red→green. A test that stays green with the bug still present guards nothing; it's theater. If you can't make it fail without the fix, you haven't reproduced the failure yet.
One incident, one ratchet
Add the minimal guard for this class — don't bolt on a speculative suite. The discipline is coverage of what broke, not maximalism. Breadth comes from many incidents each leaving one guard behind, over time.
The test
For the bug you just fixed, answer: "If this exact thing happened again, what would catch it automatically — and is that guard in this PR?" If the answer is "nothing" or "a separate task," the ratchet is missing.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most data analysis skills give in 441 tokens
Counted across 230 of the 242 authors here whose files we hold, read 2026-09-06
- Propose a regression test for each fixed bugin 16 of 230, across 12 files
- Name tests after the bug they preventin 14 of 230, across 10 files
- Test the API response shape, not the implementationin 14 of 230, across 10 files
- Run the test suite before any code reviewin 14 of 230, across 10 files
- Force sandbox mode in the test setupin 14 of 230, across 10 files
- Write regression tests only for bugs already foundin 14 of 230, across 10 files
- Assert sandbox and production paths return the same shapein 14 of 230, across 10 files
- Clear stale state when setting an errorin 13 of 230, across 9 files
- Keep the whole test suite under one secondin 10 of 230, across 6 files
- Run the build type check before code reviewin 10 of 230, across 6 files
- Use vectorized operations instead of row iterationin 9 of 230, across 6 files
- Start bar chart Y-axes at zeroin 8 of 230, across 7 files
Said here and by no other author read
- Add the guard in the fix's own PR
- Match the guard to the failure class
- Verify the guard fails without the fix
- Add the minimal guard for this class
- Ask what would catch this recurrence automatically
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.