Academic citation toolkit โ verify reference authenticity or write literature reviews with auto-generated bibliographies. Checks paper existence, metadata accuracy, and whether cited claims are actually supported. Supports PDF, DOCX, TXT, Markdown, LaTeX. Use when user asks to: "check citations", "verify references", "audit citations", "validate my references", "are these citations real", "write introduction", "write literature review", "review my lit review", "generate bibliography", "format references", "check my paper's citations", "citation audit", "fact-check references", "proofread citations", "verify my bibliography", "ๅธฎๆๆฅๅผ็จ", "ๆฃๆฅ่ฎบๆๅผ็จ", "ๅๆ็ฎ็ปผ่ฟฐ", "้ช่ฏๅ่ๆ็ฎ", "ๅผ็จๆฅ่ฏ". Merges former citation-check and introduction-review skills.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
The command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Showing SKILL.md
SKILL.md
Source instructions ยท Read-only preview
name
reference-workbench
description
Academic citation toolkit โ verify reference authenticity or write literature reviews with auto-generated bibliographies. Checks paper existence, metadata accuracy, and whether cited claims are actually supported. Supports PDF, DOCX, TXT, Markdown, LaTeX. Use when user asks to: "check citations", "verify references", "audit citations", "validate my references", "are these citations real", "write introduction", "write literature review", "review my lit review", "generate bibliography", "format references", "check my paper's citations", "citation audit", "fact-check references", "proofread citations", "verify my bibliography", "ๅธฎๆๆฅๅผ็จ", "ๆฃๆฅ่ฎบๆๅผ็จ", "ๅๆ็ฎ็ปผ่ฟฐ", "้ช่ฏๅ่ๆ็ฎ", "ๅผ็จๆฅ่ฏ". Merges former citation-check and introduction-review skills.
LLM normalizes: convert ANY citation format ([REF01], \cite{key}, [@key], bare [1], etc) to [CITE:descriptiveKey]
Script verifies: cite_table.py only reads [CITE:key]. Hard-coded, deterministic.
Table proves: every normalized citation appears in output โ nothing missed or invented.
When NOT to Use
Single-paper summary, pure grammar polishing, non-academic writing, format conversion only.
Five Scenarios
User says
Agent does
New review
Draft with [CITE:xxx] โ script โ table
Rewrite draft
Normalize existing citations to [CITE:xxx] โ script โ table
Add citation
Insert [CITE:xxx] โ re-run script โ table
Remove citation
Remove [CITE:xxx] โ re-run script โ table
Audit
Re-run script โ checks โ table
Every scenario ends: cite_table.py โ Read cite_output.txt โ paste table + checks. Then proceed to silent quick check below.
The draft always uses [CITE:descriptiveKey] placeholders. The script numbers them and outputs the table โ but the source of truth is the draft itself. Self-audit checks are always performed against the draft with [CITE:xxx] placeholders, never against the numbered output alone.
Always-On Checks
After every citation change, re-run cite_table.py and walk through:
Stacking โ >3 in one bracket? Warn. >5? Block.
Format โ venue mismatch? Load references/citation-formats.md (on-demand) when user specifies a venue. Re-check after ref generation.
Tone โ references/diplomatic-critique.md (loaded at startup). Never "fails to", "ignores", "fundamentally flawed".
Citation depth โ most citations: who + did what + found what + [CITE:xxx]. Opening/transition sentences can be broad. Body paragraphs: each cited paper gets its own sentence.
Two valid positions: sentence-end (...reduced errors by 23% [CITE:smith2023].) or natural pause (...as shown in prior work [CITE:jones2021;CITE:lee2022], the trend...).
NEVER: , [CITE:xxx], (comma sandwich) or Smith [CITE:smith2023] proposed (author-attached). Script flags these as โ ๏ธ.
Report: one line per check, โ or โ ๏ธ. Then full re-scan (never fix one and skip the rest). Then read all [CITE:xxx] aloud from the draft to catch awkward flow.
Table Protocol (Mandatory)
Auto-detect .bib file in project dir. If found, use --bib mode.
python ${CLAUDE_SKILL_DIR}/scripts/cite_table.py <draft> [--bib <bib_file>]
Read: ${CLAUDE_SKILL_DIR}/scripts/cite_output.txt
โ Paste table + audit. Then: "Need to add, remove, or change any citations?"
Without --bib: 5 columns (# | Author | Body Context | Reference | Status). With --bib: 6 columns comparing body order, bib key, bib position, and reference list order. Bilingual (ไธญๆ/English auto-detected). Repeated citations get โณ sub-rows.
Reference Files
anti-laziness-protocol.md โ loaded at startup. Mandatory 5-step verification gate. Itemized only, no batching.
citation-placement-rules.md โ loaded on-demand during self-audit checks. Citation position rules (sentence-end / comma sandwich / author-attached).
diplomatic-critique.md โ loaded at startup. Mandatory tone guard.
citation-formats.md โ loaded on-demand when user specifies a venue. IEEE/SCI/EI/GB7714/APA/MLA/Chicago/ACM rules.
citation-fields.md โ loaded on-demand for metadata cross-checking by citation type.
Script
cite_table.py โ single core engine. Scan, number, table, position check, bilingual, --bib mode.
Phase 3 โ Auto Quick Check (Silent, Small Drafts Only)
After every write scenario completes, count unique [CITE:xxx] placeholders:
Unique citations
Action
< 5
Run silent quick check
โฅ 5
Skip โ defer to Phase 5 (too many citations for per-edit checking)
When the threshold is met (< 5 refs):
Extract all unique [CITE:xxx] placeholders from the draft
For each, run a quick existence check only (no metadata/content layers):
Try DOI lookup โ arXiv lookup โ title search. Stop at first hit.
If all fail โ flag as โ unchecked
Output a one-line summary:
Quick check: 3 refs โ 3 found โ
No AskUserQuestion. If all found โ no extra output beyond the summary line. If any unchecked โ flag it and note that Phase 5 will offer a deeper check.
Phase 4 โ Deep Citation Verification (On Request)
Reachable via two paths:
Direct: user provides a file and says "check citations" โ start here after Phase 0
Upgrade: after completing all writing, Phase 5 offers this โ jump here
4.1 โ Ask Scope & Depth
Call AskUserQuestion with two questions:
Question 1 โ Scope (single-select)
header: "Scope"
options:
all / "Verify all (M unique papers)"
selected / "Manual selection (e.g. 1,3,5-8)"
multiSelect: false
Question 2 โ Depth (single-select)
header: "Depth"
options:
quick / "Quick โ Abstract/TLDR only (~10-15k tokens/citation)"
normal / "Normal โ Abstract+Intro+Conclusion (~20-50k tokens/citation) [Recommended]"
deep / "Deep โ Full-text section-by-section (~50-150k tokens/citation) [Token-heavy]"
multiSelect: false
Wait for user response before Phase 4.2.
4.2 โ Read File
Format
Method
PDF
mcp__pdf-reader__read_pdf
DOCX
python-docx via Bash
TXT/MD
Read
LaTeX
Read + parse \cite{}\bibitem{}
4.3 โ Extract Citations
Output raw list:
File: paper.pdf (5 pages) | Found N citations | Type: journal/conference/...
[1] journal | Vaswani et al. (2017) "Attention Is All You Need"
Location: ยงI, "code-centric automation..."
[2] ...
4.4 โ Deduplicate
Normalize by title + first author (title: strip punctuation, lowercase; first author: last name). Same paper cited multiple times โ merge, keep all locations.
Dedup: N raw โ M unique papers (N-M duplicates removed)
[1,7] journal | Vaswani et al. (2017) "Attention Is All You Need"
Locations: ยงI "code-centric..." / ยงIII "self-attention enables..."
[2] conference | ...
[3,5,9] preprint | ...
4.5 โ Parallel Verification (10 per round)
Rules
Strictly 10 unique papers per round, overflow auto-continues
Each paper gets one independent general-purpose sub-agent, all launched in parallel
Agents update status via TaskUpdate
Round completes โ auto-advance to next round
Single-paper agent task
Each agent receives: original number list (e.g. [1,7]), title, authors, year, DOI/ArXiv ID (if available), context around each citation location (ยฑ3 sentences).
Three-layer check:
Layer A โ Existence (with fallback chain)
Try each step in order. Any success โ stop. Max 1 retry per step (timeout/network). Failure โ next step.
When the user indicates they are done with all writing (session ending, "looks good", "done", "submit", etc.), call AskUserQuestion with one question:
Question โ Upgrade to deeper check? (single-select)
header: "Final Check"
options:
normal / "Normal โ re-verify with Abstract+Intro+Conclusion (~20-50k tokens/citation) [Recommended]"
deep / "Deep โ full-text section-by-section (~50-150k tokens/citation) [Token-heavy]"
no / "No โ quick checks were sufficient"
multiSelect: false
Context: mention how many quick checks ran and how many refs passed ("We ran 3 quick checks on 15 refs โ all found. Upgrade to a deeper verification?").
If user chooses normal or deep โ jump to Phase 4 with that depth and all scope.
If user chooses no โ output: "Done. Run /reference-workbench check <file> anytime to re-verify."
Optional MCPs (Not Required)
These enhance the skill but are not mandatory. If missing, the skill runs normally.
MCP
What it adds
Install
Zotero
Search your Zotero library, import papers, read PDF annotations, write Word docs with live citations
npx smithery install @alisoroushmd/zotero-mcp
DeepL
Academic translation (ไธญๆ โ English), glossary-locked terminology, rephrase for clarity
npm install deepl-mcp-server (needs free API key)
If installed, the agent can use them automatically during write sessions for reference management and translation tasks.