with one click
submit-paper
// Check LaTeX academic papers before submission. Use for readiness, final mode, camera-ready preparation, source hygiene, and conference deadlines.
// Check LaTeX academic papers before submission. Use for readiness, final mode, camera-ready preparation, source hygiene, and conference deadlines.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | submit-paper |
| description | Check LaTeX academic papers before submission. Use for readiness, final mode, camera-ready preparation, source hygiene, and conference deadlines. |
| argument-hint | [project-dir] [--venue <venue>] [--mode <anonymous|camera-ready|arxiv>] [--compile] |
| allowed-tools | Read, Edit, Bash, Glob, Grep |
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 record local TeX availability as shared project state. Whether latexmk, pdflatex, xelatex, lualatex, tectonic, or tlmgr exists is a runtime fact about one user's machine. The durable project state is the compile backend for the paper or worktree: local, Overleaf-GitHub, CI, or unknown.
Use static checks locally by default. Run local LaTeX compilation only when the project compile backend is local or the user explicitly requests local compilation, and only after detecting an available compiler at runtime. For Overleaf-GitHub or CI backends, use pushed source plus remote logs/PDF artifacts as compile evidence.
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.
When the task involves layout debugging, float placement, overfull/underfull boxes, short lines, page breaks, or screenshot-based formatting feedback, read references/layout-debugging.md before proposing fixes. Prefer page/object-specific local changes over one-shot global parameter tuning.
// 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.
Ask the user in a single message:
paper/ repo or a paper-worktrees/ version for a specific venue/arXiv/camera-ready target?agent-private, author-visible through Overleaf/coauthors, anonymous-submission, public-preprint, camera-ready-public, or publisher-artifact?If venue can be inferred from venue_preamble.tex (Step 3 will read it), skip asking.
Wait for the answer before proceeding.
// 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 compile backend is local or the user explicitly asked for local compilation. The script detects available compilers at runtime. 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 for local-compile workflows; otherwise verify PDF/page count through Overleaf or CI |
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.
Use this workflow when the project compile backend is Overleaf-GitHub or the user asks to publish changes for Overleaf. Do not choose this solely because the current machine lacks TeX; if the backend is unknown, ask or report that compile verification is pending.
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:
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 unless the project compile backend is explicitly local. For non-local backends, use Overleaf or CI compile evidence.
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.
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.
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.
Present results in a structured format:
Mention the local/Overleaf compile state explicitly:
tex-fmt status: passed, changes needed, or skipped because unavailable## 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.
For common failures, offer to fix them immediately:
tex-fmt reports changes, offer to run tex-fmt --nowrap --recursive . and then review the diff.venue_preamble.tex..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.references/layout-debugging.md; first identify the page/object, then prefer local wording edits, local float spacing, object movement, or \Needspace / \FloatBarrier over global \sloppy, \emergencystretch, or paragraph/float spacing changes.bib/refs.bib.Do not auto-fix without confirmation.
| 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).
% Anonymous submission (default):
\usepackage{neurips_<year>}
% arXiv preprint:
\usepackage[preprint]{neurips_<year>}
% Camera-ready:
\usepackage[final]{neurips_<year>}
\usepackage{icml<year>} % anonymous
\usepackage[accepted]{icml<year>} % camera-ready
\usepackage[submitted]{iclr<year>_conference} % anonymous
\usepackage[accepted]{iclr<year>_conference} % camera-ready
\usepackage[review]{cvpr} % anonymous
\usepackage{cvpr} % camera-ready
\usepackage[pagenumbers]{cvpr} % arXiv (shows page numbers)
\usepackage[review]{iccv} % anonymous
\usepackage{iccv} % camera-ready
\usepackage[pagenumbers]{iccv} % arXiv (shows page numbers)
\usepackage[review]{acl} % anonymous
\usepackage{acl} % camera-ready
\usepackage{eccv} % anonymous (blind review)
\usepackage[final]{eccv} % camera-ready
When --mode camera-ready or submission type is camera-ready, additionally verify:
venue_preamble.tex set to [final] / [accepted] modemain.tex\jieke{}, \jerry{}, etc.)sections/acknowledgement.tex is non-empty.tex files zipped and ready for upload (many venues require source)arXiv has different packaging requirements from venue submission:
.tex source (not just PDF)\input{...} if using many files (some arXiv setups require a single .tex)[preprint] mode (removes venue branding / anonymization).sty, .bst, .cls files in the ziptex-fmt --check --nowrap --recursive . if available, then format only after reviewing the expected diff scope\usepackage{times} if it causes font issues on arXiv/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