code-verifier
Skill1 starsChanged 39 days agoMITView on GitHub
Verifies code Claude just wrote or edited actually works, is secure, and wasn't declared "done" on faith. Use after writing or editing code, and before telling the user a task is complete, a bug is fixed, or tests pass. Runs the project's real tests/lint/types, scans the diff for the security and correctness bugs LLM-written code is documented to make most often (injection, XSS, unawaited promises, mutable defaults, secrets, invented packages), and checks whether the diff weakened, deleted, or special-cased a test to fake a pass. Use on every task that touches code, even when the user didn't ask for a review.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- MrCipherSmith/goodai-basetheir own version, first seen Jun 12, 2026
- microsoft/aspnetcore-ja-handbooktheir own version, first seen May 17, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- microsoft/aspnetcore-ja-handbook★ 33same name
- MrCipherSmith/goodai-base★ 0same 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 repository5 other files it gives its agents.
- llms.txtllms.txt
- context-saverSkill
- perf-verifierSkill
- prompt-clarifierSkill
- repo-mapSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 0 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
If VERDICT is PARTIAL (tests didn't run — no test framework detected, or none applied to the changed files), tell the user plainly that …
- Very specific: line 21
If nothing needs fixing, VERDICT is PASS.
- Very specific: line 24
Use these for a narrower look, or when check's scope doesn't fit:
- Very specific: line 34
Add # vf: ignore RULE-CODE (or // vf: ignore RULE-CODE) on the flagged line or the line above, when a finding is a genuine false positive …
≈ “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
Code Verifier
Claude's own judgment that code "looks right" is not evidence it works. Published research on LLM-written code backs this up directly, not as a hypothetical: independent testing across 100+ models found close to half of AI-generated code samples contain an OWASP Top-10 vulnerability, with cross-site scripting and log injection failing well over half the time; separate studies put invented ("hallucinated") package names at roughly 5% for commercial models; and controlled studies of coding agents have caught models passing a test by weakening its assertion, deleting it, or hard-coding the exact value it checks, rather than by fixing the underlying bug. None of that shows in code that "looks done." This skill closes the gap: it gives you something to run, not just something to feel confident about.
VF below means python3 <this skill's directory>/scripts/vf.py. It needs only Python 3; a node binary on PATH additionally enables JS/TS syntax checking.
Process
- Finish the code change.
- Run
VF checkfrom inside the repo. With no arguments it checks exactly what changed sinceHEAD(staged, unstaged, and untracked files) — the same scope a reviewer would look at. Pass paths to check specific files instead, or--base <ref>(a commit, branch, or tag) to check everything changed since some earlier point, e.g.--base mainfor a whole PR. - Read the receipt line by line. Each row is
syntax,imports,scan,tamper,tests,lint,types—OK/n/a(fine),FAIL(a real problem),REVIEW(needs a written explanation, not a fix), orNOT RUN(nothing was verified for that row — say so, don't imply it passed). - Fix every
FAILand re-runVF checkuntil it's gone. Do not tell the user the task is done, a bug is fixed, or tests pass while VERDICT starts withFAIL. - If VERDICT is
REVIEW, explain the flagged item in your reply — say why the test change is legitimate (e.g. "the old assertion was wrong because...") or fix it. Silently proceeding past atamperREVIEW is the exact failure mode this skill exists to catch, including in your own edits. - If VERDICT is
PARTIAL(tests didn't run — no test framework detected, or none applied to the changed files), tell the user plainly that correctness was not verified, instead of implying it was. - If nothing needs fixing, VERDICT is
PASS. Mention it briefly; don't paste the whole receipt into the reply.
The individual commands
Use these for a narrower look, or when check's scope doesn't fit:
VF scan [paths]— security/correctness patterns only (see below).--lowincludes minor style findings too.VF imports [paths]— every import/require that doesn't resolve: not stdlib, not in the project, not installed, not declared. This is what catches an invented package name before it ships.--onlinealso checks the real PyPI/npm registry, distinguishing "real package, just not added yet" from "doesn't exist anywhere."VF tamper [--base REF]— compares the diff's test files and CI config against the base ref for weakened assertions, deleted tests, new skip markers, and loosened CI thresholds; also flags code that returns a literal matching one specific test's exact call.VF run [--only tests|lint|types]— just runs the project's own tooling (pytest/npm test, ruff/eslint, mypy/tsc) and reports pass/fail. A run that collects zero tests is reported asFAIL, not skipped as a pass — "no tests ran" is not evidence the code works.
What scan looks for
Python (AST-based) and JavaScript/TypeScript (pattern-based): SQL/command/template injection built from string concatenation, XSS (innerHTML, dangerouslySetInnerHTML, unescaped template response, mark_safe/autoescape off), path traversal from request data, SSRF, insecure deserialization (pickle, unsafe yaml.load), hardcoded secrets, weak hashes on passwords, non-crypto randomness for tokens, disabled TLS verification, mutable default arguments, bare/swallowed exceptions, is compared to a literal, off-by-one loop bounds, unawaited promises/coroutines, and a few more. Only high/medium findings show by default; --low adds style-level ones like == vs ===.
Suppressing a specific finding
Add # vf: ignore RULE-CODE (or // vf: ignore RULE-CODE) on the flagged line or the line above, when a finding is a genuine false positive for this line. Don't suppress a whole file or use a bare # vf: ignore to silence something you haven't actually looked at.
Limits
This is a fast heuristic scanner, not a substitute for a real SAST tool or a human security review on anything sensitive — it will miss vulnerabilities that don't match its patterns, and tamper's test-weakening check only works inside a git repository with a base commit to compare against. Treat a clean VF check as "no known red flags," not as a certificate.
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.

