generate-diagrams について
generate-diagramsは、承認済みのDIAGRAM_SPEC.mdをプロジェクトのimagesフォルダー内にSVGとしてレンダリングするスキルです。図表を作成するチーム向けに、対象範囲、レビュー、結果報告、フェーズ状態を管理し、レンダリングと検査は専用コマンドが担います。
主な機能
- 01図表の対象範囲の決定
- 02承認済み仕様からSVGを生成
- 03レイアウトと文字サイズの確認
- 04レンダリング結果の報告
- 05図表フェーズ状態の更新
活用シーン
- 01承認済み仕様から図表を生成
- 02既存図表を選んで再生成
- 03文字サイズの失敗後にレイアウトを確認
- 04図表フェーズの完了状況を管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ken-guru/ skills --skill generate-diagramsインストール後、Claude Code で/generate-diagramsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/generate-diagrams.jsonscripts/render-diagrams.mjstests/render-diagrams-d2.test.mjsrender-diagrams.test.mjstests/fixtures/stub-d2.mjs詳細
図を生成する(メディアレンダラー)
承認済みの DIAGRAM_SPEC.md を、1 つのバンドルされたコマンドでプロジェクトの images/
フォルダー内の SVG ファイルにレンダリングします。このコマンドは D2 の抽出、検証、
フラグ、テーマのスタイル設定、出力チェック、一時ファイルのクリーンアップを担当します。この Skill は
スコープ、レイアウトの選択、対話型レビュー、結果の報告、フェーズの状態を担当します。
出力の文体
スコープに関する質問、レビューのプロンプト、結果の報告には、簡潔で人間らしい文体を適用します。
Media Intent と D2 ソースは、受け渡す際にユーザー提供の内容を保持し、ファイル名、パス、
コマンド、状態値は正確なままにします。図のラベルや説明文を承認する前に、必須の完全な編集レビューとして
スタンドアロンの unslop Skill を DISCOVERY.json.editorialPreferences を使って呼び出し、
D2 の構文と意味を表すラベルを保持します。
プロトコル:Media Scope を確定し、既定では Batch(要望があれば Interactive)で処理し、結果を レビューして報告し、所有するメディアフェーズのみを更新します。キャンセルまたは失敗した場合は保留状態のままにし、 無関係なフェーズの記録は保持します。D2 のセットアップはローカルにとどめます。
起動
-
DISCOVERY.jsonから Project Folder を確定します(paths.diagramSpecを使用し、 見つからない場合はDIAGRAM_SPEC.mdを使用)。曖昧な場合は確認します。 -
DIAGRAM_SPEC.mdが必要です。見つからない場合:❌
DIAGRAM_SPEC.mdが見つかりません。図をレンダリングする前に、図の仕様を作成して承認してください。 中止します。 -
which nodeを実行します。見つからない場合は中止します:❌ node がインストールされていません — 図のレンダリングコマンドには Node.js が必要です。 -
which d2を実行します。見つからない場合は、D2 が必要であることを説明し、次の選択肢を提示します:❌ D2 is not installed. It is required to render SVG diagrams. 1 Install D2 now — I’ll use a suitable installation method after your confirmation 2 I’ll install it — install D2 yourself, then tell me when it is ready 3 Cancel- 1:オペレーティングシステムとパッケージマネージャーを確認し、インストールを実行する前に確認を求めます。Homebrew を使っている macOS では
brew install d2を優先します。Linux では D2 の公式インストーラーまたはディストリビューションのパッケージマネージャーを使用します。Windows では、対応するパッケージマネージャーまたは公式インストーラーを使用します。 - 2:[公式 D2 インストールガイド](https://d2lang.com/tour/install/)へのリンクを提示し、インストールしたとユーザーが伝えるまで待ちます。
- 3:プロジェクトを変更せずに終了します。
- 1 または 2 の後、
which d2を再実行します。解決できた場合のみ続行し、できなければ同じ選択肢を再度提示します。
- 1:オペレーティングシステムとパッケージマネージャーを確認し、インストールを実行する前に確認を求めます。Homebrew を使っている macOS では
-
呼び出された
SKILL.mdを含む絶対ディレクトリを確定します。レンダリング コマンドは<skill-directory>/scripts/render-diagrams.mjsです。存在することを確認し、呼び出すたびに絶対パスを引用します。cwd から推測してはいけません。
手順
Step 1:Media Scope を確定する
DIAGRAM_SPEC.md の各エントリーの **Filename:** を読み、ファイルが存在するか確認します。
-
指定あり: リクエストまたはユーザーが直前に回答した Decision Prompt によって、スライド番号、ファイル名、「all」、「missing」、または 1 つのエントリーに完全一致する説明(「タイトルの図」など)が曖昧さなく特定されます。質問は不要です。スコープ内に既存ファイルがある場合は、ファイルごとに
Overwriting images/foo.svg (Slide N)の行を 1 行出力し、Step 2 に進みます。指定されたスライドまたはファイル名に該当するエントリーがない場合は、何もレンダリングせず、その旨を伝えて以下のメニューを使用します。 -
不明で、ファイルが存在しない: スコープはすべてのエントリーです。質問せず、Step 2 に進みます。
-
不明で、ファイルが 1 つ以上存在する: 次を提示します:
⚠️ images/ — existing files detected (N of M diagrams already present) Already present: • images/foo.svg (Slide 1 — Title) [...] Not yet generated: • images/bar.svg (Slide 3 — Title) [...] A Generate missing only — skip the N that already exist B Regenerate everything — overwrite all M diagrams C Choose slides — e.g. "C 1 3" D Cancel選択を待ちます。C の場合、同じ返信からスライド番号を取得します。ユーザーが C だけを返信した場合に限り、「どのスライド番号ですか?(例:
1 3 5)」と尋ねます。D は変更せずに終了します。
ステップ 2:レンダリング
ユーザーが図を 1 つずつ確認するよう求めていない限り、バッチでレンダリングします。
バッチ — 対象範囲全体に対して 1 回実行します。
node "<absolute skill directory>/scripts/render-diagrams.mjs" "<DIAGRAM_SPEC.md path>" [--force] [--slides=N,M,...]
- すべてのエントリを対象にする場合、または不足しているものだけを対象にする場合 → フラグは不要です(コマンドは既存のファイルをスキップします)。
- すべてを再生成する場合 →
--force。 - 選択したスライドを対象にする場合 →
--slides=N,M,...。既存のものを上書きするには、--forceも指定します。
インタラクティブ — ユーザーが求めた場合に限ります。対象範囲内の各スライドについて、次を実行します。
node "<absolute skill directory>/scripts/render-diagrams.mjs" "<DIAGRAM_SPEC.md path>" --slide=N --force
各実行後、次を提示します。
✅ Saved: images/foo.svg (Slide N — Title)
Open to review, then choose:
N Next — accept and continue to the next diagram
R Redo — render again (after you edit DIAGRAM_SPEC.md)
S Stop — exit and keep what has been rendered so far
R は同じ実行を繰り返します。S はループを終了します。フェーズは保留のままです。
このコマンドがレンダリング手順全体を担います。エントリを解析し、d2 validate を実行し、Diagram Roles を通じてロック済みの Presentation Theme を適用し、各 SVG の構造と 20 px の Effective Text Size を確認して、クリーンアップを行います。D2 はこのコマンド経由でのみ実行してください。
ステップ 3:適合するレイアウトのみを提示する
図のレイアウトオプションを提示するのは、この Skill のみです。Effective Text Size の失敗後、またはユーザーから依頼があった場合など、図のレイアウトを変更する必要があるときは、候補ごとに D2 を OS の一時ディレクトリにあるファイルに書き込み、DIAGRAM_SPEC.md を編集せずに確認します。
node "<absolute skill directory>/scripts/render-diagrams.mjs" "<DIAGRAM_SPEC.md path>" --check --slide=N --candidate="<temp file>"
終了コードが 0 の候補のみを、確認出力に示されたメディアボックスのサイズを明記した 1 つの Decision Prompt で提示します。たとえば、「図の配置枠は 1152×347、約 3.3:1 なので、縦型レイアウトでは 20 px に到達できません。」のように説明します。合格する候補がない場合は、その旨を伝え、残る方法を提示します。図を分割する、ラベルを短くする、または Theme Package のロールのフォントサイズを大きくする方法です。ユーザーが選択したら、DIAGRAM_SPEC.md を編集してスライドを再度レンダリングします。--check は Project Folder に何も書き込まず、すべて合格した場合は 0、1 つでも不合格の場合は 1、使用方法または前提条件に問題がある場合は 2 で終了します。
ステップ 4:報告して状態を更新する
コマンドの概要を伝えます。メッセージにはスライド、問題、および修正内容が示されます。
| 終了コード | 意味 | 対応 |
|---|---|---|
0 | 選択した図がすべてレンダリング済み、またはすでに存在します | バッチの場合、または最後のインタラクティブ N の後に、PROJECT.json の phases.diagrams.status = "done" と完了タイムスタンプを設定します |
1 | 1 つ以上のエントリが失敗しました。レンダリング済みの図は保持されています | 各失敗を報告します。Effective Text Size の失敗の場合は、ステップ 3 に進みます。フェーズは保留のままにします |
2 | 使用方法または前提条件に問題があります | メッセージを報告し、その指示に従います(例:generate-slides でテーマを更新)。フェーズは保留のままにします |
130 | 中断されました | フェーズは保留のままにします |
コマンドが PROJECT.json に書き込むことはありません。この Skill のみが状態を変更します。対象範囲全体で終了コードが 0 の場合に限り、フェーズを完了として設定し、その他のフェーズの記録はすべて保持してください。