Citations
A citation is a claim that a specific document says a specific thing. Language models
produce plausible references that do not exist, and reviewers now check. The rule is
simple and absolute: nothing enters the bibliography that was not resolved from a live
record, and nothing is cited for a claim that was not read.
Non-negotiables
- Resolve before you cite. Every entry comes from a record fetched now: a DOI at
Crossref, a work at OpenAlex, an arXiv id, a PMID. Author names, year, title, venue,
pages and DOI are copied from that record, never recalled or completed from memory.
- Read before you attribute. Cite a paper for a finding only after reading the passage
(abstract at minimum; the result section for numbers). A title is not evidence of what a
paper found.
- One canonical identifier per entry. Prefer the DOI; arXiv id for preprints without
one; PMID as a secondary field. The key is
firstauthorYEARkeyword and is stable once
used in the text.
- Prefer the published version over the preprint when both exist, and say so if the
text relied on the preprint's numbers.
- Never pad. A claim needs the one or two sources that establish it, not five that
mention the topic.
- Report what could not be resolved instead of leaving a best guess in the file.
Workflow
Resolving. Search by title first: Crossref works?query.bibliographic=<title>&rows=3
or OpenAlex works?search=<title>&per-page=3; accept a hit only if the title matches
closely and the first author agrees. With a DOI in hand, fetch
https://api.crossref.org/works/<doi> for the authoritative metadata, or
https://doi.org/<doi> with Accept: application/x-bibtex for a ready entry to tidy. For
arXiv, http://export.arxiv.org/api/query?id_list=<id> returns title, authors and date;
check Crossref for a published version of the same title before citing the preprint.
For biomedical literature, PubMed E-utilities (esearch then esummary) give the PMID,
DOI and journal.
Auditing an existing .bib. For every entry: does the DOI resolve, and does the resolved
title match the entry's title? Do the authors and year agree? Is the venue the real one?
Mark each entry verified, corrected (write the fix), or unresolved (leave the entry,
flag it in the report). Duplicates under different keys are merged toward the key used in
the text.
Formatting. Use @article, @inproceedings, @misc (preprints, with eprint,
archivePrefix = {arXiv}, primaryClass), @book, @techreport. Protect capitals in
titles with braces only where needed ({BERT}, {Transformer}). Keep doi and url
fields; drop abstract and keywords. Sort by key. Let the venue's .bst or biblatex
style decide the appearance; do not hand-format.
In-text use
- Cite where the claim is made, not at the end of the paragraph.
- Distinguish "X showed" (their result) from "see X" (background) from "following X"
(method reused). The wording is part of the attribution.
- Numbers quoted from a source keep the source's units, precision and conditions; if the
text converts them, it says so.
- When the same source appears under two names (preprint and published), cite one.
Before you hand it over
- Every
\cite key exists in the .bib; every .bib entry is cited or removed.
scripts/validate_bib.py <file>.bib reports no unresolved DOIs and no title mismatches.
- The report to the user lists unresolved items plainly. A manuscript with three honest
gaps is better than one with three fabrications.
1---2name: citations3description: Resolves, verifies and formats references, every citation confirmed against Crossref, OpenAlex, arXiv or PubMed before it enters the bibliography, BibTeX built from resolved metadata, and existing .bib files audited for fabricated or mismatched entries. Use when adding citations to a draft, building or repairing a .bib, checking a manuscript's references, or whenever a claim needs a source attached. Not for finding what to read (use literature-review).4license: MIT5---67# Citations89A citation is a claim that a specific document says a specific thing. Language models10produce plausible references that do not exist, and reviewers now check. The rule is11simple and absolute: nothing enters the bibliography that was not resolved from a live12record, and nothing is cited for a claim that was not read.1314## Non-negotiables15161. **Resolve before you cite.** Every entry comes from a record fetched now: a DOI at17 Crossref, a work at OpenAlex, an arXiv id, a PMID. Author names, year, title, venue,18 pages and DOI are copied from that record, never recalled or completed from memory.192. **Read before you attribute.** Cite a paper for a finding only after reading the passage20 (abstract at minimum; the result section for numbers). A title is not evidence of what a21 paper found.223. **One canonical identifier per entry.** Prefer the DOI; arXiv id for preprints without23 one; PMID as a secondary field. The key is `firstauthorYEARkeyword` and is stable once24 used in the text.254. **Prefer the published version** over the preprint when both exist, and say so if the26 text relied on the preprint's numbers.275. **Never pad.** A claim needs the one or two sources that establish it, not five that28 mention the topic.296. **Report what could not be resolved** instead of leaving a best guess in the file.3031## Workflow3233- [ ] Collect the claims that need sources, or the entries to audit.34- [ ] Resolve each to a record (`references/apis.md` has the exact requests).35- [ ] Read enough of each source to confirm it supports the claim as worded.36- [ ] Write the BibTeX from the record; run `scripts/validate_bib.py` on the file.37- [ ] Return the list of resolved, corrected and unresolved items.3839**Resolving.** Search by title first: Crossref `works?query.bibliographic=<title>&rows=3`40or OpenAlex `works?search=<title>&per-page=3`; accept a hit only if the title matches41closely and the first author agrees. With a DOI in hand, fetch42`https://api.crossref.org/works/<doi>` for the authoritative metadata, or43`https://doi.org/<doi>` with `Accept: application/x-bibtex` for a ready entry to tidy. For44arXiv, `http://export.arxiv.org/api/query?id_list=<id>` returns title, authors and date;45check Crossref for a published version of the same title before citing the preprint.46For biomedical literature, PubMed E-utilities (`esearch` then `esummary`) give the PMID,47DOI and journal.4849**Auditing an existing .bib.** For every entry: does the DOI resolve, and does the resolved50title match the entry's title? Do the authors and year agree? Is the venue the real one?51Mark each entry `verified`, `corrected` (write the fix), or `unresolved` (leave the entry,52flag it in the report). Duplicates under different keys are merged toward the key used in53the text.5455**Formatting.** Use `@article`, `@inproceedings`, `@misc` (preprints, with `eprint`,56`archivePrefix = {arXiv}`, `primaryClass`), `@book`, `@techreport`. Protect capitals in57titles with braces only where needed (`{BERT}`, `{Transformer}`). Keep `doi` and `url`58fields; drop `abstract` and `keywords`. Sort by key. Let the venue's `.bst` or biblatex59style decide the appearance; do not hand-format.6061## In-text use6263- Cite where the claim is made, not at the end of the paragraph.64- Distinguish "X showed" (their result) from "see X" (background) from "following X"65 (method reused). The wording is part of the attribution.66- Numbers quoted from a source keep the source's units, precision and conditions; if the67 text converts them, it says so.68- When the same source appears under two names (preprint and published), cite one.6970## Before you hand it over7172- Every `\cite` key exists in the .bib; every .bib entry is cited or removed.73- `scripts/validate_bib.py <file>.bib` reports no unresolved DOIs and no title mismatches.74- The report to the user lists unresolved items plainly. A manuscript with three honest75 gaps is better than one with three fabrications.