mcpField
D
diagram-generator

diagram-generator

github.com/oimiragieo開発45146 回インストール18 週間前に更新
リポジトリ

diagram-generator について

diagram-generator は、Mermaid 図とスタンドアロン HTML を生成するスキルです。アーキテクチャやスキーマ、プロセスを可視化する開発者向けで、大規模なコードベースの分割方法や規模制限も示します。

主な機能

  1. 01複数種類の Mermaid 図を生成
  2. 02スタンドアロン HTML に出力
  3. 03アーキテクチャ・フロー・スキーマを図示
  4. 04大規模コードベースの分割指針
  5. 05出力先と図の規模を制限

活用シーン

  1. 01コードベースの構成やコンポーネントを図示
  2. 02API のやり取りやリクエストフローを表示
  3. 03データベースの ER 図を作成
  4. 04共有可能なインタラクティブ HTML 図を生成

インストール

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

$npx skills add https://github.com/oimiragieo/agent-studio --skill diagram-generator

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

同梱ファイル

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

commands/
diagram-generator.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
diagram-generator.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

詳細

図表ジェネレーター — アーキテクチャ、スキーマ、フロー、およびサポートされているすべての種類の図表について、Mermaid 図表とスタンドアロン HTML エクスポートを作成します。

図表の種類

種類キーワード最適な用途
フローチャートflowchart TB/LR意思決定のフロー、プロセス
シーケンスsequenceDiagramAPI のやり取り、プロトコル
クラスclassDiagramOOP の構造、インターフェース
状態stateDiagram-v2ライフサイクル、状態マシン
ERerDiagramデータベーススキーマ
ガントganttプロジェクトのタイムライン
円グラフpie分布、構成
マインドマップmindmap階層型マインドマップ
タイムラインtimeline時系列イベント
Git グラフgitGraphブランチの可視化
カンバンkanbanタスクボード
クアドラントquadrantChart2x2 マトリクス

処理の制限

  • ファイルのチャンク上限:図表あたり 1000 ファイル(厳守)
  • 視覚的な上限:図表あたり最大約 200 ノード
  • 大規模なコードベース:サブシステム/レイヤーごとに分割し、まず概要を生成してから詳細を作成します

スタンドアロン HTML 出力モード

トリガーフレーズ:「HTML としてエクスポート」「スタンドアロン図表」「インタラクティブな図表」

Mermaid.js CDN を埋め込み、ダーク/ライト切り替えボタンとレスポンシブ CSS(max-width: 1200px)を備えた自己完結型 HTML ファイルを生成します:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>TITLE</title>
    <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
    <script>
      mermaid.initialize({ startOnLoad: true, theme: 'dark' });
    </script>
    <style>
      body {
        font-family: system-ui;
        max-width: 1200px;
        margin: 2rem auto;
        background: #1e1e2e;
        color: #cdd6f4;
      }
    </style>
  </head>
  <body>
    <h1>TITLE</h1>
    <button
      onclick="let d=!d;mermaid.initialize({startOnLoad:false,theme:d?'dark':'default'});document.querySelector('.mermaid').removeAttribute('data-processed');mermaid.run()"
    >
      Toggle Theme
    </button>
    <div class="mermaid">MERMAID_CONTENT</div>
  </body>
</html>

デフォルト: ダークモード(background: #1e1e2e、color: #cdd6f4) 出力: .claude/context/artifacts/diagrams/{subject}-{YYYY-MM-DD}.html

出力先

  • Mermaid ファイル:.claude/context/artifacts/diagrams/{subject}-{type}-{YYYY-MM-DD}.mmd
  • HTML ファイル:.claude/context/artifacts/diagrams/{subject}-{YYYY-MM-DD}.html

絶対遵守事項

  1. Mermaid 構文のみを使用します。ASCII アートや PlantUML は使用しません。
  2. 1 つの図表につき 200 ノードを超えてはなりません。
  3. .claude/context/artifacts/diagrams/ の外部に図表を作成してはなりません。
  4. 自明でない接続にはすべてラベルを付けます。
  5. 1000 ファイルの上限を厳守します。大規模なコードベースはチャンクに分割します。

Mermaid プラグインの生成パターン

Claude Code プラグインのパターンを使用して、コード分析から図表を生成します(参照:agentic-coding-school/mermaid-diagram-plugin):

ステップ 1:コードベースの構造を分析する
# Identify components to diagram
pnpm search:code "class|interface|module|service|component" | head -50
ステップ 2:Mermaid ソースを生成する

Claude を使ってコード分析の結果を図表の構文に変換します。図表の種類と範囲を必ず指定して依頼します:

"Generate a Mermaid flowchart TB of the authentication flow in src/auth/"
"Create an ER diagram for the database tables in prisma/schema.prisma"
"Make a sequence diagram for the API request lifecycle in src/api/"
ステップ 3:インタラクティブ HTML をレンダリングする

共有可能なスタンドアロン図表には、完全な HTML テンプレートを使用します:

// Plugin invocation pattern (from mermaid-diagram-plugin)
const mermaidContent = `
flowchart TB
  A[User Request] --> B{Auth Check}
  B -- Valid --> C[Route Handler]
  B -- Invalid --> D[401 Response]
  C --> E[Database Query]
  E --> F[Response]
`;

// Render to interactive HTML
const html = `<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>${title}</title>
    <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
    <script>mermaid.initialize({ startOnLoad: true, theme: 'dark' });</script>
    <style>
      body { font-family: system-ui; max-width: 1200px; margin: 2rem auto;
             background: #1e1e2e; color: #cdd6f4; }
      .controls { margin-bottom: 1rem; }
      button { padding: 0.5rem 1rem; margin-right: 0.5rem; cursor: pointer; }
    </style>
  </head>
  <body>
    <h1>${title}</h1>
    <div class="controls">
      <button onclick="toggleTheme()">Toggle Theme</button>
      <button onclick="downloadSVG()">Download SVG</button>
    </div>
    <div class="mermaid">${mermaidContent}</div>
    <script>
      let dark = true;
      function toggleTheme() {
        dark = !dark;
        mermaid.initialize({ startOnLoad: false, theme: dark ? 'dark' : 'default' });
        document.querySelector('.mermaid').removeAttribute('data-processed');
        mermaid.run();
      }
      function downloadSVG() {
        const svg = document.querySelector('.mermaid svg');
        if (!svg) return;
        const blob = new Blob([svg.outerHTML], { type: 'image/svg+xml' });
        const a = document.createElement('a'); a.href = URL.createObjectURL(blob);
        a.download = '${title.replace(/\s+/g, '-')}.svg'; a.click();
      }
    </script>
  </body>
</html>`;
ステップ 4:出力を保存する
# Save interactive HTML to standard location
# .claude/context/artifacts/diagrams/{subject}-{YYYY-MM-DD}.html
エージェントからプラグインを呼び出す

エージェントがワークフローの一環として図表を必要とする場合:

// Invoke diagram-generator skill, then request specific type
Skill({ skill: 'diagram-generator' });

// Then describe what to diagram with context
// "Create a class diagram for src/lib/routing/ — show all classes and their relationships"

呼び出すタイミング

アーキテクチャ図、HTML エクスポート、マインドマップ、タイムライン、Git の可視化、カンバンボード、クアドラントチャートには、Skill({ skill: 'diagram-generator' }) を使用します。

コメント