regression-proof
Skill3 starsChanged 29 days agoMITView on GitHub
Prove a change before claiming it is done - judge lint, typecheck, tests and git push by their exit codes rather than by reading output, and show that a bug fix's regression test fails without the fix. Use before saying "tests pass", "lint is clean", "pushed" or "fixed in <sha>"; before opening or updating a pull request; whenever a command is piped into grep, tail or head; and whenever a bug fix or false-positive fix ships with a new test. For whether a measured number (a score, a timing, an eval result) can be credited to a change, use `explain-the-number`.
- Commits and pushes
1 other project uses a version of this.
Adopted by
Most recently taken up by
- Neeeophytee/finding-unknowns-skillstheir own version, first seen Sep 9, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- Neeeophytee/finding-unknowns-skills★ 339same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- confluence-jira-linksSkill
- diagnosing-bugsSkill
- epic-reviewSkill
- explain-the-numberSkill
- grillingSkill
- handoffSkill
- leader-1-1-prepSkill
- llm-integrationSkill
- no-ai-attributionSkill
- open-in-my-browserSkill
- pick-upSkill
- plain-writingSkill
- researchSkill
- retroSkill
- security-audit-runnerSkill
- skill-collision-auditSkill
- supervisorSkill
- tddSkill
- ticket-digestSkill
- ticket-trimSkill
- ticket-writeSkill
- writing-for-agentsSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 6 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
A gate passed only if its exit code was 0: Not if the output "looked clean".
- Very specific: line 27
Run each gate as its own step, with no pipe, and capture the code: npm run lint > /tmp/lint.txt 2>&1.
- Distinctive: line 30
Run every gate even after one fails, so one report covers all of them.
- Very specific: line 32
Never chain a commit or push after a gate with ;.
- Very specific: line 34
After a push, confirm the remote: git ls-remote origin refs/heads/<branch> must equal git rev-parse HEAD.
- Distinctive: line 42
Use this for any bug fix or false-positive fix that adds or changes a test.
- Distinctive: line 44
Commit the work locally (it does not need to be pushed).
- Distinctive: line 60
Run only the new test there.
- Very specific: line 70
Remove the worktree: git worktree remove --force /tmp/proof (--force because the copied tests are uncommitted changes there).
- Distinctive: line 73
Put the verdict in the PR's test plan, with the command and both exit codes.
- Very specific: line 78
When reporting a change as done, give one line per gate with its exit code, the push check (remote head = <sha>), and for a fix, the proof …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Regression proof
Two habits that each cost a CI round, or a reviewer's trust, every time they were skipped:
- A gate passed only if its exit code was 0. Not if the output "looked clean".
- A regression test counts only if it fails without the fix. A test that passes both ways would not have caught the bug.
Part 1: exit codes, never output
A pipe replaces a command's exit code with the last command's. Each of these really happened:
| What ran | What it reported | What was true |
npm run lint | grep -E "error|warning" | clean | prettier printed [warn] file.ts and CI failed on formatting |
npm test | grep …; git commit; git push | pushed | a test was failing; the grep succeeded, so the chain went on |
git push -q 2>&1 | tail -1; echo $? | 0 | the push had failed; 0 was tail's exit code. Replies then cited a sha that was not on the remote |
Rules:
- Run each gate as its own step, with no pipe, and capture the code:
npm run lint > /tmp/lint.txt 2>&1; echo "lint=$?". Read the file only to explain a non-zero code. - Run every gate even after one fails, so one report covers all of them. If the project has a single command that runs every CI gate and summarizes by exit code, use it.
- Never chain a commit or push after a gate with
;. Push in a separate step, after every gate reported 0. - After a push, confirm the remote:
git ls-remote origin refs/heads/<branch>must equalgit rev-parse HEAD. Only then write "fixed in<sha>" anywhere. - In a worktree you did not create, check
git rev-parse --abbrev-ref @{upstream}first; a branch trackingorigin/mainpushes somewhere you did not intend, or not at all. - Report codes, not adjectives:
typecheck=0 lint=0 test=0, not "all green".
Part 2: the test must fail without the fix
Use this for any bug fix or false-positive fix that adds or changes a test.
- Commit the work locally (it does not need to be pushed).
- Make a scratch worktree at the merge base, outside the checkout:
base=$(git merge-base origin/main HEAD) head=$(git rev-parse HEAD) git worktree add --detach /tmp/proof "$base" - Copy the branch's tests only into it: test files, fixtures and test helpers, nothing
from the source tree. List what changed under the test directory, then check those paths
out from the branch:
Reuse the checkout's dependencies (a symlinkedgit diff --name-only --diff-filter=AM "$base" "$head" -- tests/ git -C /tmp/proof checkout "$head" -- <the test paths listed>node_modules, the same virtualenv) unless the fix changed them. - Run only the new test there. Then run it on the branch.
- Read the verdict:
| Without fix | With fix | Verdict |
| fails on an assertion | passes | proves: keep it |
| passes | passes | does not prove: rewrite it so it fails against the base |
| fails to load, or fails because a name the fix added does not exist | passes | no verdict: the test only calls new code. Keep it, and if the fix changed existing behavior, add or point at a test of that behavior and prove that one |
| fails | fails | the test is broken; fix it before anything else |
- Remove the worktree:
git worktree remove --force /tmp/proof(--forcebecause the copied tests are uncommitted changes there).
Put the verdict in the PR's test plan, with the command and both exit codes. Only proves is evidence that the test guards the bug.
Output
When reporting a change as done, give one line per gate with its exit code, the push check
(remote head = <sha>), and for a fix, the proof verdict for each new test.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

