mcpField
G
generate-diagrams

generate-diagrams

github.com/ken-guruドキュメント158 回インストール6 日前に更新
リポジトリ

generate-diagrams について

generate-diagramsは、承認済みのDIAGRAM_SPEC.mdをプロジェクトのimagesフォルダー内にSVGとしてレンダリングするスキルです。図表を作成するチーム向けに、対象範囲、レビュー、結果報告、フェーズ状態を管理し、レンダリングと検査は専用コマンドが担います。

主な機能

  1. 01図表の対象範囲の決定
  2. 02承認済み仕様からSVGを生成
  3. 03レイアウトと文字サイズの確認
  4. 04レンダリング結果の報告
  5. 05図表フェーズ状態の更新

活用シーン

  1. 01承認済み仕様から図表を生成
  2. 02既存図表を選んで再生成
  3. 03文字サイズの失敗後にレイアウトを確認
  4. 04図表フェーズの完了状況を管理

インストール

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

$npx skills add https://github.com/ken-guru/skills --skill generate-diagrams

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

同梱ファイル

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

evals/
generate-diagrams.json
scripts/
render-diagrams.mjs
tests/
render-diagrams-d2.test.mjs
render-diagrams.test.mjs
tests/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 のセットアップはローカルにとどめます。

起動

  1. DISCOVERY.json から Project Folder を確定します(paths.diagramSpec を使用し、 見つからない場合は DIAGRAM_SPEC.md を使用)。曖昧な場合は確認します。

  2. DIAGRAM_SPEC.md が必要です。見つからない場合:

    ❌ DIAGRAM_SPEC.md が見つかりません。図をレンダリングする前に、図の仕様を作成して承認してください。 中止します。

  3. which node を実行します。見つからない場合は中止します:❌ node がインストールされていません — 図のレンダリングコマンドには Node.js が必要です。

  4. 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 を再実行します。解決できた場合のみ続行し、できなければ同じ選択肢を再度提示します。
  5. 呼び出された 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" と完了タイムスタンプを設定します
11 つ以上のエントリが失敗しました。レンダリング済みの図は保持されています各失敗を報告します。Effective Text Size の失敗の場合は、ステップ 3 に進みます。フェーズは保留のままにします
2使用方法または前提条件に問題がありますメッセージを報告し、その指示に従います(例:generate-slides でテーマを更新)。フェーズは保留のままにします
130中断されましたフェーズは保留のままにします

コマンドが PROJECT.json に書き込むことはありません。この Skill のみが状態を変更します。対象範囲全体で終了コードが 0 の場合に限り、フェーズを完了として設定し、その他のフェーズの記録はすべて保持してください。

コメント