From fact-checker
Automated fact-checking for AI-generated documents. Extracts verifiable claims and citations from text or files (Markdown, PDF, DOCX), verifies each claim via web search and headless-browser source retrieval (Puppeteer), runs verification tasks in parallel, and generates a comprehensive Markdown fact-check report. Use when a user wants to verify the accuracy of AI-generated content, check cited references, validate statistics or quotes, or audit a research report for factual correctness. Triggers on requests like "fact-check this document", "verify these claims", "check if the references are real", or "audit this report for accuracy".
How this skill is triggered — by the user, by Claude, or both
Slash command
/fact-checker:fact-checkerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Language:** Respond in the user's language. If unclear, default to the language of the user's message.
Language: Respond in the user's language. If unclear, default to the language of the user's message.
Automated, parallel fact-checking for AI-generated documents. Extract claims, verify them against real sources (via web search and headless browser), and produce a structured Markdown report.
1. Ingest document (read text/file, normalize to plain text)
2. Extract claims (identify checkable assertions and citations)
3. Verify claims (parallel: web search + headless browser fetch)
4. Evaluate evidence (score each claim)
5. Generate report (Markdown fact-check report)
The 5-phase workflow below. Use this when the user asks for a general fact-check or claim verification.
Activated when:
In this mode, apply the 7 verification dimensions defined in references/workflow.md:
| Dimension | Code | What it checks |
|---|---|---|
| Link Validity | D-LINK | HTTP status of all cited URLs |
| Source Content Matching | D-CONTENT | Field-by-field comparison of claims vs. source |
| Citation Granularity | D-GRANULARITY | Whether citations point to specific sections |
| Numeric Accuracy | D-NUMERIC | Exact match of numbers, dates, amounts |
| Fact/Speculation Distinction | D-FACTSPEC | Whether speculation is mixed with facts |
| Source Reliability | D-RELIABILITY | Tier (1-4) and ABC classification of sources |
| Cross-Section Consistency | D-CONSISTENCY | Contradictions between document sections |
The standard 5-phase workflow still applies, but each phase is augmented with dimension-specific steps as described below.
Determine input type and extract text:
Markdown / plain text in conversation -> Use directly. File path provided -> Read the file. For PDFs, use the Read tool (supports PDF). For DOCX, use python-docx or similar extraction.
Scan the document for verifiable claims. See references/workflow.md for detailed extraction criteria, claim types, and priority assignment.
For each claim, record: claim ID, exact text, type (factual / citation / statistic / quote / causal / comparative), cited source (if any), and priority (high / medium / low).
Focus on high-priority claims first. Skip subjective opinions and unfalsifiable statements.
When in Structured Checklist Mode, also extract:
Run verification for all claims concurrently using the Task tool with background agents. This allows the user to step away while verification proceeds.
Claim cites a URL:
node <skill-path>/scripts/fetch_page.js <url> --pdf <outdir>/<id>.pdf --text <outdir>/<id>.txt
Claim cites a paper/book (no URL):
Claim is a statistic or factual assertion (no citation):
When many URLs need fetching, create a manifest JSON and use batch_fetch.js:
# Create manifest
cat > /tmp/fc-manifest.json << 'MANIFEST'
{
"urls": [
{ "url": "https://example.com/article1", "id": "C1" },
{ "url": "https://example.com/article2", "id": "C2" }
]
}
MANIFEST
# Fetch all in parallel
node <skill-path>/scripts/batch_fetch.js /tmp/fc-manifest.json --outdir /tmp/fact-check-output --concurrency 4
The script produces results.json in the output directory with per-URL status, plus .pdf and .txt files for each successfully fetched page.
Launch one background Task agent per claim (or per batch of related claims):
For each claim or batch:
-> Task agent (background): verify claim using web search + fetch_page.js
-> Collect result when done
Aggregate all results before proceeding to report generation.
When in Structured Checklist Mode, perform these additional verification steps after the standard claim verification:
D-LINK — Link Validity Check:
batch_fetch.js to check all URLs in parallelresults.json and build an HTTP status table from the httpStatus fieldD-CONTENT — Source Content Matching:
D-GRANULARITY — Citation Granularity:
D-NUMERIC — Numeric Accuracy:
D-FACTSPEC — Fact vs. Speculation Distinction:
D-RELIABILITY — Source Reliability Classification:
D-CONSISTENCY — Cross-Section Consistency:
For each claim, assign a verdict based on the evidence found. See references/workflow.md for the full verdict scale:
Produce a Markdown report following the template in references/workflow.md. The report includes:
Save the report to the working directory as fact-check-report.md.
When in Structured Checklist Mode, append these sections after the standard report content:
See references/workflow.md for the detailed output format of each dimension table.
| Script | Purpose | Key Options |
|---|---|---|
scripts/fetch_page.js | Fetch single URL via Puppeteer | --pdf, --text, --screenshot, --timeout, --wait |
scripts/batch_fetch.js | Fetch multiple URLs in parallel | --outdir, --concurrency, --pdf, --text, --screenshot |
Both scripts use headless Chromium with a realistic user-agent to handle sites that block simple HTTP requests.
Prerequisites: Node.js and Puppeteer must be installed. Install with:
npm install puppeteer
<skill-path> with the actual path to this skill's directory when running scripts.npx claudepluginhub dobachi/claude-skills-marketplace --plugin fact-checkerVerifies statistical claims in blog posts by fetching cited source URLs and scoring match confidence.
Verifies factual claims in text against authoritative sources using a cheapest-first cascade (project memory, codebase, web) and rewrites with footnote citations, hedging unverified claims.
Audits citations and source claims in academic manuscripts. Verifies whether cited papers support attributed claims and checks quantitative claims.