submit-paper
Submit Paper — Pre-Submission Checklist
Run a systematic readiness check on a LaTeX paper project before submitting to a conference. Covers submission mode, mandatory sections, drafting artifacts, bibliography, anonymity, source formatting, and optional compilation.
Do not assume the local machine has TeX Live, MacTeX, or another LaTeX distribution installed. Many macOS research workflows edit locally, sync through GitHub, and compile on Overleaf. If latexmk, pdflatex, xelatex, lualatex, or tectonic is missing, do not ask the user to install TeX unless they explicitly want local compilation. Use static checks locally and route compile/page-count verification through the GitHub-linked Overleaf project.
Default paper-edit closeout is: local static checks -> diff review -> commit and push when requested -> Overleaf compile -> use Overleaf logs/PDF for follow-up fixes. Do not run local LaTeX compile commands merely because paper source changed.
Paper versions may live in separate worktrees. If the project has paper-worktrees/, prefer checking the specific version worktree for the target venue, arXiv release, or camera-ready submission rather than mutating the main paper/ branch.
Step 1 — Locate the LaTeX project
// turbo Find the paper directory:
# If we're inside a project-init project, look for paper/ sibling
git rev-parse --show-toplevel 2>/dev/null
ls "$(git rev-parse --show-toplevel 2>/dev/null)/../" 2>/dev/null || true
# Find main.tex
find . -maxdepth 3 -name "main.tex" 2>/dev/null | head -5
Determine $PAPER_DIR — the directory containing main.tex.
If $ARGUMENTS provides a path, use it directly.
If in a project-init project structure, check for paper/ sibling.
If the requested target is a venue retarget, arXiv release, or camera-ready version, also check for a matching paper-worktrees/ sibling.
Step 2 — Ask for submission context
Ask the user in a single message:
- Submission type: Initial submission (anonymous) / Camera-ready / arXiv preprint?
- Deadline: When is the deadline? (helps prioritize what to fix)
- Compile workflow: Is this paper compiled locally or in Overleaf through GitHub? If unknown, assume Overleaf/GitHub for macOS users.
- Version workspace: Is this the main
paper/repo or apaper-worktrees/version for a specific venue/arXiv/camera-ready target? - Source visibility: Is this source
agent-private,author-visiblethrough Overleaf/coauthors,anonymous-submission,public-preprint,camera-ready-public, orpublisher-artifact?
If venue can be inferred from venue_preamble.tex (Step 3 will read it), skip asking.
Wait for the answer before proceeding.
Step 3 — Run the check script
// turbo
bash <submit-paper-skill-dir>/scripts/check.sh "$PAPER_DIR" [--compile]
Important: Resolve <submit-paper-skill-dir> as the installed directory for this skill and use the absolute path to check.sh.
Only pass --compile when the user explicitly asked for local compilation and a local LaTeX compiler exists. If no compiler exists, run the script without --compile; it still performs the useful static checks.
The script performs:
| Check | What it looks for |
|---|---|
| Project detection | main.tex present, venue from venue_preamble.tex |
| Drafting artifacts | \todo, \fixme, \red{}, author comment macros, TODO/FIXME text |
| Anonymity | Acknowledgements, funding disclosures, personal URLs/emails |
| Bibliography | .bib file non-empty, \bibliography{} call present |
| Mandatory sections | Venue-specific required sections (see below) |
| Abstract length | ~30–350 words (warns outside range) |
| Figures & tables | All \label{fig:*} and \label{tab:*} are \ref'd |
| Source formatting | optional tex-fmt --check --nowrap --recursive . when tex-fmt is installed |
| Compilation | optional local LaTeX compile when a compiler exists; otherwise verify PDF/page count in Overleaf |
Step 4 — Handle source formatting
If tex-fmt is installed, the check script runs it in check mode only:
tex-fmt --check --nowrap --recursive .
Treat a formatting mismatch as a warning unless the user or project policy makes formatting a blocking gate. Do not format source silently during a submission check. Offer to run:
tex-fmt --nowrap --recursive .
then review the diff before committing or pushing. Use project-local tex-fmt config if present. Keep --nowrap as the default fallback so formatter runs do not reflow long prose lines unless the project explicitly opts into wrapping.
If tex-fmt is missing, do not ask the user to install it just to continue. Report that the optional format check was skipped.
Step 5 — Handle Overleaf/GitHub compilation
Use this workflow when the user says they compile in Overleaf, when the paper repo is linked to Overleaf through GitHub, or when local LaTeX commands are missing.
- Confirm the local paper repo has a GitHub remote:
git -C "$PAPER_DIR" remote -v
git -C "$PAPER_DIR" status --short --branch
-
If the user asks to publish the changes for Overleaf, commit and push through normal Git flow. Do not commit unrelated user changes without checking the diff. This is the normal compile handoff for Overleaf-linked papers.
-
Tell the user to compile the synced branch in Overleaf. Treat Overleaf as the source of PDF truth for:
- clean compile status
- page count
- overfull boxes and layout warnings
- bibliography rendering
- final PDF inspection
-
If Overleaf reports errors, use the Overleaf log text or screenshots as the compile evidence. Fix the LaTeX source locally, then push again.
Do not block submission readiness solely because local latexmk, pdflatex, xelatex, lualatex, or tectonic is unavailable.
If project memory exists and the paper source is visible to coauthors, reviewers, arXiv, publisher, or artifact readers, update memory/source-visibility-board.md with the tier, sync target, cleanup gate, audit status, and cleanup actions.
Step 6 — Fix submission mode in venue_preamble.tex
After reading the script output, check venue_preamble.tex and verify the \usepackage option matches what the user said in Step 2.
If the mode is wrong, show the user what to change and offer to fix it:
| Submission type | venue_preamble.tex should contain |
|---|---|
| Initial / anonymous | e.g. \usepackage{neurips_<year>}, \usepackage[review]{cvpr}, or \usepackage[review]{iccv} |
| arXiv / preprint | e.g. \usepackage[preprint]{neurips_<year>} |
| Camera-ready | e.g. \usepackage[final]{neurips_<year>}, \usepackage{cvpr}, or \usepackage{iccv} |
Ask "Should I update venue_preamble.tex to [mode] mode?" — then edit if confirmed.
Step 7 — Check source visibility and cleanup
Different paper versions have different source hygiene requirements. Source visibility is independent of venue. If the branch is linked to Overleaf/GitHub or visible to coauthors, treat it as author-visible, not private.
| Visibility tier | Typical source surface | Required cleanup |
|---|---|---|
agent-private |
local/private draft worktree | May contain agent state, internal notes, plotting scripts, CSVs, and provenance; should not be pushed to Overleaf/public remotes |
author-visible |
main branch linked to Overleaf/GitHub | Exclude .agent/, AGENTS.md, CLAUDE.md, raw CSVs, internal result docs, plotting scripts, reviewer strategy, private paths, and agent-only notes |
anonymous-submission |
venue submission source/PDF | Enforce anonymization, remove identity leaks, avoid internal comments because source may be uploaded |
public-preprint |
arXiv/public source | Remove TODOs, author comments, reviewer notes, hidden comments, internal figure/table descriptions, anonymization leftovers, agent files, provenance docs, scripts, CSVs, and non-public paths |
camera-ready-public |
publisher/final source package | De-anonymize, add acknowledgements/funding, remove draft-only notes, close rebuttal promises, exclude agent/private files |
For author-visible, anonymous, arXiv, camera-ready, or publisher-visible source, do not leave internal audit artifacts in the source tree. This includes .agent/, AGENTS.md, CLAUDE.md, figure descriptions, table descriptions, provenance notes, reviewer-response notes, TODOs, raw CSVs, internal result docs, plotting scripts, notebooks, private paths, and author comment macros. Keep those in root memory/, code-side docs, or an agent-private paper worktree, not in visible source.
Check for forbidden files in visible source:
find "$PAPER_DIR" -maxdepth 3 \( \
-path "$PAPER_DIR/.agent" -o \
-name "AGENTS.md" -o -name "CLAUDE.md" -o \
-name "*.csv" -o -name "*.ipynb" -o \
-path "*/docs/results/*" -o -path "*/docs/reports/*" -o -path "*/docs/runs/*" -o \
-path "*/scripts/*" -o -path "*/plot_scripts/*" -o \
-iname "*provenance*" -o -iname "*result-inventory*" -o -iname "*writing-memory*" \
\) -print
Check for risky source text:
grep -RIn "\\\\todo\\|\\\\fixme\\|TODO\\|FIXME\\|\\\\jieke\\|\\\\jerry\\|\\\\wwm\\|Reviewer\\|internal\\|description\\|provenance" "$PAPER_DIR" --include="*.tex" || true
Use judgment before deleting. Some words such as "description" may be legitimate paper prose. Remove or rewrite only draft/internal material.
Step 8 — Report findings and action plan
Present results in a structured format:
Mention the local/Overleaf compile state explicitly:
- local static-check result
tex-fmtstatus: passed, changes needed, or skipped because unavailable- Overleaf/GitHub compile status if known, or "pending Overleaf compile" if the user must verify it there
- whether local LaTeX was skipped because no compiler exists
- version workspace status: main paper repo or specific paper worktree
- source visibility tier and source hygiene status for author-visible, anonymous, arXiv, camera-ready, or publisher-visible mode
## Submission Readiness: <venue> — <mode>
### ✅ Passed (N)
- ...
### ⚠️ Warnings (N) — review before submitting
- ...
### ❌ Must Fix (N) — blocking submission
- ...
### Action Plan
1. <highest-priority fix>
2. ...
For each failure or warning, provide the specific file and line and the exact fix.
Step 9 — Offer targeted fixes
For common failures, offer to fix them immediately:
- Drafting artifacts: Show the list; ask if you should remove them.
- Source formatting: If
tex-fmtreports changes, offer to runtex-fmt --nowrap --recursive .and then review the diff. - Missing mandatory sections: Offer to create a placeholder that the user can fill in.
- Wrong submission mode: Offer to edit
venue_preamble.tex. - Source hygiene issues: For author-visible/public/submission source, offer to remove or relocate
.agent/, AGENTS/CLAUDE guidance, internal comments, figure/table descriptions, reviewer notes, TODOs, raw CSVs, plotting scripts, provenance docs, and author comment macros after showing the diff scope. - Empty bib file: Remind user to add references to
bib/refs.bib.
Do not auto-fix without confirmation.
Venue Reference: Mandatory Sections & Page Limits
| Venue | Deadline | Pages (main) | Mandatory extras |
|---|---|---|---|
| ICML | Jan | 9 | sections/impact.tex (Broader Impact) |
| ACL | Feb | 8 | sections/limitations.tex |
| ICCV | Mar (odd) | 8 | — |
| ECCV | Mar (even) | 14 total incl. figs | — |
| NeurIPS | May | 9 | sections/impact.tex + sections/checklist.tex |
| EMNLP | May | 8 | sections/limitations.tex |
| ICLR | Sep | ~9 (soft) | — |
| CVPR | Nov | 8 | — |
| NAACL | Dec | 8 | sections/limitations.tex |
| ACM | varies | varies | CCS concepts, \acmConference (camera-ready) |
References and mandatory extras do not count toward page limits (all venues listed above).
Submission Mode Quick Reference
NeurIPS
% Anonymous submission (default):
\usepackage{neurips_<year>}
% arXiv preprint:
\usepackage[preprint]{neurips_<year>}
% Camera-ready:
\usepackage[final]{neurips_<year>}
ICML
\usepackage{icml<year>} % anonymous
\usepackage[accepted]{icml<year>} % camera-ready
ICLR
\usepackage[submitted]{iclr<year>_conference} % anonymous
\usepackage[accepted]{iclr<year>_conference} % camera-ready
CVPR
\usepackage[review]{cvpr} % anonymous
\usepackage{cvpr} % camera-ready
\usepackage[pagenumbers]{cvpr} % arXiv (shows page numbers)
ICCV
\usepackage[review]{iccv} % anonymous
\usepackage{iccv} % camera-ready
\usepackage[pagenumbers]{iccv} % arXiv (shows page numbers)
ACL / EMNLP / NAACL
\usepackage[review]{acl} % anonymous
\usepackage{acl} % camera-ready
ECCV
\usepackage{eccv} % anonymous (blind review)
\usepackage[final]{eccv} % camera-ready
Camera-Ready Checklist (additional items)
When --mode camera-ready or submission type is camera-ready, additionally verify:
-
venue_preamble.texset to[final]/[accepted]mode - Author names and affiliations filled in
main.tex - Acknowledgements added (funding, compute credits, etc.)
- All author comment macros removed (
\jieke{},\jerry{}, etc.) -
sections/acknowledgement.texis non-empty - Copyright / license statement added if required (ACM)
- Final bibliography formatted correctly (no "Anonymous" entries)
- Supplementary material packaged separately if required
- Source
.texfiles zipped and ready for upload (many venues require source)
arXiv Submission Notes
arXiv has different packaging requirements from venue submission:
- Must submit
.texsource (not just PDF) - Flatten
\input{...}if using many files (some arXiv setups require a single.tex) - Switch to
[preprint]mode (removes venue branding / anonymization) - Include all
.sty,.bst,.clsfiles in the zip - Run
tex-fmt --check --nowrap --recursive .if available, then format only after reviewing the expected diff scope - Remove internal comments, TODOs, author comment macros, reviewer notes, private paths, and figure/table descriptions from public source
- Remove any
\usepackage{times}if it causes font issues on arXiv - arXiv compiles with an older TeX Live — check for package compatibility
Example Invocations
/submit-paper # check current directory
/submit-paper ~/Papers/my-neurips-paper # check specific project
/submit-paper . --compile # include local LaTeX check only if a compiler exists
/submit-paper . --mode camera-ready # camera-ready checklist
More from a-green-hand-jack/ml-research-skills
project-init
Initialize an ML research project control root. Use for paper/code/slides repos, shared memory, GitHub Project alignment, agent guidance, worktree policy, and lifecycle handoffs.
37project-sync
Sync verified code-side experiment results into paper memory. Use when logs, reports, run docs, or user-confirmed metrics should become paper-facing evidence.
36add-git-tag
Create annotated Git milestone tags. Use when completing a phase, releasing a version, or marking a research checkpoint.
36update-docs
Refresh project documentation after code changes. Use after implementing features, changing behavior, or preparing a milestone commit.
36init-latex-project
Initialize a LaTeX academic paper project. Use for new conference or journal papers needing templates, macros, venue preambles, and writing guidance.
36new-workspace
Create Git branches or worktrees for research code and paper versions. Use for experiments, baselines, rebuttal fixes, arXiv/camera-ready branches, and worktree memory.
36