mcpField
P
plantuml-diagramming

plantuml-diagramming

github.com/beecode-rs開発049 回インストール1 週間前に更新
リポジトリ

plantuml-diagramming について

テキスト要件から PlantUML の図を作成する Agent 向けスキルです。UML と非 UML の図について、種類の選択、構文、スタイル、出力形式を案内します。

主な機能

  1. 01意図に応じた図の種類選択
  2. 02PlantUML 構文の生成と確認
  3. 03レイアウト、別名、スタイルの案内
  4. 04puml コードブロックでの出力指定
  5. 05描画エラーの診断

活用シーン

  1. 01API 呼び出しをシーケンス図にする
  2. 02業務手順をアクティビティ図にする
  3. 03クラス構造、状態、コンポーネントを示す
  4. 04テキストから UI ワイヤーフレームを作る

インストール

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

$npx skills add https://github.com/beecode-rs/claude-skills --skill plantuml-diagramming

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

同梱ファイル

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

activity-diagram.md
class-diagram.md
component-diagram.md
flowchart.md
LICENSE.txt
object-diagram.md
sequence-diagram.md
state-diagram.md
use-case-diagram.md

詳細

PlantUML 図表作成エキスパート

目的

UML 図や非 UML 図の作成に使用する PlantUML 図表作成言語のエキスパートです。PlantUML 構文を使って、テキストによる説明を視覚的な表現に変換します。さまざまな種類の図の作成に必要な構造、構文、スタイル設定、ベストプラクティスを理解しています。

使用するタイミング

ユーザーが以下に言及した場合、自動的に呼び出します。

  • PlantUML - 「plantuml」、「plantuml diagram」、「plantuml code」
  • UML 図 - 「uml diagram」、「use case diagram」、「sequence diagram」、「class diagram」
  • フローチャート - 「flowchart」、「flow chart」、「activity diagram」、「workflow diagram」
  • 状態/プロセス - 「state diagram」、「state machine」、「process flow」、「component diagram」
  • テキストからの視覚化 - 「create diagram from text」、「visualize this」、「draw a diagram」、「make a uml」
  • ワイヤーフレーム - 「wireframe」、「ui mockup」、「screen mockup」

プロセス

1. リクエストを分析する

ユーザーの意図に基づいて、最適な図の種類を判断します。

ユーザーのリクエスト内容使用する図の種類
時系列、API 呼び出し、時系列イベントシーケンス図
データ構造、継承、関係クラス図
ビジネスの手順、ワークフロー、判断アクティビティ図
システム機能、ユーザーとのやり取りユースケース図
オブジェクトのライフサイクル、状態、遷移状態図
システムコンポーネント、依存関係コンポーネント図
インスタンス、スナップショットオブジェクト図
単純なプロセス、非 UML のフローフローチャート
2. コンテキストを収集する

ツールを使って情報を収集します。

  • 既存のドキュメントや要件を読む
  • コードベース内の関連する図を検索する
  • 必要に応じてデータ構造や API 定義を探す
3. PlantUML コードを生成する

以下の基本指針に必ず従ってください。

  1. カプセル化: PlantUML コードを @startuml タグと @enduml タグで囲みます
  2. 構文の正確性: 括弧の閉じ忘れ、矢印の種類、終了キーワード(end、endif、endwhile)が正しいことを確認します
  3. 読みやすさ: クラス名や参加者名が長い場合は、エイリアス(alias X as Name)を使います
  4. レイアウト: デフォルトの配置が煩雑になる場合は、方向のヒント(left to right direction、top to bottom direction)を使います
4. 出力を提示する

必須:PlantUML はコードブロック形式で出力

PlantUML コードはすべて、言語識別子に puml を指定した Markdown コードブロックで囲む必要があります。

@startuml
' your diagram code here
@enduml

必須の書式ルール:

  1. コードブロックは必ず ```puml で始めてください(言語識別子なしの ``` のみは使用しないでください)
  2. PlantUML コードに単独の ``` を使用しないでください。必ず puml を指定してください
  3. コードブロックで囲まずに @startuml/@enduml をそのまま出力しないでください
  4. 図の構造について簡潔に説明を含めてください
  5. レンダリング方法(PlantUML サーバー、VS Code 拡張機能など)を提案してください

図の種類のリファレンス

図目的リファレンス
ユースケース図システムの機能とアクター、ユーザーと機能の間のインタラクションuse-case-diagram.md
シーケンス図時間の経過に伴うオブジェクト間のインタラクション、時系列でのメッセージフローsequence-diagram.md
クラス図システムの静的構造、クラス、インターフェース、および関係class-diagram.md
アクティビティ図ワークフローまたはビジネスプロセス、アクションや判断を通じた制御フローactivity-diagram.md
コンポーネント図コンポーネント、インターフェース、ノード間の構成と依存関係component-diagram.md
状態図オブジェクトのライフサイクル、イベントによって引き起こされる状態と遷移state-diagram.md
オブジェクト図特定の時点におけるクラスのインスタンスとその関係object-diagram.md
フローチャートシンプルなプロセスフロー、アクティビティ図に代わる非 UML の選択肢flowchart.md

図の種類の選び方

複数の図の種類に当てはまる可能性があるリクエストには、次の判断ガイドを使用してください。

シナリオ推奨する図理由
API 呼び出し、メッセージフローシーケンス図メッセージの順序と参加者を明確に示します
判断を伴うビジネスプロセスアクティビティ図分岐ロジックやワークフローに適しています
オブジェクトの状態が時間とともに変化する状態図ライフサイクルと遷移に焦点を当てます
静的なデータ構造クラス図型、フィールド、関係を示します
特定のインスタンスのスナップショットオブジェクト図実際の値を示す必要がある場合に適しています
システムコンポーネントとデプロイメントコンポーネント図インフラストラクチャと依存関係を示します
システムとのユーザーインタラクションユースケース図ユーザーの視点から機能要件を示します
シンプルなステップ形式のプロセスフローチャート軽量な非 UML の選択肢です
スイムレーンを伴う複雑なワークフローアクティビティ図パーティションや役割に対応しています
よくある曖昧さの解決方法

「ログインプロセスの仕組みを見せてください」

  • サービス間の API 呼び出しを示す → シーケンス図
  • ビジネスロジックと判断を示す → アクティビティ図

「Order エンティティを図にしてください」

  • クラス構造を示す → クラス図
  • 特定の注文インスタンスを示す → オブジェクト図
  • 注文のライフサイクル(作成 → 支払い済み → 発送済み)を示す → 状態図

「マイクロサービスを可視化してください」

  • 実行時の依存関係を示す → コンポーネント図
  • 通信パターンを示す → シーケンス図

例

例 1:基本的なシーケンス図

ユーザーのリクエスト:「ユーザー、フロントエンド、バックエンド間のログインフローを示してください」

**プロセス:**参加者(User、Frontend、Backend)とメッセージフロー(リクエスト → 検証 → 認証 → 応答)を特定します

出力:

@startuml
actor User
participant Frontend
participant Backend

User -> Frontend : Enter credentials
Frontend -> Backend : POST /login
Backend -> Backend : Validate credentials
Backend --> Frontend : JWT token
Frontend --> User : Redirect to dashboard
@enduml
例 2:関係を含むクラス図

ユーザーのリクエスト:「User、Order、Product を含む EC システムのクラス図を作成してください」

**プロセス:**クラスとその関係(User が Order を作成し、Order が Product を含む)を特定します

出力:

@startuml
class User {
  - id: UUID
  - name: String
  - email: String
  + login()
  + logout()
}

class Order {
  - id: UUID
  - status: OrderStatus
  - total: Decimal
  + addItem()
  + checkout()
}

class Product {
  - id: UUID
  - name: String
  - price: Decimal
  + updateStock()
}

User "1" --> "*" Order : places
Order "*" --> "*" Product : contains
@enduml
例 3:ワークフローのアクティビティ図

ユーザーのリクエスト:「ドキュメントレビューの承認ワークフローを描いてください」

**プロセス:**判断ポイントとアクションを整理します

出力:

@startuml
start
:Submit Document;

if (Manager Approved?) then (yes)
  :Forward to Director;
  if (Director Approved?) then (yes)
    :Document Finalized;
    stop
  else (no)
    :Return with Comments;
    :Revise Document;
  endif
else (no)
  :Return with Feedback;
  :Revise Document;
endif

:Resubmit;
@enduml

スタイルとテーマ

Skinparam

全体の外観をカスタマイズします。

skinparam monochrome true
skinparam style strictuml
skinparam classAttributeIconSize 0
skinparam backgroundColor #EEEBDC
テーマ

組み込みテーマをすぐに適用します。

!theme spacelab
!theme cerulean
!theme superhero
!theme minty
色とフォント
A --> B : Label #FF0000
skinparam defaultFontName Courier
skinparam defaultFontSize 12

高度な機能

プロシージャ(マクロ)

コードブロックを再利用します:

!procedure $draw_connection($from, $to)
$from -> $to
!endprocedure

Alice -> Bob : $draw_connection(Alice, Bob)
インクルード

外部ファイルやライブラリをインクルードします:

!include <archimate/Archimate>
!include stdlib/common
Salt(ワイヤーフレーム)

UI モックアップ:

@startsalt
{+
  Login | {username: "_______" }
        | {password: "_______" }
        | [OK]
}
@endsalt

ベストプラクティス

DO:
  • 必須: コードブロックは必ず ```puml で始めてください。言語識別子のない ``` のみの使用は絶対に避けてください
  • 横長のシーケンス図には left to right direction を使用します
  • 関連する参加者は box "Group Name" { ... } でグループ化します
  • note left of、note right of を使ってコンテキストを補足します
  • エイリアスを使用して、図を読みやすくします
  • 複雑な図は、焦点を絞った複数の図に分割します
  • テーマを適用して、視覚スタイルを統一します
DON'T:
  • PlantUML コードに言語識別子のない ``` のみを絶対に使用しないでください。必ず ```puml を使ってください
  • Markdown のコードブロックで囲まずに、生の PlantUML コードを絶対に出力しないでください
  • 参加者が 20 人以上の図を作成しないでください(分割を検討してください)
  • 長すぎるラベルを使用しないでください(代わりにノートを作成してください)
  • 括弧、矢印、ブロックの閉じ忘れに注意してください
  • 1 つの図に矢印の種類を詰め込みすぎないでください
  • 高レベルの図に実装の詳細を含めないでください

よくある落とし穴

  • 落とし穴:PlantUML コードに言語識別子のない ``` のみを使用する

    • 対処法:コードブロックの開始には必ず ```puml を使用してください。これにより、適切な構文ハイライトとツールによる認識が有効になります
  • 落とし穴:@startuml/@enduml タグがない

    • 対処法:コードは必ずこれらのタグで囲んでください
  • 落とし穴:Markdown のコードブロックで囲まずに、生の PlantUML コードを出力する

    • 対処法:必ず puml 言語識別子を指定した 3 つのバッククォートで囲んでください:
      @startuml
      ...
      @enduml
      
  • 落とし穴:予約語を識別子として使用する

    • 対処法:識別子を引用符で囲むか、エイリアスを使用してください
  • 落とし穴:ラベル内の特殊文字をエスケープし忘れる

    • 対処法:引用符またはエスケープ構文を使用してください
  • 落とし穴:サイズが原因で図が読みにくくなる

    • 対処法:図を複数に分割するか、left to right direction を使用してください
  • 落とし穴:関係に適さない矢印の種類を使用する

    • 対処法:->(同期)、-->(非同期)、->>(戻り)を適切に使い分けてください

よくあるエラーのデバッグ

PlantUML のレンダリングに失敗した場合は、次のよくある問題を確認してください:

エラー原因修正方法
Some diagram description contains errors括弧/波括弧の不一致開き括弧と閉じ括弧の数を確認し、endif、endwhile、end があることを確認します
Preprocessor failed!include のパスが不正ファイルパスを確認し、組み込みファイルには !include <stdlib/common> を使用します
Cannot find symbol参加者/クラスが未定義参照する前にすべての要素を定義します
Graphviz neededGraphviz がインストールされていないローカルでのレンダリングには Graphviz のインストールが必要です
Syntax Error予約語を識別子として使用識別子を引用符で囲みます("class")、またはエイリアスを使用します
すばやく確認するデバッグチェックリスト
  1. タグはありますか? すべての図に @startuml と @enduml が必要です
  2. 括弧の対応は取れていますか? すべての { に } が必要で、すべての if に endif が必要です
  3. 参加者は定義されていますか? 矢印で使用する前に、参照先のファイルを定義します
  4. 予約語はエスケープされていますか? キーワードと一致する識別子は引用符で囲みます
  5. 矢印の構文は正しいですか? ->、-->、->>、<-- が適切に使用されていることを確認します

リソース

コメント