Fact-Checking skill for Codex
Trace every claim back to where it started. Codex extracts every checkable claim from a draft, follows each statistic, quote or technical statement back to its original source, and compares the exact wording for shifted scope, stale numbers and dropped qualifiers. Verdicts use a fixed scale that keeps unverifiable separate from false, and each comes with the smallest edit that would make the sentence accurate.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- fact-checking Installs to ~/.agents/skills/fact-checking/ for every project on this machine.
curl -fsSL codexskills.dev/cli.mjs -o codex-skills.mjsnode codex-skills.mjs install fact-checking The CLI also searches, updates and removes skills. Run it with no arguments to pick from a list. Needs Node 20.12+.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- --project fact-checking Installs to .agents/skills/fact-checking/ in the current repository. Commit it and everyone who runs Codex there gets it.
curl -fsSLO codexskills.dev/downloads/fact-checking.zipunzip -o fact-checking.zip -d ~/.agents/skills/ The archive holds the skill folder with its generated agents/openai.yaml. Unzip into .agents/skills/ to scope it to a repo.
& ([scriptblock]::Create((irm codexskills.dev/install.ps1))) fact-checking PowerShell 5.1 or 7. Installs to %USERPROFILE%\.agents\skills\. Add -Project for the current repo.
104-line POSIX script. No sudo, no telemetry. Read install.sh
Use it in Codex
Start a prompt with $fact-checking, or pick it from /skills.
You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.
What Codex reads before loading it
Verifies specific claims, statistics, quotes and images by tracing each one to its original source with lateral reading, archive lookups and primary data, then rates it on a fixed verdict scale (accurate, mostly accurate, misleading, false, unverifiable) with evidence. Use when asked to fact-check a draft, blog post, deck, README or press release, verify a statistic or quote, check whether a source is credible, or confirm a claim before it ships.
Use it when
- A draft, deck or press release cites numbers, quotes or 'studies show'
- You need to know whether a widely shared statistic is real
- A technical claim about a tool or version must be confirmed before it ships
Use something else when
- The question is open-ended and needs a researched answer, not verdicts: use deep-research
- You need to format or manage the reference list itself: use citation-management
How to check the result
Every claim has a verdict linked to its origin source, unverifiable claims list what was searched, and suggested corrections match the source wording on re-read.
The mistake it prevents
Rating a claim false because no support turned up quickly; absence of evidence is unverifiable, not false.
A fact-check is done when every checkable claim has a verdict, each verdict cites the source closest to the origin of the fact, and a reader could repeat the check from your notes. “I could not verify this” is a valid and useful verdict; a confident guess is not.
Workflow
- [ ] 1. Extract checkable claims from the text
- [ ] 2. Prioritise by impact
- [ ] 3. For each claim: trace to origin, compare, rate
- [ ] 4. Propose corrections in the author's voice
- [ ] 5. Deliver the claim table and a corrected draft (if asked)
Network access is required for almost every check. In a Codex sandbox with network off,
extract and prioritise claims, then ask for live web search (--search or
web_search = "live") before rating anything.
1. Extract claims
Pull out every statement that could be shown true or false. Skip opinions and predictions, but flag predictions presented as facts.
| Claim type | Example | What to check |
|---|---|---|
| Statistic | “73% of developers use AI assistants” | Original survey, sample, question wording, year |
| Attribution / quote | “As Knuth said, …” | Primary text or recording; misattribution is common |
| Causal | “X caused the outage” | Postmortem or data, not correlation |
| Comparative | “fastest JSON parser for Node” | Benchmark method, date, versions |
| Temporal | “since 2019”, “the first to” | Earliest primary record; “first” claims are often false |
| Technical | “Postgres supports MERGE” | Docs for the stated version |
| Image / chart | Screenshot of a tweet, graph | Reverse image search, original post, axis scales |
Number them C1, C2, … and keep the exact wording.
2. Prioritise
Check first the claims that are central to the argument, numeric, surprising, or reputational (about named people or companies). Low-impact background facts get a quick check; central statistics get a full trace.
3. Trace, compare, rate
Use lateral reading: leave the page and see what other sources say about the source and the claim, instead of judging a page by how it looks.
For each claim:
- Find the origin. Follow links and citations back until you reach the dataset, document, study, filing or recording that first stated it. Note each hop.
- Check the source. Who published it, what is their interest, what is the method, when was it published, has it been corrected or retracted?
- Compare wording. Does the claim say exactly what the origin says? Watch for changed populations (“US developers” became “developers”), changed units, rounded numbers, dropped qualifiers (“up to”, “in our sample”), or old figures presented as current.
- Seek independent confirmation for central claims: a second source that did not copy the first.
- Rate using the scale below.
Useful tools:
- Archived and deleted pages:
https://web.archive.org/web/*/example.com/page* - Exact quotes: search the quote in double quotes plus the supposed speaker; check books via publisher previews or library catalogues.
- Images: reverse image search (Google Lens, TinEye, Bing), then look for the earliest upload; check EXIF only if the original file is available.
- Statistics: national statistics offices, regulator filings (SEC EDGAR), survey publishers’ methodology pages.
- Code and tech claims: the documentation for the exact version, changelogs, or run it.
Verdict scale
| Verdict | Meaning |
|---|---|
| Accurate | Matches the origin in substance and scope |
| Mostly accurate | Right in substance; minor imprecision (rounding, date) that does not change meaning |
| Misleading | Technically traceable but scope, context or framing changes the meaning |
| False | Contradicted by the best available evidence |
| Outdated | Was true; newer data says otherwise |
| Unverifiable | No primary source found after a reasonable search; say what was searched |
Never mark a claim false because you could not find support. That is “unverifiable”.
4. Corrections
Propose the smallest edit that makes the sentence accurate, keeping the author’s voice:
C3 original: "Over 90% of companies now use Kubernetes."
Issue: The CNCF 2024 survey reports usage among its respondents (cloud native
practitioners), not all companies.
Suggested: "Among respondents to the CNCF's 2024 survey, most organisations reported
using Kubernetes in production."
If a claim cannot be fixed, recommend cutting it.
Gotchas
- Circular sourcing: articles citing each other with no origin. If every trail ends at another article, the claim is unverifiable.
- Survey statistics: check who was asked (vendor’s customers? self-selected readers?), sample size, and question wording before accepting the percentage.
- “Studies show” with no study: ask the author for the source rather than guessing which one they meant.
- Quote sites and social posts misattribute constantly. Accept a quote only from a primary text, transcript or recording.
- Screenshots are trivial to fake. Treat a screenshot as a pointer to the original post.
- Dates: “last year” and “recently” must become absolute dates in the published text.
- Claims about private individuals: check only what the task needs, do not compile personal information beyond the claim.
- For a broad open question rather than a list of claims, use
$deep-research.
Verification
- Every claim in the source text appears in the table, or is listed as skipped with a reason.
- Each verdict links to the origin source, not to an intermediary.
- Re-read each suggested correction against the source one last time.
- Count verdicts and report them so the author sees the overall picture.
Output template
# Fact-check: <document title>
Checked <date>. <n> claims: <a> accurate, <b> mostly accurate, <c> misleading,
<d> false, <e> outdated, <f> unverifiable.
| # | Claim (as written) | Verdict | Origin source | Notes / correction |
|---|---|---|---|---|
| C1 | "..." | Accurate | <title, publisher, date, URL> | - |
| C2 | "..." | Misleading | <...> | Survey of 412 vendor customers, not "developers". Suggested: "..." |
## Unverifiable claims and what was searched
- C7: searched <databases / queries>; no primary source. Ask author for the source or cut. What the zip contains
SKILL.md plus the interface file below. Nothing runs on install.
agents/openai.yaml
Gives the Codex app a display name, a one-line description and a starter prompt for this skill.
interface:
display_name: "Fact-Checking"
short_description: "Trace every claim back to where it started"
default_prompt: "$fact-checking Fact-check the statistics in this blog post draft before we publish" About this skill
Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.