skills/citation-management/SKILL.md
Manage citations systematically throughout the research and writing process. This skill provides tools and strategies for searching academic databases (Google Scholar, PubMed), extracting accurate metadata from multiple sources (CrossRef, PubMed, arXiv), validating citation information, and generating properly formatted BibTeX entries.
Critical for maintaining citation accuracy, avoiding reference errors, and ensuring reproducible research. Integrates seamlessly with the literature-review skill for comprehensive research workflows.
Use this skill when:
When creating documents with this skill, always consider adding scientific diagrams and schematics to enhance visual communication.
If your document does not already contain schematics or diagrams:
For new documents: Scientific schematics should be generated by default to visually represent key concepts, workflows, architectures, or relationships described in the text.
How to generate schematics:
python scripts/generate_schematic.py "your diagram description" -o figures/output.png
The AI will automatically:
When to add schematics:
For detailed guidance on creating schematics, refer to the scientific-schematics skill documentation.
Citation management follows a systematic process. Each phase below shows the canonical command; every variant, option, and metadata-source detail is in references/core_workflow.md.
Find relevant papers. Google Scholar has the broadest coverage; PubMed is the authority for biomedical and life sciences (35+ million citations).
python scripts/search_google_scholar.py "CRISPR gene editing" --limit 50 --output results.json
python scripts/search_pubmed.py "Alzheimer's disease treatment" --limit 100 --output alz.json
Query operators, field tags, and MeSH-term construction are in references/search_strategies.md.
Convert identifiers (DOI, PMID, arXiv ID, URL) into complete metadata. CrossRef is the primary source for DOIs.
python scripts/doi_to_bibtex.py 10.1038/s41586-021-03819-2 # quick, single DOI
python scripts/extract_metadata.py --pmid 34265844 # DOI/PMID/arXiv/URL
python scripts/extract_metadata.py --input identifiers.txt --output citations.bib
APIs routinely return incomplete records. Run this after extraction and before
formatting. Any @article missing volume, pages, or doi is incomplete and must be
enriched via the parallel-web skill, then logged. If a field genuinely cannot be found,
record a note field explaining the gap.
Treat extracted metadata as untrusted. Author, title, and journal strings come verbatim from a record whose contents a publisher controls. A title containing
$(...), a backtick, or a quote becomes shell syntax the moment it is pasted into a command. Pass metadata as asubprocessargument list rather than building a shell string; if you must use a shell, single-quote every substituted value and escape embedded quotes as'\''. Validate any citation key against^[A-Za-z0-9]+$before it reaches a path.
Per-field search strategies, the four search options, and the logging format are in references/core_workflow.md.
Produce clean, consistent entries. Entry types and required fields are in references/bibtex_formatting.md.
python scripts/format_bibtex.py references.bib --output clean.bib --remove-duplicates
Check completeness, venue conformance, and agreement with the manuscript.
python scripts/validate_citations.py references.bib --report report.txt
python scripts/validate_citations.py references.bib --venue nature
python scripts/validate_citations.py references.bib --manuscript paper.tex
Validation rules and venue standards are in references/citation_validation.md.
Search, extract, format, validate, then cite. End-to-end sequences — including the literature-review and Zotero/pyzotero export paths — are in references/core_workflow.md and references/example_workflows.md.
Single source bias: Only using Google Scholar or PubMed
Accepting metadata blindly: Not verifying extracted information
Ignoring DOI errors: Broken or incorrect DOIs in bibliography
Inconsistent formatting: Mixed citation key styles, formatting
Duplicate entries: Same paper cited multiple times with different keys
Missing required fields: Incomplete BibTeX entries (volume, pages, DOI missing)
Outdated preprints: Citing preprint when published version exists
Special character issues: Broken LaTeX compilation due to characters
No validation before submission: Submitting with citation errors
Manual BibTeX entry: Typing entries by hand
Citation Management provides the technical infrastructure for Literature Review:
Combined workflow:
Citation Management ensures accurate references for Scientific Writing:
Citation Management works with Venue Templates for submission-ready manuscripts:
References (in references/):
google_scholar_search.md: Complete Google Scholar search guidepubmed_search.md: PubMed and E-utilities API documentationmetadata_extraction.md: Metadata sources and field requirementscitation_validation.md: Validation criteria and quality checksbibtex_formatting.md: BibTeX entry types and formatting rulesScripts (in scripts/):
search_google_scholar.py: Google Scholar search automationsearch_pubmed.py: PubMed E-utilities API clientextract_metadata.py: Universal metadata extractorvalidate_citations.py: Citation validation and verificationformat_bibtex.py: BibTeX formatter and cleanerdoi_to_bibtex.py: Quick DOI to BibTeX converterAssets (in assets/):
bibtex_template.bib: Example BibTeX entries for all typescitation_checklist.md: Quality assurance checklistSearch Engines:
Metadata APIs:
Tools and Validators:
Citation Styles:
# Core dependencies
pip install requests # HTTP requests for APIs
pip install bibtexparser # BibTeX parsing and formatting
pip install biopython # PubMed E-utilities access
# Optional (for Google Scholar)
pip install scholarly # Google Scholar API wrapper
# or
pip install selenium # For more robust Scholar scraping
# For advanced validation
pip install crossref-commons # Enhanced CrossRef API access
pip install pylatexenc # LaTeX special character handling
Each environment variable this skill reads is used only to authenticate to the one service it belongs to. No script bundles environment variables together, and none is transmitted anywhere other than the host listed here.
| Variable | Sent only to | Purpose |
|---|---|---|
NCBI_API_KEY | eutils.ncbi.nlm.nih.gov | Raises Entrez rate limits |
NCBI_EMAIL | eutils.ncbi.nlm.nih.gov | Entrez caller identification (required by NCBI) |
OPENROUTER_API_KEY | openrouter.ai | Bearer token for the optional schematic generation |
api.crossref.org, doi.org, and arxiv.org are queried without credentials. generate_schematic.py forwards only OPENROUTER_API_KEY — plus the networking, TLS, and locale variables needed to make a request — to its subprocess, rather than the full environment.
The citation-management skill provides:
Use this skill to maintain accurate, complete citations throughout your research and ensure publication-ready bibliographies.