appautomaton/arxiv-paper-writer
> Write LaTeX ML/AI review articles for arXiv using the IEEEtran template and verified BibTeX citations. Use when writing, planning, or continuing an arXiv review/survey paper, or when validating and repairing citations in an existing LaTeX project.
npx skills add https://github.com/appautomaton/latex-arxiv-SKILL --skill arxiv-paper-writer
main.tex (LaTeX source)ref.bib (verified BibTeX entries)IEEEtran.clsplan/<timestamp>-<slug>.md, issues/<timestamp>-<slug>.csvmain.pdfnotes/research-snapshot.md (Gate 0 research snapshot)notes/literature-notes.md (optional per-citation notes)notes/arxiv-registry.sqlite3 (arXiv metadata/BibTeX cache)Conventions: run python3 scripts/... from this skill folder (where scripts/ lives); <paper_dir> is the paper/project root (contains main.tex, ref.bib, plan/, issues/, notes/). Paths like plan/... are under <paper_dir>. Papers are created under --out <workspace_dir> (your working directory, never inside this skill folder); pass the same --out (and --name, if used) to both bootstrap stages. For arXiv discovery/metadata/BibTeX, use scripts/arxiv_registry.py (no ad-hoc curl/wget).
> Tip: Run python3 scripts/<script>.py --help before use.
> Open reference files only when a step calls them out.
main.tex until plan approved AND issues CSV exists.Status and Verified_Citations per issue, and add/split/insert issue rows when scope grows (do not do untracked work).assets/template/IEEEtran.cls).Treat two-column width as a layout constraint (use two-column floats when needed).
10-20 key papers (see references/research-workflow.md). After step 4 (once <paper_dir> exists), cache arXiv discovery with arxiv_registry.py search and save the snapshot to notes/research-snapshot.md.
python3 scripts/bootstrap_ieee_review_paper.py --stage kickoff --topic "<topic>" --out <workspace_dir>
This copies LaTeX templates from assets/template/; plan/issues are generated from templates in assets/.
Initialize arXiv registry (once): python3 scripts/arxiv_registry.py --project-dir <paper_dir> init.
main.tex(section headings + 2-4 bullets per section + seed citations; no prose).
python3 scripts/compile_paper.py --project-dir <paper_dir>Fix any Overfull \hbox warnings (see Layout Hygiene below).
references/visual-templates.md)- [x] User confirmed scope + outline in chat. python3 scripts/bootstrap_ieee_review_paper.py --stage issues --topic "<topic>" --out <workspace_dir> --with-literature-notes
python3 scripts/validate_paper_issues.py <paper_dir>/issues/<timestamp>-<slug>.csv
DONE or SKIP (when feasible, in the same run).For each writing issue in the CSV:
W6a, Q5) before proceeding; re-run python3 scripts/validate_paper_issues.py <issues.csv>; keep going until all issues are DONE/SKIP.(see references/writing-style.md).
For section intent and structure, use references/template-usage.md.
references/visual-templates.md).Prioritize single-column sizing; use double-column spans only when necessary (see Layout Hygiene).
Cite externally sourced figure content.
ref.bib.For arXiv entries, append BibTeX via python3 scripts/arxiv_registry.py --project-dir <paper_dir> export-bibtex <arxiv_id> --out-bib <paper_dir>/ref.bib.
DONE with Verified_Citations count.Overfull \hbox before marking DONE.After all writing issues are DONE, refine prose section-by-section using the latex-rhythm-refiner skill. This step varies sentence/paragraph lengths and removes filler phrases while preserving all citations.
references/quality-report.md).Overfull \hbox warnings in main.log.main.tex, ref.bib, figures, and main.pdf.If a paper folder already exists, do NOT rerun scaffold:
# Create plan
python3 scripts/create_paper_plan.py --topic "<topic>" --stage plan --output-dir <paper_dir>
# STOP for approval, then check kickoff gate box
# Create issues (use timestamp/slug from plan filename/frontmatter)
python3 scripts/create_paper_plan.py --topic "<topic>" --stage issues --timestamp "<TS>" --slug "<slug>" --output-dir <paper_dir> --with-literature-notes
references/citation-workflow.md.references/bibtex-guide.md for BibTeX rules if entries need repair.ref.bib if requested.Compilation: python3 scripts/compile_paper.py --project-dir <paper_dir> (exit 0, no "Citation undefined" warnings). Use --report-page-counts for main-text page count.
Quality Metrics:
DONE or SKIPref.bib.DONE only when criteria met.Fix Overfull \hbox warnings before marking issues DONE:
figure + \columnwidth; switch to figure* + \textwidth if neededp{...} column widths / \tabcolsep over \resizeboxsplit, multline, aligned, or IEEEeqnarray for line-breaking| Phase | Issues |
|-------|--------|
| Research | Rx: discovery, scaffolding, framework, viz planning |
| Writing | Wx: each section with target citations and visualization |
| Refinement | RFx: apply latex-rhythm-refiner skill (after all Wx DONE) |
| QA | Qx: citation verification, QA checklist, compilation, final review |
Status: TODO → DOING → DONE, or SKIP with a reason in Notes. Schema validated by validate_paper_issues.py.
Verified_Citations = the number of unique verified cite keys in the issue's section when it is marked DONE (0 for non-writing issues).
Take appautomaton/arxiv-paper-writer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.