com um clique
create-bibtex
Create BibTeX entries from PDF papers and add to main.bib
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Create BibTeX entries from PDF papers and add to main.bib
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
Use when the user wants to convert a project's `paper/` directory into a git submodule pointing at a separate paper repo (typically for Overleaf linking). Handles removing any existing tracked `paper/` content, adding the submodule, writing a standardized README inside the submodule, and updating the parent repo's README.
Clean up PDF filenames by removing spaces, em dashes, and special characters
Create a new Python script following project best practices. $ARGUMENTS
Create markdown summaries for PDF papers (creates BibTeX first if needed)
Clean README.md files in the entire repository or specified directories. $ARGUMENTS
Use when updating or replacing the writing style configuration for the paper-writing pipeline, targeting a new venue, audience, or style preferences.
| name | create-bibtex |
| description | Create BibTeX entries from PDF papers and add to main.bib |
| argument-hint | <path/to/pdf-or-directory> |
| disable-model-invocation | false |
Create BibTeX entries for academic PDFs and add to the main bibliography.
Preferred method: Extract DOI from PDF and use the fetchbib skill to fetch accurate BibTeX directly from doi.org. Falls back to title-based search, then manual PDF extraction only when both fail.
$ARGUMENTS
@.claude/reference/bibtex-format.md
If $ARGUMENTS empty: Ask user for path (e.g., lit_review/papers/00-background/file.pdf or lit_review/papers/).
If $ARGUMENTS provided: Use path; resolve relative paths from project root.
Single file: Verify exists and is .pdf; report error and stop if not.
Directory: Recursively find all .pdf files using {path}/**/*.pdf.
Build list of PDF paths. Report count; if zero, inform user and stop.
paper/main.bibReport count of existing entries.
Parse each filename for author and year:
Filename formats:
Author et al. - YYYY - Title.pdfAuthor and Author2 - YYYY - Title.pdfAuthor - YYYY - Title.pdfExtraction:
et al., and, or first --Check for match: If normalized author+year exists in main.bib → skip ("Entry already exists"); otherwise → process.
Report counts: skipped (existing) and to process (new).
Always attempt DOI extraction first - this yields the most accurate BibTeX:
Search for DOI in the PDF:
.claude/skills/pdf-extraction/scripts/pdf_extract.sh search "{pdf_path}" "doi"
If DOI found, use fbib:
fbib "{extracted_doi}"
If fbib returns valid BibTeX: Use it directly, but regenerate the BibTeX key per Step 5c below to match project conventions.
If DOI not found or fetch fails: Try title-based search (Step 5a-ii) before falling back to manual extraction (Step 5b).
If no DOI was found or fbib fetch failed:
Extract first page to get the paper title:
.claude/skills/pdf-extraction/scripts/pdf_extract.sh first "{pdf_path}" 1
Run a title-based search:
fbib "Full Paper Title"
If fbib returns valid BibTeX: Use it directly, but regenerate the BibTeX key per Step 5c below to match project conventions.
If title search also fails: Fall through to full manual extraction (Step 5b).
Only use this if both DOI-based fetch and title-based search fail. Use the pdf-extraction skill for minimal token usage:
Extract first page (contains title, authors, abstract, venue info):
.claude/skills/pdf-extraction/scripts/pdf_extract.sh first "{pdf_path}" 1
If venue not found, search for it:
.claude/skills/pdf-extraction/scripts/pdf_extract.sh search "{pdf_path}" "journal"
.claude/skills/pdf-extraction/scripts/pdf_extract.sh search "{pdf_path}" "conference"
Only extract additional pages if critical info still missing
Never read the entire PDF. Extract minimally, verify you have: title, authors, year, venue.
| Indicators | Entry Type |
|---|---|
| Journal name, volume/issue | @article |
| "Proceedings of", conference | @inproceedings |
| arXiv URL, "preprint" | @misc |
| Technical/institutional report | @techreport |
| ISBN, book publisher | @book |
| Dissertation, thesis | @phdthesis |
Per @.claude/reference/bibtex-format.md:
Format: {Author}{Year}{Keyword} (e.g., FernandezPichel2025Evaluating)
If key exists: append lowercase letter (a, b, c...).
Per @.claude/reference/bibtex-format.md:
{{...}}Lastname, Firstname and Lastname2, Firstname2URL priority: DOI URL first (https://doi.org/{DOI}); else other reliable URL; else omit.
arXiv: Use howpublished = {arXiv [Preprint]} (not publisher or note).
paper/main.bibVerify file written successfully.
BibTeX Creation Summary
=======================
PDFs found: {total}
Skipped (entry exists): {skipped}
New entries created: {created}
- Via fbib (DOI): {doi_count}
- Via fbib (title search): {title_count}
- Via manual extraction: {manual_count}
New entries:
- {Key1} ({filename1}) [fbib-doi]
- {Key2} ({filename2}) [fbib-title]
- {Key3} ({filename3}) [manual]
Warnings (if any):
- {filename}: {warning}
Possible warnings: "DOI fetch failed, used manual extraction", "Could not extract DOI", "Non-standard filename", "Could not determine venue", "Month not available"
After processing every 5 PDFs, run:
/compact Compacting after processing 5 papers. PRESERVE: (1) Task: creating BibTeX entries using /create-bibtex command, (2) files processed with BibTeX keys created, (3) files remaining to process, (4) any warnings/errors. DISCARD: All extracted PDF text content. Replace PDF extractions with: "Processed: [filename] → [BibTeX key created]".
For files not matching Author - Year - Title format: read PDF to extract metadata; use organization name if author is organization; report warning.
| Missing | Action |
|---|---|
| DOI | Omit field; use alternate URL if available |
| Month | Omit field |
| Pages | Omit field |
| Volume/Issue | Omit fields |
| Venue | Use @misc; add note |
Report error "Could not read PDF: {filename}", skip file, continue.