Communitygithub.com

ダイアグラム生成器

自然言語、メモ、コードスニペット、スキーマ、テーブル、既存の図のソースから、フローチャート、シーケンス図、状態図、ER図、クラス図、アーキテクチャ図、ガントチャート、マインドマップなどの図を生成、洗練、検証、レンダリングします。デフォルトでMermaidをサポートし、複雑なグラフレイアウトにはGraphviz DOT、UML主体のエンジニアリング図にはPlantUML、直接マークアップがより信頼性の高い場合にはSVG出力もサポートします。

ダイアグラム生成器 とは?

Diagram Generator スキルは、構造化されていない入力から明確で編集可能な図を作成するための包括的なツールです。開発者や技術ユーザー向けに設計されており、フローチャート、スイムレーン、シーケンス図、状態図、ER図、クラス図、アーキテクチャ図、依存関係グラフ、ガントチャート、マインドマップ、ユーザージャーニー、サンキーダイアグラム、組織図、ネットワークグラフなど、多様な図の種類をサポートします。デフォルトの言語はMermaidですが、複雑なレイアウトにはGraphviz DOT、フォーマルなUMLにはPlantUML、カスタムビジュアルにはSVGを優先します。ワークフローはユーザーの意図とソース資料を特定し、決定表に基づいて適切な図言語とタイプを選択し、正規化とソース生成、構文検証、必要に応じてレンダリングを行います。AIエージェントは、`scripts/render_diagram.py` スクリプトを使用してPNG、SVG、PDFファイルにレンダリングできます。このスクリプトは依存関係に対して寛容で、レンダラーが利用できない場合はインストールのヒントを表示します。出力ポリシーでは、常に編集可能なソースを提供し、短く安定した構文を優先し、不明確な要求には合理的な仮定をラベル付けして示すことを推奨しています。また、`references/diagram-patterns.md` のコンパクトなテンプレートを参照し、Mermaidの生成ルール(`flowchart TD` から始める、サブグラフでスイムレーンやアーキテクチャ層を表現するなど)に従います。Graphviz DOTの生成ルールでは、密なグラフに対して `digraph G` とレイアウト属性を推奨し、PlantUMLの生成ルールでは `@startuml` と `@enduml` でラップします。SVG生成ルールでは、シンプルでアクセス可能、編集可能なSVGを作成し、外部フォントやリモート画像を埋め込みません。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/diagram-generator

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ダイアグラム生成器 は何をしますか?

ACTION REQUIRED(読んだらすぐ実行)

  1. NOW:現在のタスクが本スキルの適用範囲に該当するか確認する
  2. NOW:../tool-index.md を読み、ツールの可用性と実際のパスを検証する
  3. NEXT:ツールがない場合はブートストラップを呼び出し、パスを推測しない
  4. ACT:「ワークフロー」の最初のステップに入り実行する。確認状態で止まらない

目的

散らかった入力や構造化された入力から、明確で編集可能な図を作成する。まずテキストベースの図ソースを優先し、結果をレビュー、バージョン管理、洗練できるようにする。ユーザーが画像/PDFを明示的に要求した場合、またはダウンロード可能なアーティファクトが実質的に役立つ場合にのみファイルにレンダリングする。

デフォルトワークフロー

  1. ユーザーの意図、対象読者、ソース資料を特定する。
  2. 以下の決定表を使用して図のファミリーと言語を選択する。
  3. 図コードを記述する前に、エンティティ、関係、ラベル、状態、ブランチ、時間/順序情報を正規化する。
  4. 簡潔で読みやすい図ソースを生成する。
  5. 構文を頭の中で検証し、ファイルを作成する場合は scripts/render_diagram.py を実行する。
  6. 図ソースと仮定に関する短いメモを返す。ファイルが生成された場合は、出力ファイルへのリンクを含める。

明確化のための質問をしすぎない。要求があいまいな場合は、合理的な仮定を行い、簡単にラベル付けする。

図言語決定表

別の言語が明らかに優れていない限り、Mermaid を使用する。

ユーザーが求めるもの推奨理由
プロセスフロー、決定木、シンプルなスイムレーンMermaid flowchart読みやすく、Markdownに貼り付けやすい
システム/ユーザーインタラクションのシーケンスMermaid sequenceDiagram または PlantUML sequenceMermaidはドキュメント向け、PlantUMLはUML形式向け
ライフサイクル、ステートマシン、遷移Mermaid stateDiagram-v2 または PlantUML stateコンパクトな遷移構文
データベーススキーマ、エンティティ、関係Mermaid erDiagramポータブルなER記法
クラス/インターフェース/オブジェクトモデルMermaid classDiagram または PlantUML classMermaidはドキュメント向け、PlantUMLは詳細なUML向け
プロジェクトスケジュールMermaid gantt簡潔なタイムライン構文
階層、アイデア、メモMermaid mindmapアイデアマップに適したデフォルト
顧客/プロダクトジャーニーMermaid journey組み込みのジャーニー記法
Git履歴Mermaid gitGraph組み込みのGit記法
依存関係グラフ、パッケージグラフ、大規模ネットワークGraphviz DOT密集したグラフに優れたレイアウトエンジン
レイヤー、クラスター、境界を含むアーキテクチャMermaid flowchart(サブグラフ付き)、Graphviz clusters、または PlantUML C4 スタイル要求された忠実度に基づいて選択
重み付きフロー/サンキー風の関係Mermaid sankey-beta(サポートされている場合)、それ以外はSVGまたはGraphvizレンダラーによってMermaidのサポートが異なる場合がある
ソース言語がうまく適合しないカスタムビジュアルSVGレイアウトとスタイルの正確な制御

出力ポリシー

  • ユーザーが明示的に画像のみを要求しない限り、常に編集可能なソースを提供する。
  • デフォルトで単一の最適な図を作成する。本当に役立つ場合にのみ代替案を提供する。
  • 古いMermaid/PlantUMLバージョンでレンダリングされない可能性のある派手な機能よりも、安定したシンプルな構文を優先する。
  • 短いラベルを使用する。長いテキストは必要に応じて図の外側にメモとして分割する。
  • あいまいなノードIDを避ける。ASCII IDと人間が読めるラベルを使用する。
  • ユーザーの用語を保持するが、図内の大文字小文字は統一する。
  • 技術図の場合、暗黙的に存在する場合は、クライアント、サービス、データベース、キュー、外部API、オペレーター/ユーザーなどの境界を含める。
  • ビジネスプロセス図の場合、ハッピーパス、決定ポイント、失敗、リトライ、手動ステップが存在する場合は区別する。
  • 不確かなテキストから作成された図の場合、コードの後に「仮定」セクションを含める。

Mermaid 生成ルール

コンパクトなテンプレートについては references/diagram-patterns.md を参照すること。

一般的なMermaidルール:

  • 正しい図ディレクティブで開始する。例:flowchart TD、sequenceDiagram、erDiagram、gantt、mindmap、journey。
  • フローチャートには flowchart TD を使用する。ユーザーが左から右を要求した場合、またはアーキテクチャとパイプラインの場合は flowchart LR を使用する。
  • スイムレーンやアーキテクチャ層にはサブグラフを使用する。サブグラフには読みやすいラベルを付ける。
  • ノードIDは安定させ、ASCIIのみにする。例:ingest_service[Ingest Service]。
  • パーサーを混乱させる可能性のある句読点を含むラベルは引用符で囲む。
  • 分岐には判断ダイヤモンドを使用する:decision{条件?}。
  • 意味がある場合にのみ、一貫性のあるエッジラベルを使用する:-- yes -->、-- no -->、-. async .->、== critical ==>。
  • シーケンス図では、メッセージの前に参加者を宣言する。人間には actor、システムには participant を使用する。
  • alt/else/end、opt/end、loop/end、par/and/end ブロックを条件付き、オプション、繰り返し、並列フローに使用する。

Graphviz DOT 生成ルール

大きくて密集した、またはレイアウトに敏感な関係図にはGraphvizを使用する。

  • 有向関係には digraph G、無向ネットワークには graph G を優先する。
  • レイアウトに適したグラフ属性を先頭に設定する:rankdir=LR、nodesep、ranksep、必要に応じて splines=true。
  • 境界とサブシステムには subgraph cluster_name を使用する。
  • プレーンなラベルと控えめなスタイリングを使用する。
  • 意味を追加する場合にのみエッジラベルを使用する。
  • 多くのノードがある場合は、クラスターでドメインごとにグループ化し、交差の多い全対全のエッジを避ける。

PlantUML 生成ルール

ユーザーがUMLを要求した場合、または正式なUML記法が必要な場合にPlantUMLを使用する。

  • 図を @startuml と @enduml でラップする。
  • 必要に応じて actor、participant、database、queue、collections、component ステレオタイプを使用する。
  • アーキテクチャの境界には package、rectangle、node を使用する。
  • クラス図では、ユーザーが網羅的な詳細を要求しない限り、重要なフィールド/メソッドのみを含める。
  • アクティビティ図では、明確な開始/終了マーカーと明示的なブランチラベルを使用する。

SVG 生成ルール

テキストベースの図言語で要求されたビジュアルを確実に表現できない場合にのみSVGを使用する。

  • SVGはシンプルでアクセス可能、編集可能に保つ。
  • <title> と意味のあるテキストラベルを含める。
  • 複雑なパスよりも、長方形、線、矢印、グループを優先する。
  • 外部フォントやリモート画像を埋め込まない。

レンダリングファイル

ユーザーがPNG/SVG/PDFを要求した場合は、ソースファイルを作成して以下を実行する:

python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.mmd --format svg --out output.svg
python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.dot --format png --out output.png
python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.puml --format svg --out output.svg

<SKILL_ROOT> はこのパッケージの skills/ ディレクトリの実際のパスです。AIは自動的に検出する必要があります。

レンダラーは意図的に依存関係に対して寛容です。一般的なローカルツールを試し、レンダラーが利用できない場合は役立つインストールヒントを報告します。スクリプトが正常に完了し、出力ファイルが存在することを確認せずに、画像がレンダリングされたと主張しないでください。

検証チェックリスト

最終決定する前に:

  • 図のタイプがユーザーのタスクと一致している。
  • ソースが選択された言語の構文的に妥当である。
  • ラベルが収まるのに十分短い。
  • エッジとメッセージの順序が入力を正確に反映している。
  • 入力が不完全だった場合の仮定が明記されている。
  • 生成されたファイルについては、出力が存在し、開くか、サイズが0以外である。

一般的な応答テンプレート

ほとんどの図回答にはこの構造を使用する:

こちらが編集可能な [language] バージョンです:

```[language]
[ソース]

仮定:

  • [必要な場合のみ]

レンダリングファイル:[リンク] [生成された場合のみ]


英語ユーザーのリクエストには英語で応答する。中国語ユーザーのリクエストには、別途指示がない限り中国語で応答する。

---

## オンデマンドブートストラップ

### 自動化能力の境界

| ツール | 自動インストール可能 | インストール方法 | 説明 |
|------|-----------|---------|------|
| Mermaid CLI (mmdc) | ✓ | npm install -g @mermaid-js/mermaid-cli | Mermaid を PNG/SVG にレンダリング |
| Graphviz (dot) | ✗ | 手動インストール | https://graphviz.org/download/ |
| PlantUML | ✗ | Java + plantuml.jar が必要 | https://plantuml.com/download |
| Python (レンダースクリプト) | ✓ | ブートストラップに含まれています | `scripts/render_diagram.py` の依存関係 |

### 説明

本スキルは主にテキスト形式の図ソース(Mermaid/DOT/PlantUML)を出力するため、必ずしもローカルレンダリングツールは必要ありません。ユーザーがPNG/SVG/PDFファイルの生成を明示的に要求した場合にのみ、対応するレンダラーが必要です。

レンダラーが利用できない場合、`scripts/render_diagram.py` はエラーではなくインストールヒントを出力します。

---

## ルーティングコンテキスト

**上流エントリ**: `skills/SKILL.md`(総合制御)、`routing.md`
**トリガー条件**: ユーザーが「図を描く」「フローチャート」「アーキテクチャ図」「攻撃経路図」「シーケンス図」「Mermaid」「Graphviz」「PlantUML」と言った場合
**下流出力**:
- 生成された図は `docs-generator/` のレポートに埋め込むことができます
- 攻撃経路図は `pentest-tools/` のペネトレーションレポートと連携できます

**関連モジュール**: `docs-generator/`(レポートに図を埋め込む)

## タスク完了セルフチェック(完了と主張する前に MUST チェック)

- [ ] ワークフローの各ステップを実行しましたか?(単に読んだだけではありません)?
- [ ] `tool-index` に基づいて実際のツールパスを使用しましたか?
- [ ] 再現可能な証拠(コマンド/スクリプト/スクリーンショット/レポート)を生成しましたか?
- [ ] RULES で要求される Checklist 項目を完了して書き戻しましたか?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

go-rust-reverse

Use for reverse engineering stripped Go and Rust binaries including runtime recognition, pclntab/moduel data recovery, panic strings, and idiomatic decompilation recovery.

関連スキル