关于 submit-paper
submit-paper 是用于检查 LaTeX 论文会议投稿准备情况的工作流技能,适合作者在提交前核查论文。它结合静态检查,并依据投稿模式、源文件可见范围和编译后端提供检查指引。
主要功能
- 01识别论文项目与投稿会议
- 02检查必需章节和摘要长度
- 03查找草稿痕迹及匿名性问题
- 04核对参考文献与图表引用
- 05指导本地或远程编译核查
- 06检查源文件可见范围与清理项
适用场景
- 01检查论文是否适合首次投稿
- 02复核终稿或 arXiv 版本
- 03分享前检查源文件卫生
- 04排查版面与编译问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ a-green-hand-jack/ ml-research-skills --skill submit-paper安装后在 Claude Code 中输入/submit-paper确认已加载。
附带文件references/layout-debugging.mdscripts/check.sh
详细介绍
提交论文 — 提交前检查清单
在向会议提交之前,对 LaTeX 论文项目进行系统的就绪检查。涵盖提交模式、必需章节、草稿痕迹、参考文献、匿名性、源文件格式,以及可选的编译。
不要将本地 TeX 可用性记录为共享项目状态。latexmk、pdflatex、xelatex、lualatex、tectonic 或 tlmgr 是否存在,是某位用户机器上的运行时事实。持久的项目状态是论文或工作树使用的编译后端:local、Overleaf-GitHub、CI 或 unknown。
默认在本地进行静态检查。仅当项目编译后端为 local,或用户明确要求本地编译时,才运行本地 LaTeX 编译,并且只有在运行时检测到可用编译器后才能执行。对于 Overleaf-GitHub 或 CI 后端,应使用已推送的源文件以及远程日志/PDF 产物作为编译依据。
论文的不同版本可能位于单独的工作树中。如果项目有 paper-worktrees/,优先检查用于目标会议、arXiv 发布或定稿提交的特定版本工作树,而不是修改主 paper/ 分支。
如果任务涉及版面调试、浮动体位置、溢出/松散的盒子、短行、分页或基于截图的格式反馈,请先阅读 references/layout-debugging.md,再提出修复建议。优先针对特定页面/对象进行局部修改,避免一次性全局调整参数。
步骤 1 — 定位 LaTeX 项目
// turbo 查找论文目录:
# 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
确定 $PAPER_DIR——包含 main.tex 的目录。
如果 $ARGUMENTS 提供了路径,请直接使用。
如果项目采用 project-init 项目结构,请检查是否有同级的 paper/ 目录。
如果请求的目标是转换投稿会议、发布 arXiv 版本或生成定稿版本,也请检查是否有匹配的同级 paper-worktrees/ 目录。
步骤 2 — 询问提交背景
在一条消息中询问用户:
- 提交类型:初次提交(匿名)/定稿/arXiv 预印本?
- 截止日期:截止日期是什么时候?(有助于确定修复工作的优先级)
- 编译后端:这篇论文通过本地编译、经由 GitHub 的 Overleaf、CI,还是未知工作流进行验证?
- 版本工作区:这是主
paper/仓库,还是针对特定会议/arXiv/定稿目标的paper-worktrees/版本? - 源文件可见性:此源文件属于
agent-private、通过 Overleaf/合作者可见的author-visible、anonymous-submission、public-preprint、camera-ready-public,还是publisher-artifact?
如果可以从 venue_preamble.tex 推断出会议名称(步骤 3 会读取该文件),则跳过询问。
等待用户回答后再继续。
步骤 3 — 运行检查脚本
// turbo
bash <submit-paper-skill-dir>/scripts/check.sh "$PAPER_DIR" [--compile]
重要:将 <submit-paper-skill-dir> 解析为此技能的安装目录,并使用 check.sh 的绝对路径。
只有当编译后端为 local,或用户明确要求本地编译时,才传入 --compile。脚本会在运行时检测可用的编译器。如果没有可用编译器,请在不带 --compile 的情况下运行脚本;脚本仍会执行有用的静态检查。
脚本执行以下检查:
| 检查项 | 检查内容 |
|---|---|
| 项目检测 | 是否存在 main.tex,是否能从 venue_preamble.tex 确定会议名称 |
| 草稿痕迹 | \todo、\fixme、\red{}、作者注释宏、TODO/FIXME 文本 |
| 匿名性 | 致谢、资金披露、个人网址/邮箱 |
| 参考文献 | .bib 文件非空,且存在 \bibliography{} 调用 |
| 必需章节 | 会议特定的必需章节(见下文) |
| 摘要长度 | 约 30–350 个词(超出范围时发出警告) |
| 图表 | 所有 \label{fig:*} 和 \label{tab:*} 均有对应的 \ref |
| 源文件格式 | 安装了 tex-fmt 时,可选运行 tex-fmt --check --nowrap --recursive . |
| 编译 | 对本地编译工作流,可选进行本地 LaTeX 编译;否则通过 Overleaf 或 CI 验证 PDF/页数 |
第 4 步 — 处理源文件格式
如果已安装 tex-fmt,检查脚本只会以检查模式运行它:
tex-fmt --check --nowrap --recursive .
除非用户或项目政策将格式检查设为阻断关卡,否则格式不匹配应视为警告。提交检查期间,不要擅自格式化源文件。可以提议运行:
tex-fmt --nowrap --recursive .
然后在提交或推送前检查差异。如果存在项目本地的 tex-fmt 配置,请使用该配置。默认回退时保留 --nowrap,避免格式化程序重新排版较长的正文行,除非项目明确选择自动换行。
如果未安装 tex-fmt,不要仅为继续操作而要求用户安装。请说明已跳过可选格式检查。
第 5 步 — 处理 Overleaf/GitHub 编译
当项目的编译后端为 Overleaf-GitHub,或用户要求为 Overleaf 发布更改时,使用此工作流。不要仅仅因为当前机器缺少 TeX 就选择此工作流;如果编译后端未知,请询问用户,或说明编译验证尚待完成。
- 确认本地论文仓库配置了 GitHub 远程仓库:
git -C "$PAPER_DIR" remote -v
git -C "$PAPER_DIR" status --short --branch
-
如果用户要求为 Overleaf 发布更改,请按照常规 Git 流程提交并推送。未检查差异前,不要提交与本次更改无关的用户更改。这是关联 Overleaf 的论文通常采用的编译交接方式。
-
告知用户在 Overleaf 中编译已同步的分支。以下各项应以 Overleaf 为准:
- 编译状态是否干净
- 页数
- 溢出框和版式警告
- 参考文献的排版
- 最终 PDF 检查
-
如果 Overleaf 报错,请将 Overleaf 日志文本或屏幕截图用作编译证据。在本地修复 LaTeX 源文件,然后再次推送。
除非项目的编译后端明确为 local,否则不要仅仅因为本地无法使用 latexmk、pdflatex、xelatex、lualatex 或 tectonic 而阻止提交就绪。对于非本地后端,请使用 Overleaf 或 CI 的编译证据。
如果存在项目记忆,且论文源文件对合作者、审稿人、arXiv、出版商或工件读者可见,请更新 memory/source-visibility-board.md,记录可见性级别、同步目标、清理关卡、审计状态和清理措施。
第 6 步 — 修正 venue_preamble.tex 中的投稿模式
阅读脚本输出后,检查 venue_preamble.tex,并确认 \usepackage 选项与用户在第 2 步中的说明一致。
如果模式有误,请向用户说明应如何更改,并提议代为修正:
| 投稿类型 | venue_preamble.tex 应包含 |
|---|---|
| 初次投稿 / 匿名 | 例如 \usepackage{neurips_<year>}、\usepackage[review]{cvpr} 或 \usepackage[review]{iccv} |
| arXiv / 预印本 | 例如 \usepackage[preprint]{neurips_<year>} |
| 终稿 | 例如 \usepackage[final]{neurips_<year>}、\usepackage{cvpr} 或 \usepackage{iccv} |
询问“要我将 venue_preamble.tex 更新为 [mode] 模式吗?”——确认后再编辑。
步骤 7 — 检查源文件可见性并清理
不同版本的论文对源文件卫生有不同要求。源文件可见性独立于投稿场所。如果分支已关联 Overleaf/GitHub,或合作者可以查看,请将其视为 author-visible,而非私有。
| 可见性级别 | 典型源文件范围 | 必需的清理工作 |
|---|---|---|
agent-private | 本地/私有的草稿工作树 | 可以包含 Agent 状态、内部笔记、绘图脚本、CSV 文件和来源记录;不应推送到 Overleaf/公共远程仓库 |
author-visible | 与 Overleaf/GitHub 关联的主分支 | 排除 .agent/、AGENTS.md、CLAUDE.md、原始 CSV 文件、内部结果文档、绘图脚本、审稿人策略、私有路径和仅供 Agent 使用的笔记 |
anonymous-submission | 投稿场所的投稿源文件/PDF | 确保匿名化,删除身份泄露信息;避免内部注释,因为源文件可能会被上传 |
public-preprint | arXiv/公开源文件 | 删除 TODO、作者评论、审稿人笔记、隐藏注释、内部图表说明、匿名化残留、Agent 文件、来源记录文档、脚本、CSV 文件和非公开路径 |
camera-ready-public | 出版方/最终源文件包 | 取消匿名化,添加致谢/资助信息,删除仅用于草稿的笔记,履行答辩承诺,并排除 Agent/私有文件 |
对于作者可见、匿名投稿、arXiv、最终版或出版方可见的源文件,不要在源文件目录树中留下内部审查材料。这包括 .agent/、AGENTS.md、CLAUDE.md、图表说明、来源记录、审稿人回复笔记、TODO、原始 CSV 文件、内部结果文档、绘图脚本、笔记本、私有路径和作者注释宏。请将这些内容保留在根目录的 memory/、代码侧文档或 agent-private 论文工作树中,而不要放在可见的源文件中。
检查可见源文件中是否存在禁止的文件:
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
检查源文件中是否存在有风险的文本:
grep -RIn "\\\\todo\\|\\\\fixme\\|TODO\\|FIXME\\|\\\\jieke\\|\\\\jerry\\|\\\\wwm\\|Reviewer\\|internal\\|description\\|provenance" "$PAPER_DIR" --include="*.tex" || true
删除前请先判断。有些词(例如“description”)可能是论文中合理的正文内容。只删除或改写草稿/内部材料。
步骤 8 — 报告发现并制定行动计划
请按结构化格式呈现结果:
明确说明本地/Overleaf 编译状态:
- 本地静态检查结果
tex-fmt状态:通过、需要修改,或因不可用而跳过- 编译后端:本地、Overleaf-GitHub、CI,或未知
- 已知时注明编译状态;如需 Overleaf/CI 证据,则写“等待远程编译”
- 是否因后端为非本地、未知或不可用而跳过本地 LaTeX 编译
- 版本工作区状态:主论文仓库或特定论文工作树
- 可见性级别,以及作者可见、匿名投稿、arXiv、最终版或出版方可见模式下的源文件卫生状态
- 相关时注明版面调试状态:受影响的页面/对象、尝试过的本地修复、编译后端、目视检查结果,以及是否需要复查后续页面
## Submission Readiness: <venue> — <mode>
### ✅ Passed (N)
- ...
### ⚠️ Warnings (N) — review before submitting
- ...
### ❌ Must Fix (N) — blocking submission
- ...
### Action Plan
1. <highest-priority fix>
2. ...
对于每项失败或警告,请提供具体文件和行号以及准确的修复方法。
第 9 步 — 提供有针对性的修复方案
对于常见问题,主动提出立即修复:
- 草稿残留:列出这些内容;询问是否要将其删除。
- 源文件格式:如果
tex-fmt报告有改动,提出运行tex-fmt --nowrap --recursive .,然后检查差异。 - 缺少必需章节:提出创建占位内容,供用户填写。
- 提交模式错误:提出编辑
venue_preamble.tex。 - 源文件卫生问题:对于作者可见版/公开版/提交版源文件,先展示差异范围,再提出删除或移走
.agent/、AGENTS/CLAUDE 指南、内部注释、图表说明、审稿人备注、TODO、原始 CSV、绘图脚本、来源文档和作者注释宏。 - 排版、浮动体和短行问题:使用
references/layout-debugging.md;先确定页面/对象,再优先采用局部措辞修改、局部浮动间距调整、移动对象,或使用\Needspace/\FloatBarrier,而不是全局修改\sloppy、\emergencystretch或段落/浮动体间距。 - 空的 bib 文件:提醒用户将参考文献添加到
bib/refs.bib。
未经确认,不要自动修复。
会议投稿参考:必需章节与页数限制
| 会议 | 截止时间 | 页数(正文) | 必需的其他内容 |
|---|---|---|---|
| ICML | 1 月 | 9 | sections/impact.tex(更广泛影响) |
| ACL | 2 月 | 8 | sections/limitations.tex |
| ICCV | 3 月(奇数年) | 8 | — |
| ECCV | 3 月(偶数年) | 14 页,含图 | |
| NeurIPS | 5 月 | 9 | sections/impact.tex + sections/checklist.tex |
| EMNLP | 5 月 | 8 | sections/limitations.tex |
| ICLR | 9 月 | 约 9 页(不严格) | — |
| CVPR | 11 月 | 8 | — |
| NAACL | 12 月 | 8 | sections/limitations.tex |
| ACM | 不定 | 不定 | CCS 概念、\acmConference(最终版) |
参考文献和必需的其他内容不计入页数限制(以上所有会议均适用)。
提交模式速查
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
最终版检查清单(附加项目)
当使用 --mode camera-ready 或提交类型为最终版时,还需额外检查:
-
venue_preamble.tex已设为[final]/[accepted]模式 - 已在
main.tex中填写作者姓名和所属机构 - 已添加致谢(资助、计算资源额度等)
- 已移除所有作者注释宏(
\jieke{}、\jerry{}等) -
sections/acknowledgement.tex内容非空 - 按要求添加版权/许可声明(ACM)
- 最终参考文献格式正确(没有“Anonymous”条目)
- 按要求单独打包补充材料
-
.tex源文件已打包为 zip,准备上传(许多会议要求提交源文件)
arXiv 提交须知
arXiv 的打包要求与会议投稿不同:
- 必须提交
.tex源文件(不能只提交 PDF) - 如果使用多个文件,请展开
\input{...}(某些 arXiv 配置要求使用单个.tex文件) - 切换到
[preprint]模式(移除会议标识/匿名设置) - 将所有
.sty、.bst、.cls文件包含在 zip 中 - 如可用,请运行
tex-fmt --check --nowrap --recursive .,然后仅在检查预期差异范围后再格式化 - 从公开源文件中移除内部注释、TODO、作者注释宏、审稿人备注、私有路径和图表说明
- 如果
\usepackage{times}导致 arXiv 上出现字体问题,请将其移除 - arXiv 使用较旧版本的 TeX Live 编译——请检查软件包兼容性
调用示例
/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