skills/init-latex-project/SKILL.md
Initialize a LaTeX academic paper project. Use for new conference or journal papers needing templates, macros, venue preambles, and writing guidance.
npx skillsauth add a-green-hand-jack/ml-research-skills init-latex-projectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Set up a complete LaTeX academic paper project from the standard template.
Do not encode local machine TeX availability in this skill or in generated shared paper source. Whether latexmk, pdflatex, xelatex, lualatex, tectonic, or tlmgr exists is a runtime fact about one user's machine, not durable project state. The durable project state is the paper's compile backend: local, Overleaf-GitHub, CI, or unknown.
<installed-skill-dir>/
├── SKILL.md
├── sources.yaml # Authoritative download sources per venue (verified)
├── templates/
│ ├── macros.tex # Full math macro library
│ ├── main.tex # Generic arXiv/whitepaper template
│ ├── gitignore # Paper-source hygiene defaults
│ ├── AGENTS.md # Universal/Codex writing rules
│ ├── CLAUDE.md # Writing rules for AI agents
│ └── venues/
│ ├── icml/main.tex # ICML two-column template
│ ├── acl/main.tex # ACL/*ACL single-column template
│ ├── emnlp/main.tex # EMNLP (same acl.sty as ACL)
│ ├── naacl/main.tex # NAACL (same acl.sty as ACL)
│ ├── iccv/main.tex # ICCV two-column template
│ ├── eccv/main.tex # ECCV single-column (Springer LNCS)
│ ├── neurips/main.tex # NeurIPS single-column template
│ ├── iclr/main.tex # ICLR single-column template
│ ├── cvpr/main.tex # CVPR two-column template
│ └── acm/main.tex # ACM SIGCONF template
└── scripts/
└── init.sh # Builds project + downloads official style files
Every venue template uses \input{venue_preamble} instead of a hardcoded
\usepackage{neurips_<year>}. init.sh downloads the official .sty/.bst files
from the venue's authoritative source (see sources.yaml), detects the actual
filename, and writes venue_preamble.tex automatically.
project/
├── main.tex ← \input{venue_preamble} (stable, never changes)
├── venue_preamble.tex ← generated by init.sh (edit here to change mode)
├── neurips_<year>.sty ← downloaded from neurips.cc
└── ...
To switch submission mode (e.g., anonymous → camera-ready), only edit
venue_preamble.tex — main.tex never needs to change.
$ARGUMENTS| Position/Flag | Meaning | Required |
|---|---|---|
| First word | Project name | Yes |
| Second word | Target directory (default: current dir) | No |
| --venue <name> | Conference venue | No |
| --git | Initialize git repo | No |
| --offline | Skip style-file download (creates placeholder venue_preamble.tex) | No |
Supported venues (by deadline month):
| Venue | Month | Style | Source |
|---|---|---|---|
| icml | Jan | two-column | icml.cc |
| acl | Feb | single-column | github.com/acl-org/acl-style-files |
| iccv | Mar (biennial, odd) | two-column | CVF / iccv.thecvf.com |
| eccv | Mar (biennial, even) | single-column (LNCS) | github.com/paolo-favaro/paper-template |
| neurips | May | single-column | neurips.cc |
| emnlp | May | single-column | github.com/acl-org/acl-style-files |
| iclr | Sep | single-column | github.com/ICLR/Master-Template |
| cvpr | Nov | two-column | github.com/cvpr-org/author-kit |
| naacl | Dec | single-column | github.com/acl-org/acl-style-files |
| acm | varies | single-column | CTAN (pre-installed) |
bash <init-latex-project-skill-dir>/scripts/init.sh <project-name> [target-dir] [--venue <venue>] [--git]
Important: Resolve <init-latex-project-skill-dir> as the installed directory for this skill and use the absolute path to init.sh. Do not assume a Claude-specific install path.
After the script runs, ask the user if they want to:
sections/title.tex with their actual titlemain.texAsk whether the paper will compile locally, in Overleaf through GitHub, in CI, or by an unknown workflow. Do not infer the project compile backend solely from the current user's OS or installed tools.
Record the selected compile backend in project/worktree memory when available, such as .agent/worktree-status.md or root memory. Do not record absolute local tool paths or "this machine has/does not have TeX" in committed shared paper source.
For Overleaf/GitHub projects:
tex-fmt source-format checks, Git diff review, commit, and pushFor local-compile projects:
command -v, but do not commit the detected pathsIf tex-fmt is installed, record it as the default source-format checker:
tex-fmt --check --nowrap --recursive .
Do not format generated paper source silently. When the user wants formatting, run tex-fmt --nowrap --recursive . and review the diff before committing or pushing. If a project-local tex-fmt config exists, use it.
The generated paper repo should include both:
AGENTS.md: universal/Codex entrypoint for paper-local writing, compile, figure, table, and source hygiene rulesCLAUDE.md: Claude Code entrypoint with the same effective policy.gitignore: paper-specific source visibility defaults that keep .agent/, AGENTS.md, CLAUDE.md, raw CSVs, internal result docs, provenance ledgers, notebooks, and plotting scripts out of visible paper source unless intentionally force-addedKeep the two agent guidance files semantically aligned, including the same tex-fmt check/format policy. Treat them as local/agent-private guidance by default; if the paper branch is linked to Overleaf or otherwise visible to coauthors, do not push them unless the user explicitly chooses to expose agent guidance.
If this paper repo is part of a project-init layout, note that target-specific paper versions should usually be isolated as paper worktrees under sibling paper-worktrees/, not as copied folders inside paper/.
Use paper worktrees for:
For arXiv or any public-source release, keep internal figure/table descriptions, experimental provenance notes, reviewer notes, TODOs, author-comment macros, private paths, and hidden comments out of the released .tex source. Store that descriptive/provenance material in .agent/, root memory/, or private project docs instead.
If the main paper branch is linked to Overleaf/GitHub, treat it as author-visible: paper source and paper-facing assets are allowed, but .agent/, AGENTS.md, CLAUDE.md, raw CSVs, internal result docs, plotting scripts, notebooks, reviewer strategy, and private paths should stay in root/private memory or an agent-private paper worktree.
For anonymous conference submissions, enforce venue anonymity and formatting mode. Do not assume source comments are safe if the venue requires source upload.
The script prints a file tree and venue-specific setup notes. Make sure the user sees these.
All sources are verified in sources.yaml. init.sh downloads style files automatically.
Edit venue_preamble.tex to switch submission mode.
article + \usepackage{icml{YEAR}} (year-specific)icml{YEAR}.bstsections/impact.tex (Broader Impact, no page limit)\icmltitle, \icmlauthor, etc.)\documentclass[11pt]{article} + \usepackage[review]{acl} (stable name)acl_natbib.bst\citet{} in-text; \cite{}/\citep{} parentheticalsections/limitations.tex (no page limit)sections/ethics.tex\documentclass[times,10pt,twocolumn,letterpaper]{article} + \usepackage[review]{iccv}ieeenat_fullname.bstfigure*/table* for full-width floats\documentclass[runningheads]{llncs} — NOT articleeccv.sty + eccvabbrv.stysplncs04.bst\author{}\inst{}\institute{} macrosarticle + \usepackage{neurips_{YEAR}} (year-specific)unsrtnat (numeric, sorted by appearance){ack} environment (auto-hides in anonymous mode)sections/impact.tex (Broader Impact, no page limit)sections/checklist.tex (Author Checklist, no page limit)article + \usepackage[submitted]{iclr{YEAR}_conference} (year-specific)iclr{YEAR}_conference.bstsections/impact.tex (optional Ethics Statement)\documentclass[times,10pt,twocolumn,letterpaper]{article} + \usepackage[review]{cvpr} (stable name)ieeenat_fullname.bstfigure*/table* for full-width floats\documentclass[sigconf,review,anonymous]{acmart} (pre-installed via CTAN)ACM-Reference-Format.bst\acmConference, \acmDOI, \setcopyright, CCS conceptsmacros.tex — complete math macro library:
\calA…\calZ, bold \bA…\bZ/\ba…\bz\R \E \P \B\sG \lG \tG \pa \half\argmin \argmax \Softmax \Sigmoid \Var\sumN \sumK \sumM \sumTtheorem lemma definition remark assumption\jerry{} \wwm{} \jieke{} etc.Standard section files (all placeholder):
title.tex, abstract.tex, intro.tex, related.tex, method.tex, exp.tex, conclusion.tex, appendix.tex, acknowledgement.tex
bib/refs.bib — empty with usage example
/init-latex-project my-new-paper # generic arXiv
/init-latex-project my-icml-paper ~/Papers --venue icml --git
/init-latex-project my-acl-paper ~/Papers --venue acl --git
/init-latex-project my-iccv-paper . --venue iccv
/init-latex-project my-eccv-paper . --venue eccv
/init-latex-project my-neurips-paper . --venue neurips --git
/init-latex-project my-emnlp-paper . --venue emnlp
/init-latex-project my-iclr-paper ~/Papers --venue iclr --git
/init-latex-project my-cvpr-paper . --venue cvpr
/init-latex-project my-naacl-paper . --venue naacl
/init-latex-project my-acm-paper . --venue acm
/init-latex-project my-paper-offline . --venue neurips --offline # skip download
If init.sh cannot reach the venue server, venue_preamble.tex is created as a
placeholder. Fix it:
sources.yaml)..sty/.bst files into the project root.venue_preamble.tex to add the correct \usepackage{...} line.As a last resort, use WebSearch to find the current year's download URL and fetch it:
# Example for NeurIPS <year>:
curl -fsSL https://media.nips.cc/Conferences/<year>/Styles/neurips_<year>.zip -o /tmp/n.zip
unzip -j /tmp/n.zip "*.sty" -d /path/to/project/
The macros.tex library is loaded last in all venue templates (after venue packages), so our definitions take precedence. Known conflicts:
| Venue | Potential Conflict | Resolution |
|---|---|---|
| ACM | acmart redefines \P | Our \P = \mathbb{P} overrides it — intentional |
| ACM | acmart has its own \cite | \let\cite\citep in macros.tex may interfere — comment it out if needed |
| CVPR | Two-column layout | tcolorbox theorem envs may span columns — switch to plain amsthm if needed |
| ICML | Uses its own hyperref setup | Load macros.tex after icml<year> to avoid double-load errors |
| NeurIPS | algorithmic vs algpseudocode | Always use algpseudocode (lowercase \State, \Require, etc.). The older algorithmic package uses ALL-CAPS commands and is incompatible with modern algorithm code. |
| NeurIPS | cleveref Option Clash | cleveref must be loaded ONCE, in main.tex, AFTER hyperref. The macros.tex template also contains \usepackage[capitalize,noabbrev]{cleveref} — this causes an Option Clash (capitalise vs capitalize) when both files are compiled together. Fix: remove or comment out the cleveref line from macros.tex in NeurIPS projects. The NeurIPS venue template already does this correctly. |
| ALL | \def\(, \def\), \def\[, \def\] in macros.tex | PERMANENTLY DISABLED. These four lines redefined LaTeX's built-in math-mode delimiters (\( \) = inline math; \[ \] = display math), which broke ALL math environments ($...$, \begin{equation}, algorithmic states, etc.) with cascading "Missing $" and "Extra )" errors. Never re-enable. Use \left( ... \right) explicitly instead. |
| ALL | \usepackage{algorithm} + \usepackage{algorithmic} in macros.tex | PERMANENTLY DISABLED. Loading both algorithm/algorithmic alongside algpseudocode (required by NeurIPS, ICML, ICLR) causes "Command \algorithmicindent already defined" and similar errors. The algorithm float wrapper should be loaded once in main.tex together with exactly one of algpseudocode (modern, recommended) or algorithmic (legacy). |
testing
Bootstrap project-local ml-research-skills. Use from global installs when creating a new ML research project, enabling this collection in an existing ML research repo, or deciding whether to install the full bundle locally. Route to project-init for new projects; do not handle paper or experiment work directly.
development
Route project operations tasks — git, memory, bootstrap, remote, workspace, code review, timeline, ops — to the correct skill. Use when the task involves commits, pushes, worktrees, project memory, enabling project-local skills, SSH/server coordination, sidecar runners, or audits. Do not solve the ops task directly.
testing
Route ML/AI paper writing tasks to the correct skill — contract planning, prose drafting, section writing, consistency editing, review simulation, rebuttal, submission, or citation work. Use when the task involves writing, revising, reviewing, or submitting a paper instead of guessing between paper-writing-assistant, paper-writing-contract-planner, paper-reviewer-simulator, auto-paper-improvement-loop, or citation skills. Do not draft prose directly.
data-ai
Project-local router for ML research skill selection. Use inside an initialized ML research project, or while maintaining this skill repo, when the user describes an ML research/paper/experiment/discovery/ops/release workflow and may not know the skill; route to a domain router or high-signal leaf. Do not use for generic non-ML projects.