Skill in academic
bibtex-manager
Maintain the thesis .bib file as a single source of truth: fetch verified BibTeX from a DOI, arXiv id, or title via CrossRef and arXiv, normalise citation keys (firstauthorYEARkeyword), deduplicate entries, fix fields BibTeX and biblatex care about, and export to Zotero-friendly form when the writing happens in Word. Use when adding references, cleaning a messy bibliography, resolving duplicate keys, or converting a reading list into a .bib.
- Arguments
- (optional) a DOI, arXiv id, title, or path to a .bib or reading-list.md
Install
As a plugin
Bundled in the thesis plugin. Add the marketplace once, then install the bundle; it updates with the marketplace.
/plugin marketplace add KhaledSaeed18/dotclaude/plugin install thesis@dotclaudeAs a single item
Run from the project root; the skill lands under .claude/. Copy it to ~/.claude/ to make it global.
npx shadcn@latest add KhaledSaeed18/dotclaude/bibtex-managerFiles installed
.claude/skills/bibtex-manager/SKILL.md.claude/skills/bibtex-manager/reference/fields.md
What it does
The .bib file is the one place a reference is allowed to exist. Every \cite{} in LaTeX, every [@key] in Markdown, and every Zotero item in Word traces back to an entry here that was fetched from an authority, never typed from memory.
Add an entry
- Resolve the identifier to metadata from an authority. Never write an entry by hand from a memory of the paper.
- DOI:
curl -sL -H "Accept: application/x-bibtex" "https://doi.org/<doi>"gives publisher BibTeX. Cross-check title and year againsthttps://api.crossref.org/works/<doi>. - arXiv id:
curl -s "http://export.arxiv.org/api/query?id_list=<id>"and build a@misc(or@articlewithjournal = {arXiv preprint arXiv:<id>}) witheprint,archivePrefix = {arXiv},primaryClass. If the paper was later published, prefer the published DOI and keep the arXiv id ineprint. - Title only:
https://api.crossref.org/works?query.bibliographic=<title>&rows=3, confirm the top hit's title matches before taking its DOI; if it does not, tell the student rather than guessing.
- DOI:
- Normalise the key to
<firstauthorsurname><year><firstsignificanttitleword>, lowercase ASCII (smith2023feedback). Collisions get a letter suffix (smith2023feedbacka). Keep the student's existing key convention if the file already has one. - Clean the fields. Read reference/fields.md. In short: protect capitals in titles with braces (
{LLM},{Python}), useandbetween authors, ISO-freeyear/month,doiwithout thehttps://doi.org/prefix,urlonly when there is no DOI, noabstractorkeywordsnoise unless the student wants them, page ranges with--. - Choose the entry type from the source, not the venue name:
@inproceedingsfor conference papers (withbooktitle),@articlefor journals (journal,volume,number,pages),@book,@incollection,@phdthesis,@techreport,@miscfor preprints and web pages (howpublished,note = {Accessed YYYY-MM-DD}). - Append to the
.bib(defaultreferences.bibor the path in the thesis config), keeping the file sorted by key if it already is.
Clean an existing file
Run these checks and report before changing anything:
- Duplicate DOIs or near-duplicate titles (normalised, first 60 chars): merge, keep the richest entry, note which key was removed so the text can be updated.
- Keys that do not match the convention: propose renames; apply only with
--rename, and then update every\cite/[@…]in the source files the student names. - Missing required fields per type (see the reference): list them; fetch from CrossRef when a DOI is present.
- Unprotected capitals in titles,
&unescaped inbooktitle,pageswith a single hyphen,monthas a number in quotes. - Entries with no DOI, arXiv id, or URL: flag as unverifiable so
citation-verifiercan chase them.
From a reading list
Given reading-list.md from literature-search, add every entry via step 1 using its DOI or arXiv id, and write a mapping key -> title at the end of the reply so paper-reader notes can use the same keys.
Zotero and Word
When the thesis is written in Word with Zotero:
- Import the
.bibinto Zotero (File → Import) or install Better BibTeX and set the.bibas an auto-export of the thesis collection, so the file remains the source of truth and Zotero is the view. - Match Better BibTeX's key pattern to the convention above (
auth.lower + year + shorttitle(1,1).lower) so keys are identical in both worlds. - Never edit an entry only in Zotero; fix the
.biband re-import.
Rules
- No entry without an identifier that resolved today. If the student insists on an unresolvable source (a lecture, an internal report), it goes in as
@miscwith anoteexplaining the provenance, and is listed in the reply as unverified. - Never delete an entry without saying which citations in the text will break.
- Preserve the student's manual field additions (
annote,file) when rewriting an entry.
This is the skill as installed, rendered from its source on GitHub. Read it as Markdown.
More in academic
- academic-writingWrite or revise thesis and paper prose section by section (abstract, introduction, related work, method, results, discussion, conclusion) with the...
- benchmark-reportingReport computational benchmarks and experimental comparisons the way examiners and reviewers expect: fair baselines run under the same conditions...
- citation-graphExpand a set of key papers into the literature around them by walking the citation graph with the Semantic Scholar and OpenAlex APIs: backward...
- citation-verifierAudit every citation in a chapter, paper, or proposal against the .bib file and the real world: each cite key must exist, each entry must resolve to a...
- design-science-methodologyStructure a thesis whose contribution is a built artifact (tool, system, method, model) using design science research: explicit problem and requirements...
- docx-thesisWrite a thesis in Word without losing the discipline of a source-controlled workflow: author chapters in Markdown or LaTeX, convert with pandoc and a...