Community画像github.com

whiteboard(ホワイトボード)

ダイアグラムを実際にレンダリングされた画像として描画します。アーキテクチャやC4スタイルの概要、フローチャート、シーケンス、クラス、ステート、ER図、ガントチャート、マインドマップなどに対応。Mermaid、D2、またはPlantUMLのソースを記述し、バンドルされたスクリプトでローカルにSVG(およびPNG)にレンダリングし、レンダラーが報告する構文エラーを修正します。ユーザーが図表、チャート、UML、コードのビジュアル、システム、データモデル、プロセスを尋ねたり、図を使った方が文章よりもデザインをうまく説明できる場合に使用します。

whiteboard(ホワイトボード) とは?

Whiteboard(ホワイトボード)スキルは、AIエージェントがMermaid、D2、PlantUMLなどの図表記法を使ってダイアグラムを記述し、ユーザーのローカル環境でSVGやPNG画像としてレンダリングするためのスキルです。アーキテクチャ図、フローチャート、シーケンス図、クラス図、ER図、状態遷移図、ガントチャート、マインドマップなど、あらゆる種類のダイアグラムに対応しています。このスキルは、Cline、Claude Code、Cursor、Codex、GitHub Copilot、Windsurf、Gemini Code Assistなど、ファイルシステムアクセスとシェルコマンド実行が可能なあらゆるAIコーディングエージェントと互換性があります。スキルの核となるのは`scripts/render.mjs`スクリプトで、これはユーザーの環境に依存せずに動作し、レンダリングエラーが発生した場合には具体的な行番号とともにエラーを報告するため、エージェントが自律的に修正できます。レンダリングはローカルでのみ行われ、外部へのアップロードはユーザーが明示的に同意した場合のみ行われるため、セキュリティも確保されています。また、同じタイトルで再描画すると以前のバージョンが自動的に保存されるため、イテレーションを繰り返しても図の履歴が失われません。このスキルは、コードベースの設計を視覚化したり、システムアーキテクチャを説明したり、データモデルを整理したりする際に特に有用で、AIエージェントがテキストによる説明よりも図を使った方が効果的な場面を自動的に判断して利用できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kikostefanov-lab/whiteboard-skill/tree/HEAD/skills/whiteboard

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

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

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

ドキュメント

whiteboard(ホワイトボード) は何をしますか?

説明を、ユーザーが見て、保存して、どこにでも貼り付けられるダイアグラムに変換します。あなたがダイアグラムのソースを記述し、scripts/render.mjs がユーザーのローカルにインストールされたCLIを使ってレンダリングし、パースできない場合は何が問題かを正確に伝えます。

ワークフロー

  1. ダイアグラムの種類と言語を選ぶ。 デフォルトはMermaidです。ネストされたコンテナを持つ大規模なアーキテクチャ図にはD2を使用し、ユーザーから指定があった場合やプロジェクトですでに使用されている場合のみPlantUMLを使用します。それぞれの構文については references/syntax.md を参照してください。

  2. 描く前に読む。 ダイアグラムがコードを説明する場合は、まずコードを読んでください。実際の名前を使って、存在するものを描きます。汎用的な図ではありません。プロジェクト全体のリクエスト(アーキテクチャ、制御フロー、データモデル)の場合は、references/modes.md に従ってください。

  3. ソースを書いてレンダリングする。 短いタイトル(最大80文字)を付けて、標準入力からパイプで渡します。タイトルはファイル名になるので、同じダイアグラムを再描画するときは再利用します。

    node <skill-dir>/scripts/render.mjs --title "チェックアウトのシーケンス" <<'EOF'
    sequenceDiagram
      Browser->>API: POST /checkout
      API->>Payments: charge(card)
      Payments-->>API: ok
      API-->>Browser: 201 Created
    EOF
    

    <skill-dir> はこのファイルがあるフォルダです。これらの言語を使用する場合は、--language d2 または --language plantuml を追加します。Windowsの場合、またはヒアドキュメントが使いにくい場合は、ソースを一時ファイルに書き込み、代わりに --file <path> を渡します。

  4. 失敗した場合は修正して再実行する。 終了コード1はレンダラーがソースを拒否したことを意味します。メッセージに行番号が示されます。その行を修正し、同じコマンドを再度実行します。レンダリングされなかったダイアグラムをユーザーに渡さないでください。一般的な修正方法は references/syntax.md の最後にリストされています。

  5. 簡潔に報告する。 ダイアグラムが何を示しているか、そしてスクリプトが出力したファイルパス(例:diagrams/checkout-sequence.svg)を伝えます。ユーザーがREADME、Issue、Wikiに貼り付けたい場合は、フェンスで囲まれた ```mermaid ブロックでソースも提供します。GitHub、GitLab、Notion ではこれらがレンダリングされます。

スクリプトリファレンス

オプション用途
--title <text>必須。ファイルに名前を付けます:diagrams/<slug>.svg とその隣にソースファイルが作成されます。
--language <name>mermaid(デフォルト)、d2、または plantuml。
--file <path>標準入力の代わりにファイルからソースを読み取ります。
--out <dir>出力フォルダ。デフォルトはカレントフォルダの diagrams。
--pngPNGも出力します(スライド、チャットアプリ、画像を表示するターミナル向け)。
--theme <name>default、neutral、dark、または forest。
--config <file>チームの色やフォント用のMermaid JSON設定ファイル。
--check検証のみ。何も書き出しません。
--openユーザーのデフォルトビューアでSVGを開きます。ユーザーが今すぐダイアグラムを見たい場合に使用します。
--shareソースを シークレット GitHub Gist にアップロードし、リンクを表示します。ユーザーが共有を明示的に依頼し、アップロードに同意した場合にのみ実行します。
--json機械可読な結果を出力します。
--doctorNode、各レンダラー、GitHub CLI をチェックし、インストールすべきものを表示します。

終了コード:0 レンダリング成功、1 ソース拒否(修正して再実行)、2 引数エラー、 3 レンダラーがインストールされていません。

ダイアグラムはローカルファイル、環境変数、URLを画像内に読み込むことはありません:

  • Mermaid は、ネットワークやディスクから何もロードできないサンドボックス化されたブラウザページでレンダリングされます。どのようなMermaid構文でも動作しますが、リモートやローカルの画像、CSSリソースは空白になります。画像を表示する必要がある場合は、data: URLとしてインライン化してください。
  • PlantUML: 単純なディレクティブ(!define、!if、!procedure、!$var、 !theme <name>、!include <stdlib> …)以外のディレクティブ、%getenv や類似の組み込み関数、<img:…> は拒否されます。代わりにコンテンツをインライン化してください。
  • D2: @ インポートは拒否されます。アイコン、ブロック文字列、HTML、URLを含むダイアグラムはSVGとしてのみレンダリングされ、そこではリンクのままになります。

ユーザーが明示的にインクルードや外部画像を希望する場合にのみ、WHITEBOARD_ALLOW_INCLUDES=1 を設定して再実行してください。

同じタイトルで再描画すると、以前のファイルは diagrams/.versions/<slug>/<n>/ に保持されるため、ダイアグラムを繰り返し修正しても以前のバージョンが失われることはありません。

レンダラーがない場合

終了コード3はインストールコマンドを表示します。実行するコマンドをユーザーに伝え、ユーザーが依頼しない限り、あなた自身でグローバルパッケージをインストールしないでください:

  • Mermaid: npm i -g @mermaid-js/mermaid-cli
  • D2: brew install d2、または https://d2lang.com/tour/install を参照
  • PlantUML: brew install plantuml または apt install plantuml(Javaが必要)

レンダラーがインストールされているが見つからない場合(デスクトップアプリなど、ログインシェルのPATHなしで起動する場合によく発生します)、WHITEBOARD_MMDC、WHITEBOARD_D2、または WHITEBOARD_PLANTUML にフルパスを設定します。Mermaidのレンダリングは、mermaid-cliに付属のブラウザとMermaidバンドルを使用します。スクリプトが mmdc を見つけたがそのパッケージが見つからない場合は、WHITEBOARD_MERMAID_CLI_DIR を @mermaid-js/mermaid-cli フォルダに設定します。何もインストールできない場合は、Mermaidソースをフェンスで囲まれたブロックで提供してください。そうすればGitHub上でレンダリングされ、レンダラーでチェックされなかったことを伝えてください。

良いダイアグラムとは

  • 1つのダイアグラムに1つのアイデア。約15ノードまたは20メッセージを超えるものは、概要図と詳細図に分割します。
  • すべてのエッジに、流れるものや発生するもの(HTTP、publishes OrderPlaced、1..*)をラベル付けします。
  • コードの名前を使用します:クラス名、モジュール名、サービス名、実際のエンドポイント、実際のテーブル。
  • 質問に合ったタイプを選びます:時間の経過とともに誰が誰を呼び出すか → シーケンス図。 何の部分があるか → アーキテクチャ/フローチャート。データがどのように見えるか → ER図またはクラス図。 何かが時間とともにどのように変化するか → 状態遷移図。
  • ノード内のテキストは短く保ち、詳細はエッジのラベルやノートに記述します。

関連スキル