Verify that every claim, reference, and technical detail is backed by current evidence. AI models have training data cutoffs and frequently hallucinate version numbers, API signatures, field names, CLI flags, and dates. This skill provides a systematic process to catch these errors before they reach users.
AI models commonly produce these types of false information:
CategoryExample of HallucinationModel names/versionsReferencing "GPT-5" or "Claude 4" when they don't exist yetAPI field namesWriting likeCount when the real API returns like_countCLI flagsUsing --recursive when the tool only supports -rLibrary methodsCalling .transformAll() on a library that has no such methodDatesGetting today's date wrong, or citing a "2024 release" that happened in 2025SDK versionsReferencing v2.0 features when the latest is v1.8Repo structureClaiming a file exists at a path where it doesn'tDefault valuesStating "default is 100" when the actual default is 50
For every piece of output that contains technical claims, run this process:
Scan the output and tag every verifiable claim:
ClassificationMeaningActionVerifiedConfirmed by tool output, API call, or file readMark with evidence sourceUnverifiedNot yet checkedMust verify before outputUnverifiableCannot be checked with available toolsLabel clearly as unverifiedStaleBased on information older than 6 monthsRe-verify from current source
For each unverified claim, use the appropriate verification method:
Claim TypeVerification MethodFile exists at pathls /path/to/file or Read toolFunction/method existsgrep -r "function_name" /path/to/repoAPI field nameMake a real API call and inspect the responseCLI flag existscommand --help or man commandnpm package versionnpm info package-name versionPython package versionpip show package-nameGitHub repo infogh repo view owner/repoPR/Issue statusgh pr view NUMBER --repo owner/repoCurrent datedate commandURL is reachablecurl -s -o /dev/null -w "%{http_code}" URLGit branch/tag existsgit ls-remote --tags origin
After verification, every claim in the output should be one of:
npm info output")curl -s -o /dev/null -w "%{http_code}" URL before recommending-o /dev/null), don't fetch or render content from untrusted sources (phishing/malware risk)date if you reference it--help or docs to confirm CLI flags existgh commands, not from memorygh pr checks)gh pr view)AI models are frozen at their training cutoff. Always verify:
bash
# Check latest version of a package
npm info @anthropic-ai/sdk version
pip show openai | grep Version
gh release list --repo owner/repo --limit 3
Never guess API response field names. Always run the API and read the actual response:
bash
# Real API call to verify field names
curl -s "https://api.example.com/endpoint" | jq '.[0] | keys'
The most dangerous hallucination. "I did it" when the work is incomplete:
What was saidWhat it actually meansHow to verify"Pushed successfully"Git push workedgh pr checks — is CI green?"Responded to review"Committed a changeDoes the new code actually fix the issue?"Found 10 problems"Listed 10 itemsRead the code for each — do they exist?"PR has been reviewed"Someone looked at itgh pr view --json reviews — what's the count?
Referencing things that don't exist:
bash
# Verify a file exists before referencing it
ls /path/to/claimed/file
# Verify a function exists in a codebase
grep -r "functionName" src/
# Verify an npm package exists
npm info claimed-package-name
AI models often get dates wrong, including today's date:
bash
# Always verify current date
date "+%Y-%m-%d"
# Check when a release was published
gh release view v1.0.0 --repo owner/repo --json publishedAt
AI models will fabricate plausible-looking URLs when they don't know the real one:
Fabricated URLWhy it looks rightActual URLhttps://auth.openai.com/activateFollows common OAuth patternshttps://auth.openai.com/codex/device``https://docs.clawhub.aiStandard docs subdomainDoes not exist (returns 404)https://api.example.com/v2/schemaCommon API conventionEndpoint may not exist
Prevention:
curl -s -o /dev/null -w "%{http_code}" URL first.auth.openai.com/activate vs auth.openai.com/codex/device — one character path difference, completely different endpoints.When fact-checking, produce a report like this:
markdown
## Fact Check Report
| # | Claim | Status | Evidence |
|---|-------|--------|----------|
| 1 | "API returns `like_count`" | Verified | Real API run, dataset abc123 |
| 2 | "Latest version is v2.3" | Corrected → v2.5 | `npm info package version` |
| 3 | "Supports `--recursive` flag" | Unverified | Cannot test without install |
| 4 | "Default timeout is 30s" | Verified | Source code line 42 |