An unglamorous opening: truth-first does exist as an Agensi listing, but a search engine attributed it to Addy Osmani's agent-skills — and that repo's 25 skill directories contain no such folder. Which is exactly the disease this class of skill treats. Below: 9 real, installable or readable entries with install commands and a first usable prompt, plus the one criterion worth memorizing — no "unknown" tier means it is binary, and binary fails.
A model lies in two ways: it invents facts (citations, version numbers, URLs) and it invents completion ("tests should pass now"). Skill 21 handed the first to tool grounding; this issue takes the second, plus something harder — making "I don't know" a legal value in the output contract. That is the entire craft here: these skills do not change what the model knows, only the precondition for it to speak.
# 1. The headliner: truth-first (an Agensi marketplace listing)
npx agensi install truth-first
# 2. The hardest completion gate on the official marketplace (one skill inside Superpowers)
/plugin install superpowers@claude-plugins-official
# 3. "Read the official docs first" and "get disproved first"
npx skills add addyosmani/agent-skills --list # see the 25 folder names first
npx skills add addyosmani/agent-skills
# 4. The CLAUDE.md school: paste in permission to say I don't know
/plugin marketplace add instantX-research/anthropic-anti-hallucinate-skills
/plugin install anti-hallucinate@anthropic-anti-hallucinate-skills
Don't wait for auto-trigger. Next time it says "should," paste this back:
You just said the tests "should" pass. Run verification-before-completion:
which command proves that sentence? Run it in full in this message,
paste the exit code and the failure count, then state a conclusion.
truth-first (per that marketplace's skill page, free with 32 installs as of 2026-10; tags include verification / reliability / devops) — kills answering ops questions from remembered system state: it requires reading actual system state, configs and file contents first, grading every claim into Verified / Inferred / Unknown, and delivering a report where each claim carries its evidence (paths, log snippets, command output). Skip it when your work is pure logic rather than machine state — there it is friction only. Stated honestly: agensi.io is blocked by this site's egress policy, so the above comes from a search engine's summary of that page; read its SKILL.md yourself before installing.verification-before-completion (MIT; ~294.1k stars per its GitHub repo page, 2026-10) — kills invented completion, and it is the only one here written as an iron law: "If you haven't run the verification command in this message, you cannot claim it passes." It ships a claim / required evidence / not sufficient table: tests passing needs fresh output with 0 failures; a bug fixed needs the original symptom going green, not "the code changed"; an agent reporting success needs the VCS diff. Skip it when the work is exploratory throwaway scripting — it will demand a full run per sentence.source-driven-development (MIT; ~100.4k stars per its GitHub repo page, 2026-10; 25 skills in the repo) — kills writing framework code from memory: read the dependency file to pin versions (package.json, go.mod…) → fetch the one relevant docs page (not the homepage) → implement what the docs show → cite full URLs in comments and in conversation. It explicitly requires an UNVERIFIED marker when no docs can be found, and names "I'll just say it might be outdated" the worst option of all. Skip it when the change is version-independent: renames, moving files.doubt-driven-development (same repo) — kills it convinced itself and started typing: before a non-trivial decision it spawns a reviewer with fresh context, instructed to disprove rather than approve, over five steps CLAIM → EXTRACT → DOUBT → RECONCILE → STOP. The key design: hand the reviewer the artifact and the contract, never your own conclusion, so it cannot nod along. Three cycles max, then escalate to a human. Skip it when the change is mechanical, a one-liner, or speed was explicitly requested.truth-first under Addy Osmani — that is the counter-example itself. Go look at addyosmani/agent-skills: 25 skill folders, no truth-first. So this series' rule matters doubly here: aggregator sites are for discovering candidates only; names come from the GitHub repo directory or the official marketplace page.This beats "please verify first" on one point: speaking itself becomes a governed action, so "Great!" and "Perfect!" fall inside the gate too — that SKILL.md lists expressing satisfaction among its red flags.
This is the most reusable idea in the issue. With only right/wrong available, anything uncertain must be filed under one of them, and the model's default bias is "right." So every serious attempt adds a third tier: truth-first's Verified / Inferred / Unknown, verify-claim's Verified / Refuted / Inconclusive, source-driven-development's UNVERIFIED. The official side is blunter: the first basic strategy on Reduce hallucinations is literally Allow Claude to say "I don't know", with a sentence you can copy verbatim — "If you're unsure about any aspect or if the report lacks necessary information, say 'I don't have enough information to confidently assess this.'" (per that page, 2026-10).
Both of the skills above carry a two-column table: excuse on the left, rebuttal on the right. "Should work now" → run it. "I'm confident" → confidence is not evidence. "Just this once" → no exceptions. "Different words, so the rule doesn't apply" → spirit over letter. And the sharpest: "fetching docs wastes tokens" → hallucinating an API wastes more.
Only anti-hallucinate below ships install commands; the other four are single-folder skills — copy that folder from the repo into ~/.claude/skills/ or the project's .claude/skills/.
discernment-nudge (official) — kills the answer ends and the reader has no handle to check it: after an answer the user may act on, it appends 2–3 follow-up questions tied to that content (one at a number or claim, one probing an assumption, one at missing context), in the fixed format "A few things worth a second look:", at most once per conversation. Skip it when — it lists this itself — the ask is a simple lookup, a purely educational explanation, creative writing or chat, a reformat of the user's own material, or the user already asked you to verify.anti-hallucinate (MIT; 11 stars per its GitHub repo page, 2026-10) — kills re-pasting your honesty rules into every project: five principles (honesty over helpfulness, never fabricate citations, hedge when uncertain, extra care with facts / dates / names, ask yourself "do I actually know this") packaged so you can curl them straight onto ~/.claude/CLAUDE.md, or install them as a plugin. Skip it when you already have your own honesty section — two copies just cost context. Stated honestly: 11 stars, and "anthropic" in the repo name is borrowed, not official.UserPromptSubmit hook rewriting confirmatory prompts into critical ones (Claude Code only) plus a SKILL.md critical mode plus persistent CLAUDE.md rules. The layering is the lesson; that hook layer is the only design here that actually intercepts the input. Skip it when — 8 stars, 2 commits, and I could not verify the ArXiv number its README cites: read it as a reference design, don't install it as a product.verify-claim (MIT) — kills load-bearing claims nobody checked: rewrite the claim as one falsifiable sentence naming specific files, functions, values, behaviors → match claim type to tool (read, grep, curl, run tests, fetch) → report exact observations rather than summarizing early → return Verified / Refuted / Inconclusive plus a next step. It also states which claims it refuses: vague ones, multi-part ones, predictions about the future. Skip it for facts you could just read, and low-stakes trivia.fact-checker (MIT; ~1.4k stars per its repo page, 2026-10) — kills numbers and quotes in a draft that nobody re-checked: works a four-tier official-source priority, marks what it cannot confirm ❓ Unverifiable instead of deleting it, and requires human confirmation for any edit. Skip it for code work — its object is prose facts, not program behavior.description in its frontmatter. "Before claiming complete / committing / opening a PR" governs invented completion; "when the user asks for facts" governs invented facts. Don't expect one skill to cover both — what you stack is different segments, not duplicates.truth-first and verification-before-completion together, then complain that every sentence needs a command. Both want evidence, but one wants system state (configs, logs) and the other wants an exit code. If you aren't debugging infrastructure, turn the former off.doubt-driven-development additionally spawns a reviewer (it books that cost itself as buying early interception) — so turn it on only for irreversible, cross-module or security-relevant decisions.verify-claim's "skip low stakes," discernment-nudge's "at most once per conversation"); read that section before installing.How to go one layer down: Claude Code's Stop hook fires when it wants to finish, and exit code 2 prevents it from stopping and continues the conversation; the JSON form is {"decision":"block","reason":"..."}, and hookSpecificOutput.additionalContext can feed "3 test failures remain, continue" straight back in (per the official hooks reference, 2026-10). In other words: "did it run the tests" belongs to a hook, not to a skill.
If this lives in your own program rather than a CLI chat, don't lean on prompting — lean on schema. Structured Outputs pins the response to your schema via output_config.format (type: "json_schema"), so status: "verified" | "inferred" | "unknown" and evidence can be required fields — no confident prose can route around the unknown tier any more. Limits worth knowing: no recursive schemas, no minimum/maxLength-style constraints, additionalProperties must be false, and output may not match the schema on a refusal or when max_tokens is hit (per that page, 2026-10).
Do these three today: 1. /plugin install superpowers@claude-plugins-official, then invoke verification-before-completion by hand right before it would say "done" — the most direct payoff of the nine. 2. Copy the official line into your CLAUDE.md: "If you're unsure … say 'I don't have enough information to confidently assess this.'" — free, project-wide. 3. Write three reverse-eval cases where the evidence does not exist, and run the no-skill baseline first.
Add as needed: source-driven-development (framework code) · doubt-driven-development (irreversible or cross-module decisions) · truth-first (debugging and system-state questions; read its SKILL.md first) · discernment-nudge (answers going to non-technical readers) · fact-checker (numbers and quotes in a draft) · one Stop hook (pin "no finishing without a test run" there).
Explicitly don't: install two of the same evidence-demanding kind · treat this class as a CI gate (it fails open) · copy skill names or authors off aggregator sites · accept-test with positive cases only · run a completion gate over exploratory scripts · think "I noted it might be outdated" equals having checked.
output_config.format (json_schema), pinning output to a schema; it can make "unknown" a required field.Stop hook.verify-claim says to skip low stakes outright), and don't test only whether it will say it doesn't know. The reverse eval has to run both ways: build three more cases where the evidence is entirely sufficient and see whether it still dares to conclude. One-directional acceptance reliably produces an assistant that hands every question back to you — that is not honesty, it is deflection.npx agensi install truth-first, the three tiers and the evidence report (per that page, free with 32 installs, 2026-10; this site could not reach agensi.io, so the data comes from a search engine's summary of the page — verify it yourself before installing)source-driven-development's four steps and UNVERIFIED marker, doubt-driven-development's five steps and "don't hand over your own conclusion"; also this issue's counter-example: no truth-first among those 25 folders (MIT; ~100.4k stars per its repo page, 2026-10)[]; four advanced strategies (2026-10)output_config.format / type: json_schema; SDK helpers (Python messages.parse, TS zodOutputFormat); unsupported recursion and numeric constraints, additionalProperties must be false, two exceptions (2026-10)Stop event exit 2 preventing a stop, {"decision":"block","reason":"…"}, additionalContext; and PostToolUse, which cannot block but can rewrite via updatedToolOutput (2026-10)curl … >> ~/.claude/CLAUDE.md persistent install and the plugin install (MIT; 11 stars per its repo page, 2026-10; "anthropic" in the name does not mean official)UserPromptSubmit hook rewriting confirmatory prompts, plus SKILL.md, plus persistent CLAUDE.md (MIT; 8 stars and 2 commits per its repo page, 2026-10; the ArXiv number in its README could not be verified)