ML/AI Review Paper Workflow (IEEEtran template)
When to Use
- ML/AI review papers for arXiv (main text ~6-10 pages; references excluded)
- LaTeX + BibTeX workflow with verified citations
- Citation validation/repair on existing LaTeX projects
When NOT to Use
- Novel experimental research papers (this is a review workflow)
- Non-academic documents
Inputs
- Topic description (required)
- Constraints: venue, page limit, author/affiliations (optional)
- Existing project path for citation validation (optional)
Outputs
main.tex (LaTeX source)
ref.bib (verified BibTeX entries)
IEEEtran.cls
plan/<timestamp>-<slug>.md, issues/<timestamp>-<slug>.csv
- Figures/tables;
main.pdf
notes/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).
Gated Workflow
Tip: Run python3 scripts/<script>.py --help before use.
Open reference files only when a step calls them out.
Non-Negotiable Rules
- No prose in
main.tex until plan approved AND issues CSV exists.
- First deliverable: research snapshot + outline + clarification questions + draft plan.
- Use plan + issues tracking for all new papers; do not opt out.
- Issues CSV is the execution contract; update
Status and Verified_Citations per issue, and add/split/insert issue rows when scope grows (do not do untracked work).
- Template is fixed: use IEEEtran two-column layout (
assets/template/IEEEtran.cls).
Treat two-column width as a layout constraint (use two-column floats when needed).
Gate 0: Research Snapshot + Draft Plan
- Confirm constraints (venue, page limit, author block, date range).
- Translate the topic into search keywords and run a light discovery pass:
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.
- Propose 2-4 candidate titles aligned to the topic.
- Scaffold the project folder and draft plan:
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.
- Create a framework skeleton in
main.tex
(section headings + 2-4 bullets per section + seed citations; no prose).
- Update the plan file to reflect the framework, proposed titles, and section/subsection plan.
- Compile early:
python3 scripts/compile_paper.py --project-dir <paper_dir>
Fix any Overfull \hbox warnings (see Layout Hygiene below).
- Return to user:
- Proposed outline (5-8 sections, 2-4 bullets each)
- Planned visualizations (5+) mapped to sections (see
references/visual-templates.md)
- Clarification questions
- STOP until user approves.
Gate 1: Create Issues CSV (after approval)
- Check kickoff gate in plan:
- [x] User confirmed scope + outline in chat.
- Create issues CSV (script refuses if gate unchecked):
python3 scripts/bootstrap_ieee_review_paper.py --stage issues --topic "<topic>" --out <workspace_dir> --with-literature-notes
- Validate:
python3 scripts/validate_paper_issues.py <paper_dir>/issues/<timestamp>-<slug>.csv
- If literature notes are enabled, keep short summaries and (optional) abstract snippets to avoid re-search.
- The plan may evolve; add/split/insert issues as needed, re‑validate after edits, and keep going until all issues (including inserted ones) are
DONE or SKIP (when feasible, in the same run).
Phase 2: Per-Issue Writing Loop
For each writing issue in the CSV:
- If an issue balloons (new figure, new subsection, new benchmark set, or a large QA fix), split/insert new issue row(s) (e.g.,
W6a, Q5) before proceeding; re-run python3 scripts/validate_paper_issues.py <issues.csv>; keep going until all issues are DONE/SKIP.
- Research: 8-12 section-specific papers.
- Write: Never 3 sentences without citations; varied paragraph rhythm
(see
references/writing-style.md).
For section intent and structure, use references/template-usage.md.
- Visualize: Match content triggers (see
references/visual-templates.md).
Prioritize single-column sizing; use double-column spans only when necessary (see Layout Hygiene).
Cite externally sourced figure content.
- Verify: Web search + open source page (and PDF if available) before adding to
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.
- Update: Mark issue
DONE with Verified_Citations count.
- Compile after meaningful changes; fix
Overfull \hbox before marking DONE.
Phase 2.5: Rhythm Refinement
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.
Phase 3: QA Gate
- Run internal QA checklist (see
references/quality-report.md).
- Compile; ensure no
Overfull \hbox warnings in main.log.
- Deliver
main.tex, ref.bib, figures, and main.pdf.
Existing Paper Workflow (No Re-Scaffold)
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
Citation-Validation Variant
- Treat provided path as LaTeX project root.
- Follow
references/citation-workflow.md.
- Use
references/bibtex-guide.md for BibTeX rules if entries need repair.
- Deliver validation report and corrected
ref.bib if requested.
Success Criteria
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:
- 6-10 pages of main text (references excluded)
- 60-80 total citations (8+ per section)
- 100% citation verification rate
- 70%+ citations from last 3 years
- 5+ visualization types
- All issues
DONE or SKIP
Safety & Guardrails
- Never fabricate citations or results; add TODO and ask user if evidence missing.
- Verify every citation via web search + source page (and PDF if available) before adding to
ref.bib.
- Confirm before large literature searches.
- Do not overwrite user files without confirmation.
- Issues CSV is the contract; mark
DONE only when criteria met.
- No submission bundles unless user requests.
Layout Hygiene
Fix Overfull \hbox warnings before marking issues DONE:
- Figures: start with
figure + \columnwidth; switch to figure* + \textwidth if needed
- Tables: prefer
p{...} column widths / \tabcolsep over \resizebox
- Equations: use
split, multline, aligned, or IEEEeqnarray for line-breaking
Issues CSV Schema
| 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).
1---2name: arxiv-paper-writer3description: 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.4---56# ML/AI Review Paper Workflow (IEEEtran template)78## When to Use9- ML/AI review papers for arXiv (main text ~6-10 pages; references excluded)10- LaTeX + BibTeX workflow with verified citations11- Citation validation/repair on existing LaTeX projects1213## When NOT to Use14- Novel experimental research papers (this is a review workflow)15- Non-academic documents1617## Inputs18- Topic description (required)19- Constraints: venue, page limit, author/affiliations (optional)20- Existing project path for citation validation (optional)2122## Outputs23- `main.tex` (LaTeX source)24- `ref.bib` (verified BibTeX entries)25- `IEEEtran.cls`26- `plan/<timestamp>-<slug>.md`, `issues/<timestamp>-<slug>.csv`27- Figures/tables; `main.pdf`28- `notes/research-snapshot.md` (Gate 0 research snapshot)29- `notes/literature-notes.md` (optional per-citation notes)30- `notes/arxiv-registry.sqlite3` (arXiv metadata/BibTeX cache)3132**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).3334---3536## Gated Workflow3738> Tip: Run `python3 scripts/<script>.py --help` before use.39> Open reference files only when a step calls them out.4041### Non-Negotiable Rules421. **No prose in `main.tex`** until plan approved AND issues CSV exists.432. First deliverable: research snapshot + outline + clarification questions + draft plan.443. **Use plan + issues tracking for all new papers; do not opt out.**454. Issues CSV is the execution contract; update `Status` and `Verified_Citations` per issue, and add/split/insert issue rows when scope grows (do not do untracked work).465. **Template is fixed**: use IEEEtran two-column layout (`assets/template/IEEEtran.cls`).47 Treat two-column width as a layout constraint (use two-column floats when needed).4849### Gate 0: Research Snapshot + Draft Plan501. Confirm constraints (venue, page limit, author block, date range).512. Translate the topic into search keywords and run a light discovery pass:52 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`.533. Propose 2-4 candidate titles aligned to the topic.544. Scaffold the project folder and draft plan:55 ```bash56 python3 scripts/bootstrap_ieee_review_paper.py --stage kickoff --topic "<topic>" --out <workspace_dir>57 ```58 This copies LaTeX templates from `assets/template/`; plan/issues are generated from templates in `assets/`.59 Initialize arXiv registry (once): `python3 scripts/arxiv_registry.py --project-dir <paper_dir> init`.605. Create a **framework skeleton** in `main.tex`61 (section headings + 2-4 bullets per section + seed citations; **no prose**).626. Update the plan file to reflect the framework, proposed titles, and section/subsection plan.637. Compile early: `python3 scripts/compile_paper.py --project-dir <paper_dir>`64 Fix any `Overfull \hbox` warnings (see Layout Hygiene below).658. Return to user:66 - Proposed outline (5-8 sections, 2-4 bullets each)67 - Planned visualizations (5+) mapped to sections (see `references/visual-templates.md`)68 - Clarification questions699. **STOP** until user approves.7071### Gate 1: Create Issues CSV (after approval)721. Check kickoff gate in plan: `- [x] User confirmed scope + outline in chat`.732. Create issues CSV (script refuses if gate unchecked):74 ```bash75 python3 scripts/bootstrap_ieee_review_paper.py --stage issues --topic "<topic>" --out <workspace_dir> --with-literature-notes76 ```773. Validate:78 ```bash79 python3 scripts/validate_paper_issues.py <paper_dir>/issues/<timestamp>-<slug>.csv80 ```814. If literature notes are enabled, keep short summaries and (optional) abstract snippets to avoid re-search.825. The plan may evolve; add/split/insert issues as needed, re‑validate after edits, and keep going until all issues (including inserted ones) are `DONE` or `SKIP` (when feasible, in the same run).8384### Phase 2: Per-Issue Writing Loop85For each writing issue in the CSV:86- If an issue balloons (new figure, new subsection, new benchmark set, or a large QA fix), split/insert new issue row(s) (e.g., `W6a`, `Q5`) before proceeding; re-run `python3 scripts/validate_paper_issues.py <issues.csv>`; keep going until all issues are `DONE`/`SKIP`.871. **Research**: 8-12 section-specific papers.882. **Write**: Never 3 sentences without citations; varied paragraph rhythm89 (see `references/writing-style.md`).90 For section intent and structure, use `references/template-usage.md`.913. **Visualize**: Match content triggers (see `references/visual-templates.md`).92 Prioritize single-column sizing; use double-column spans only when necessary (see Layout Hygiene).93 Cite externally sourced figure content.944. **Verify**: Web search + open source page (and PDF if available) before adding to `ref.bib`.95 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`.965. **Update**: Mark issue `DONE` with `Verified_Citations` count.976. Compile after meaningful changes; fix `Overfull \hbox` before marking `DONE`.9899### Phase 2.5: Rhythm Refinement100After 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.101102### Phase 3: QA Gate1031. Run internal QA checklist (see `references/quality-report.md`).1042. Compile; ensure no `Overfull \hbox` warnings in `main.log`.1053. Deliver `main.tex`, `ref.bib`, figures, and `main.pdf`.106107---108109## Existing Paper Workflow (No Re-Scaffold)110If a paper folder already exists, do NOT rerun scaffold:111```bash112# Create plan113python3 scripts/create_paper_plan.py --topic "<topic>" --stage plan --output-dir <paper_dir>114# STOP for approval, then check kickoff gate box115# Create issues (use timestamp/slug from plan filename/frontmatter)116python3 scripts/create_paper_plan.py --topic "<topic>" --stage issues --timestamp "<TS>" --slug "<slug>" --output-dir <paper_dir> --with-literature-notes117```118119## Citation-Validation Variant1201. Treat provided path as LaTeX project root.1212. Follow `references/citation-workflow.md`.1223. Use `references/bibtex-guide.md` for BibTeX rules if entries need repair.1234. Deliver validation report and corrected `ref.bib` if requested.124125---126127## Success Criteria128129**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.130131**Quality Metrics**:132- 6-10 pages of main text (references excluded)133- 60-80 total citations (8+ per section)134- 100% citation verification rate135- 70%+ citations from last 3 years136- 5+ visualization types137- All issues `DONE` or `SKIP`138139---140141## Safety & Guardrails142- **Never fabricate** citations or results; add TODO and ask user if evidence missing.143- **Verify every citation** via web search + source page (and PDF if available) before adding to `ref.bib`.144- **Confirm before** large literature searches.145- **Do not overwrite** user files without confirmation.146- **Issues CSV** is the contract; mark `DONE` only when criteria met.147- **No submission bundles** unless user requests.148149## Layout Hygiene150Fix `Overfull \hbox` warnings before marking issues `DONE`:151- Figures: start with `figure` + `\columnwidth`; switch to `figure*` + `\textwidth` if needed152- Tables: prefer `p{...}` column widths / `\tabcolsep` over `\resizebox`153- Equations: use `split`, `multline`, `aligned`, or `IEEEeqnarray` for line-breaking154155---156157## Issues CSV Schema158| Phase | Issues |159|-------|--------|160| Research | Rx: discovery, scaffolding, framework, viz planning |161| Writing | Wx: each section with target citations and visualization |162| Refinement | RFx: apply `latex-rhythm-refiner` skill (after all Wx DONE) |163| QA | Qx: citation verification, QA checklist, compilation, final review |164165Status: `TODO` → `DOING` → `DONE`, or `SKIP` with a reason in `Notes`. Schema validated by `validate_paper_issues.py`.166167`Verified_Citations` = the number of unique verified cite keys in the issue's section when it is marked `DONE` (0 for non-writing issues).