mcpField
P
preflight-check

preflight-check

github.com/shaishavmaisuriaドキュメント57100 回インストール4 日前に更新
リポジトリ

preflight-check について

preflight-check は、投稿前に会場固有の即時却下リスクを確認する、著者向けの LaTeX 検査スキルです。ページ制限、テンプレート、匿名化、必須セクションなどを決定的に検査し、結果を報告します。

主な機能

  1. 01テンプレートとページ制限のリスクを確認
  2. 02匿名化情報の漏れを検出
  3. 03必須セクションとアブストラクト規則を確認
  4. 04会場プロファイルと最新 CFP を参照
  5. 05重要度と位置を付けて問題を報告

活用シーン

  1. 01投稿前の論文チェック
  2. 02ダブルブラインド匿名化の確認
  3. 03テンプレートやページ数の問題の検出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/shaishavmaisuria/research-paper-lifecycle-skills --skill preflight-check

インストール後、Claude Code で/preflight-checkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
desk-reject-triggers.md
manual-checks.md
scripts/
check_abstract.py
check_anonymization.py
check_sections.py
check_template.py
run_preflight.py
texlib.py
venue_profile.py

詳細

投稿前チェック

著者が「投稿」をクリックする前に、LaTeX の投稿原稿に対して、判定が一定のデスクリジェクト用リンターを実行します。投稿先によっては、ページ数制限違反、テンプレートの改変、匿名化情報の漏えい、必須セクションの欠落を理由に、査読なしでデスクリジェクトされます。これらはすべて、ソースから機械的にチェックできます。このスキルを使えば、まだ修正できるうちに問題を検出できます。

使用するタイミング

  • 「自分の論文は NeurIPS / SIGSPATIAL / CHI / ... に投稿する準備ができていますか?」
  • 「論文にデスクリジェクトのリスクがないか確認してください」/「投稿前チェックを実行してください」
  • 「適切に匿名化できていますか?」/「ダブルブラインドチェック」
  • 「ページ数制限を超えていますか?」/「テンプレートに準拠していますか?」
  • tailor-to-venue の直後、そして実際に投稿する前には必ず実行してください。

入力

  1. 投稿原稿のメイン .tex ファイル(\documentclass が含まれるファイル)。 \input/\include ファイルは自動的に追跡されます。
  2. 投稿先プロファイル:venues/conferences/<venue>-<year>.yml(スキーマは venues/schema.yml)。投稿先のプロファイルがまだない場合は、まず parse-cfp で作成するか、最も近い分野のファイルをコピーして内容を記入してください。
  3. 任意ですが、強く推奨します。ページ数リスクチェックを実行できるよう、 コンパイル済みの .log または .pdf を .tex と同じ場所に同じファイル名で用意してください。

手順

  1. 会場プロファイルを確認します。 venues/conferences/ の下から該当するファイルを探します。対象の締切サイクルと年が一致していることを確認します。投稿するトラックをユーザーに確認してください。トラックによってページ制限が異なります(例:SIGSPATIAL Research は参考文献を除いて 10 ページ、Demo は参考文献を含めて 4 ページ)。次のコマンドで統合したプロファイルに問題がないか確認します。 python3 scripts/venue_profile.py venues/conferences/<venue>.yml --track <name>

  2. 重要な情報を最新の CFP と照合して再確認します — 必須です。 プロファイルは出発点であり、決して絶対的な根拠ではありません。古いページ制限は、このスキルが防ごうとしているデスクリジェクトに直結します。プロファイルの cfp_url を取得し、ページ制限とその除外対象、ブラインドのレベル、テンプレートの呼び出し方、必須セクション、締切を確認します。相違がある場合は、まずプロファイルの YAML を更新し、その旨をレポートで伝えます。

  3. 完全な事前チェックを実行します。

    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、\linespread<1、負の \vspace パターン、段組数、.log/.pdf によるページ制限リスクpython3 scripts/check_template.py paper.tex --venue <yml> --track <t>
    scripts/check_anonymization.py\author/\affiliation/\email/\orcid/\thanks の内容、謝辞セクション、資金提供・助成金の記載、匿名化されたミラーとの照合による識別可能なリンク(GitHub、個人ページ)、一人称による自己引用、hyperref の pdfauthorpython3 scripts/check_anonymization.py paper.tex --venue <yml>
    scripts/check_sections.pyformat.required_sections の全項目:NeurIPS チェックリスト、ICML の影響に関する記述、AI 利用の謝辞(ICDE)、COI 宣言、CCS 概念と \keywords、タイトル・要約・参考文献の有無python3 scripts/check_sections.py paper.tex --venue <yml>
    scripts/check_abstract.py会場の規定(または標準の 150~250 語)に対する要約の語数、単一段落の規則、要約内の引用・URL、キーワードの形式(ACM/IEEE Index Terms/LNCS では 3~6 個)python3 scripts/check_abstract.py paper.tex --venue <yml>

    すべてのスクリプトで使用できる便利なフラグ:--json(機械可読形式)、--strict(警告も失敗として扱う)、--track <substring>、--venues-dir <dir>(プロファイルがこのリポジトリ外にある場合)、--no-inputs。匿名化チェッカーには、シングルブラインドの会場でもスキャンを実行するための --force もあります。

  4. 重要度をユーザーに説明します。

    • ERROR — その会場でデスクリジェクトの根拠として明記されています。必ず修正します。
    • WARN — 判断が必要です(例:負の \vspace が 1 つなら通常ですが、8 つあればスペース圧縮です)。それぞれについてユーザーと確認します。
    • INFO — 確認事項や手動チェックへの案内です。レポートをこれらで水増しせず、要約してください。 終了コード:0 = エラーなし、1 = エラーあり(または --strict 指定時に警告あり)、2 = 引数不正/ファイルなし。
  5. リンターでは確認できない項目を手動でチェックします。 ソースレベルの lint では、コンパイル済み PDF のメタデータ、参考文献の実際の開始位置、補足ファイル、投稿フォームのフィールド(ICDE の COI 宣言は PDF ではなく CMT に記載されます)を確認できません。references/manual-checks.md を使って、ユーザーと一緒に確認します。

  6. 問題がなくなるまで修正して再実行します。 各指摘について file:line を引用し、最小限の修正を提案します。依頼された場合は修正を適用し、該当するチェッカーを再実行します。各チェックの背景(どの会場が何を理由にデスクリジェクトするかと、その根拠)については、references/desk-reject-triggers.md を参照してください。

出力

チェッカーごとの調査結果レポート(テキストまたは --json)、または run_preflight.py でまとめたレポートを出力します。レポートには、重大度、チェック ID、file:line、メッセージ、概要の件数、判定(ERROR があれば FAIL、WARN のみなら PASS with warnings、それ以外は PASS)が含まれます。重大度順に並べた修正リストとしてユーザーに提示し、修正を1つずつ適用するか確認します。

実例

著者の身元情報と昨年のスタイルファイルが残っている 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 の漏えいを削除、チェックリストを追加)として最初に提示し、それぞれに file:line と1行で済む編集内容を添えます。次に WARN を判断が必要な項目として確認します。ユーザーが判定を信頼する前に、cfp_url でページ数の上限とチェックリストの要件を再確認し、修正のたびに該当するチェッカーを再実行します。

分野に合わせた調整

プロファイルでは、あらゆる分野の学会、学術誌、ワークショップを表現できます。コミュニティのルールを記述した会場 YAML を追加してください。チェッカーはプロファイルのみを読み込むため、新しい分野に必要なのはコードではなくデータです。

ガードレール

  • 事前チェックに問題がないことは必要条件ですが、十分条件ではありません。論文が「デスクリジェクトされない」とユーザーに伝えてはいけません。「機械でチェック可能なデスクリジェクトの要因は見つかりませんでした」と伝えてください。
  • ユーザーが情報を信頼する前に、ページ数の上限、締切、ポリシーを最新の cfp_url で必ず再確認してください(ステップ2は省略できません)。
  • ユーザーに代わっていかなるシステムにも投稿してはいけません。レポートの提示までで止めてください。
  • ユーザーの論文の大部分をレポートに貼り付けてはいけません。引用する場合は、フラグが付いた行だけにしてください。
  • 引用の問題はこの対象範囲外です。verify-citations に回してください。

メモリー

このスキルは、ユーザーの論文ディレクトリにある共有の .paper-memory/ 規約を使用します。詳細は paper-memory-convention.md を参照してください。

  • 開始時: .paper-memory/lessons.md(および会場のランク/制約を確認するための profile.yml)を読みます。すでに記録され、対処済みの問題は再度指摘せず、この著者に繰り返し見られるデスクリジェクトにつながる習慣があれば、最初に伝えます(例:「ページ数の上限が近づくと、レイアウトを詰めがちです」)。
  • 終了時: 覚えておく価値のある調査結果を、共有形式の1日付エントリーとして追記します。形式は - [YYYY-MM-DD] (preflight-check | <scope>) issue -> recommendation です(日付を付けて重複を除去する reflect-and-improve の reflect_log.py append を使用します)。論文をまたいで繰り返される習慣には recurring、今回限りの問題には this-paper のタグを付けます。
  • .paper-memory/ が存在しない場合は必要に応じて作成し、プロジェクトの .gitignore に追加するかユーザーに確認します。これはローカル専用です。アップロードしたり、このリポジトリにコピーしたりしてはいけません。

コメント