preflight-check
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePreflight Check
预检检查
Run a deterministic desk-reject lint over a LaTeX submission before the
authors hit "submit". Venues explicitly desk-reject — without review — for
page-limit violations, template tampering, anonymization leaks, and missing
mandatory sections. Every one of those is machine-checkable from the source.
This skill catches them while there is still time to fix them.
在作者点击“提交”前,对LaTeX论文进行确定性的初审直接拒稿风险检查。部分会议会因页数超限、模板篡改、匿名化泄露、缺失必填章节等原因直接拒稿(不进入评审环节),而这些问题全部可以通过源文件进行机器校验。本工具能在还有时间修正时及时发现这些问题。
When to use
使用场景
- "Is my paper ready to submit to NeurIPS / SIGSPATIAL / CHI / ...?"
- "Check my paper for desk-reject risks" / "run a preflight"
- "Did I anonymize this properly?" / "double-blind check"
- "Am I over the page limit?" / "is my template compliant?"
- Right after , and always before any actual submission.
tailor-to-venue
- “我的论文是否可以提交给NeurIPS / SIGSPATIAL / CHI / ...?”
- “检查我的论文是否存在初审直接拒稿风险” / “执行预检”
- “我是否做好了匿名化处理?” / “双盲评审检查”
- “我的页数是否超限?” / “我的模板是否合规?”
- 在执行后,以及任何实际提交操作前必须使用。
tailor-to-venue
Inputs
输入项
- The main file of the submission (the one with
.tex).\documentclass/\inputfiles are followed automatically.\include - A venue profile: (schema in
venues/conferences/<venue>-<year>.yml). If the venue has no profile yet, create one first withvenues/schema.yml(or copy the nearest family file and fill it in).parse-cfp - Optional but strongly recommended: a compiled or
.lognext to the.pdf(same basename) so the page-count risk check can run..tex
- 提交论文的主.tex文件(包含的文件)。
\documentclass/\input引入的文件会被自动遍历检查。\include - 会议配置文件:(配置文件结构定义在
venues/conferences/<venue>-<year>.yml)。如果目标会议尚无配置文件,先使用venues/schema.yml创建(或复制同系列会议的配置文件并补充内容)。parse-cfp - 可选但强烈推荐:与.tex文件同名的编译后.log或.pdf文件,以便执行页数超限风险检查。
Process
操作流程
-
Resolve the venue profile. Find the matching file under. Confirm the year matches the target deadline cycle. Ask the user which track they are submitting to — page limits differ per track (e.g. SIGSPATIAL Research = 10 pages excl. references, Demo = 4 incl.). Sanity-check the merged profile with:
venues/conferences/python3 scripts/venue_profile.py venues/conferences/<venue>.yml --track <name> -
Re-verify critical facts against the live CFP — mandatory. Profiles are a starting point, never ground truth; a stale page limit causes the exact desk reject this skill exists to prevent. Fetch the profile'sand confirm: page limit + what it excludes, blind level, template invocation, required sections, and the deadline. If anything differs, update the profile YAML first and say so in the report.
cfp_url -
Run the full preflight:
python3 scripts/run_preflight.py paper.tex \ --venue venues/conferences/<venue>-<year>.yml --track "<track>"Or run checkers individually when the user asks about one dimension:Script Checks Run scripts/check_template.pydocumentclass + options vs profile, year-versioned .sty (NeurIPS/ICML/ICLR), geometry/savetrees/fullpage, on layout dims,\setlength<1, negative\linespreadpatterns, column count, page-limit risk from\vspace/.log.pdfpython3 scripts/check_template.py paper.tex --venue <yml> --track <t>scripts/check_anonymization.py/\author/\affiliation/\email/\orcidcontent, acknowledgments sections, funding/grant lines, identifying links (GitHub, personal pages) vs anonymized mirrors, first-person self-citations, hyperref\thankspdfauthorpython3 scripts/check_anonymization.py paper.tex --venue <yml>scripts/check_sections.pyevery token: NeurIPS checklist, ICML impact statement, AI-use acknowledgement (ICDE), COI declaration, CCS concepts +format.required_sections, plus title/abstract/bibliography presence\keywordspython3 scripts/check_sections.py paper.tex --venue <yml>scripts/check_abstract.pyabstract word count vs venue bounds (or the 150–250 norm), single-paragraph rule, citations/URLs in abstract, keywords format (ACM/IEEE Index Terms/LNCS 3–6) python3 scripts/check_abstract.py paper.tex --venue <yml>Useful flags on every script:(machine-readable),--json(warnings also fail),--strict,--track <substring>(when the profile lives outside this repo),--venues-dir <dir>. Anonymization adds--no-inputsto scan even at single-blind venues.--force -
Interpret severities for the user.
- — documented desk-reject grounds at this venue. Must fix.
ERROR - — judgment call (e.g. one negative
WARNis normal; eight is space compression). Walk through each with the user.\vspace - — confirmations and pointers to manual checks. Do not pad the report with these; summarize. Exit codes: 0 = no errors, 1 = errors found (or warnings with
INFO), 2 = bad arguments/missing files.--strict
-
Do the manual checks the linter cannot do. Source-level linting cannot see compiled-PDF metadata, where the references actually start, supplementary files, or submission-form fields (COI declarations at ICDE live in CMT, not the PDF). Work through references/manual-checks.md with the user.
-
Fix and re-run until clean. Quote each finding's, propose the minimal edit, apply it if asked, and re-run the affected checker. For the reasoning behind each check (which venue desk-rejects for what, with sources), see references/desk-reject-triggers.md.
file:line
-
确认会议配置文件。在目录下找到匹配的文件,确认年份与目标截止周期一致。询问用户提交的赛道——不同赛道的页数限制可能不同(例如SIGSPATIAL Research赛道为10页不含参考文献,Demo赛道为4页含参考文献)。可通过以下命令验证合并后的配置文件:
venues/conferences/python3 scripts/venue_profile.py venues/conferences/<venue>.yml --track <name> -
对照最新征稿通知(CFP)核实关键信息——此步骤为强制要求。配置文件仅作为参考,绝非权威依据;过时的页数限制会导致本工具旨在避免的初审直接拒稿问题。获取配置文件中的,核实以下信息:页数限制及排除范围、盲审级别、模板调用方式、必填章节、截止日期。若存在差异,先更新配置文件YAML并在报告中说明。
cfp_url -
执行完整预检:
python3 scripts/run_preflight.py paper.tex \ --venue venues/conferences/<venue>-<year>.yml --track "<track>"若用户仅询问某一方面的问题,可单独运行对应检查脚本:脚本 检查内容 运行命令 scripts/check_template.py文档类及选项与配置文件的匹配度、带年份版本的.sty文件(NeurIPS/ICML/ICLR)、geometry/savetrees/fullpage包使用、布局维度的 设置、\setlength<1、负\linespread模式、列数、基于.log/.pdf的页数超限风险\vspacepython3 scripts/check_template.py paper.tex --venue <yml> --track <t>scripts/check_anonymization.py/\author/\affiliation/\email/\orcid内容、致谢章节、资助/基金说明、可识别身份的链接(GitHub、个人主页)与匿名镜像的对比、第一人称自引、hyperref的\thanks属性pdfauthorpython3 scripts/check_anonymization.py paper.tex --venue <yml>scripts/check_sections.py中的所有项:NeurIPS checklist、ICML影响声明、AI使用致谢(ICDE)、COI声明、CCS概念+format.required_sections,以及标题/摘要/参考文献是否存在\keywordspython3 scripts/check_sections.py paper.tex --venue <yml>scripts/check_abstract.py摘要字数是否符合会议要求(或150–250词的常规标准)、单段落规则、摘要中的引用/URL、关键词格式(ACM/IEEE索引术语/LNCS要求3–6个) python3 scripts/check_abstract.py paper.tex --venue <yml>所有脚本支持的实用参数:(机器可读格式输出)、--json(警告也判定为失败)、--strict、--track <substring>(配置文件不在本仓库时使用)、--venues-dir <dir>。匿名化检查脚本额外支持--no-inputs参数,可强制在单盲评审会议中执行扫描。--force -
为用户解释检查结果的严重级别
- —— 该会议明确列为初审直接拒稿的依据,必须修复。
ERROR - —— 需要人工判断(例如单个负
WARN属正常情况;但八个则属于压缩空间),需逐一与用户确认。\vspace - —— 确认信息及手动检查指引,无需在报告中罗列,只需汇总说明。 退出码:0 = 无错误,1 = 发现错误(或使用
INFO时存在警告),2 = 参数错误/文件缺失。--strict
-
执行检查工具无法完成的手动检查。源文件级别的检查无法覆盖编译后PDF的元数据、参考文献实际起始位置、补充文件或提交表单字段(例如ICDE的COI声明在CMT系统中提交,而非PDF内)。需与用户共同完成references/manual-checks.md中的检查项。
-
修复后重新检查直至无问题。引用每个检查结果的,建议最小修改方案,若用户要求则协助修改,修改后重新运行对应检查脚本。关于每项检查的依据(哪些会议会因该问题直接拒稿及来源),可查看references/desk-reject-triggers.md。
file:line
Output
输出结果
A findings report (text or ) per checker or combined via
: severity, check id, , message, summary counts,
and a verdict ( if any ERROR, if only WARNs, else
). Present it to the user as a fix-list ordered by severity, then offer
to apply fixes one at a time.
--jsonrun_preflight.pyfile:lineFAILPASS with warningsPASS每个检查脚本或通过合并输出的结果报告(文本或格式):包含严重级别、检查ID、、提示信息、汇总统计,以及判定结果(存在ERROR则为,仅存在WARN则为,否则为)。需将结果按严重级别排序,以修复清单的形式呈现给用户,然后可提议逐一协助修复。
run_preflight.py--jsonfile:lineFAILPASS with warningsPASSWorked example
示例演示
A NeurIPS submission that still carries author identity and last year's style
file. Running the combined checker:
python3 scripts/run_preflight.py paper.tex \
--venue venues/conferences/neurips-2026.yml=============================================================================
PREFLIGHT REPORT paper.tex
venue: neurips-2026 track: main
=============================================================================
-- template --------------------------------------------------------------
[ERROR] template/style-file-year paper.tex:1 — uses neurips_2025.sty; NeurIPS 2026 requires neurips_2026.sty
[WARN ] template/negative-vspace paper.tex:312 — negative \vspace before figure; isolated, likely fine
-- anonymization ---------------------------------------------------------
[ERROR] anonymization/pdf-metadata paper.tex:14 — \hypersetup{pdfauthor=...} leaks the author into PDF metadata
[WARN ] anonymization/author-block paper.tex:22 — \author populated; the .sty hides it at submission, but scrub the source
[WARN ] anonymization/self-citation paper.tex:88 — "our previous work [12]" — rewrite in third person
-- sections --------------------------------------------------------------
[ERROR] sections/missing:neurips-checklist paper.tex — no NeurIPS checklist found; a missing checklist is a desk reject
-- abstract --------------------------------------------------------------
clean.
=============================================================================
VERDICT: FAIL — fix ERRORs before submitting (3 error(s), 3 warning(s), 0 info)
Profiles can go stale: re-verify limits/policies at https://neurips.cc/Conferences/2026/CallForPapers
=============================================================================How to present this: lead with the three ERRORs as a numbered fix-list
(, drop the leak, add the checklist), each with
its and the one-line edit; then walk the WARNs as judgment calls.
Re-verify the page limit and checklist requirement at the before the
user relies on the verdict, then re-run the affected checker after each fix.
neurips_2026.stypdfauthorfile:linecfp_url某NeurIPS提交论文仍包含作者身份信息,并使用了去年的样式文件。运行合并检查脚本:
python3 scripts/run_preflight.py paper.tex \
--venue venues/conferences/neurips-2026.yml=============================================================================
PREFLIGHT REPORT paper.tex
venue: neurips-2026 track: main
=============================================================================
-- template --------------------------------------------------------------
[ERROR] template/style-file-year paper.tex:1 — uses neurips_2025.sty; NeurIPS 2026 requires neurips_2026.sty
[WARN ] template/negative-vspace paper.tex:312 — negative \vspace before figure; isolated, likely fine
-- anonymization ---------------------------------------------------------
[ERROR] anonymization/pdf-metadata paper.tex:14 — \hypersetup{pdfauthor=...} leaks the author into PDF metadata
[WARN ] anonymization/author-block paper.tex:22 — \author populated; the .sty hides it at submission, but scrub the source
[WARN ] anonymization/self-citation paper.tex:88 — "our previous work [12]" — rewrite in third person
-- sections --------------------------------------------------------------
[ERROR] sections/missing:neurips-checklist paper.tex — no NeurIPS checklist found; a missing checklist is a desk reject
-- abstract --------------------------------------------------------------
clean.
=============================================================================
VERDICT: FAIL — fix ERRORs before submitting (3 error(s), 3 warning(s), 0 info)
Profiles can go stale: re-verify limits/policies at https://neurips.cc/Conferences/2026/CallForPapers
=============================================================================结果呈现方式:先列出3个ERROR作为编号修复清单(更换为neurips_2026.sty、移除pdfauthor泄露、添加checklist),每个项标注及单行修改建议;然后逐一说明WARN项供用户判断。在用户依赖判定结果前,需再次通过核实页数限制和checklist要求,每次修复后重新运行对应检查脚本。
file:linecfp_urlAdapt to your discipline
适配不同学科
Profiles can represent conferences, journals, and workshops in any field. Add
venue YAMLs with your community's rules — the checkers only read the profile,
so new disciplines need data, not code.
配置文件可代表任意领域的会议、期刊和研讨会。添加对应领域规则的会议YAML文件即可——检查工具仅读取配置文件,因此新增学科只需补充数据,无需修改代码。
Guardrails
约束规则
- A clean preflight is necessary, not sufficient — never tell the user the paper "will not be desk-rejected"; say "no machine-checkable desk-reject triggers found".
- Always re-verify page limits/deadlines/policies against the live before the user relies on them (step 2 is not optional).
cfp_url - Never submit to any system on the user's behalf; stop at the report.
- Never paste large portions of the user's paper into the report — quote at most the flagged line.
- Citation problems are out of scope here: route them through
.
verify-citations
- 预检无问题是必要条件,但非充分条件——绝不能告知用户论文“不会被直接拒稿”,应表述为“未发现可机器校验的直接拒稿触发项”。
- 在用户依赖检查结果前,必须对照最新的重新核实页数限制/截止日期/政策(步骤2为必填项)。
cfp_url - 绝不能代表用户向任何系统提交内容;仅生成报告即可。
- 报告中绝不能粘贴用户论文的大段内容——最多引用被标记的行。
- 引用问题不属于本工具范围:需转至处理。
verify-citations
Memory
记忆功能
This skill uses the shared convention in the user's paper
directory, following .
.paper-memory/paper-memory-convention.md- At start: read (and
.paper-memory/lessons.mdfor venue tier / constraints). Skip re-flagging issues already recorded and acted on; lead with anyprofile.ymldesk-reject habits this author has (e.g. "you tend to compress layout near the page limit").recurring - At end: append each finding worth remembering as one dated entry in the
shared format (use
- [YYYY-MM-DD] (preflight-check | <scope>) issue -> recommendation'sreflect-and-improve, which dedupes and dates). Tag a repeat-across-papers habitreflect_log.py append, a one-offrecurring.this-paper - Create on demand if absent and offer to add it to the project
.paper-memory/. It is local-only; never upload it or copy it into this repo..gitignore
本工具遵循用户论文目录中的共享约定,具体规则见。
.paper-memory/paper-memory-convention.md- 启动时: 读取(及
.paper-memory/lessons.md中的会议级别/约束)。跳过已记录并处理的问题;优先提示作者存在的重复直接拒稿风险习惯(例如“您常在页数限制附近压缩布局”)。profile.yml - 结束时: 将每个值得记录的检查结果以日期条目形式追加到共享文件中,格式为(使用
- [YYYY-MM-DD] (preflight-check | <scope>) issue -> recommendation的reflect-and-improve命令,该命令会自动去重并添加日期)。跨论文重复出现的习惯标记为reflect_log.py append,单次问题标记为recurring。this-paper - 若目录不存在则自动创建,并提议将其添加到项目的
.paper-memory/中。该目录仅保存在本地;绝不上传或复制到本仓库。.gitignore