roomi-fields/paper-trail/citation-receipts
Claude Code and agent skill by roomi-fields/paper-trail
- community
Checking that the SKILL.md file is still in the repository.
Systematic per-citation verification protocol for academic writing. MUST be used whenever writing content that cites sources — papers, blog posts, SOTAs, or any document making factual claims about external work. Triggers (FR + EN) on any writing task involving references, citations, or bibliographic claims, or when the user asks to "verify citations", "check sources", "audit references", "validate bibliography", "produce receipts", "/paper-trail:audit-article", "/paper-trail:receipts". Produces a structured RECEIPTS.md report classifying each citation as VALID / ADJUST / INVALID with reason. Optional --warn mode inserts inline warnings into a .bak copy of the source document. Combined with sota-auditor (upstream existence audit), this skill is the **downstream** per-claim check.
Install
npx vskill@latest install roomi-fields/paper-trail/citation-receiptsSKILL.md
Skill : Citation Receipts
Why this skill exists
The plugin's mechanical safeguards (FSM, page 1 anti-homonymy, cascade) prevent citing a fabricated reference. But they don't prevent citing a real reference for a claim it doesn't actually make. Examples that have occurred :
- Inverted result : citing a paper as proving NP-hardness when it
proves tractability
- Fabricated quote : putting words in quotation marks that don't
appear in the cited source
- Wrong attribution : citing the wrong author for a known result
(attribution chains)
- Equivalent ≠ formulated as : saying X "is equivalent to" Y is
much stronger than X "is formulated as" Y
This skill enforces a per-citation read-before-cite protocol. Inspired by the receipts plugin (MIT, James Weatherhead) for the audit-PDF↔claim pattern.
The golden rule
Read the source before you cite it. Not the title. Not the abstract. Not what you think it probably says based on the author's reputation. The actual text where the result is stated. If you can't access the source, mark it UNVERIFIABLE explicitly — don't guess.
When this skill activates
This protocol applies to EVERY citation in :
- Research papers (
paper-writerskill output) - SOTAs / literature reviews (
sota-writerskill output) - Blog posts and other academic content
/paper-trail:audit-article <path>— runs this skill on an existing
article file
/paper-trail:receipts <path>— local audit (no remote API calls)- Pre-submission audit checklist
Verification workflow (per citation)
For each source you intend to cite (or that's already cited in the document under audit), follow these steps in order.
Step 1 — Locate the source
Check these locations, in order :
- Local registry :
$RESEARCH_REGISTRY_PATH/refs/<slug>.md. If
state is page1_validated or higher, the PDF is at $RESEARCH_SOURCES_PATH/<pdf_path>.
- `paper-search` MCP for not-yet-acquired sources :
mcp__paper-search__search_papers(query=<title>) then get_crossref_paper_by_doi(<doi>) for confirmed metadata
- `notebooklm` MCP (optional, if configured) for book chapters
- Not found anywhere → mark UNVERIFIABLE, flag to user, do not
proceed with the citation as-is
Step 2 — Procure the source if missing
If the ref is in candidate state in the registry :
- Invoke
pdf-cascadeskill to acquire and validate - Wait for
page1_validatedbefore proceeding to step 3
If the ref isn't in the registry at all :
- Create a stub :
$RESEARCH_REGISTRY_PATH/refs/<slug>.mdwith
state: candidate
- Invoke
pdf-cascadeto acquire
Step 3 — Read the relevant section
Once the PDF is available locally, read the section containing the claim being cited. Extraction tools :
pdftotext -layout <pdf> -for general extractionpdftotext -layout -f N -l N <pdf>for a specific page- Use
Readtool on the corresponding ref's markdown body (which
should already contain notes from sota-writer phase C if the SOTA was created via the plugin)
Step 4 — Verify the claim
Before writing or accepting the citation, check :
- Does the source actually say what we claim ? Read the relevant
section — not just the abstract.
- Are we using the right verb ? "prove" vs "show" vs "argue" vs
"suggest" have different strengths. Match the source's own language.
- Are quotes verbatim ? If using quotation marks, the exact words
must appear in the source. If you can't verify, paraphrase instead.
- Is the attribution correct ? The result belongs to the author
who first established it, not necessarily the author who cites it in a survey.
- Are indices/numbers correct ? Double-check any specific values
(complexity bounds, page numbers, counts).
Step 5 — Classify the citation
| Verdict | Meaning | Action | |
|---|---|---|---|
| VALID | Claim matches source exactly | Proceed | |
| ADJUST | Claim is approximately right but needs softening or rephrasing | Reformulate citing sentence before submitting | |
| INVALID | Claim contradicts source or quote is fabricated | Do not cite as-is. Fix or remove. Consider transitioning the ref to retracted via sota-auditor if the contradiction is structural. | |
| UNVERIFIABLE | Cannot access source after exhaustive search | Flag to user. Do not cite specific results from this source. |
RECEIPTS.md output format
When invoked via /paper-trail:audit-article or /paper-trail:receipts, produces a RECEIPTS.md file at the same location as the audited article. Format inspired by the receipts plugin (MIT) :
Red flags — patterns that caused real errors
These patterns have caused actual citation errors in submitted papers. Watch for them when auditing :
- Inferring results from the title : "Complexity of X" doesn't tell
you if they proved hardness or tractability
- Quoting from memory : if you didn't just read the exact words,
don't put them in quotes
- Attribution chains : Author A cites a result from Author B. Cite
Author B, not Author A, unless you're specifically discussing A's interpretation
- Equivalent ≠ formulated as : "X is equivalent to TSP" is much
stronger than "X is formulated as a variant of TSP". Use the weaker claim unless the paper proves formal equivalence
- Survey-based citations : if your knowledge of a paper comes from
a survey or textbook rather than the paper itself, say so or read the original
--warn mode
When invoked as /paper-trail:audit-article <path> --warn, in addition to producing RECEIPTS.md, the skill inserts inline warnings in a .bak copy of the source document :
- LaTeX (
.tex) : inserts `\todo[color=red]{REF AUDIT FAILED:
<reason>} adjacent to the offending \cite{key}`
- Markdown (
.md) : inserts callout
> [!warning] Ref audit failed: <reason> adjacent to the citation
The original file is never modified — only the .bak copy. The user reviews the .bak, accepts/rejects each warning manually.
Integration with other skills
| Skill | Relationship | |
|---|---|---|
sota-writer | Upstream. Writes SOTAs which this skill audits per-citation. | |
sota-auditor | Complementary upstream. Auditor decides ref existence (VRAI/HALLUCINATION) at the ref level. This skill audits the specific claim within a verified ref (verb, quote, attribution). | |
paper-writer | Upstream. Writes papers ; pre-submission this skill runs full audit. | |
pdf-cascade | Sub-task. If a cited ref isn't yet acquired, invokes pdf-cascade. | |
claim-checker agent | Sub-task for per-citation verification. This skill orchestrates ; the agent does the PDF↔claim deep dive. |
Mandatory tool usage
A citation is NOT verified unless at least one of these tools has been called for it (the call must appear in the session transcript) :
| Source type | Required tool | Command | |
|---|---|---|---|
| Article / proceedings | paper-search MCP | mcp__paper-search__get_crossref_paper_by_doi(DOI) | |
| Book chapter (if NotebookLM configured) | notebooklm MCP | mcp__notebooklm__ask_question(...) | |
| Local PDF in registry | Bash + pdftotext | pdftotext -layout <pdf_abs_path> - | |
| Local PDF notes | Read tool | Read(<registry/refs/slug.md>) |
"I know what this paper says" is NOT verification. The MCP call must appear in the transcript. If the relevant MCP isn't available, mark the citation UNVERIFIABLE.
Pre-submission audit
Before a paper is submitted :
- Run
/paper-trail:audit-article <paper.tex>(or.md) - Review the produced
RECEIPTS.md - Fix all INVALID + ADJUST citations
- Decide on UNVERIFIABLE : enable shadow libs for one acquisition
attempt, OR remove the specific claim that depends on the source
- Re-run audit ; iterate until only VALID remain
- Document the final audit report in the paper's submission package
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/citation-receipts/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/roomi-fields/paper-trail/citation-receipts)