mcpField
S
section-writing-agent

section-writing-agent

github.com/ar9avドキュメント69367 回インストール2 週間前に更新
リポジトリ

section-writing-agent について

section-writing-agent は、1回の LLM 呼び出しで完全な LaTeX 論文を執筆・編集する PaperOrchestra のスキルです。アウトライン、研究資料、検証済み引用、図、会議の規定を使い、既存セクションを保持します。

主な機能

  1. 01LaTeX 論文全体の草稿作成
  2. 02実験データに基づく表の作成
  3. 03提供された図とキャプションの反映
  4. 04引用と LaTeX 構造の確認
  5. 05TeX パッケージ状況に応じた記法選択

活用シーン

  1. 01アウトラインと実験ログから論文草稿を作成
  2. 02既存セクションを保ちながら原稿を完成
  3. 03後続の改稿前に引用と LaTeX の整合性を確認

インストール

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

$npx skills add https://github.com/ar9av/paperorchestra --skill section-writing-agent

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

同梱ファイル

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

references/
figure-integration.md
latex-table-patterns.md
prompt.md
scripts/
extract_metrics.py
latex_sanity.py
orphan_cite_gate.py
table_lint.py
test_table_lint.py

詳細

セクション執筆エージェント(ステップ 4)

PaperOrchestra のセクション執筆エージェントを忠実に実装します (Song et al., 2026, arXiv:2604.05018, §4 Step 4, App. F.1 pp. 47–49)。

コスト:LLM 呼び出し 1 回(App. B:「Section Writing Agent(1 call):完全な LaTeX 原稿を下書きして編集する、包括的なマルチモーダル呼び出し 1 回」)。セクションごとの呼び出しに分割しないでください。論文では、セクション間の全体的な一貫性をモデルが保てるよう、包括的な呼び出し 1 回として明示的に設計されています。

入力

  • workspace/outline.json — 全体計画
  • workspace/inputs/idea.md — 技術的な詳細
  • workspace/inputs/experimental_log.md — 表と定性的分析に使用する生データ
  • workspace/drafts/intro_relwork.tex — ステップ 3 で「はじめに + 関連研究」がすでに埋められたテンプレート。ここから作業を開始します。プリアンブル、パッケージ一覧、スタイル、および記入済みの 2 つのセクションは、元のまま保持してください。
  • workspace/citation_pool.json — 引用マップ(検証済み論文ごとの {key, title, abstract})
  • workspace/refs.bib — BibTeX ファイル
  • workspace/inputs/conference_guidelines.md — 書式ルール
  • workspace/figures/ — ステップ 2 で生成された実際の PNG ファイル(マルチモーダルの視覚入力として使用します!)
  • workspace/figures/captions.json — figure_id ごとのキャプションテキスト
  • workspace/tex_profile.json — TeX パッケージの利用可否フラグ(ステップ 0 で check_tex_packages.py が作成します)。LaTeX を生成する前に、必ずこれを読んでください。 使用可能なパッケージが示されているため、コンパイルを試した後ではなく、記述する前に適切な相互参照パターンやフォントパッケージなどを選択できます。

出力

  • workspace/drafts/paper.tex — すべてのセクションが埋められた、LaTeX 論文の完全版。ステップ 5 の改訂エージェントがこのファイルを反復的に改訂します。

実行方法

0.5. tex_profile.json を読み、LaTeX のパターンを選択する

プロンプトを作成する前に workspace/tex_profile.json を読み、生成する論文内のすべての LaTeX の選択に次のルールを適用します。

プロファイルフラグTrue の場合に使用False の場合に代わりに使用
use_cleveref\cref{fig:X}, \cref{tab:Y}Figure~\ref{fig:X}, Table~\ref{tab:Y}
use_nicefrac\nicefrac{a}{b}$a/b$
use_microtype\usepackage{microtype}この行を省略
use_t1_fontenc\usepackage[T1]{fontenc}この行を省略

tex_profile.json が存在しない場合(古いワークスペース)、安全なフォールバック列(cleveref なし、nicefrac なし、microtype なし、T1 fontenc なし)をデフォルトとして使用します。

1. 実験ログから評価指標を事前抽出する

決定的なヘルパーを実行します。

python skills/section-writing-agent/scripts/extract_metrics.py \
    --log workspace/inputs/experimental_log.md \
    --out workspace/metrics.json

これにより、## 2. Raw Numeric Data セクションの Markdown 表が構造化 JSON に解析されます。セクション執筆エージェントはこれを使用して、値を生テキストから再導出することなく、LaTeX の booktabs 表を作成します。booktabs の規約については references/latex-table-patterns.md を読んでください。

2. プロンプトを組み立て、マルチモーダル呼び出しを1回行う

references/prompt.md(App. F.1 の Section Writing Agent プロンプトの逐語版)を読み込みます。../paper-orchestra/references/anti-leakage-prompt.md の Anti-Leakage Prompt を先頭に追加します。

次に、執筆するセクションの作成上の制約を追加します。skills/shared/section_rhetoric.md から、全体ルールに加えて、Abstract、Method、Experiments、Conclusion のテンプレートのみを取得します(Intro と Related Work は Step 3 ですでに執筆済みのため、再度開かないでください)。App. F.1 のプロンプトでは各セクションに含めるべき内容が指定され、レトリックのテンプレートでは段落の役割と順序が指定されています。これらがないと、モデルは内容を網羅していても、すべての段落が同じ種類の展開になるセクションを生成し、Step 5 のレビュアーから Logical Flow の評価を下げられます。

ユーザーメッセージには次の内容が含まれます。

  • outline.json — 全文
  • idea.md — 全文
  • experimental_log.md — 全文(表と本文の両方)
  • intro_relwork.tex — 全文(プロンプトでは template.tex として使用)
  • citation_pool.json — 全文(citation_map.json として使用)
  • conference_guidelines.md — 全文
  • figures_list — captions.json とファイル一覧から取得した {figure_id, filename, caption} の配列
  • 実際の図の PNG ファイル(マルチモーダル画像入力)。これにより、モデルは図を視覚的に確認し、正確な説明を記述して本文中で適切に参照できます。

ホスト LLM が画像入力に対応していない場合は、テキストのみのモードに切り替えます。captions.json のキャプションを説明として渡し、エージェントには画像を直接見ることができないと伝えてください(論文によると、視覚的なグラウンディングによって図と本文の整合性が測定可能なほど向上するため、品質は目に見えて低下しますが、パイプラインは最後まで実行できます)。

3. 出力を保存する

エージェントの応答は \``latex ... ``` のフェンスで囲まれています。LaTeX コードを抽出し、workspace/drafts/paper.tex` に保存します。

4. 決定論的ゲートを実行する
# Orphan citation gate: every \cite{KEY} must exist in refs.bib
python skills/section-writing-agent/scripts/orphan_cite_gate.py \
    workspace/drafts/paper.tex workspace/refs.bib

# Latex sanity: matched braces, matched begin/end, no unescaped specials
python skills/section-writing-agent/scripts/latex_sanity.py \
    workspace/drafts/paper.tex

# Anti-leakage post-check: no author names, emails, affiliations
python skills/paper-orchestra/scripts/anti_leakage_check.py \
    workspace/drafts/paper.tex

# Table conventions: booktabs rules, caption placement, metric direction,
# decimal precision. ERRORs block; WARNs go into the re-prompt.
python skills/section-writing-agent/scripts/table_lint.py \
    workspace/drafts/paper.tex

いずれかのゲートに失敗した場合は、エラー報告をユーザーメッセージに追加して執筆時の呼び出しを再度行い、該当する問題を修正するようエージェントに依頼してください。ゲート違反を手作業で修正しようとしてはいけません。モデル自身が誤りを確認する必要があります。

プロンプトの重要なルール

以下は references/prompt.md(App. F.1、47~49 ページ)からの抜粋です。ホストエージェントは執筆時の呼び出しで必ずこれらを守る必要があります。

既存コンテンツの保持
  • intro_relwork.tex にすでに記述されているセクションの文章、スタイル、内容を変更してはいけません。Intro と Related Work を一字一句そのまま保持してください。
  • プリアンブル(パッケージ、ドキュメントクラス、スタイル)はそのまま保持してください。
  • タイトルがない場合は、適切なタイトルを考えてください。著者名がない場合は補ってください(ただし、Anti-Leakage Prompt に従い、実在の著者名を創作してはいけません。ダブルブラインドの場合は「Anonymous Authors」などのプレースホルダーを使用してください)。
データと表
  • 実験結果の LaTeX 表を作成してください。
  • 数値は experimental_log.md から直接取得してください。数値を捏造してはいけません。ログにある値をそのまま使用してください。
  • booktabs パッケージの書式を使用してください:\toprule、\midrule、\bottomrule。
  • 表は、明示的に付録に配置する場合を除き、Conclusion セクションより前にすべて配置してください。
引用
  • outline.json にはサブセクションごとの citation_hints が含まれています。各ヒントについて、citation_pool.json 内で一致するキーを(タイトルまたは内容から)探し、そのキーを \cite{...} で正確に使用してください。
  • refs.bib にあるキーのみを使用してください。 キーを創作または推測すると、Lit Review Agent が検証したプールに違反します。
  • 引用する論文については、citation_pool.json から要旨を読んでください。その要旨の文脈に基づき、各論文について具体的で正確な文章を記述してください。「[A, B] は X の手法を提案した」のような一般的な記述は避けてください。
コンテンツの執筆
  • outline.json の section_plan の構成に厳密に従って、不足しているセクションを執筆してください。階層ルール:4.1 がある場合は、4.2 も必ず設けてください。
  • idea.md または experimental_log.md によって直接裏付けられる場合は、適切な箇所で形式的な数学の式、記法、定義を使用してください。**数学的内容を捏造してはいけません。**不必要に複雑な数学を使わないでください。
  • 実験結果について、詳細なアブレーション研究と定性的分析を必ず提示してください。何がうまくいき、何がうまくいかなかったか、またその理由を説明してください。
  • 任意:最後に制約と今後の研究について述べてもかまいません。
  • Appendix に内容を記載する場合は、References セクションの後に、新しいページから Appendix セクションを配置してください。
図と視覚的な忠実性
  • 図の実際の画像ファイルが提供されています。図を忠実かつ正確に説明してください。プロットの視覚的な証拠に反する解釈を捏造してはいけません。
  • figures/ にある図はすべて使用してください。\includegraphics コマンドでは、拡張子(例:.png)を含めた正確なファイル名を使用してください。
  • 複数の図を1つの表示にまとめたり、グループ化したりしないでください。
  • 論文が2段組みの場合は、非常に横幅の広い図でない限り、単段組みの図(\begin{figure})を優先してください。
  • Appendix に明示的に配置する場合を除き、すべての図を Conclusion セクションより前に配置してください。
  • 必要に応じてキャプションを調整できますが、キャプションはすでに captions.json に記載されているため、基本的にはそのまま使用してください。
  • キャプションの文中に「Figure X」を含めないでください。番号は LaTeX が付与します。
修辞構成

テンプレートとチェックリストは skills/shared/section_rhetoric.md にあります。執筆時には次の制約を守ってください。

  • 1つの段落で伝えるメッセージは1つとし、最初の文で明示してください。 要点が5文目で初めて述べられる段落は、査読者に読み飛ばされます。
  • Abstract は、貢献の数に応じて次の3つのテンプレートのいずれかに従ってください。課題→貢献、課題→洞察→貢献、または複数の貢献(各貢献とその利点を同じ文で組み合わせる)。
  • 手法の各小節には3要素を含めてください — 設計(入力 → 手順 → 手順 → 出力 の順方向のプロセス)、動機(X では不十分なため、Y を設計する)、そして技術的な利点です。設計だけの小節はシステムの取扱説明書のようになり、動機だけの小節は宣伝のようになります。
  • 実験では3つの問いに答えてください:強力なベースラインより優れているか、どの設計上の選択が改善をもたらすか(差分として示すアブレーション)、そしてどの程度一般化できるか。Introduction で主張した各貢献は、少なくとも1つの実験に対応させてください。
  • Conclusion における制約は、欠陥ではなく適用範囲を定めるものです。「短いシーケンスのみで評価した」は手法の適用範囲を示しますが、「学習率を調整しなかった」は採択を危うくします。
  • 用語は Abstract から Conclusion まで統一してください。 概念ごとに名称を1つに定めてください。
文体
  • 一流の機械学習カンファレンス論文にふさわしい、簡潔で客観的、かつ技術的な文体を採用してください。
  • 元の template.tex のインデントと空白のスタイルに合わせてください。LaTeX 全体のスタイルは変更しないでください。
LaTeX の整合性
  • 出力は、そのまま問題なくコンパイルできる必要があります。
  • すべての \begin{X} に対応する \end{X} を記述してください(例:\begin{figure*} は \end{figure} ではなく、\end{figure*} で閉じてください)。
  • \usepackage[capitalize]{cleveref} を \usepackage[capitalize]{cleverref} に変更しないでください。cleverref.sty は存在しません。
  • 必ず \bibliographystyle{...} の直前に \clearpage を出力してください。 これがないと、LaTeX のフロート配置アルゴリズムによって後回しにされた図が、References セクション内またはその後に表示されてしまいます。これは、コンパイル済み PDF でしか確認できない、見つけにくいレイアウト上の不具合です。\clearpage を指定すると、参考文献の開始前に保留中のフロートがすべて出力されます。詳細は references/latex-table-patterns.md を参照してください。
  • 相互参照:Figure~\ref{fig:X} と Table~\ref{tab:Y} を、\ref{fig:X} のみの記述より優先してください。 cleveref が利用できない場合に必要であり、あらゆる場合に読みやすい文章になります。\cref{...} は、cleveref.sty が存在することを確認できた場合にのみ使用してください。
出力形式
  • 更新済みの template.tex 全体を \``latex ... ```` で囲んでください。
  • これまで空だったセクションには、内容を記述してください。
  • すでに記述されているセクション(Intro、Related Work)は、整合性を保つための調整に限り、ほぼ変更せずに残してください。

リソース

  • references/prompt.md — App. F.1 の Section Writing Agent プロンプト全文
  • references/latex-table-patterns.md — booktabs のルールと、ログから表を作成する例
  • references/figure-integration.md — \includegraphics、2 段組みへの対応、配置
  • scripts/extract_metrics.py — experimental_log 内の Markdown 表を JSON に変換
  • scripts/latex_sanity.py — 波括弧の不一致、環境の不一致、特殊文字
  • scripts/orphan_cite_gate.py — すべての \cite{KEY} が refs.bib に存在することを確認
  • scripts/table_lint.py — NEW booktabs のルール違反と、表の読みやすさに関する規約
  • skills/shared/section_rhetoric.md — NEW セクションごとの構成テンプレート(要旨のバリエーション、モジュールの 3 要素、実験に関する問い)とチェックリスト

コメント