mcpField
S
submit-paper

submit-paper

github.com/a-green-hand-jackDocuments46 installs
Repository

About submit-paper

submit-paper is a workflow skill for checking whether a LaTeX paper is ready for conference submission. It combines static checks with submission-mode, source-visibility, and compile-backend guidance.

Key features

  1. 01Detect paper project and venue
  2. 02Check required sections and abstract length
  3. 03Find drafting artifacts and anonymity issues
  4. 04Validate bibliography and figure references
  5. 05Guide local or remote compilation checks
  6. 06Review source visibility and cleanup

Use cases

  1. 01Check a paper before initial submission
  2. 02Review a camera-ready or arXiv version
  3. 03Verify source hygiene before sharing
  4. 04Triage layout and compilation concerns

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/a-green-hand-jack/ml-research-skills --skill submit-paper

After installing, type/submit-paperin Claude Code to confirm it loaded.

Bundled filesreferences/layout-debugging.mdscripts/check.sh

Details

From the project README

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 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:

  1. Submission type: Initial submission (anonymous) / Camera-ready / arXiv preprint?
  2. Deadline: When is the deadline? (helps prioritize what to fix)
  3. Compile backend: Is this paper verified by local compile, Overleaf through GitHub, CI, or an unknown workflow?
  4. Version workspace: Is this the main paper/ repo or a paper-worktrees/ version for a specific venue/arXiv/camera-ready target?
  5. Source visibility: Is this source 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.


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:

CheckWhat it looks for
Project detectionmain.tex present, venue from venue_preamble.tex
Drafting artifacts\todo, \fixme, \red{}, author comment macros, TODO/FIXME text
AnonymityAcknowledgements, funding disclosures, personal URLs/emails
Bibliography.bib file non-empty, \bibliography{} call present
Mandatory sectionsVenue-specific required sections (see below)
Abstract length~30–350 words (warns outside range)
Figures & tablesAll \label{fig:*} and \label{tab:*} are \ref'd
Source formattingoptional tex-fmt --check --nowrap --recursive . when tex-fmt is installed
Compilationoptional 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.

  1. Confirm the local paper repo has a GitHub remote:
git -C "$PAPER_DIR" remote -v
git -C "$PAPER_DIR" status --short --branch
  1. 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.

  2. 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
  3. 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 typevenue_preamble.tex should contain
Initial / anonymouse.g. \usepackage{neurips_<year>}, \usepackage[review]{cvpr}, or \usepackage[review]{iccv}
arXiv / preprinte.g. \usepackage[preprint]{neurips_<year>}
Camera-readye.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 tierTypical source surfaceRequired cleanup
agent-privatelocal/private draft worktreeMay contain agent state, internal notes, plotting scripts, CSVs, and provenance; should not be pushed to Overleaf/public remotes
author-visiblemain branch linked to Overleaf/GitHubExclude .agent/, AGENTS.md, CLAUDE.md, raw CSVs, internal result docs, plotting scripts, reviewer strategy, private paths, and agent-only notes
anonymous-submissionvenue submission source/PDFEnforce anonymization, remove identity leaks, avoid internal comments because source may be uploaded
public-preprintarXiv/public sourceRemove 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-publicpublisher/final source packageDe-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-fmt status: 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-fmt reports changes, offer to run tex-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 / \FloatBarrier over 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

VenueDeadlinePages (main)Mandatory extras
ICMLJan9sections/impact.tex (Broader Impact)
ACLFeb8sections/limitations.tex
ICCVMar (odd)8—
ECCVMar (even)14 total incl. figs—
NeurIPSMay9sections/impact.tex + sections/checklist.tex
EMNLPMay8sections/limitations.tex
ICLRSep~9 (soft)—
CVPRNov8—
NAACLDec8sections/limitations.tex
ACMvariesvariesCCS 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.tex set 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.tex is non-empty
  • Copyright / license statement added if required (ACM)
  • Final bibliography formatted correctly (no "Anonymous" entries)
  • Supplementary material packaged separately if required
  • Source .tex files zipped and ready for upload (many venues require source)

arXiv Submission Notes

arXiv has different packaging requirements from venue submission:

  • Must submit .tex source (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, .cls files 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

Comments

Markdown supported