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.
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 backend: Is this paper verified by local compile, Overleaf through GitHub, CI, or an unknown workflow?
- 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 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 |
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 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.
- 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 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.
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- compile backend: local, Overleaf-GitHub, CI, or unknown
- compile status if known, or "pending remote compile" when Overleaf/CI evidence is required
- whether local LaTeX was skipped because the backend is non-local, unknown, or unavailable
- 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
- layout debugging status when relevant: affected page/object, local fix attempted, compile backend, visual inspection result, and later-page recheck needs
## 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. - Layout, float, and short-line issues: Use
references/layout-debugging.md; first identify the page/object, then prefer local wording edits, local float spacing, object movement, or\Needspace/\FloatBarrierover global\sloppy,\emergencystretch, or paragraph/float spacing changes. - 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