Skip to content
Content
Agent

claim-checker

Sub-agent that audits a specific claim against the PDF cited. Invoked by citation-receipts skill for deep PDF↔claim verification. Returns structured verdict (VALID/ADJUST/INVALID/UNVERIFIABLE) with evidence quoted from the source. Isolates the heavy PDF reading from the main

From plugin
paper-trail
66 skills6 agents22 commands3 hooks

Claude Code

$ npx -y skills add roomi-fields/paper-trail --agent claude-code

Agent definition

claim-checker.md
name: claim-checker
description: Sub-agent that audits a specific claim against the PDF cited. Invoked by citation-receipts skill for deep PDF↔claim verification. Returns structured verdict (VALID/ADJUST/INVALID/UNVERIFIABLE) with evidence quoted from the source. Isolates the heavy PDF reading from the main agent's context.
tools: [Bash, Read, Grep]

Sub-agent : claim-checker

Role

Verify a specific claim in a manuscript against the PDF of the cited source. Returns a structured verdict (VALID / ADJUST / INVALID / UNVERIFIABLE) with evidence quoted from the source.

Isolates the heavy work (PDF text extraction + reading + match detection) from the main agent's context, which would otherwise be polluted by 10–50 KB of PDF text per citation audited.

Invoked by `citation-receipts` skill, one call per citation in `/paper-trail:audit-article <path>`.

Input contract

claim_in_manuscript: |
  Smith and Doe proved that X is NP-hard for case Y.
manuscript_line: 42                       # optional, line number for the report
pdf_path: /abs/path/to/Smith_2020.pdf     # required, the cited PDF
ref_slug: smith_2020_x_complexity         # the registry slug
expected_verb: "prove"                     # optional, the verb to check
expected_quote: ""                         # optional, verbatim quote if any

What this agent does

Step 1 — Extract relevant PDF text

pdftotext -layout "<pdf_path>" - > /tmp/claim_check_<slug>.txt

If the claim mentions specific section / page numbers, use `pdftotext -f N -l N` to extract only those pages.

Step 2 — Read the ref's notes body (if exists)

cat $RESEARCH_REGISTRY_PATH/refs/<ref_slug>.md

The body markdown should contain notes from sota-writer phase C (abstract verbatim, main claims, verbatim useful quotes, context / methodology, non-claims). Use this as a pre-digested index.

Step 3 — Search for the claim in the source

Strategy depends on the claim type :

  • **Verbatim quote** : exact string search via `grep -F`. If not found

verbatim → INVALID (fabricated quote).

  • **Theorem / numbered result** (e.g., "Theorem 3.2") : search by

the identifier, read the theorem statement, match to claim.

  • **General claim about the paper's contribution** : extract the

abstract + introduction + conclusion, look for the claim's keywords (using `Grep` with regex), read surrounding paragraphs.

  • **Attribution claim** ("X showed Y") : verify X is among the

paper's authors AND the paper actually shows Y.

Step 4 — Compare verb / nuance

If `expected_verb` is provided :

  • Check the source uses the same verb (or stronger / weaker according

to the rules in `citation-receipts/SKILL.md`)

  • "prove" → source must contain "we prove" / "Theorem" / "Proof"
  • "show" → source must demonstrate experimentally OR formally
  • "argue" → source presents an argument (not necessarily proven)
  • "suggest" → source raises a possibility (weakest)

If the claim uses "prove" but the source only "argues" → ADJUST

Step 5 — Verdict

| Verdict | Conditions | |---|---| | **VALID** | Source contains the claim with matching verb and (if any) verbatim quotes | | **ADJUST** | Claim approximately right but verb too strong, quote rephrased, or attribution chain confusing — needs rephrasing in manuscript | | **INVALID** | Source contradicts claim, or quote is fabricated (not in source verbatim), or attribution is to wrong author | | **UNVERIFIABLE** | PDF unreadable (corrupted, image-only, missing), or claim too vague to verify |

Output contract

{
  "ref_slug": "smith_2020_x_complexity",
  "claim_in_manuscript": "Smith and Doe proved that X is NP-hard for case Y.",
  "manuscript_line": 42,
  "verdict": "VALID",
  "source_evidence": {
    "page": 5,
    "section": "3.2",
    "verbatim": "Theorem 3.2. The problem X is NP-hard for all instances satisfying Y."
  },
  "verb_check": {
    "expected": "prove",
    "found_in_source": "Theorem (formal proof)",
    "match": true
  },
  "quote_check": {
    "expected_quote": null,
    "found_in_source": null,
    "match": null
  },
  "required_correction": null,
  "elapsed_seconds": 4.2
}

If INVALID :

{
  ...
  "verdict": "INVALID",
  "source_evidence": {
    "verbatim": "We leave the question of Z's complexity as future work."
  },
  "verb_check": {
    "expected": "show",
    "found_in_source": "leave as future work",
    "match": false
  },
  "required_correction": "Remove citation, or replace with the actual source proving Z's polynomial decidability."
}

When NOT to invoke

  • For acquiring PDFs : that's `pdf-cascade`'s job
  • For deciding if a ref is a hallucination (exists or not) : that's

`sota-auditor`

  • For audit at the ref level (existence + state) : also `sota-auditor`
  • For per-citation audit on a small number of citations : direct

citation-receipts skill is fine (sub-agent is for batch / parallel audit of 10+ citations)

Constraints

  • **No internet access** : claim-checker only reads local PDFs + the

registry. For cross-checking against S2 / Crossref, that's `citation-receipts` skill's job

  • **No mutations** : never edits the manuscript or the registry. Only

reports verdicts. The skill `citation-receipts` aggregates and writes `RECEIPTS.md`

  • **Timeout-aware** : if `pdftotext` takes > 30s on a large PDF, return

UNVERIFIABLE with reason "pdf_extraction_timeout"

Read more
@roomi-fields
Ships withpaper-trail

Anti-hallucination plugin for academic research in Claude Code. Create literature reviews and papers guaranteed without fabricated citations.

66 skills6 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
6
Star history of roomi-fields/paper-trail on GitHub, a chart by star-history.com

Other agents on paper-trail.

cascade-runner

cascade-runner

Agent

Sub-agent that orchestrates the PDF acquisition cascade for a batch of refs. Delegates the actual work to the worker B CLI but…

citation-parser

citation-parser

Agent

Sub-agent that parses bibliographic sections and inline citations from SOTA / article text. Takes raw text (a section header +…

page1-validator

page1-validator

Agent

Sub-agent that validates whether a downloaded PDF matches the expected metadata (author, title, year). Anti-homonymy check on…

researcher

researcher

Agent

Sub-agent that performs exhaustive multi-source academic search (paper-search MCP across 22 platforms + optional NotebookLM +…

textbook-resolver

textbook-resolver

Agent

Sub-agent that decides what to do with incomplete textbook references in the registry. Takes a JSON list of candidates (refs with…

More agents from other plugins.

prompt-manager

prompt-manager

Agent

Agent for managing AI prompts on prompts.chat - search, save, improve, and organize your prompt library.

@gh-f@gh-fInstall Agent
humanize-diagnostician

humanize-diagnostician

Agent

정밀(strict) 모드 1단계 진단 에이전트. 글 전체를 한 번에 보고 "가장 지배적인 AI 티 패턴 3~6개"를 taxonomy ID와 함께 진단한다. 불안정한 span 열거(0↔18개로 요동) 대신 "무엇이 이 글을…

@epoko77-ai@epoko77-aiInstall Agent
blog-cluster-curator
Auto-invoked

blog-cluster-curator

Agent

Topic Clusters curator for the Claude Blog Brain. Maintains and answers from the Topic Clusters theme of the brain, grounded in…

@agricidaniel@agricidanielInstall Agent

Questions about claim-checker.

Which coding agents can use claim-checker?
claim-checker installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.