new-diagram について
new-diagramは、TikZスニペットを基に図を作成してレビューするワークフローです。BeamerやQuarto向けの図を作る人を対象に、ルール検査、単体コンパイル、反復的な目視レビューを行い、必要に応じてSVGへ変換します。
主な機能
- 01TikZスニペットから図を作成
- 02図の防止ルールを検査
- 03単体PDFとしてコンパイル
- 04目視レビューと修正の反復
- 05図をSVGに変換可能
活用シーン
- 01因果図やフローチャートの作成
- 02イベントスタディやタイムラインの描画
- 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 → Ydid-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 を編集します。
- 冒頭のコメントブロックを更新し、意図を示す文がユーザーの目標に合うようにします。
- 座標を変更する場合は、座標マップのコメントを更新します。
- ノード名を変更し、ラベルを編集します。意味が実際に変わる場合を除き、ノードのスタイル(
dag-node、flow-nodeなど)は維持してください。 - tikzpicture オプションに単独の
scale=Xを追加しないでください。座標は縮小されますが、テキストは縮小されないため、衝突が発生します。許可される形式はscale=X, every node/.style={scale=X}またはscale=X, transform shapeです。ルール全文はtikz-prevention.mdP3、scale=1.1の慣例についてはtikz-visual-quality.mdを参照してください。 - 新しいエッジラベルには必ず方向を示すキーワード(
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 の該当パスと公式を引用することが求められます。曖昧な報告は却下されます。
繰り返し:
APPROVEDの場合 → ステップ 7 に進みます。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 が求める不変条件(座標マップ、明示的なノード寸法、方向を示すエッジラベル)が組み込まれているため、図は作成時点で予防チェックを通過します。スニペットから逸脱してもかまいませんが、ルールは引き続き適用されます。
相互参照
.claude/rules/tikz-prevention.md— P1~P6 の作成ルール。.claude/rules/tikz-measurement.md— レビュー担当者が引用する数式を含む、6 パスのプロトコル。.claude/rules/tikz-visual-quality.md— 一般的な視覚品質基準。.claude/skills/extract-tikz/SKILL.md— 新規作成ではなく、既存の Beamer デッキから TikZ を取り出す場合に使用します。templates/tikz-snippets/README.md— ギャラリーの一覧と応用ガイド。