mcpField
M
make-figures

make-figures

github.com/aperivueデータ・データベース353144 回インストール1 日前に更新
リポジトリ

make-figures について

医学研究者向けに、投稿先の要件に沿った図表やビジュアルアブストラクトを作成するClaude Skillです。PHIの確認、AI生成画像に関する投稿規定の確認、原稿からPPTXを作る手順を備えています。

主な機能

  1. 01研究図表とビジュアルアブストラクトの作成
  2. 02データのPHIリスク確認
  3. 03投稿先のAI画像ポリシー確認
  4. 04投稿先テンプレートと中央イラストの検証

活用シーン

  1. 01投稿用の医学図表の作成
  2. 02原稿からビジュアルアブストラクトや中央イラストを作成
  3. 03投稿前のAI画像利用制限の確認

インストール

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

$npx skills add https://github.com/aperivue/medsci-skills --skill make-figures

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

同梱ファイル

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

references/
design_principles.md
references/critic_rubrics/
data_plot.md
flow_diagram.md
references/exemplar_diagrams/
README.md
references/exemplar_diagrams/consort/
README.md
template_input.yaml
references/exemplar_diagrams/other/
other_02_why.md
references/exemplar_diagrams/pipeline/
pipeline_01_why.md
pipeline_03_why.md
pipeline_04_why.md
pipeline_05_why.md
pipeline_06_why.md
pipeline_07_why.md
pipeline_08_why.md
pipeline_09_why.md
pipeline_10_why.md
README.md
references/exemplar_diagrams/prisma/
README.md
template_input.yaml
references/exemplar_diagrams/stard/
README.md
template_input.yaml
references/exemplar_diagrams/strobe/
template_input_pptx.yaml
template_input.yaml
template_output.pptx
references/exemplar_plots/
ai_assistance_effect.md
bland_altman.md
calibration_plot.md
clinical_timeline.md
confusion_matrix.md
cumulative_incidence.md

詳細

Make-Figures スキル

データプライバシーの確認

データファイルを読む前に、保護対象保健情報(PHI)が含まれている可能性があるか確認してください。

  1. 作業ディレクトリに *_deidentified.* ファイルがある場合は、優先して使用してください。
  2. 生の CSV/Excel ファイルしかない場合(対応する *_deidentified.* ファイルがない場合)は、データに患者識別情報(氏名、国民 ID/RRN、連絡先など)が含まれているか、ユーザーの言語で確認してください。含まれている場合は、まず /deidentify スキルを使って匿名化するよう依頼してください。
  3. データはすでに匿名化されている、または PHI が含まれていないとユーザーが確認した場合は、作業を続けてください。

参照ファイル

  • 図の仕様:${CLAUDE_SKILL_DIR}/references/figure_specs.md — 図を生成する前に読み込んでください(ジャーナルの寸法、DPI、ファイル形式、配色、フォントサイズ、パネルのレイアウト、キャプションの形式)。
  • 図のスタイル:${CLAUDE_SKILL_DIR}/../analyze-stats/references/style/figure_style.mplstyle

ジャーナルの AI 画像ポリシー(重要 — 生成前に確認)

ジャーナルの系列AI 生成画像に関するポリシー開示が必要か
JACC 系列(JACC: Asia、JACC Imaging、JACC EP、JACC BTS を含む)編集長の事前許可なしでは禁止(JACC pathway, PMC10167500)カバーレターでの投稿前照会+ICMJE 形式の宣言
NEJMAI 画像生成は禁止該当なし
Radiology/Radiology AI開示すれば使用可能原稿内の開示ブロック
Springer Nature(Nature Portfolio、BMC、Springer のジャーナル)ビジュアルが独立して検証可能なデータ、ソース資料、手法、またはコードに基づく場合に限り使用可能です。検証可能な入力のない AI ビジュアルは「不透明」とみなされ、許可されません。データセットから作成したチャートや、著者が確認したコード生成図は、ポリシーで許可されている例です(AI in manuscript preparation)モデルと目的を申告してください。生成を伴わない画像編集はキャプションで開示してください
Elsevier のジャーナル(出版社のポリシー)説明用画像(フローチャート、模式図)は使用可能です。データの可視化は、再現可能な方法で基礎データから直接作成した場合に限り使用できます。**放射線画像や患者画像など、一次研究の画像は AI で作成または改変してはなりません。**研究手法の一環として作成された AI 画像は使用可能です。グラフィカルアブストラクトには、汎用生成 AI ではなく、専用のイラスト作成ツールを使用してください(Generative AI policies for journals)説明用画像はキャプション+AI 使用の開示文、データの可視化および研究手法としての使用は「方法」に記載
Lancet 系列開示が必要で、生成は推奨されません原稿内で開示
デフォルト(投稿先が不明)確認が取れるまでは禁止として扱ってください該当なし

出版社のページは最低限の要件です。ジャーナル独自のガイドラインがより厳しい場合があります(JACC は Elsevier のジャーナルです)。投稿先ジャーナルのガイドラインと出版社のガイドラインの両方を確認してください。

厳守事項:JACC、NEJM、または投稿先が「不明」のジャーナルでは、図、Central Illustrations、またはグラフィカルアブストラクトに掲載する画像の作成に、Gemini/DALL-E/Midjourney/Stable Diffusion/Nano Banana を絶対に使用しないでください。原稿本文の AI による文章編集は、標準的な開示を条件として引き続き許容されます。

AI 画像が許可されていない場合のデフォルトのワークフロー
  1. SMART Servier Medical Art — https://smart.servier.com/、CC BY 4.0、無料、3,000 点以上のベクター形式の医療アイコン(解剖、臓器、民族別の人物像、医薬品、医療機器)。商用利用および論文での使用が許可されています。クレジット表記が必要です(図の説明または方法の項に 1 行):

    Anatomical icons modified from SMART Servier Medical Art (CC BY 4.0).

  2. NIAID BioArt(https://bioart.niaid.nih.gov)— パブリックドメイン(米国政府)、微生物学/免疫学/ラボ技術に特化しています。
  3. BioRender(https://www.biorender.com)— 通常は機関ライセンスが必要です。エクスポートした「Publication-ready」PNG/TIFF を使用し、BioRender の出版ポリシーに従って引用してください。
  4. 直接入手できない「疾患」バリエーション(例:正常な血管から石灰化した血管を作成する場合)は、正常なアセットを再利用し、matplotlib の scatter/Circle/PathPatch で疾患マーカーを重ねてください。これにより、パイプライン全体を非 AI かつ再現可能な状態に保てます。

AI 画像が許可されている場合でも、経験豊富な査読者は AI 生成のイラストを見分けます(情報を追加しない小さな装飾アイコン、均一すぎるレイアウト、ありきたりなクリップアート風のスタイルなど)。影響力の大きい投稿では、AI よりも Servier/BioArt/BioRender と matplotlib によるオーバーレイを優先してください。

アセットディレクトリの規約
manuscript/figures/_assets_servier/      # CC BY 4.0 source PNGs
manuscript/figures/_assets_servier/CITATION.md   # source URL + download date per asset
manuscript/figures/_assets_data/         # data-driven raster (R / matplotlib heat maps, KM, etc.)
manuscript/figures/_legacy/              # archived prior versions

構成スクリプトは _assets_servier/ と _assets_data/ からのみ読み込むようにしてください。スクリプトが _assets_ai/ からインポートする場合、JACC/NEJM/投稿先が不明な場合については、ポリシー違反とみなしてください。

AI 画像の生成(任意)

AI によるイラスト作成は補足的な選択肢です。すべての図とビジュアルアブストラクトは、API キーなしで完成できます。GEMINI_API_KEY が設定されている場合、generate_image.py でイラスト(手続き型の模式図、解剖図)を生成できますが、上記のポリシー表と厳格なルールに従ってください。

python ${CLAUDE_SKILL_DIR}/scripts/generate_image.py \
  "Clean medical illustration of a CT-guided lung biopsy procedure, \
   flat vector style, white background, no text" \
  --output output.png --aspect 16:9

GEMINI_API_KEY が設定されていない場合は、${CLAUDE_SKILL_DIR}/references/medical_illustration_sources.md を使用してください。


ビジュアルアブストラクト/グラフィカルアブストラクト

European Radiology では、2025 年 1 月より初回改訂時に、すべての原著論文でグラフィカルアブストラクトが必須となりました。他のジャーナルでも推奨または受け付けています(状況の一覧は template_guide.md を参照)。作業を開始する前に、投稿先ジャーナルのプロフィール(write-paper/references/journal_profiles/)で、ビジュアルアブストラクトの要件を確認してください。

ワークフロー
  1. ジャーナルのテンプレートを確認します。 ${CLAUDE_SKILL_DIR}/references/visual_abstract_templates/{journal}.pptx に公式の PPTX テンプレートがあるか確認してください。 ジャーナル固有のテンプレートがない場合は、medsci_default.pptx を使用してください。
  2. 原稿から内容を抽出します:
    • タイトル: 論文の正式なタイトル
    • 仮説/問い: Key Point 1 または研究目的から導出(最大 1 文)
    • 方法論: 簡潔なフローチャート、または 3 項目以内の箇条書き(各 6 語未満)
    • ビジュアル要素: 研究独自の図(ROC 曲線、フロー図、代表画像)
    • バッジ: 患者コホート(N=...) | モダリティ/臓器 | 単施設/多施設
    • 主な知見: Key Point 3 から導出(20 語未満)
    • 引用: ジャーナル(年)著者;DOI
  3. ビジュアル要素を選択します(優先順位順):
    1. 研究独自の図(ROC、フロー図、代表画像)— 常に優先
    2. Servier Medical Art または NIAID BioArt の無料イラスト (${CLAUDE_SKILL_DIR}/references/medical_illustration_sources.md を参照)
    3. PPT/Keynote/Figma での手描き
    4. generate_image.py --style medical による AI 生成(GEMINI_API_KEY が設定されている場合のみ)
  4. スクリプトで生成します:
    python ${CLAUDE_SKILL_DIR}/scripts/generate_visual_abstract.py \
      --template medsci_default \
      --title "Article Title" \
      --hypothesis "Research question" \
      --methods "Method 1|Method 2|Method 3" \
      --finding "Main finding statement" \
      --citation "Eur Radiol (2026) Author A et al; DOI:..." \
      --visual figures/fig1_roc_curve.png \
      --badges "N=450|CT chest|Multi-center" \
      --output figures/visual_abstract.pptx
    
  5. ユーザーと確認します。 PPTX を開いてレイアウトと内容を確認し、調整を繰り返してください。
  6. エクスポートします。 PPTX が主な成果物です。PNG にするには、PowerPoint/Keynote で開いてエクスポートするか、LibreOffice CLI(soffice --headless --convert-to png)を使用してください。

デザイン:1 ページ、横向き(16:9)またはジャーナルのテンプレートに準拠。3 つのセクション(研究の問い → 主要な方法 → 主な結果)で構成し、汎用的な画像ではなく研究の実際の図を使用します。テキストは最小限にし、装飾的なクリップアートは使用しません。

利用可能なテンプレート
テンプレートファイル使用する場合
MedSci Defaultmedsci_default.pptx公式テンプレートがないすべてのジャーナル
JACC Central Illustrationjacc_central_illustration.pptxJACC 系列のジャーナル(--type central-illustration を使用)

ジャーナル独自のテンプレートを使用する場合。 ジャーナルのテンプレート(European Radiology の EURA-GA-Jan2025.pptx など)は再配布していません。ダウンロードして絶対パスを渡してください:

python ${CLAUDE_SKILL_DIR}/scripts/generate_visual_abstract.py \
  --template /absolute/path/to/EURA-GA-Jan2025.pptx  ...

--template には、任意の .pptx の絶対パスを指定します。スクリプトは図形名ではなくテキストの内容でフィールドを特定するため、ジャーナル独自のテンプレートを変更せずに使用できます。指定したパスが存在しない場合は、medsci_default.pptx にフォールバックします。

新しいジャーナルテンプレートを追加するには、${CLAUDE_SKILL_DIR}/references/visual_abstract_templates/template_guide.md を参照してください。


Central Illustration と Visual Abstract の違い

JACC 系列のジャーナル(JACC、JACC: Asia、JACC: Cardiovascular Imaging、JACC: Heart Failure、JACC: CardioOncology、JACC: Clinical Electrophysiology、JACC: Basic to Translational Science)では、すべての Original Article に Central Illustration(CI)が必要です。CI は Visual Abstract ではありません。主要な知見を 1 つ伝えるもので、方法は含みません。作成する前に、${CLAUDE_SKILL_DIR}/references/jacc_central_illustration_principles.md(CI と VA の比較表、Fuster-Mann の 5 つのルール、レイアウト、検証のしきい値)を読んでください。

CI モードの呼び出し
python ${CLAUDE_SKILL_DIR}/scripts/generate_visual_abstract.py \
  --type central-illustration \
  --visual figures/central_illustration_v2.png \
  --citation "FirstAuthor Last et al. Journal Name 2026; vol(issue):pages." \
  --output submission/jacc_asia/central_illustration.pptx \
  --ci-zones 3 --ci-label-words 22 --ci-numerical-points 2 \
  --ci-raw-text "warranty drops to 3 years in age 45+ with cardiometabolic burden; MASLD HR 1.77"

CI モードではレンダリング前に検証を行い、次のいずれかに該当する場合はエラー(終了コード 2)になります:ゾーン数が 3 を超える、ラベルの単語数が 30 を超える、数値ポイントが 4 を超える、または方法論に関する用語(cohort flow / inclusion criteria / exclusion criteria / study design / enrollment / randomized / sample size / CONSORT / PRISMA / STARD)が --ci-raw-text に含まれる。個々のルールを上書きする場合は、正当な理由がある場合に限り --ci-allow {zones|words|numerical|methods} を使用してください。提出するのは図と引用文献のみです。採択後、JACC 編集部が赤い枠線と青い「CENTRAL ILLUSTRATION:」の見出しを適用します。


ワークフロー

キャプション、凡例、イラストに記載する文献には、/search-lit で確認済みの DOI または PMID が必要です。確認できないものには [UNVERIFIED - NEEDS MANUAL CHECK] と記してください。未確認の臨床上の定義、基準、ガイドラインに関する主張には [VERIFY] と記して、確認を求めてください。どちらも提出ゲートでブロックされます。

ステップ 1:指定

図の種類を指定する前に、${CLAUDE_SKILL_DIR}/references/design_principles.md を読み込んでください — (1)一文で表せる主要メッセージ、(2)対象読者と読了時間の目安、 (3)図が適切な表現方法か(小さな表や本文中のテキストと比べて)を特定してください。図が報告ガイドラインによって必須とされる場合(例:PRISMA / CONSORT)に限り省略できます。その場合も、認知負荷のチェックリストを適用してください。

報告ガイドラインに基づく図の場合は、 ${CLAUDE_SKILL_DIR}/references/reporting_guideline_figure_map.md も読み込んでください — どのガイドラインでどの図が必須となるか、このスキルに公式テンプレート(✅)、一般的なフローのみ(⚠️)、または手作業での作成が必要(❌)のいずれが含まれるかを確認できます。AI 拡張ガイドライン(CONSORT-AI、STARD-AI、TRIPOD+AI、CLAIM 2024、DECIDE-AI)では特に重要です。

医療 AI/エンジニアリングのパイプライン図(DICOM ワークフロー、アノテーションパイプライン、連合学習トポロジー、モデルアーキテクチャ)の場合は、 ${CLAUDE_SKILL_DIR}/references/pipeline_concepts_medical_ai.md も読み込んでください — 種類ごとの標準レイアウト、必須の注釈、ツール選択を確認できます。

任意のフラグ:

  • --study-type <type>:diagnostic-accuracy、ai-validation、meta-analysis、dta-meta-analysis、observational-cohort、rct、case-report のいずれかを指定します。設定すると、個々の図の種類を尋ねずに、下記の「研究の種類別の図セット」表に基づいて図一式を自動生成します。
  • --data-dir <path>:分析出力(CSV、_analysis_outputs.md)を含むディレクトリです。デフォルトは現在の作業ディレクトリです。

ユーザーに次の項目を尋ねてください(すでに文脈からわかる内容を推測し、進める前に確認してください)。

  1. 図の種類 — --study-type が指定されている場合は省略
  2. データソース(ファイルパス、DataFrame、または手動入力値)
  3. 投稿先ジャーナル(寸法/フォント要件の確認用)
  4. パネルレイアウト(単一パネル、複数パネル、または選択を任せる)
  5. 特別な要望(注釈、強調表示、基準線)
  6. 研究の種類(--study-type で指定されていない場合):必要な図のセットを決定します
ステップ 2:設定
  1. 図のスタイルファイルを読み込みます(下記の骨組みを参照)。
  2. ${CLAUDE_SKILL_DIR}/references/figure_specs.md でジャーナル固有の寸法を確認します。
  3. 色覚多様性に配慮したパレットを設定します(デフォルトは Wong パレット)。
  4. figure_specs.md に従って、要素の種類(タイトル、軸ラベル、目盛りラベル、凡例、注釈)ごとにフォントサイズを設定します。
ステップ 3:生成

Python(matplotlib/seaborn。必要に応じて専門ライブラリを使用)を使います。各データプロットは、 ${CLAUDE_SKILL_DIR}/references/exemplar_plots/ にある解剖モデルを使って構成します(インデックスはその README.md にあります)。 箱ひげ図/バイオリン図、棒グラフ、ヒートマップについては、figure_specs.md の種類別の規則に従ってください。フローチャートに matplotlib は使いません — ツール選択ガイドを参照してください。

スクリプトの構成:

"""
Figure: {description}
Date: {YYYY-MM-DD}
Target: {journal}
Dimensions: {width} x {height} inches @ {DPI} DPI
"""
import numpy as np
import matplotlib.pyplot as plt
import os

style_path = os.path.join(os.environ.get('CLAUDE_SKILL_DIR', '.'), '../analyze-stats/references/style/figure_style.mplstyle')
if os.path.exists(style_path):
    plt.style.use(style_path)

# Wong colorblind-safe palette
WONG = ['#000000', '#E69F00', '#56B4E9', '#009E73',
        '#F0E442', '#0072B2', '#D55E00', '#CC79A7']

np.random.seed(42)

データポイントを捏造してはいけません。テンプレートのデモにサンプルデータが必要な場合は、「example data」と明記してください。データ駆動型の .py/.R スクリプトで図(ROC、フォレストプロット、KM、キャリブレーション、ヒートマップ)を生成する場合は、最終確定前に /analyze-stats のコード品質ゲート(check_generated_code.py {script} --strict)でスクリプトをチェックしてください。ブートストラップ信頼区間帯のプロット用シードの欠落、ハードコードされた絶対データパス、分析 CSV から読み込むべき手入力のデータリテラルを検出できます。

ステップ 4:レビュー

図(レイアウト、ラベルと注釈、色/サイズ/強調)をユーザーに提示し、承認されるまで調整します。

ステップ 4b:批評ループ(最終エクスポート前の自己批評)

ステップ 5 のエクスポート前に、定量チェック、続いて定性的なレビューの 2 段階を実施し、再レンダリングするか、ユーザーに引き渡すかを判断します。

ステージ 1:定量チェック(critic_figure.py)

python ${CLAUDE_SKILL_DIR}/scripts/critic_figure.py \
    figures/fig1_stard.png \
    --type stard \
    --spec-min-dpi 600 \
    --spec-width-in 7.0 \
    --source-text figures/fig1_stard.txt \
    --out figures/fig1_stard.critique.json

--source-text は任意です(OCR カバレッジの対象文字列)。JSON レポートには、DPI とジャーナルの仕様に対する物理幅、優勢色の内訳と Wong パレット外の割合、OCR の単語数、テキストの最小高さ、ソース単語のカバレッジが含まれます。画像に DPI メタデータがない場合、DPI チェックでは仕様の幅での解像度(width_px / --spec-width-in)を使用します。チェックを実行できない場合(DPI メタデータがない場合の物理幅、pytesseract がない場合の OCR)は not_run に記載され、概要は PASS ではなく INCOMPLETE になります。--strict を指定すると、INCOMPLETE の場合に終了コード 3 で終了します。

ステージ 2:定性的レビュー

  1. Read ツールを使って、生成された PNG を読み込みます。
  2. 該当するルーブリックファイル(各ファイルのセクション A~G)を読みます。
    • フロー図:${CLAUDE_SKILL_DIR}/references/critic_rubrics/flow_diagram.md
    • データプロット:${CLAUDE_SKILL_DIR}/references/critic_rubrics/data_plot.md
    • PRISMA/CONSORT/STARD/STROBE の場合は、${CLAUDE_SKILL_DIR}/references/flow_diagram_lessons.md も読みます(公式テンプレートへの忠実性、VML フォールバックによる PDF エクスポート、docx XML のエスケープ、プレースホルダーの逐次マッピング、原稿との凍結バージョンの同期)。
    • AI 拡張ガイドラインまたはパイプライン図の場合は、ステップ 1 で読み込んだ reporting_guideline_figure_map.md の該当行/pipeline_concepts_medical_ai.md も照合します。
  3. ${CLAUDE_SKILL_DIR}/references/exemplar_diagrams/{type}/ にある _why.md のデザインノート(階層、余白、タイポグラフィ、強調、色)を読みます。これらを基準とします。 レンダリング済みの見本が同梱されている場合(template_output*.png)、そのうち 1~2 点も Read で読み込みます。公開論文から切り抜いた図は同梱されていません(そのディレクトリの README を参照)。代わりに、ユーザー自身がローカルに用意した見本を使用できます。フロー図以外のデータプロットの場合は、${CLAUDE_SKILL_DIR}/references/exemplar_plots/ にある該当する構造モデル(例:forest_plot.md)を読みます。
  4. 各ルーブリック項目を PASS/PARTIAL/FAIL で評価し、1 行の注記を添えます。ルーブリックファイルの末尾にある形式を使用します。
  5. 具体的なソースコード変更(ノード/ラベル名の変更、件数の修正、matplotlib パラメーターの調整)を記載した 「次のレンダリング前に必要な修正」 のリストを出力します。

修正ループ

  • すべての項目が PASS → critic_pass: yes としてステップ 5 のエクスポートに進みます。
  • FAIL の項目がある → 必要な修正をソース(フロー図の設定/R スクリプト、または matplotlib スクリプト)に適用し、再レンダリングしてステージ 1 とステージ 2 を再実行します。デフォルトの最大回数は T=2 ラウンドです。ユーザーは T=3 まで指定できます。
  • 最大回数の後も PARTIAL の項目が残っている場合は、critic_pass: partial として続行し、残った項目をマニフェストの critic_notes フィールドに記録します。

最終状態を _figure_manifest.md に記録します(Study-Type Figure Sets を参照)。これにより、後続ステップ(/write-paper のフェーズ 2 の埋め込みとフェーズ 7 の DOCX ビルド)および今後の批評パスで履歴を確認できます。

ステップ 5:エクスポート

最終出力を analysis/figures/ に保存します(analysis/figures/*.pdf、analysis/figures/*.png)。

  • PDF(ベクター形式。学術誌への投稿に推奨)
  • PNG(300 DPI のラスター形式。レビューやプレゼンテーション用)
  • TIFF(学術誌で必要な場合は、300 DPI、LZW 圧縮)— magick ... output.tiff のような未加工のコマンドではなく、 export_portal_tiff.py を使って作成してください。アルファチャンネルを保持でき (透明部分は多くの印刷工程で黒く印刷されます)、非圧縮のままにならないためです(600 dpi の RGBA TIFF はポータルの 25 MB 上限を超えます)。このスクリプトは RGBA を白背景で RGB に統合し、LZW 圧縮を適用して、結果が統合後の画像とピクセル単位で同一であることを検証します。ポータルで .tiff/.jpeg/.eps しか受け付けない場合(Springer Nature SNAPP)、または図のサイズに上限がある場合(JACC: Asia)に使用してください。
    python3 ${CLAUDE_SKILL_DIR}/scripts/export_portal_tiff.py --in figure.png --out figure.tiff --max-mb 25
    # exit 1 if still over the cap
    

ファイルには、fig1_roc_curve.pdf、fig2_consort_flow.pdf など、内容が分かる名前を付けてください。

PPTX 出力(ビジュアルアブストラクト、セントラルイラストレーション、または図を配置するスライドデッキ)について:納品前に Mac 互換性バリデーターを実行してください。PowerPoint for Mac は TIFF を通知なしで削除し、PDF エクスポートでは表示されない <a:sp3d> の 3D ベベルを赤い輪郭線として描画します。また、app.xml のスライド数と実際のスライド XML ファイル数が一致しないファイルは開けません。

python ${CLAUDE_SKILL_DIR}/scripts/validate_pptx_mac_compat.py \
    figures/visual_abstract.pptx \
    --json figures/visual_abstract.mac_compat.json \
    --strict

終了コード 1 は、少なくとも 1 件の FAIL があることを意味します。JSON レポートの fix: フィールドに従って修正し、納品前に PPTX を再レンダリングしてください。WARN があっても終了コード 0 であれば問題ありません。図が PNG/PDF のみの場合(PPTX なし)は、この手順を省略してください。

ステップ 6:デザイン QC チェックリスト

最終図を納品する前に、次の項目をすべて確認してください。

  • フォント:サンセリフ(Arial/Helvetica)、最小 7pt、軸ラベルは 9pt 以上
  • 色:色覚多様性に配慮した Wong/Okabe-Ito パレットを使用
  • 色覚テスト:重度の緑色弱でも判別できる(赤と緑だけで区別しない)
  • グレースケールテスト:白黒で印刷しても情報が保持される
  • 配置:すべての要素が一貫したグリッドに沿い、各パネルが整列している
  • ベクター出力:PDF/SVG を保存(PNG のみは不可)
  • 解像度:ラスター要素は 300 DPI 以上、線画は 600 DPI 以上
  • 学術誌の仕様:寸法、フォント、形式が投稿先の学術誌の仕様に合っている(図が上限を超える場合はサイズを変更し、変更内容を報告)
  • 不要な装飾がない:3D 効果、不要なグリッド線、グラデーション塗り、装飾要素がない
  • キャプション:重要な知見、略語、統計の詳細、サンプルサイズを含め、figure_specs.md(キャプション執筆ガイドライン)に沿って作成

研究タイプ別の図セット

研究タイプが判明している場合(/write-paper のフェーズ 0、またはユーザーの指定による)、図ごとに個別に確認せず、必要な図一式を生成してください。

研究タイプ(ガイドライン)必要な図
診断精度(STARD)STARD フローダイアグラム、ROC 曲線、混同行列、キャリブレーションプロット
AI 検証(TRIPOD+AI / CLAIM)フローダイアグラム、ROC 曲線、混同行列、キャリブレーションプロット、特徴量重要度または SHAP、Grad-CAM(画像を使用する場合)
メタアナリシス(PRISMA)PRISMA フローダイアグラム、フォレストプロット、ファンネルプロット
DTA メタアナリシス(PRISMA-DTA)PRISMA フローダイアグラム、対応のあるフォレストプロット(Se + Sp)、SROC 曲線、Deeks ファンネルプロット
観察コホート研究(STROBE)フローダイアグラム、Kaplan-Meier 曲線(生存エンドポイントの場合)
RCT(CONSORT)CONSORT フローダイアグラム、主要エンドポイントの図
症例報告/症例集積(CARE)臨床タイムライン図(exemplar_plots/clinical_timeline.md)、視覚的に重要な場合は注釈付きマルチモダリティ画像パネル(exemplar_plots/imaging_panel.md)。症例集積では、全症例の要約表
がん治療研究(CONSORT RCT または単群第 II 相試験。バイオマーカーサブセットには REMARK)CONSORT またはコホートのフローダイアグラム、リスク集合数表付き Kaplan-Meier PFS/OS(exemplar_plots/km_curve.md)、最良奏効のウォーターフォールプロット(exemplar_plots/waterfall_plot.md)、奏効の持続性を示すスイマープロット(exemplar_plots/swimmer_plot.md)、奏効の動態が重要な場合はスパイダープロット(exemplar_plots/spider_plot.md)、競合リスクがある場合は 1 - KM の代わりに累積発生率(exemplar_plots/cumulative_incidence.md)

マニフェストは必須です。 すべての図を生成した後、analysis/figures/_figure_manifest.md を作成してください。各図につき 1 行(Figure | Path | Type | Tool | Critic | Rounds | Description)を記載し、未解決の PARTIAL 項目と、それらを許容した理由を記録する ## Critic notes セクションを設けてください。これは /write-paper のフェーズ 2(図の埋め込み)とフェーズ 7(DOCX のビルド)で使用されます。作業を終える前に、ファイルが存在し、空でないことを確認してください。作成時は ${CLAUDE_SKILL_DIR}/references/figure_manifest.md を参照してください(形式とフィールドの定義)。

ツール選択ガイド

Data plots:    matplotlib/seaborn → PDF + PNG (this skill)
Flow diagrams: generate_flow_diagram.R (DiagrammeR + rsvg) → PDF + 300/600 dpi PNG
Final assembly: pandoc or python-docx (auto-embedded in DOCX)
フローチャート → 専用ツール(matplotlibは使用しない)

STARD/CONSORT/PRISMA/STROBEのフローチャートには、標準化されたRパイプライン scripts/generate_flow_diagram.R(DiagrammeR + Graphviz dot + rsvg)を必ず使用してください。4種類すべてに対応する唯一の標準ツールです。 matplotlibのFancyBboxPatchは使用しないでください(手動で配置するとテキスト変更時に崩れ、DOCXに埋め込むとパッチが歪みます)。新しいフローチャートにD2は使用しないでください(フォント制御が弱く、重なりを手動で後処理する必要があります)。D2は、Rが利用できない場合に限るレガシーな代替手段です。

種類推奨ツール理由
STROBE(コホート/横断研究)scripts/generate_flow_diagram.R --type strobe唯一の標準ツール。自動レイアウト。ベクターPDF + 300/600 dpi PNG
CONSORT(RCT)scripts/generate_flow_diagram.R --type consort同じパイプライン。デフォルトはモノクロのArial
PRISMA 2020(SR/MA)scripts/generate_flow_diagram.R --type prismaPRISMA 2020の構造を忠実に実装。PRISMA2020 Rパッケージで発生する、webshotベースのラスタPDFの問題を回避
STARD(DTA)scripts/generate_flow_diagram.R --type stard同じパイプライン。2×2の参照標準による分岐に対応
パイプライン図D2(レガシー)Rスクリプトにパイプライン図のサポートが追加されるまで

YAML設定 → Rscript ${CLAUDE_SKILL_DIR}/scripts/generate_flow_diagram.R --type <t> --config <yaml> --out <prefix> → PDF + 300/600 dpi PNG。テンプレートはreferences/exemplar_diagrams/{strobe,consort,prisma,stard}/template_input.yamlにあります。 フローチャートを生成する際は、${CLAUDE_SKILL_DIR}/references/flow_diagram_recipe.mdを読んでください(YAMLスキーマ、固定スタイル、プロジェクトごとのcreate_figure1.Rパターン、D2へのフォールバックについて記載されています)。ROC曲線やフォレストプロットの場合は不要です。

各ボックスのラベルには人数を含めてください(例:"Assessed for eligibility\n(n = 450)")。ラベル内の数値はCSVから取得する必要があります。上流データを読み込むR/PythonスクリプトからYAMLを作成するか、数値がコミット追跡対象のデータ成果物に含まれている場合に限り手書きし、コメントで参照元ファイルを記載してください。

キャプションとフローSSOTの照合(Step 5 Exportの前)。 フローチャートの設定が参加者数の唯一の信頼できる情報源です。コホートが再確定されたのにキャプションが更新されないと、手書きのFigure 1キャプションが設定と食い違います(「キャプションはn = 1,284 analytic、図のボックスはn = 998」)。フロー設定からキャプションの人数を再導出し、照合してください。

python3 ${CLAUDE_SKILL_DIR}/scripts/derive_figure_legend_counts.py \
  --flow-config figures/figure1_strobe_graphviz.yaml \
  --manuscript manuscript/index.qmd \
  --out qc/figure_legend_counts.json --strict

キャプション内に、フロー設定のボックスに記載されていないn = Nがある場合は、MISMATCH(古いキャプション)です。キャプションを設定に合わせて更新し、逆に設定を更新してはいけません。この照合ツールは標準ライブラリのみを使用し、設定をテキストとして解析するため、フローツールに関係なく動作します。Figure 1のキャプションが見つからない場合、またはキャプションにn = Nが含まれていない場合、判定はOKではなくNOT_CHECKED(--strictでは終了コード2)になります。

既知の制限:読み取る表記はn = Nのみです(「1,150 patients」のような数値だけの表記は対象外です)。また、一致判定は集合の包含関係で行うため、人数が誤ったボックスに移されていても(除外数と解析数の入れ替わりなど)検出されません。そのような点は図と照らし合わせて目視で確認してください。

公式報告ガイドラインのテンプレート → templates/official/

自動レイアウトの R 版ではなく、声明発行元による標準テンプレートを学術誌から求められた場合は、同梱の公式ファイル templates/official/{prisma2020,consort2010,stard2015,spirit2013}/を使用します。

ガイドライン同梱内容使用する場面
PRISMA 2020ローカルでビルドする .pptx(4 種類)+ fill_prisma_template.py査読者から公式の PRISMA 2020 レイアウトを求められた場合、または R で出力した PDF ではなく編集可能な PowerPoint が必要な場合。
STROBE(コホート)パラメトリック .pptx ビルダー build_strobe_template.py(YAML 設定)共著者が PowerPoint 上で直接編集できるようにしたい場合の、コホート/症例対照研究の Figure 1。左側のフェーズ列は任意です。標準的な STROBE 表記にする場合は stages: を省略し、PRISMA 形式の Identification/Screening/Inclusion/Analysis 列にする場合は含めます。ベクター形式の PDF/TIFF 投稿ファイルには、generate_flow_diagram.R --type strobe を併用します。
CONSORT 2025公式 .docx フローダイアグラム+チェックリストconsort-spirit.org のテンプレートを義務付けている学術誌への RCT 投稿。
STARD 2015公式 .pdf フローダイアグラム+ .docx チェックリスト診断精度研究。フローダイアグラムは固定 PDF で、チェックリストは編集可能です。
SPIRIT 2025公式 .docx 参加者タイムライン+チェックリスト試験プロトコル。

更新/入力のワークフロー:

# Refresh from canonical sources (CC-BY 4.0 / public-statement licenses)
bash ${CLAUDE_SKILL_DIR}/scripts/fetch_official_templates.sh

# Build PRISMA 2020 .pptx (one-time; site blocks programmatic .docx fetch)
python3 ${CLAUDE_SKILL_DIR}/scripts/build_prisma2020_template.py \
    --variant new \
    --out ${CLAUDE_SKILL_DIR}/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx

# Fill counts — positional 10-tuple matching most SR/MA workflows:
#   n_db, n_dup, n_screened, n_screen_excluded,
#   n_sought, n_assessed, n_excl_r1, n_excl_r2, n_excl_r3, n_studies
python3 ${CLAUDE_SKILL_DIR}/scripts/fill_prisma_template.py \
    --template ${CLAUDE_SKILL_DIR}/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx \
    --counts "315,122,186,7,111,204,102,84,3,15" \
    --out fig1_prisma_filled.pptx

# Or use full JSON mapping for studies with non-standard PRISMA splits
python3 ${CLAUDE_SKILL_DIR}/scripts/fill_prisma_template.py \
    --template ${CLAUDE_SKILL_DIR}/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx \
    --counts-file my_counts.json \
    --out fig1_prisma_filled.pptx

# STROBE — parametric single-script builder (cohort study; spine structure varies per study).
# YAML schema: stages, spine (id/stage/text), exclusions (after/text). Consecutive same-stage
# rows share one phase label automatically.
python3 ${CLAUDE_SKILL_DIR}/scripts/build_strobe_template.py \
    --config figures/figure1_strobe.yaml \
    --out    figures/figure1_strobe.pptx

STROBE ビルダーは、除外の連鎖が閉じていることを確認します。除外を宣言する各リンクについて、幹のボックス数からその後の除外数を差し引いた値が、次の幹のボックス数と一致する必要があります(A - Σ(exclusions after A) == B)。不均衡がある場合は大きく警告し、--strict-cascade を指定するとビルドを拒否します。これにより、図の計算のずれ(除外項目が抜けて解析対象の N に達しない状態など)を検出できます。こうしたずれは文章や説明文のチェックでは見逃されます。図を再ビルドせずに設定を確認するには、python3 ${CLAUDE_SKILL_DIR}/scripts/_strobe_cascade.py --config figure1_strobe.yaml --strict を実行します。どちらのスキーマにも該当しない設定では終了コード 2 になります。--strict の場合、確認可能な除外リンクがない幹設定でも、OK を報告する代わりに終了コード 2 になります。

既知の制限事項:generate_flow_diagram.R のノード/エッジスキーマは認識されますが、評価は行われません。ヘルパーは NOT_ASSESSED を出力し、終了コード 0 で終了します。破線の除外がどのボックスから差し引かれるかを読み取る方法は試されましたが、正しい図まで誤って問題ありと判定したため、その検出結果は未対応のままです(直前のステップに独自の除外があるときに、露出/非露出または指標陽性/陰性の分岐直前のボックスの横に除外がある場合)。破線の除外はすべて、隣接するボックスと照らし合わせて目視で確認してください。

STROBE の標準的な KJR/Radiology/BMJ 向け投稿フローは次のとおりです。

  1. 自動フィッティングする Graphviz パスで、投稿用のベクターファイルをレンダリングします: Rscript ${CLAUDE_SKILL_DIR}/scripts/generate_flow_diagram.R --type strobe --config figures/figure1_strobe_graphviz.yaml --out figures/figure1
  2. build_strobe_template.py を使って編集可能な PowerPoint 版も作成し、承認前に共著者や上級査読者が文章や配置を調整できるようにします。
  3. 共著者の編集をすべて反映してから、最終版 PPTX を PDF/TIFF に再出力します。

ライセンス、帰属表示、更新に関する注意事項については、templates/official/NOTES.md を参照してください。


スタイルルール

配色、フォントサイズ、パネルのレイアウト、キャプションの形式は figure_specs.md に記載されています。さらに、以下のルールに従ってください。

  • 図中のすべてのテキスト(ラベル、凡例、注釈)は英語とし、医学用語は必ず英語にします。
  • 赤と緑だけで区別しないでください。折れ線グラフでは色に加えて線種(実線、破線、点線)を、散布図では色に加えてマーカーの形状を使用します。
  • パネルラベル:各パネルの左上に大文字の太字(12 pt)で表示します。
  • プロット内に図のタイトルを付けないでください(タイトルはキャプションに記載します)。
  • 複数パネルの図はグリッドに沿って配置し、比較可能なパネル間では軸の範囲を統一します。
  • 有意差を示すアスタリスク(* p<0.05、** p<0.01、*** p<0.001)は比較を示す括弧の上に配置します。正確な p 値はプロット内ではなく、図の凡例またはキャプションに記載します。
  • AUC、相関、または一致度については、95% CI とともに凡例に表示します。

スキルの連携

場合呼び出すもの目的
プロットに統計値が必要な場合/analyze-stats算出された値(AUC、CI、p 値)を取得する
論文のフロー図を作成する場合/write-paper Phase 2Tables & Figures plan と連携する
キャプションをレビューする場合/write-paper Phase 7最終的な仕上げを行う

コメント