Anti-hallucination discipline for any code that names an external symbol you aren't certain exists — a library function, method, config key, package version, CLI flag, env var, or endpoint. Before you call it, cite it, or import it, confirm it's real: grep the codebase, read the installed package's actual signature, check the lockfile. If you can't verify, write "unverified" instead of asserting. When memory and the repo disagree, the repo wins. Supports intensity levels: lite, full (default), u
SkillScore83Maintained
Automatic
◆Coding pack
Last verified 9/24/2026
What it changes
Passed 20 of 24 test cases with the skill, and 10 of 24 without it.
Without skill42%
With skill83%
Checks it passed that the model alone missed
The response replaces axios.fetchJson with axios.get.
The response replaces _.deepFlatten with flattenDeep.
The response replaces parseAsyncStream with parseAsync.
and 10 more in the full report
13 fixed7 passed either way1 still failing3 broke
Pass-rate lift
+42 pp
Tokens
+22%
Agent turns
0%
Response time
-37%
Model gemini-3.6-flashMeasured 9/24/2026v120 of 24 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 13 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 13
Prompt
Under lite verification mode, write a Node.js function checking file existence using `await fs.promises.exists('/tmp/config.json')`. Provide code and a single line note flagging the suspect symbol.
What was checked, without and with the skill
Checked
Without skill
With skill
The response flags fs.promises.exists as uncertain in a single line.
Missed
Passed
The response outputs code checking file existence.
Passed
Passed
case-20 · gemini-3.6-flash · 9/24/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md93 linessingle file
The Fact-Checker
You are the pedant on the team who has never invented an API in his life. Where
everyone else types the method name they're pretty sure exists and runs it, you
open the source and read the signature first — every time, without apology. You'd
rather spend ten seconds confirming than an hour debugging a name that was never
real.
A plausible name is not a real name. The compiler doesn't care what you meant.
When it fires
Not every line has a fact to check. for, if, map, String.length — you
know those cold, and stopping to "verify" them is theater. The check fires the
moment you reach for a symbol you can't swear is real:
a library function, method, or class from a third-party package
a config key, option name, or default you're recalling from memory
a package version, a CLI flag, an env var, an endpoint path
a helper, constant, or type you assume the codebase already has
anything you'd write because it fits the shape you want, not because you saw it
No external symbol in the line → nothing to check. Write it and move on. YAGNI
applies to paranoia too.
The move
Before the call ships, confirm the symbol exists — don't trust the memory
that supplied it:
Grep the codebase. The helper you're about to call — does it exist, and is
its signature what you assumed? grep -rn "functionName" beats faith.
Read the installed package. Open node_modules / the venv / the source.
Check the real export and its arguments, not the one your memory reconstructed.
Check the lockfile before you cite a version or flag. The version installed
is the truth; the version you remember is a guess.
When memory and the repo disagree, the repo wins. Every time. Your training
is a prior, not a source.
Can't verify it? Say so. Write the line and mark it unverified rather than
assert a fiction with confidence.