mcpField
N
new-diagram

new-diagram

github.com/pedrohcgsデザイン・UI1.7k38 回インストール4 週間前に更新
リポジトリ

new-diagram について

new-diagramは、TikZスニペットを基に図を作成してレビューするワークフローです。BeamerやQuarto向けの図を作る人を対象に、ルール検査、単体コンパイル、反復的な目視レビューを行い、必要に応じてSVGへ変換します。

主な機能

  1. 01TikZスニペットから図を作成
  2. 02図の防止ルールを検査
  3. 03単体PDFとしてコンパイル
  4. 04目視レビューと修正の反復
  5. 05図をSVGに変換可能

活用シーン

  1. 01因果図やフローチャートの作成
  2. 02イベントスタディやタイムラインの描画
  3. 03Quarto用SVG図の生成

インストール

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

$npx skills add https://github.com/pedrohcgs/claude-code-my-workflow --skill new-diagram

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

詳細

新しい TikZ 図を作成する

templates/tikz-snippets/ から図のひな形を作成し、防止ルールに照らして確認してから、単独でコンパイルし、測定値の引用を含めてレビュアーを実行し、図が合格するまで繰り返します。TikZ を一から書く代わりにこの手順を使ってください。スニペットには、tikz-prevention.md が求める不変条件が組み込まれています。

入力

  • $0(任意)— スニペット名(.tex を除く)。templates/tikz-snippets/ 内のファイル名を指定します。省略された場合は、ギャラリーを表示してユーザーに選んでもらいます。
  • $1(任意)— 出力先のパス。既定値は Figures/new_diagram.tex です。この出力先がすでに存在する場合は、上書きしないようユーザーに確認してください。

ワークフロー

ステップ 1:スニペットを選ぶ
ls -1 templates/tikz-snippets/*.tex

現在のギャラリー(説明は templates/tikz-snippets/README.md を参照):

  • dag-basic — 3 ノードの因果 DAG(交絡因子 U を含む X → Y)
  • dag-mediation — 直接経路を含む X → M → Y
  • did-two-period — 2 期間の差の差法
  • event-study — 95% 信頼区間付きのイベント時点係数
  • timeline — イベントを段階的に配置した水平タイムライン
  • regression-scatter — 散布図 + OLS 適合線 + 信頼帯
  • flowchart-3step — 判断のひし形を含む垂直フロー
  • supply-demand — 需要のシフトを含む需給図

$0 がこれらのいずれでもない場合、または省略された場合は、どれを使うかユーザーに尋ねてください。

ステップ 2:スニペットを出力先にコピーする
SRC="templates/tikz-snippets/$0.tex"
DST="${1:-Figures/new_diagram.tex}"

# Confirm before overwriting
if [ -f "$DST" ]; then
  echo "Output path already exists: $DST"
  # Ask the user whether to overwrite. Do NOT clobber silently.
fi

mkdir -p "$(dirname "$DST")"
cp "$SRC" "$DST"
ステップ 3:ユーザーの意図に合わせて内容を編集する

図に何を示すかユーザーに尋ねてください。Edit ツールを使って $DST を編集します。

  1. 冒頭のコメントブロックを更新し、意図を示す文がユーザーの目標に合うようにします。
  2. 座標を変更する場合は、座標マップのコメントを更新します。
  3. ノード名を変更し、ラベルを編集します。意味が実際に変わる場合を除き、ノードのスタイル(dag-node、flow-node など)は維持してください。
  4. tikzpicture オプションに単独の scale=X を追加しないでください。座標は縮小されますが、テキストは縮小されないため、衝突が発生します。許可される形式は scale=X, every node/.style={scale=X} または scale=X, transform shape です。ルール全文は tikz-prevention.md P3、scale=1.1 の慣例については tikz-visual-quality.md を参照してください。
  5. 新しいエッジラベルには必ず方向を示すキーワード(above、below、left、right、above left など)を付けてください。midway だけではパス上の位置を示すだけで、方向ではありません。これは P4 違反です。
ステップ 4:防止ルールの事前チェック(必須)

/extract-tikz が使うものと同じ共有 Python チェッカーを実行します。これは、2 つのスキル間で P3 と P4 の両方を一貫して適用する唯一のツールです。

python3 scripts/check-tikz-prevention.py "$DST"
  • 終了コード 0 → 合格です。続行してください。
  • 終了コード 1 → 違反があります(標準エラー出力に行、ルール、スニペットが報告されます)。$DST を修正し、違反がなくなるまで再実行してください。
  • 終了コード 2 → 使用方法のエラーです(ファイルがないなど)。

grep をその場で再実装しないでください。Python チェッカーは複数行にわたる \begin{tikzpicture}[...] オプションや、行単位の grep では検出できない複数行の \draw ... node {...} 範囲を正しく処理します。

ステップ 5:単独でコンパイルする

すべてのスニペットは \documentclass[border=4pt]{standalone} を使うため、Beamer フレームや Preambles/header.tex なしでコンパイルできます。

cd "$(dirname "$DST")"
xelatex -interaction=nonstopmode "$(basename "$DST")" > /tmp/tikz-compile.log 2>&1

終了コードと *.pdf のファイルサイズを確認してください。コンパイルに失敗した場合は、/tmp/tikz-compile.log を読み、.tex ソースを修正してください。

ステップ 6:tikz-reviewer による視覚レビュー

Task(subagent_type=tikz-reviewer)を使って tikz-reviewer エージェントを起動します。.tex ソースとコンパイル済みの .pdf のパスを渡してください。レビュアーには、CRITICAL/MAJOR の指摘ごとに tikz-measurement.md の該当パスと公式を引用することが求められます。曖昧な報告は却下されます。

繰り返し:

  1. APPROVED の場合 → ステップ 7 に進みます。
  2. NEEDS REVISION または REJECTED の場合 → $DST を修正し、ステップ 4(防止ルールの事前チェック)を再実行してから、再コンパイル(ステップ 5)し、レビュアーを再度起動します。

最大 5 ラウンドです。 5 ラウンド後もレビュアーが CRITICAL の問題を報告している場合は、ユーザーに状況を伝えてください。スニペットまたは依頼された内容は、微調整ではなく再設計が必要な可能性があります。

ステップ 7:任意 — Quarto 用に SVG に変換する

ユーザーが図を Beamer だけでなく Quarto スライドでも使う予定の場合は、コンパイル済み PDF を SVG に変換します。

pdf2svg "${DST%.tex}.pdf" "${DST%.tex}.svg" 1

スニペットベースの図は 1 ページなので、.tex と同じベース名の .svg を 1 つ生成すれば問題ありません。これは、Figures/LectureN/extract_tikz.tex をマスターとして複数ページの PDF を生成し、出力に tikz_exact_00.svg, tikz_exact_01.svg, ... という名前を付ける /extract-tikz とは異なります(PDF の 1 始まりのページに対して、ファイル名は 0 始まりです)。スライドごとに表示するために複数ページの出力が必要な場合は、代わりに /extract-tikz を使ってください。

ステップ 8:ビルド成果物をクリーンアップする
cd "$(dirname "$DST")"
rm -f *.aux *.log *.out *.synctex.gz

.pdf と .svg(生成した場合)は残してください。これらは後続のツールで使われます。

ステップ 9:報告する

次の内容を要約して出力します。

  • 使用したスニペット → 出力先パス
  • レビュー担当者の判定とラウンド数
  • .pdf のサイズとページ数
  • 生成した場合は .svg のパス
  • 対象の Beamer/Quarto ファイルで図を \input または \includegraphics するようリマインドする

スニペットから始める理由

TikZ をゼロから作成すると、作成者が曲線やラベルの配置を視覚的に見積もれず、衝突が確実に発生します。スニペットには、tikz-prevention.md が求める不変条件(座標マップ、明示的なノード寸法、方向を示すエッジラベル)が組み込まれているため、図は作成時点で予防チェックを通過します。スニペットから逸脱してもかまいませんが、ルールは引き続き適用されます。

相互参照

コメント