Skip to content
Content
Skill

/verification-engine

Activate when the user needs to verify citations, check source accuracy, or validate that referenced papers actually support the claims attributed to them. Retrieves source abstracts and full text (for open-access papers), compares each citation claim against actual source

From plugin
open-academic-paper-machine
1817 skills4 agents21 commands
Install
$ npx -y skills add TobiasBlask/open-paper-machine --skill verification-engine --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/verification-engine

Context preview

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

Activate when the user needs to verify citations, check source accuracy, or validate that referenced papers actually support the claims attributed to them. Retrieves source abstracts and full text (for open-access papers), compares each citation claim against actual source

SKILL.md

verification-engine.SKILL.md
name: verification-engine
description: >
  Activate when the user needs to verify citations, check source accuracy,
  or validate that referenced papers actually support the claims attributed
  to them. Retrieves source abstracts and full text (for open-access papers),
  compares each citation claim against actual source content, and produces
  a structured verification report with classifications (VERIFIED, PLAUSIBLE,
  MISMATCH, UNVERIFIABLE, NOT FOUND).

> **Orchestration Log**: When this skill is activated, append a log entry to `outputs/orchestration_log.md`: > ``` > ### Skill Activation: Verification Engine > **Timestamp:** [current date/time] > **Actor:** AI Agent (verification-engine) > **Input:** [brief description of the verification request] > **Output:** [brief description of results — e.g., "Verified 42 citations: 35 VERIFIED, 5 PLAUSIBLE, 2 MISMATCH"] > ```

Verification Engine

Core Principle

A citation is only as good as its accuracy. This engine systematically checks whether the papers you cite actually say what you claim they say. It fetches real source material — abstracts at minimum, full text when available — and compares each attribution claim against the actual content.

This addresses the dominant failure mode of LLM-generated academic writing: citation hallucination and misattribution. Even when citations point to real papers (no fabricated DOIs), the attributed claims may not match what the source actually says.

When to Activate

  • User says "verify citations", "check my references", "validate sources"
  • Before final submission of any paper with 20+ references
  • After major revisions that added new citations
  • When a reviewer questions citation accuracy
  • As Phase 7 in the paper-machine pipeline (optional quality gate)

---

Step 1: Extract Citation Claims

From LaTeX (`paper.tex`)

Scan the `.tex` file for all citation commands and extract the surrounding context:

\citep{key}         → parenthetical: "... as shown previously (Author, Year)."
\citet{key}         → textual: "Author (Year) demonstrated that ..."
\citeauthor{key}    → author name reference
\citeyear{key}      → year reference

For each citation occurrence, extract: 1. **Citation key** (the BibTeX key) 2. **Claim context** — the full sentence containing the citation, plus the preceding sentence if needed for meaning. This is the "attributed claim." 3. **Section** — which section of the paper contains this citation 4. **Claim type** — classify as:

  • **Specific finding** ("X found that Y increases Z by 78%") — highest verification priority
  • **General attribution** ("X surveys this space") — medium priority
  • **Methodological reference** ("following X's framework") — lower priority
  • **Existence citation** ("see X for a review") — lowest priority

From Markdown (`draft.md`)

Same logic, but scan for `(Author, Year)` and `Author (Year)` patterns instead of LaTeX citation commands.

Group by Source

Multiple citations of the same paper should be grouped. One paper may be cited 5 times with 5 different claims — each claim needs independent verification.

**Output:** A list of `{key, claim, section, claim_type, priority}` tuples.

---

Step 2: Match to BibTeX Entries

For each citation key, look up the entry in `references.bib`:

1. Extract: `title`, `author`, `year`, `doi`, `journal`, `note` 2. If DOI exists: this is the primary lookup key for Step 3 3. If no DOI: use title + first author as search query 4. Flag any citation keys that have NO matching BibTeX entry (orphan citations)

**Output:** Enriched list with DOI and metadata for each citation.

---

Step 3: Fetch Source Material (3-Tier Retrieval)

For each unique referenced paper (not each citation — deduplicate by BibTeX key):

Tier A — Abstract Retrieval (always attempt)

This is the baseline. Fast, reliable, works for any paper with a DOI or indexed title.

**Strategy (try in order, stop at first success):**

1. Search Semantic Scholar by title (use `academic_search_semantic_scholar` MCP tool):

  • Set `max_results: 3` (to find best match)
  • Set full abstract retrieval to get complete abstract text
  • Semantic Scholar also provides TLDR summaries — use both

2. Search OpenAlex by title (use `academic_search_openalex` MCP tool):

  • Broader coverage (474M+ works), good for non-CS papers
  • CC0 data, reliable abstracts

3. Search CrossRef by title (use `academic_search_crossref` MCP tool):

  • Best for DOI verification
  • Abstracts sometimes available

**What you get:** Title confirmation, abstract (50-300 words), TLDR (1-2 sentences), citation count, open access status, and PDF URL if available.

Tier B — Full-Text Retrieval (when available)

For open-access papers, go beyond the abstract:

1. **Check for open-access PDF URL** in the API response metadata

  • Semantic Scholar: `openAccessPdf.url` field
  • OpenAlex: `open_access.oa_url` field

2. **arXiv preprints:** If DOI starts with `10.48550/arxiv.` or BibTeX key suggests arXiv, construct the PDF URL: `https://arxiv.org/pdf/{arxiv_id}` 3. **Fetch the PDF:**

  • Use `WebFetch` with the PDF URL to get content, OR
  • Download to `/tmp/verify_papers/{bib_key}.pdf` and use the `Read` tool

(supports PDFs up to 100 pages) 4. **Extract relevant sections:** Don't read the entire paper. Search for:

  • The abstract (always)
  • The introduction (usually contains the paper's key claims)
  • The results/findings section (for empirical papers)
  • The conclusion

**When to use Tier B:**

  • Paper is a load-bearing citation (Tier 1 priority)
  • Abstract alone is insufficient to verify the specific claim
  • Paper is open-access (arXiv, DOAJ, PLoS, MDPI, Frontiers, etc.)

Tier C — Extension Point (Future)

For large-scale verification (100+ papers) or complex documents with tables/figures:

  • **LlamaParse MCP:** Add `llamacloud-mcp` server to `plugin.json` for high-fidelity

PDF parsing with table extraction an

Read more
Ships withopen-academic-paper-machine

A Claude Code plugin that autonomously writes academic papers — from literature search to production-ready LaTeX/PDF. Scope note.

Get the whole plugin