From skills
Validates bibliographic references (journal articles, preprints, books, webpages, reports) by web searching authoritative sources and confirming authors, titles, years, DOIs, arXiv IDs, ISBNs. Invoke for citation checks.
npx claudepluginhub agencyenterprise/draft-detective --plugin skillsThis skill uses the workspace's default tool permissions.
Validate a single bibliographic reference by finding the cited work online and comparing it to the reference. Follow the six-step procedure below for each reference. Web search (or URL fetching) is required — never validate from memory.
Guides citation verification in academic papers via WebSearch and Google Scholar, preventing fake/AI errors with principles and workflows for ML writing.
Verifies citations and quotes in legal/academic manuscripts: checks existence/accuracy in Paperpile.bib, quote presence via Readwise/RAG/PDFs, and claim grounding.
Verifies every citation in LaTeX manuscripts by fetching arXiv papers and sources to detect ghost papers, wrong metadata, inverted claims, and dead links. Suggests bib fixes and prose rewrites.
Share bugs, ideas, or general feedback.
Validate a single bibliographic reference by finding the cited work online and comparing it to the reference. Follow the six-step procedure below for each reference. Web search (or URL fetching) is required — never validate from memory.
If the user provides multiple references, repeat the procedure for each one and report results per reference.
Read the reference and note:
Special case — bare URL: if the reference is only a URL with no bibliographic metadata, skip ahead to Step 6 with final result missing_fields. Reconstruct the full citation from the URL's content and populate updated_reference. Mark author, title, publisher, and year as MISSING; mark identifier as CORRECT (identifier is always optional).
Fetch the URL exactly as given. One of three outcomes:
Do NOT treat a URL as valid just because its domain/path looks plausible — you must confirm the page actually exists and has real content.
Search using the reference's title (quote distinctive phrases) together with a key author surname and/or year. For references with a DOI or arXiv ID, resolve the identifier first and use the canonical page — BUT if the resolved work's title clearly does not match the reference's title, treat the identifier as incorrect or fabricated and search by title instead. Do NOT accept an unrelated work as your candidate just because an identifier happened to resolve to it; when this happens, flag the identifier as INCORRECT in Step 5 and use the title-based candidate for the other fields.
Pick the single best candidate that plausibly IS the cited work. If no candidate matches the cited title or authors, stop and go to Step 6 with incorrect_fields (a reference that cannot be located online is treated as a substantive issue).
ArXiv-specific rules:
arXiv:2311.16169 rather than arXiv:2311.16169v1), treat the MOST RECENT version on arXiv as authoritative — its title, author list, and most-recent submission year. When the reference explicitly pins a version (e.g., arxiv.org/abs/2406.01637v1), treat that version as authoritative instead.arxiv.org/html/... sometimes contain rendering artifacts that produce incorrect-looking titles. Do not take the title from the HTML view. Prefer, in order: (a) the title from the official conference/journal publication if one exists, (b) the arXiv abstract page arxiv.org/abs/..., (c) the PDF.Before comparing fields, confirm the candidate source IS the cited work. Compare the candidate's title to the reference's title, ignoring case and punctuation:
incorrect_fields. Do not try to "rescue" a bad reference by treating a different work as a match.For each of author, title, publisher, year, identifier, set problem_type to one of correct, missing, incorrect, or other:
Field-specific notes:
<h1> heading, the article headline, or the title page of a PDF. Do NOT use the browser tab <title> tag, the og:title social-sharing title, or a search-engine snippet — these are often shortened or sanitized. For PDF-linked articles, prefer the title inside the PDF.suggested_value with a known DOI, arXiv ID, ISBN, or ISSN when one exists, but NEVER suggest a URL as an identifier. Accept equivalent forms: a URL that resolves to a persistent identifier (e.g., https://doi.org/10.xxxx/..., https://dl.acm.org/doi/pdf/10.xxxx/..., https://arxiv.org/abs/...) is equivalent to the bare identifier. A missing DOI when an arXiv ID is already present is NOT an error.final_result is mechanical given the per-field problem_types from Step 5. Apply in order:
final_result = "incorrect_fields". A reference that cannot be located online is treated as a substantive (red) issue. Set updated_reference = null.problem_type = INCORRECT → final_result = "incorrect_fields". Populate updated_reference with the corrections applied, preserving the reference's original citation style.problem_type = MISSING → final_result = "missing_fields". Populate updated_reference if there is a useful correction to suggest; otherwise set it to null.problem_type = CORRECT → final_result = "correct". Set updated_reference = null.All leniency belongs at the field level in Step 5 (case/punctuation, name forms, truncated author lists, organizational abbreviations, year ±1, publisher substring/abbreviation, identifier URL forms, missing-identifier-with-clear-venue). Apply that leniency when assigning each field's problem_type, then derive final_result mechanically from the rules above. Do NOT add any extra "default to correct on the boundary" softening at the result level.
For each validated reference, report the following structure (JSON or a clearly-formatted markdown block — match whatever the user asked for; default to markdown):
original_reference — the reference as given.final_result — one of correct, missing_fields, incorrect_fields.
correct — every field verified against an authoritative source (green).missing_fields — at least one field MISSING but none INCORRECT (yellow).incorrect_fields — at least one field INCORRECT, OR the reference could not be found online (red).bibliography_field_validations — one entry per field (author, title, publisher, year, identifier) with:
category — the field name.current_value — the value as it appears in the reference.suggested_value — the authoritative value.problem_type — correct / missing / incorrect / other. (Use correct when the only differences are capitalization or minor punctuation.)url — the URL identifying the cited work (from the reference, identifier resolution, or your search). Empty string when no candidate was found.reasoning — a brief step-by-step summary of how you validated.suggested_action — one sentence describing what to fix; "No changes needed" when correct.updated_reference — corrected citation in the reference's original format when there are corrections to suggest (typically missing_fields or incorrect_fields for a found work); otherwise null.turn0search0) or raw metadata markers in any output field. All text must be clean and human-readable.