Test first verifier
Self-driving agent loop for Claude Code. It turns an issue into a planned, verified, committed change, and lets you run, supervise, and chain workplans from the shell.
npx -y skills add benman1/wiggum --skill test-first-verifierAssembled 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.
- 1 stars1 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.
What its author says it does
Copied from the file, not written here
Implement a code change with trustworthy verification — plan and list the files that change, verify assumptions (APIs exist, imports resolve, config values), write tests first when none cover the change, then gate completion on tests + lint + type-check + happy/edge/failure spot checks. Use when implementing or fixing code and you want it actually verified, not assumed.
SKILL.md
4.1 KB, as published. Nobody here has run it
Test-First Verifier
A discipline for implementing a code change you can actually trust. Apply it to: $ARGUMENTS
If no argument is given, apply it to the task currently under discussion.
The rule underneath every step: a claim is not verified until you have run the thing and seen the result. "Should work" is not "works."
0. Discover the project's checks (once, before anything else)
Find the real commands for tests, lint, and type-check for this repo. Look in this order and stop at the first that applies:
package.jsonscripts(e.g.test,lint,type-check,tsc)Makefile/justfiletargets.wiggumrc/.wiggumrc.example— use theverify =andautofix =lines verbatimpyproject.toml/tox.ini/setup.cfg(pytest, ruff, mypy),Cargo.toml,go.mod, etc.README.md/CONTRIBUTING.mdtesting section
Write down the exact command you'll use for each category. If you cannot find one of the three, say so explicitly now — do not silently skip it later.
1. Before writing code
- State the plan in 2–5 bullets.
- List the exact files you expect to create or modify, by path.
- Flag which listed files do not exist yet.
2. Verify assumptions (cheap to check now, expensive to get wrong later)
Before writing logic that depends on them, confirm — don't assume:
- APIs exist. Every function/method/endpoint you'll call: grep or read its definition (in the source or the dependency) and confirm the signature.
- Imports resolve. Every import you'll add: confirm the module is installed and the symbol is actually exported.
- Config values exist. Every config key / env var / flag you rely on: confirm it's defined and read its actual value.
If any assumption can't be confirmed, stop and surface it rather than coding around a guess.
3. Tests first
- If tests already cover this area, run them now to establish a green baseline.
- If no test covers the change, write the minimal test(s) first, pinning the intended behavior. Run them and confirm they fail for the right reason before you implement.
4. Implement
Make the change, scoped to the plan and file list from step 1. If the set of files changes, say why.
5. Run the full check suite (the mechanical gate)
Run the commands from step 0, capturing output, in order:
- tests
- lint
- type-check
If anything fails: fix the source code — never weaken a test or edit config just to go green — and re-run the entire suite from the top. Repeat until clean.
6. Three spot checks (the judgment gate)
Automated tests don't catch everything. Reason through three concrete scenarios and show your work (input → expected → actual), running real values where you can:
- Happy path — a representative valid input produces the expected result.
- Edge case — boundary / empty / large / unusual input still holds.
- Failure case — invalid input or an error condition fails safely, with a clear, intentional error.
7. Completion gate
Do not report the task as done until every line is true, each backed by output you actually saw:
- ✓ Tests pass
- ✓ Lint clean
- ✓ No type errors
- ✓ All three spot checks pass
- ✓ Every assumption from step 2 confirmed
If any item fails or could not be verified, report exactly which one and why. Never round an unverified result up to "done."
Rules
- Never declare completion on an unverified claim.
- If a check command genuinely doesn't exist for this project, state that explicitly — don't pretend it passed.
- Don't edit tests or config to satisfy the gate; fix the code.
- Stay scoped to the task. Verification is the goal, not a license to refactor.