Skip to content
Development
Skill

/fact-check

Verify factual claims against sources before publish.

From plugin
vexjoy-agent
421122 skills198 agents11 commands76 hooks
Install
$ npx -y skills add notque/vexjoy-agent --skill fact-check --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/fact-check

Context preview

The summary Claude sees to decide when to auto-load this skill.

Verify factual claims against sources before publish.

SKILL.md

fact-check.SKILL.md
name: fact-check
description: "Verify factual claims against sources before publish."
user-invocable: false
allowed-tools:
  - Read
  - Grep
  - Glob
  - Bash
  - Write
  - WebFetch
  - WebSearch
routing:
  triggers:
    - "fact check"
    - "fact-check"
    - "verify claims"
    - "check facts"
    - "verify this quote"
    - "is this accurate"
    - "is this true"
    - "check this claim"
    - "verify this"
    - "are these numbers right"
  not_for: "building a research report from scratch (research-pipeline) or open-web adversarial research (deep-research). Pick fact-check when a draft or source set already exists and the question is whether its claims hold."
  category: research
  pairs_with:
    - research-pipeline
    - voice-writer

Fact Check

Overview

Verifies every factual claim in a draft or source set before publish. Workflow: extract claims, verify each against evidence, adjudicate with one of four labels, emit a per-claim report with a Warnings section. Burden of proof sits on the claim, not the checker: a claim without supporting evidence stays unproven.

Works standalone on any document, or as a pre-publish gate for voice-writer and publish flows. The gate is non-blocking: the report warns and lists findings; the caller decides whether to publish. When the caller provides source documents, verify against those first; reach for the web only when no provided source covers a claim and web access is in scope.

---

Reference Loading Table

| Signal | Load These Files | Why | |---|---|---| | verifying a claim: lateral reading, source-tier climbing, triangulation, quote checks | `references/verification-methods.md` | Method detail for Phase 2 | | judging whether a stat, price, title, or event date is current | `references/staleness-windows.md` | Per-type freshness windows and re-check actions |

---

Instructions

Phase 1: EXTRACT

**Goal**: List every checkable claim in the document.

A claim is checkable when it asserts something a source could confirm or refute: statistics, prices, dates, quotes, attributions (who said or did what), titles and roles, event facts, rankings, and causal assertions presented as established fact. Opinions and clearly-labeled speculation stay out of the claim list.

For each claim, record:

| ID | Claim (verbatim or tight paraphrase) | Type | Location |
|----|--------------------------------------|------|----------|
| C1 | [exact assertion]                    | stat / quote / attribution / event / title / price / causal | [paragraph or line] |

Extract quotes verbatim — quote verification in Phase 2 compares exact words, so a paraphrased extraction would hide a fabrication.

**Gate**: Every checkable assertion in the document has a claim ID. A claim skipped here is a claim never verified, so sweep the document twice — once for numbers and dates, once for quotes and attributions.

---

Phase 2: VERIFY

**Goal**: Gather evidence for and against each claim.

Work claim by claim. Methods in depth: `references/verification-methods.md`.

**Step 1: Check provided sources first.** When the caller supplied source documents, search them for each claim before anything else. Record the exact source file and passage that supports or contradicts the claim. A claim no provided source covers is a candidate for Missing-source in Phase 3.

**Step 2: Read laterally.** Judge a source by what other sources say about it and its claim, rather than by the source's own presentation. A single source repeating itself across pages still counts as one source.

**Step 3: Climb the source tier.** Follow citations upward toward the origin: a news article citing a study is weaker evidence than the study itself. Verify against the highest-tier source reachable — primary documents, original data, the actual transcript.

**Step 4: Triangulate contested claims.** A contested or surprising claim needs two independent sources — independent means separate origins, so two outlets quoting the same wire story count as one. One source suffices only for routine, uncontested facts drawn from a primary document.

**Step 5: Verify quotes on three axes.** A quote passes only when all three hold: 1. **Exact words** — the quoted text matches the source verbatim. Trimmed or altered wording is a finding, even when the meaning seems preserved. 2. **Attributed speaker** — the source confirms this person said it. Right words from the wrong mouth is misattribution. 3. **Original context** — the surrounding source text supports the meaning the document gives the quote. A real quote deployed to mean something its context contradicts is a finding.

**Step 6: Check staleness.** Time-sensitive claims (stats, prices, titles, roles, event status) expire. Apply the windows in `references/staleness-windows.md`: when a claim's evidence is older than its window, look for a newer figure. A claim contradicted by a newer source from the same origin is stale, and stale counts against the claim — the burden of proof includes freshness.

For each claim, record the evidence found, the source(s), and the source tier. Evidence written down now becomes the report in Phase 4; thin notes here produce an unauditable report.

**Gate**: Every claim has an evidence record — supporting passages, contradicting passages, or a note that the search came up empty. An empty record is itself evidence and feeds Phase 3.

---

Phase 3: ADJUDICATE

**Goal**: Assign each claim exactly one label. The four labels are disjoint: Unverifiable means sources engage the claim but settle nothing; Missing-source means no source addresses it at all.

| Label | Assign when | |-------|-------------| | **Verified** | Evidence supports the claim — exact match for quotes and figures, current within its staleness window, from a sufficient source tier, triangulated if contested | | **Disputed** | Evidence contradicts the claim: the source says something different, a newer source supersedes the figure, the quote

Read more
Ships withvexjoy-agent

Essays and writing behind this toolkit live at vexjoy.com. VexJoy Agent connects plain-English requests to specialist agents, skills, and workflows. /do selects the knowledge and tools needed for your task.

Get the whole plugin

Other skills on vexjoy-agent.