Language models misremember references: wrong authors, wrong years, wrong venues, and papers that do not exist at all. Fabricated or incorrect citations in a submission constitute academic misconduct, and ICML now runs an automated reference checker at the camera-ready stage. This skill makes every citation traceable to a database record.
Communicate with the user in their language. This skill shares the .icml/ workspace with its sibling skills; first run python scripts/init_workspace.py --root <latex-root> --skill icml-cite, whose format is described in references/workspace-contract.md。
Principles
Never write or edit a BibTeX entry from memory. Every entry must come from a database response (DBLP, Crossref via DOI, arXiv, Semantic Scholar) or a user-provided file. If it cannot be obtained, insert a conspicuous placeholder and tell the user:
\citep{PLACEHOLDER_sparse_moe_routing} % UNVERIFIED: need a source for "router collapse"
and add the [cite] item to .icml/open_issues.md . A placeholder is honest; a plausible but fabricated citation is not.
Workflow: adding a citation
- Clarify what you need it to support. Write down the exact claim the citation supports ("routing collapse occurs without load balancing"). A citation supports a claim, not a topic.
- Search.
python scripts/cite_lookup.py search "query terms" [--year-from 2020]searches DBLP (best for computer science conferences, including ICML/PMLR, NeurIPS, ICLR via OpenReview) and Semantic Scholar. Add--source arxivto search preprints. Try multiple phrasings and author names before concluding that a paper does not exist. - Determine the correct record. Match title, first author, and year. When both a formally published version and an arXiv version exist, prefer the former (ICML requires this at the camera-ready stage; Foerster: Google Scholar usually shows the arXiv version by default). Watch out for workshop versions and follow-up papers with the same name.
- Fetch the BibTeX.
python scripts/cite_lookup.py bibtex --dblp <key>or--doi <doi>or--arxiv <id>. Paste the result into.bibverbatim, then make only the following edits: set the citation key to the project's convention, protect capitalized letters in the title with braces ({B}ayesian、{MCMC}、{T}ransformer), remove fields the style does not need (abstract, keywords). Never manually modify authors, year, venue, or page numbers. - Verify the claim. If the claim is important (it supports an argument, a baseline number, or a definition), confirm that it really is as stated by reading the abstract or the relevant section via the search result output or the paper page. If it cannot be accessed, record the citation as
existence-verified, claim-unverifiedand tell the user. - Recordto
.icml/citations_log.md: key, status (verified/existence-only/placeholder), sources checked, whether a formally published version exists, notes.
Workflow: auditing references
Run python scripts/check_bib.py main.tex refs.bib. It reports:
.bibcited keys missing from- , as well as unused entries, duplicate entries (the same title or the same DOI/arXiv id under different keys),
- entries missing fields required by their type,
- arXiv-only or CoRR entries (candidates for upgrading to a formally published version),
- BibTeX capitalizes the first letter of title words that are lowercase (unprotected acronyms and proper nouns),
- placeholder keys that still remain,
- using the plain
\cite(ICML uses natbib:\citetand\citep)。
Then verify each entry that is not yet in citations_log.md , prioritizing entries that support claims in the abstract, introduction, and experiments sections, as well as every baseline. For arXiv entries, run python scripts/cite_lookup.py published "<title>" to find the formally published version.
ICML-Specific Rules
See references/citation-rules.mdfor details. Key points:
- Implement APA author-year format via
natbiband\bibliographystyle{icml20XX}. When the author is a grammatical component of the sentence, use\citet{}, otherwise use\citep{}; multiple citations are ordered chronologically. - Anonymous submission: cite your own published work in the third person, as if written by someone else; do not anonymize published entries in the reference list. Cite your own unpublished work (e.g., under review elsewhere) anonymously, and upload it as anonymous supplementary material.
- Work made public less than two months before the deadline counts as concurrent work for ICML; citing it is optional.
- Camera-ready: replace arXiv citations with formally published versions where possible; fix every item in the OpenReview "Reference Correctness Check"; keep author names up to date.
Related Work Support
When icml-write requests related work, return for each candidate: the verified BibTeX, a one-sentence description of what the paper does (from its abstract, in your own words), and how it relates to the project (same problem / same technique / baseline candidate). Group by methodological thread so that the related work section can compare and contrast rather than list papers. Flag any method that applies to the problem setting: icml-write must either compare against it or explain why it does not apply.
When Offline
If lookups fail (no network), tell the user explicitly, keep the verified entries you have, add placeholders for new entries, and list them. Do not "fill in from memory" even for famous papers—famous papers are exactly where details get confidently misremembered (wrong year, arXiv version confused with the conference version).
Files
scripts/cite_lookup.py— search / bibtex / formally published version lookup (standard library only).scripts/check_bib.py— reference audit against the LaTeX source files.scripts/init_workspace.py— create the shared.icml/workspace.references/citation-rules.md— ICML citation format, anonymity, BibTeX conventions.references/workspace-contract.md、references/icml-venue-facts.md— shared files.