evidence-before-claims
Skill1 starsChanged 3 months agoMITView on GitHub
Use before claiming ANYTHING works, passes, is fixed, or is done — before every commit, PR, task hand-off, or "it should work now". Triggers on the urge to say done, or words like "should", "probably", "that fixes it", "all green". Not for writing the failing test that drives new code — that's test-first
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/beads.mdcCursor rule
- beadsSkill
- builderSkill
- consulting-codexSkill
- dispatching-subagentsSkill
- finishingSkill
- hacking-workflowSkill
- naming-as-designSkill
- planningSkill
- reading-like-proseSkill
- reviewing-workSkill
- shapingSkill
- spike-and-stabilizeSkill
- subtraction-firstSkill
- test-firstSkill
- using-beadsSkill
- using-hackinatorSkill
- using-worktreesSkill
- walking-skeletonSkill
- whittlerSkill
- writing-skillsSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 4 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 25
Before any success claim, run this gate:
- Distinctive: line 36
If you can't run the proving command, you don't claim success.
- Distinctive: line 42
Ask: what could this edit plausibly falsify?
- Distinctive: line 80
When a subagent or tool reports success, that is a *claim*, not evidence.
≈ “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
Evidence-Before-Claims
Overview
Core principle: You may not claim something works until you have run the proving command in this message and read its output. Evidence first, claim second — always. "Should work" is not a status; it's a hope.
The Iron Law
NO COMPLETION CLAIM WITHOUT FRESH VERIFICATION EVIDENCEFresh means now, in this turn — not "I ran it earlier," not "it passed last time." Code changed since then, or you wouldn't be claiming anything. A prior green run does not certify the current tree.
The Gate
Before any success claim, run this gate:
- IDENTIFY the command that would prove the claim (the build, the test, the actual run that exercises the change — not a proxy).
- SCOPE it to the change's blast radius — the set of behavior this edit could plausibly break. Not "the one test I wrote"; not "everything, always." See below.
- RUN it fresh, at that scope, in full. No
--fast, no bailing after the first green line. - READ the whole output and the exit code. Errors hide in the middle; exit code is the verdict.
- VERIFY it actually shows what you're about to claim — the right thing passed, not just something.
- THEN claim — and say what you ran and what you didn't.
If you can't run the proving command, you don't claim success; you say what you verified and what you didn't.
Scope by Blast Radius
Verification breadth is a judgment, not a reflex. Running everything for a typo-fix trains everyone (including you) to stop reading the output; running one test for a signature change ships the break. Ask: what could this edit plausibly falsify? Test that, plus one ring out.
| The change | Proving scope |
| Comment, docstring, formatting, dead-code deletion | The build/lint. No behavior changed, so no behavior test is proving anything. |
| Body of a private function, no signature change | That unit's tests + its direct callers' tests. |
| Public signature, shared type, exported interface | Every caller — find them (grep/LSP), don't guess. Then the suite for that component. |
| Bug fix | The reproducing test (red→green) + the suite around the module it lives in. |
| Shared utility, base class, or anything with many callers | Full suite. "Widely used" is the blast radius. |
| Build config, dependency bump, toolchain, CI, codegen, lockfile | Full suite, clean build. These break things nothing points at. |
| Data migration, serialization format, persisted schema | Full suite + the round-trip/compat path, both directions. |
| Concurrency, locking, error paths, security boundaries | Full suite, and the targeted tests run repeatedly if they're timing-sensitive. |
Escalate when the signal is ambiguous. A failure you can't immediately explain, a flaky result, a suite you haven't run in a while, a diff that grew past what you predicted — widen to full. Cheap suites bias toward full; if the whole thing takes 30 seconds, scoping is a waste of thought.
Scope-down never applies to the final landing gate. The narrow scope proves a slice. finishing still runs the repository's prescribed gate on the tree that actually lands.
Say the Scope Out Loud
A claim inherits the scope of its evidence, so state both together:
"
authunit tests + the 3 call sites pass (17 tests). I did not run the integration suite — nothing here crosses a process boundary."
That sentence is falsifiable: the user can immediately tell you if your blast-radius call was wrong. "Tests pass ✅" hides the judgment and makes it unauditable.
This Applies to Paraphrases Too
The law covers the meaning, not just the exact word "done." "That should fix it," "all green," "ready to merge," "the tests are passing," "🎉 Perfect!" — every one is a completion claim and needs fresh evidence behind it.
Don't Trust Reports — Verify Them
When a subagent or tool reports success, that is a claim, not evidence. Verify it against reality — the VCS diff, the actual output, the running artifact. Agents can be confidently wrong; "the implementer said it's done" is not the same as "it's done."
Red Flags — STOP, You're About to Claim Without Evidence
| Signal | What to do |
| "It should work now" | Run it. "Should" means you haven't. |
| "Perfect! / Done! / All set!" | Where's the command output? Run it first. |
| "The linter passed, so we're good" | A linter is not a build is not a test. Run the real proving command. |
| "The subagent reported success" | Verify via diff/output. Reports aren't evidence. |
| "I only changed one line" | One line breaks builds. Run it. |
| "I'm pretty sure the other tests still pass" | Sure isn't verified. Name the blast radius and run it. |
| "It's just a small change" | Size isn't blast radius. A one-word rename of an exported symbol is small and global. |
| "The full suite is slow, I'll skip it" | Fine if you scoped deliberately and say so. Not fine as a silent default. |
Common Mistakes
- Verifying only the new test. The new test passing proves the feature exists, not that it left everything else standing. One ring out is the minimum.
- Reflexive full-suite as a substitute for thinking. It looks rigorous and costs nothing to type, but a 10-minute suite you don't read is weaker evidence than 30 focused seconds you do.
- Scoping by what's convenient instead of by risk. "That suite is slow/flaky/needs a DB" is a reason to fix it or flag it, not a reason to declare it out of the blast radius.
- Silent scoping. Narrowing is legitimate; hiding that you narrowed is not. Say what you skipped.
- Reading the exit code but not the output (or vice versa). You need both: green exit and the right thing in the log.
- Stale evidence. Output from before your last edit certifies nothing about the current tree.
- Claiming for the human what you'd never claim for yourself. The bar is the same whether it's a status update or a merge.
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.

