mcpField
M
mermaid-graph-writer

mermaid-graph-writer

github.com/curiositechドキュメント257143 回インストール2 日前に更新
リポジトリ

mermaid-graph-writer について

エージェントやドキュメント作成者向けの Mermaid 図作成スキルです。内容に合う図の種類を選び、読みやすく構造化された構文を作成します。フロー、プロトコル、状態機械、データモデル、タイムラインに対応します。

主な機能

  1. 01内容に応じた Mermaid 図の選択
  2. 02構造化された Mermaid 構文の作成
  3. 03意思決定プロセスのフローチャート化
  4. 04アーキテクチャ、プロトコル、データの表現
  5. 05スクリプトによる Mermaid 構文検証

活用シーン

  1. 01説明文から Mermaid 図を作成
  2. 02システム構成や通信プロトコルの図解
  3. 03状態遷移やデータ関係の表現
  4. 04ファイル内の Mermaid 構文の確認

インストール

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

$npx skills add https://github.com/curiositech/some_claude_skills --skill mermaid-graph-writer

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

同梱ファイル

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

CHANGELOG.md
.claude-plugin/
plugin.json
references/
diagram-types.md
scripts/
validate_mermaid.py

詳細

Mermaid グラフライター

正確で構造の整った Mermaid 図を作成します。内容に最適な図の種類を選び、正しい構文を使用して、人間(レンダリング後)とエージェント(テキスト DSL)の両方が読みやすい図を生成します。


使用する場面

✅ 次の用途に使用します:

  • 説明やデータをもとに Mermaid 図を作成する
  • 可視化の目的に合った図の種類を選ぶ
  • 文章で書かれた意思決定ツリーを Mermaid フローチャートに書き換える
  • システムアーキテクチャ、プロトコル、状態機械、データモデルをモデル化する
  • 時系列の知識をタイムライン図として表現する

❌ 次の用途には使用しません:

  • Mermaid を PNG/SVG/PDF にレンダリングまたはエクスポートする(mermaid-graph-renderer を使用)
  • ASCII アートや Unicode の罫線による図を作成する(diagramming-expert を使用)
  • GUI ベースのデザインツール(Figma など)

図の種類の選択

flowchart TD
  A{What are you modeling?} -->|Branching logic| B[flowchart]
  A -->|Request/response over time| C[sequenceDiagram]
  A -->|States and transitions| D[stateDiagram-v2]
  A -->|Entities and relationships| E[erDiagram]
  A -->|Chronological evolution| F[timeline]
  A -->|Concept hierarchy| G[mindmap]
  A -->|Time-sequenced tasks| H[gantt]
  A -->|Proportions| I[pie]
  A -->|2-axis comparison| J[quadrantChart]
  A -->|Branch/merge history| K[gitGraph]
  A -->|Type hierarchy / OO| L[classDiagram]
  A -->|User experience steps| M[journey]
  A -->|Quantity flows| N[sankey-beta]
  A -->|Numeric data| O[xychart-beta]
  A -->|System components| P[block-beta]
  A -->|Infrastructure| Q[architecture-beta]
  A -->|Task board| R[kanban]
  A -->|Requirements traceability| S[requirementDiagram]
  A -->|System context / containers| T[C4Context]
  A -->|Protocol packets / headers| U[packet-beta]
  A -->|Multi-axis comparison| V[radar]
  A -->|Hierarchical proportions| W[treemap]
  A -->|Code-style sequences| X[zenuml]
クイックリファレンス
内容種類方向
意思決定ツリー/プロセスflowchart TD意思決定には上から下、プロセスには左から右
API プロトコル/エージェント間通信sequenceDiagram常に垂直(暗黙)
ライフサイクル/状態機械stateDiagram-v2自動レイアウト
データベース/データモデルerDiagram自動レイアウト
「いつ何が変わったか」timeline水平方向の時系列
分類体系/ブレインストーミングmindmapルートから放射状
プロジェクトスケジュールgantt水平方向のタイムライン
カテゴリの比率pie円形
労力と効果quadrantChart2D 散布図
Git のブランチ戦略gitGraph水平方向
クラス/インターフェースの階層classDiagram自動レイアウト
満足度を含むユーザーフローjourney水平方向のセクション
カテゴリ間のフロー量sankey-beta左から右へのフロー
棒グラフ/折れ線グラフxychart-beta標準的な軸
システムのブロックレイアウトblock-betaグリッドベース
クラウド/インフラのトポロジーarchitecture-betaサービスをグループ化
タスクのステータス列kanban列ベース
要件のトレーサビリティrequirementDiagram自動レイアウト
システムコンテキスト/コンテナC4Context / C4Containerレイヤー構造(5 つのサブタイプ)
プロトコルのパケット/ヘッダーpacket-beta水平方向のビットレイアウト
複数軸によるスコアリングradar放射状の軸
階層的な比率treemap入れ子の長方形
コード形式のシーケンスzenuml垂直方向(プラグイン)

フローチャートの詳細(最も一般的)

方向
  • TD / TB — 上から下(意思決定ツリーに最適)
  • LR — 左から右(プロセスやパイプラインに最適)
  • BT — 下から上(まれ。依存関係グラフ向け)
  • RL — 右から左(まれ)
ノードの形状
[text]       Rectangle (default action)
(text)       Rounded rectangle (soft step)
{text}       Diamond (decision/condition)
([text])     Stadium/pill (start/end)
[[text]]     Subroutine (subprocess)
[(text)]     Cylinder (database/storage)
((text))     Circle (event/trigger)
>text]       Flag (async/signal)
{{text}}     Hexagon (preparation)
[/text/]     Parallelogram (input/output)
[\text\]     Reverse parallelogram
[/text\]     Trapezoid
[\text/]     Reverse trapezoid
エッジのスタイル
-->          Solid arrow (main flow)
---          Solid line (association)
-.->         Dotted arrow (optional/async)
==>          Thick arrow (emphasis/critical path)
--text-->    Labeled edge
~~~          Invisible link (layout control only)
サブグラフ
flowchart TD
  subgraph Backend
    A[API] --> B[DB]
  end
  subgraph Frontend
    C[UI] --> D[State]
  end
  C -->|fetch| A

シーケンス図の基本

メッセージ
->>    Solid arrow (sync request)
-->>   Dotted arrow (async response)
-)     Open arrow (async fire-and-forget)
-x     Cross (failed/rejected)
ブロック
activate / deactivate    Lifeline activation
alt / else / end         Conditional branching
loop / end               Repetition
par / and / end          Parallel execution
critical / end           Critical section
break / end              Break-out flow
rect rgb(...)  / end     Background highlight
番号付け

最初の行の後に autonumber を追加すると、すべてのメッセージに自動で番号が付きます。


状態図の基本

[*] --> State1           Start transition
State1 --> State2        Named transition
State1 --> State2: event Labeled transition
State2 --> [*]           End transition

state State1 {          Nested states
  [*] --> SubA
  SubA --> SubB
}

state fork <<fork>>      Fork pseudostate
state join <<join>>      Join pseudostate
state choice <<choice>>  Choice pseudostate

ER 図の基本

多重度
||--||    Exactly one to exactly one
||--o{    One to zero-or-many
}o--o{    Zero-or-many to zero-or-many
||--|{    One to one-or-many
属性
erDiagram
  USER {
    int id PK
    string name
    string email UK
  }
  ORDER {
    int id PK
    int user_id FK
    date created_at
  }
  USER ||--o{ ORDER : places

作成の原則

1. コードではなく、内容がわかるラベルを使う
  • ✅ A[Check if tests pass]
  • ❌ A[Step 2.3]
2. 方向を統一する

図全体で方向を統一します。同じフローチャート内で TD と LR を混在させないでください。

3. ノードは最大 15 個にする

15 個を超える場合は、複数の図に分割するか、サブグラフを使用します。図がごちゃごちゃしているより、図がないほうがましです。

4. グループ化にはサブグラフを使う

図に自然なまとまり(フロントエンド/バックエンド、フェーズ、チームなど)がある場合は、サブグラフを使って視覚的にグループ化します。

5. 意思決定エッジにはすべてラベルを付ける

ひし形({decision})ノードから出るすべてのエッジにラベルを付ける必要があります。

  • ✅ A{Ready?} -->|Yes| B と A -->|No| C
  • ❌ A{Ready?} --> B と A --> C(どちらが「はい」で、どちらが「いいえ」ですか?)
6. 適切なエッジのスタイルを使う
  • メインのフローには実線の矢印
  • 任意/非同期の経路には点線の矢印
  • 重要な経路や強調箇所には太い矢印
  • 不可視リンク(~~~)はレイアウトの調整にのみ使用

アンチパターン

誤った図の種類

初心者: プロトコル、状態機械、データモデルまで、あらゆる用途にフローチャートを使います。 エキスパート: 内容の構造に合った図の種類を選びます。プロトコルにはシーケンス図、ライフサイクルには状態図、データモデルにはER図を使います。それぞれの図の種類があるのは、フローチャートではその構造をうまく表現できないためです。

図が複雑すぎる

初心者: 30個のノードと交差するエッジを含む図を1つだけ作ります。 エキスパート: 概要図と詳細図に分けます。サブグラフを使います。図あたりのノード数は最大約15個にします。

判断のエッジにラベルがない

初心者: {Decision} --> A と {Decision} --> B — どの条件でどちらに進むのでしょうか? エキスパート: 判断のひし形から伸びるエッジには、必ずラベルを付けます。-->|Yes| と -->|No|(または -->|Success| と -->|Failure| など)を使います。

図にすべき説明文

初心者: 「まずXかどうかを確認します。XならAを実行し、そうでなければBを実行します。次に、Aが成功したらCを実行し、そうでなければAを再試行します。」 エキスパート: これはフローチャートにすべきです。フローチャートで表しましょう。正式なグラフのほうが正確で、読みやすくなります。


参考資料

  • references/diagram-types.md — 23種類すべてのMermaid図(タイムライン、マインドマップ、象限図、サンキー図、XYチャート、ブロック図、アーキテクチャ図、カンバン図、円グラフ、Gitグラフ、クラス図、ジャーニー図、requirementDiagram、C4(5つのサブタイプ)、packet-beta、レーダーチャート、ツリーマップ、zenuml)について、包括的な構文、機能、例を参照してください。
  • scripts/validate_mermaid.py — 任意のファイル内のMermaid構文を検証します。図の種類の宣言、フェンスの対応、構造上の正しさを確認します。

コメント