Medsci-skills verify-refs
Audit-only verification of manuscript references against PubMed and CrossRef. Detects fabricated or mismatched citations and writes qc/reference_audit.json. Does not modify references/ or refs.bib.
install
source · Clone the upstream repo
git clone https://github.com/Aperivue/medsci-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Aperivue/medsci-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/verify-refs" ~/.claude/skills/aperivue-medsci-skills-verify-refs && rm -rf "$T"
manifest:
skills/verify-refs/SKILL.mdsource content
Verify References (Audit-Only)
You help a medical researcher prevent reference hallucinations before submission. This skill audits an existing manuscript or bibliography. It does not write to
references/ or manuscript/_src/refs.bib. It does not discover new
literature; use /search-lit for discovery and /lit-sync for bib management.
When to Use
- Before journal submission, especially for
manuscripts inherited from coauthors or external editors..docx - After AI-assisted drafting or revision introduced or modified references.
- When a reviewer or collaborator flags a possibly fabricated citation.
- Before
freezes a journal package./sync-submission
Inputs
- Manuscript or bibliography path:
,.md
,.docx
,.bib
, or.txt
..tsv - Optional project root. Default: current working directory.
- Optional flags passed to the script:
: extract and classify references without API verification.--offline
: HTTP timeout seconds.--timeout N
Deterministic Script
Run the bundled script rather than verifying citations by memory:
python "${CLAUDE_SKILL_DIR}/scripts/verify_refs.py" manuscript/manuscript.md --project-root .
For hooks or quick manual runs, use the wrapper:
"${CLAUDE_SKILL_DIR}/scripts/verify_cli.sh" manuscript/manuscript.md --offline
Manual pre-submission strict run (Phase 1A.5):
"${CLAUDE_SKILL_DIR}/scripts/verify_cli.sh" manuscript/index.qmd --strict
--strict forbids --offline and exits non-zero on any UNVERIFIED row.
Full checkpoint protocol: references/manual_checkpoint_guide.md.
The script uses DOI, PMID, CrossRef, and PubMed E-utilities where available. If network verification fails, it records
UNVERIFIED rather than silently passing.
Output Contract (v1.1.1)
| Artifact | Path | Purpose |
|---|---|---|
| Audit JSON | | Sole output — row-level status (OK/MISMATCH/UNVERIFIED/FABRICATED), counts, submission-safe flag, full records |
Removed in Phase 1A.2 (per
docs/artifact_contract.md):
— record-level details now live insidereferences/verified_references.tsv
underreference_audit.json
.records[]
— never this skill's concern.references/library.bib
produces candidates;/search-lit
(via Better BibTeX) writes/lit-sync
.manuscript/_src/refs.bib
Sole-writer enforcement:
scripts/validate_project_contract.py will flag any references/* file written by this skill as drift.
Workflow
- Identify the input file and project root.
- Run
.scripts/verify_refs.py - Read
.qc/reference_audit.json - Report all
andFABRICATED
rows first (fromMISMATCH
).records[] - If
rows remain, list them as manual checks and do not call the manuscript fully submission-safe.UNVERIFIED - If the user needs a human-readable table, summarize from
in chat — do not write a TSV.records[]
Quality Gates
- Gate 1: stop submission if any row is
.FABRICATED - Gate 2: require user confirmation before accepting
references.UNVERIFIED - Gate 3: rerun after any reference edits.
What This Skill Does NOT Do
- Does not generate new references from memory.
- Does not replace missing citations with plausible alternatives without
or user approval./search-lit - Does not sync Zotero collections; use
after this audit./lit-sync
Anti-Hallucination
- Never fabricate titles, DOIs, PMIDs, author lists, journal names, years, volumes, or pages.
- Every OK row must be backed by DOI, PMID, CrossRef, or PubMed title evidence.
- If evidence is unavailable, mark
and keep it visible.UNVERIFIED