agentsclimarketplace

Self verification

Skill Topurrra/claude-plugins/plugins/foundational-skills/skills/self-verification

Use before claiming anything is done, fixed, or working, to prove it with evidence against the success criteria and report honestly.From its SKILL.md

Install
npx -y skills add Topurrra/claude-plugins --skill self-verification

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 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

7.7 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it

Skill 07: Self-Verification & Quality Control

Purpose: Prove your work actually does what it should, before you declare it done. Use when: You're about to call anything "done," "fixed," "working," or "complete." Every single time. Don't use when: Never skip it. If the work is truly trivial (a one-line typo fix), the verification is trivial too, but you still do it.


Why this matters

The single biggest quality gap between strong and weak work is this: strong work is verified; weak work is assumed. Weak models and junior engineers routinely announce "done" based on a feeling, the code looks right, it should work, the change seems complete. Then it doesn't run, or it solves the wrong thing, or it breaks something else. Declaring victory without checking is the most common and most damaging habit there is.

This skill is a discipline, not a technique. The hard part isn't knowing how to verify: it's actually doing it every time, especially when you're tired, confident, or under time pressure. Those are exactly the moments verification catches the most.

The core principle

"It should work" is a hypothesis, not a result. You are not done until you have observed it working against the criteria you set. The word "done" is a claim about reality. Back it with evidence you actually gathered, or don't make it.


The verification procedure

Before claiming completion, produce evidence for each of these:

1. It runs

Actually execute it. Not "read it and it looks correct": run it. The number of "obviously correct" changes that fail on first run is humbling and constant.

2. It meets the acceptance criteria

Pull up the success criteria from requirements-and-success-criteria. Walk each one. For each: did you observe it pass? Check the box only when you've seen it, not when you believe it.

3. The unhappy paths behave

Feed it the bad inputs: empty, missing, malformed, too large, wrong type, unauthorized. Confirm each produces the intended behavior (a clear error, not a crash or silent wrong answer). Untested error handling is usually broken error handling.

4. You didn't break anything else

Run the surrounding checks/tests. A change that fixes one thing and breaks two is negative progress. If there are no tests, manually exercise the things most likely to be affected.

5. It solves the actual request

Re-read the original request. Does your result address what was asked, not a nearby thing you found easier? This catches the subtle, expensive failure of confidently solving the wrong problem.

6. No debris left behind

Remove debugging prints, commented-out experiments, temporary files, and dead code introduced along the way. Leave the intended checks/tests; remove the scaffolding.


Report honestly

How you report results is part of quality control. The rules:

  • If a check failed, say so: with the actual output. Don't bury it, don't round "3 of 5 pass" up to "working."
  • If you skipped a step, say you skipped it. "I didn't test the 1M-row case" is valuable; a silent gap is a landmine.
  • Distinguish "verified" from "should work." State plainly which claims you observed and which you're inferring. "Runs correctly on the sample (verified); should scale to production volume (not tested)" is an honest, useful report.
  • Don't hedge a real success into mush, and don't inflate a partial one. Say exactly what is and isn't proven.

A truthful "it's 80% done and here's the failing 20%" is worth more than a false "it's done." The false "done" gets discovered downstream at ten times the cost.


The testing mindset

You don't need a test framework to test. Testing is just deliberately trying to make it fail before reality does.

Think adversarially about your own work

For each piece, ask: how could this be wrong? Then check that specific way. Good self-testers attack their own work harder than any user will.

Cover the classic danger inputs

For any input, run through this list and handle each:

ClassExamples
Empty / zeroempty string, empty list, 0, empty file, no rows
Onesingle element (off-by-one lives here)
Many / hugevery large input (performance, memory, overflow)
Boundaryfirst, last, min, max, exactly-at-the-limit
Malformedwrong type, wrong format, corrupt, partial
Duplicate / repeatedsame item twice, re-running the same operation
Missingnull, absent field, missing file, no permission
Hostileinjection, oversized, deliberately tricky input at trust boundaries

Pick the check that fails loudest if the logic breaks

When you leave a test behind, make it the smallest test that would actually break if the core logic were wrong: not a test that passes no matter what. A test that can't fail proves nothing.


Worked example

Situation: You wrote the --json export and are about to say "done."

Assumed-done (weak): "The function calls json.dumps, so it works. Done."

Verified-done (strong):

  1. Runs: Executed report --json on the sample. ✅ produced output.
  2. Criteria: Piped output into a JSON parser → parses, and the totals round-trip equal to the table version. ✅
  3. Unhappy paths: Ran --json on an empty file → printed {} cleanly, no crash. ✅ Ran on a missing file → clear "file not found," exit code 1. ✅
  4. No regressions: The plain table output still matches. ✅
  5. Actual request: Asked for "export the report as JSON", yes, that's what it does. ✅
  6. Debris: Removed the print(rows) I added while building. ✅

Report: "Verified: --json produces valid JSON matching the table totals on the sample; empty and missing-file cases handled. Not tested: extremely large exports (>100 MB)."

Now "done" is a fact with evidence, and the one untested case is disclosed.


Common failure modes

FailureFix
"Looks right," never runExecute it. Every time.
Declaring done by feelingWalk the acceptance criteria and observe each.
Only testing the happy pathRun the danger-input list.
Ignoring regressionsRun surrounding checks after any change.
Solving a nearby easier problemRe-read the original request; confirm it's addressed.
Inflating partial resultsReport exactly what's proven vs. inferred.
Hiding a failureState failures with their actual output.
Tests that can't failUse the smallest check that breaks if logic breaks.

Red flags: stop, you are not done

  • You're about to say "done" / "fixed" / "works" and haven't run it since the last change.
  • You can't point to the evidence for a completion claim.
  • You tested only that it works, never that it fails correctly.
  • You're rounding a partial result up to "done."
  • You changed something and didn't check what else it touches.
  • You're relieved to be finished and want to skip the check: that relief is the risk.

Definition of done for this skill

  • The work was actually executed, not just read.
  • Every acceptance criterion was observed to pass.
  • Danger inputs / unhappy paths were exercised.
  • Surrounding checks confirm no regressions.
  • The result addresses the original request.
  • Debris removed; intended checks left in place.
  • The report distinguishes verified facts from inferences and discloses any gaps.

See also

  • requirements-and-success-criteria, where the acceptance criteria come from.
  • systematic-debugging, what to do when verification fails.
  • robustness-and-failure-modes, designing so fewer things fail in the first place.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,851. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.