Communitygithub.com

WonJeong0913/paper-figure

研究論文の手法、パイプライン、アーキテクチャ図を、画像生成モデルを使わずに編集可能なClaude Designボードとして描画・修正します。著者の構造を保持し、ターゲット会議(ICML、NeurIPS、ICLR、ACL、AAAI、CVPR、IEEE、ACM、Nature)に合わせてテキストサイズを調整し、参考図と比較し、印刷サイズで測定し、ベクターPDFと300 dpi PNGをエクスポートします。「図を作成」「図2を修正」「概要図」「アーキテクチャ図」「図を確認」に使用します。

paper-figure とは?

これは、研究論文向けの手法図、パイプライン図、アーキテクチャ図を、画像生成モデルを一切使用せずに作成・編集するためのAIエージェントスキルです。すべての要素はユーザー自身が描画し、編集可能なClaude Designキャンバス上のボードとして納品されます。このスキルは、ICML、NeurIPS、ACL、CVPR、Natureなどの主要な会議やジャーナルのフォーマット要件に自動的に準拠し、図内のテキストサイズを印刷時に適切なポイント数に調整します。ワークフローは、構造台帳(ledger)の構築、参考文献図の調査、複数の候補図の作成、自動監査ツールによる測定・比較、著者による選択、そしてベクターPDFと300 dpi PNGのエクスポートで構成されます。特筆すべきは、構造の忠実性を重視しており、モジュールや接続の追加・削除・名称変更は著者の確認なしには行わない点です。また、テキストの重なりやサイズ違反を検出する監査スクリプト(figure_audit.py)が用意されており、印刷サイズでの視認性を保証します。このスキルは、Claude Designキャンバスが利用可能な環境(Claude Codeなど)で最適に動作します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/WonJeong0913/paper-figure/tree/HEAD

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

paper-figure は何をしますか?

論文の図を、個別に配置された編集可能な要素から描画し、実際に印刷されるサイズで測定します。

原則

  • 画像生成モデルは使用しません。 あなたまたは著者がすべての要素を描画します。
  • そのツールが利用可能な場合は、図をClaude Designキャンバス上のボードとして納品します。 これは必須です。最初にボードを作成または更新し、著者がすべての要素を移動、スタイル変更、コメントできるようにします。PNG、PDF、ローカルHTMLファイルのみで終わらせないでください。セッションにキャンバスツールがない場合にのみ、プレーンなHTMLボードをディスクに描画し、その旨をレポートに記載します(references/drawing-boards.md)。
  • PDFとPNGはエクスポートです。著者からの依頼がある場合、または図が最終版となった場合に作成します。LaTeX用のベクターPDFと、Wordやスライド用にそこから生成された300 dpiのPNGです。
  • 図のテキストは、論文本文で使用されている名前を正確に使用し、論文の言語で記述します。
  • 構造は保持されます。 形状やレイアウトは変更しても構いません。ただし、モジュール、接続、境界線は、著者に確認せずに変更してはいけません(「構造台帳」を参照)。
  • 描画の前にターゲット会議を選択します。 会議によって要件は異なります。Natureは図のテキストを7 ptに制限し、AAAIは少なくとも9 ptを要求します。著者が選択していない場合は、その分野で一般的な会議を選択し、その旨をレポートに記載します。
  • 品質基準はトップ会議の図です。 最初に参考図を確認し、候補を作成し、著者が選択できるようにします。単なる箱と矢印で止まらないでください。
  • 「合格」または「重なりなし」と言うのは、scripts/figure_audit.pyで測定し、自分でレンダリングを確認した後でのみです。これは、描画面の「確認しない」というデフォルト設定を上書きします。
  • 視覚的な批評は助言です。 要素の数え間違いや接続の見落としがあります。構造の判断は、台帳と--compareを使用してのみ行います。

ワークフロー

  1. ソースを読み込みます: 論文草稿、コード、および著者自身の図。著者が「やり直し」と言うたびに、再度読み込みます。
  2. 構造台帳を作成します。
  3. ブリーフを作成し、会議を選択します(references/venues.md)。
  4. 2~3の参考図を開き、スタイルシートを作成します。
  5. キャンバス上に2~3の候補を描画します。これらは、小さな微調整ではなく、レイアウトまたは形状の語彙が異なるものにします。
  6. 監査、確認、比較、批評します。 エラーがゼロになるまで修正します。
  7. 比較シートを表示します。著者が選択します。
  8. エクスポートします。著者が選択したら、図を原稿に配置し、そのページを確認します。

構造台帳(編集前)

図は、著者が設計したシステムを示します。以下のすべての項目を、著者の図、論文、コードからテーブルに抽出します。

種類項目ソース
モジュール(ボックス)正確な名称元の図 / コードパス / 論文セクション
接続(矢印)送信元 → 送信先 : データ名そのデータを生成するコード
境界線各システム、スキル、ツールが内包するもの元の図 / コード
状態とリソース共有状態、予算、共有モデル、コーパス、学習済みパラメータ元の図 / コード
決定とループ決定結果、フィードバック、再帰パスポリシー関数 / アルゴリズム
入力と出力ユーザー入力、最終出力、入出力テンソル元の図 / コード

他人の手法を描画する場合は、元の論文のアルゴリズムと公式コードから台帳を作成し、それらを引用します。

  • 台帳内の項目は、消えたり、名前が変わったり、境界線を越えて移動したりしてはいけません。変更が必要な場合(例えば、図がコードと矛盾している場合)、編集前に著者に確認してください。
  • モジュールや矢印をでっち上げたり、簡略化のために接続を削除したりしないでください。意図的な省略は、キャプションまたはレポートに記載します。
  • レイアウトは変更しても構いません。フローの方向と包含関係は変更してはいけません。
  • 詳細図は概要図を分割したものです。名前、色、境界線は一致している必要があります。
  • すべての矢印をコードと照合します。矢印は、そのデータを実際に生成するモジュールから出ている必要があります。
  • 編集後、台帳を一行ずつ確認し、python3 scripts/figure_audit.py NEW --venue icml --compare ORIGINAL を実行します。このスクリプトはラベルのない矢印を認識できません。それらは手動で台帳と照合します。
  • レポートは「構造変更: なし」、または変更点のリストと著者の承認の有無から始めます。

著者との連携

  • 著者自身の描画がベースラインです。 その上に要素を配置し、整列させます。その構造やスタイルを全面的に置き換えないでください。
  • オリジナルを上書きしないでください。 新しいバージョンは常にその隣に配置します(Fig2_v2)。著者が確認します。
  • 著者が手動でボードを編集した場合は、最新のファイルを再読み込みし、それを作業対象とします。
  • 要素は一度に一種類ずつ追加します。ステージパネル、ピル、出力ボックスを一度に追加すると、図が複雑になりすぎます。
  • 隣接するステージは実際の名前が入った破線ボックスとして保持します。それらを削除したり、矢印やグレーのテキストに縮小したりしないでください。
  • 変更があった点のみを図ごとに報告します。論文やコードとの不一致を見つけた場合は、図を編集する前にその旨を伝えます。

ブリーフ、参考図、スタイルシート

ブリーフ(図ごとに1つ)

役割:            概要(構造+手順) / ステージ詳細 / アーキテクチャブロック
図の種類:     A システムまたはエージェントパイプライン / B モデルまたはアーキテクチャ
会議:           配置幅とテキストpxを設定します(references/venues.md)
読者のテイクアウェイ: 一行
保持すべき事実:   構造台帳
省略:            結果数値、本文に属する文章、モデル名などの設定

参考図(2~3)

  • 優先順位: 手法の原著論文または公式リポジトリ; 同じ会議の同じ図タイプの最近の論文; 著者の以前の図。
  • それぞれを開いて確認する項目: 形状の語彙、各色の意味、フォントと変数の表記、レイアウトの骨格、テキスト量、そして模倣すべきでない点。
  • 慣習のみを取り入れます。参考図を再描画したり、そのパレットや構成を再現したりしないでください。

スタイルシート(論文ごとに1つ)

  • 論文中のすべての図は、1つの視覚的な語彙を使用します: フォント、テキストpx、色とその意味、形状、線と枠線の太さ、角の丸み、矢印の先端。
  • scripts/dc_board.pyでは、STYLE辞書がスタイルシートです。そこで変更し、要素ごとに変更しないでください。

構成ルール

  • ボックスには関数名のみを入れます。説明文は本文に記載します。
  • 矢印にはデータ名のラベルを付けます。データに番号を付けないでください。
  • A/B/Cや「To B / From A」のようなプレースホルダ名は使用しません。実際のモジュール名を使用します。
  • 境界線は、実際にその作業を行う部分のみを囲みます。
  • ボックステキストはキーワードです。文章は不可、15語を超えない、本文の貼り付け不可、方程式のリスト不可。短いデータ例は例外です。
  • ステージにステップ番号のバッジを付けないでください。図内にタイトルを入れないでください。タイトルはキャプションです。
  • 概要図は構造と手順を一緒に示します。入力 → 処理 → 出力 を左から右へ数秒で読み取れ、フィードバックループは破線で、出力が明確に視認できるようにします。
  • 1つの実例を、すべての詳細図を通して、ボックス内の小さなチップとして実行します。
  • 概要と詳細を、1つの図のパネルaとbにまとめることを検討します(積み重ね、またはマクロ・ミクロのズーム線)。両方を候補として作成します。
  • ルールが競合する場合は、以下の順序で決定します: 関係性と方向がコードと論文に一致 → フローが数秒で読める → 印刷サイズで読める → 整列 → 見た目。

形状の語彙、フォント、色、線: references/style.md。語彙A(システムパイプライン: アイコンカード、チップ、パネル)またはB(アーキテクチャ: 形状がタイプを示す)を選択し、1つの論文内で混在させないでください。

サイズ

印刷テキスト(pt)= テキストpx × 配置幅(pt)÷ ボード幅(px)。同じボードでも会議が異なれば印刷サイズが異なるため、会議が変更されるたびに再測定します。プリセットとpxサイズ: references/venues.md。

  • 図内のテキストサイズはほぼ均一に保ちます。一部のテキストを小さくして収めようとしないでください。テキストをキャプションに移動するか、ボックスまたはボードを拡大するか、行を分割するか、図を分割します。
  • テキストはボックスからはみ出したり、境界線から6 px以内に配置したりしてはいけません。
  • 1行に5つ以上のボックスがあると幅が不足します。タイトルを2~3行に分割し、その後2行にします。
  • 幅の広い図はテキスト幅いっぱい(figure*)で配置します。1カラムではテキストサイズが半分になります。
  • 複数のパネルがある場合は、行を正確に揃えるか、7 px以上離して配置します。

監査ループ

セットアップ: pip install playwright numpy pillow && python3 -m playwright install chromium (poppler-utilsによりPDFチェックが有効になります)。

python3 scripts/figure_audit.py project/Fig2.dc.html --venue icml --png fig2.png     # 測定 + レンダリング
python3 scripts/figure_audit.py project/Fig2.dc.html --venue nature --column         # 1カラムの図
python3 scripts/figure_audit.py project/Fig2.dc.html --placed-mm 165 --min-pt 8      # プリセットのない会議
python3 scripts/figure_audit.py project/Fig2.dc.html --venue icml --cvd fig2         # グレースケール + 色弱
python3 scripts/figure_audit.py project/Fig2_v2.dc.html --venue icml --compare project/Fig2.dc.html   # ラベルは保持されているか?
  1. ERRORが0になるまで修正します: テキストが上限または下限を下回っている、テキストがボックスからはみ出している、テキストが重なっている、テキストがキャンバスの外にある、元の図にあったラベルがない。WARN(テキストが境界線に接触、テキストが線を横切る、フォールバックグリフ、グレー上のテキスト、最小値を下回る線、僅差の位置ずれ)については、レンダリングを拡大して判断します。
  2. レンダリングを配置サイズで確認し、3つの--cvd画像も確認します。
  3. 矢印とラベルを台帳、コード、論文と再度照合します。
  4. 批評テーブルでスコアを付け、参考図と比較します。
  5. 各ラウンドで前のファイルを保持し、変更点のみを記録します。

修正順序(やり直しを防ぎます): キャンバスとマージン → 大きな領域と重ね順 → 形状サイズ → 塗りつぶしと境界線 → コネクタの端点 → テキスト → 装飾。

完了とは、次の3つすべてを満たすことです: 監査に合格し、配置サイズで確認し、批評が合格点をクリアしていること。監査に合格しただけでは不十分です。5ラウンド経っても問題が残る場合、レイアウト自体が間違っています。著者に伝え、一緒に決定します。

候補と批評

同じ構造で、異なるレイアウトまたは語彙(パネルa/b対ズーム線、左から右対下から上、語彙A対B)のボードを2~3つ作成します。候補と参考図を1つの画像に積み重ねて表示します。

from PIL import Image
ims = [Image.open(p).convert("RGB") for p in ["vA.png", "vB.png", "ref.png"]]
W = 1584; ims = [im.resize((W, round(im.size[1] * W / im.size[0]))) for im in ims]
sheet = Image.new("RGB", (W, sum(im.size[1] + 30 for im in ims)), "white"); y = 0
for im in ims: sheet.paste(im, (0, y)); y += im.size[1] + 30
sheet.save("compare_sheet.png")

各次元を0~2.5(合計10)でスコアリングします。拒否権が発動された場合、その次元は0になります。

次元意味拒否権
忠実性キャプションの範囲内で手法を示している。合理的な簡略化は可でっち上げのモジュールや接続、フローの逆転、必要な接続の欠落、範囲外、壊れたテキストや偽の数式
簡潔性信号対雑音比の高い視覚的要約ボックス内の文章(15語超)、本文の貼り付け、数式のリスト
可読性ひと目でわかるフロー、読みやすいテキスト図内のタイトルやキャプション、冗長なラベル、重なり、微小または不均一なテキスト、絡まったフロー
美観トップ会議レベルの洗練グリッドのアーティファクト、壊れた形状、ネオンカラーや衝突する色、クリップアート、混在フォント、位置ずれ、黒背景

合格点: ジャーナル8.5、カンファレンス8.0、学位論文8.0、ポスター7.0、スライド6.5。各次元について、1行の理由とともに「参考図より良い/同等/悪い」も記述します。

エクスポート

python3 scripts/dc_export.py <root> Fig2.dc.html --out paperfigs --venue icml
  • Fig2.pdf(ベクター、ボードサイズ)とFig2.png(配置幅で300 dpi)を書き出します。
  • PDFチェックは合格する必要があります: すべてのフォントが埋め込まれ、Type 3フォントがなく、ラスター画像がないこと。失敗した場合は、まずフォントリストを修正します(references/style.md)。
  • LaTeX: \includegraphics[width=\textwidth]{figures/fig2.pdf} を figure* 内に記述します。\resizebox や scale= で縮小しないでください。1カラムの図は figure と \columnwidth を使用します。
  • Wordおよびスライド: 図の幅でPNGを挿入し、そのページで重なりや改ページがないか確認します。
  • 原稿内の図を置き換える前に、前の図をバックアップし、著者が決定した後にのみ置き換えます。
  • キャプションは会議のテンプレートに従います。キャプションに、記号の例が何を意味するか、何が意図的に省略されたか、例はあくまで説明用であることを明記します。

禁止事項

  • 著者の確認なしに、モジュール、接続、境界線を追加、削除、または名称変更すること。
  • 画像生成モデルを使用すること、ビットマップのみの最終図を納品すること、または参考図をコピーすること。
  • キャンバスツールが利用可能な場合に、PNG、PDF、またはローカルファイルのみで終わらせること。
  • 手法図に結果数値を入れること、または1つの論文内で図ごとに色のルール、テキストサイズ、語彙を変えること。
  • グレーの背景にテキストを配置すること、CSSの境界線に小数pxを使用すること、またはType 3フォントを含むPDFを出力すること。
  • 著者のオリジナルを上書きすること、原稿内の図を無断で差し替えること、または著者に代わって候補を選ぶこと。
  • 測定せずに「読みやすい」または「重なりなし」と主張すること。

ファイル

ファイル用途
scripts/dc_board.py短いPythonからボードを構築: カード、アイコンカード、台形、操作円、テンソル、パネル、矢印
scripts/figure_audit.py印刷サイズで図を測定; --venue, --compare, --cvd
scripts/dc_export.pyボード → ベクターPDF + 300 dpi PNG、PDFフォントとラスターチェック付き
references/venues.md会議のプリセット: 幅、規定のルール、最小テキストpx
references/style.md形状語彙AとB、フォント、色、線、密度
references/drawing-boards.mdClaude Designキャンバス上またはプレーンなHTMLボードとしての描画; dc_board.pyの呼び出し; TikZに関する注意
references/credits.md借用した手順の出典とそのライセンス
examples/監査に合格する実行可能な図: react-agent(語彙A)、transformer-block(語彙B)、rag-pipeline(最小限)

関連スキル