mcpField
C
c4-diagram

c4-diagram

github.com/bsene開発764 回インストール3 日前に更新
リポジトリ

c4-diagram について

C4 アーキテクチャ図を作成するスキルです。システム構造や相互作用を記録するユーザー向けに、質問に応じて C4 のレベルと作図ツールを選び、通常は Structurizr DSL、簡易プレビューには Mermaid を使います。

主な機能

  1. 01適切な C4 レベルの選択
  2. 02Structurizr DSL または Mermaid の選択
  3. 03要素と関係の記述ルールの適用
  4. 04利用可能なツールでの図のレンダリング
  5. 05レンダラーがない場合の代替出力

活用シーン

  1. 01アーキテクチャのコンテナビュー作成
  2. 02関係者向けのシステムコンテキスト表示
  3. 03サービス内コンポーネントの文書化
  4. 04ドキュメント用の図のエクスポート

インストール

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

$npx skills add https://github.com/bsene/skills --skill c4-diagram

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

同梱ファイルreferences/c4-mermaid.mdreferences/c4-structurizr.md

詳細

C4 図

ワークフロー

  1. C4 レベルを選ぶ — 図の詳細度を質問に合わせます(下の表を参照)
  2. ツールを選ぶ — デフォルトでは Structurizr DSL を使用します。チャット内ですばやくプレビューする場合は Mermaid を使用します(下の表を参照)
  3. 図を生成する — 図のルールに従い、選択したツールの DSL リファレンスを参照します
  4. レンダリングする — レンダリングのフォールバック手順に従います

C4 レベルの選択

質問の種類C4 レベルStructurizr のビュータイプ
「組織全体/すべてのシステムを表示」補助 — システムランドスケープsystemLandscape(Mermaid に相当するものはありません)
「このシステムは何をするのか?」/「誰が使うのか?」レベル 1 — コンテキストsystemContext
「主なサービス/アプリ/データベースは何か?」レベル 2 — コンテナーcontainer
「このサービスは内部でどのような構成になっているのか?」レベル 3 — コンポーネントcomponent
「この特定のクラス/モジュールはどのように動作するのか?」レベル 4 — コード図なし — レベル 4 に対応する C4 図はありません

デフォルトはレベル 2(コンテナー)です — 「アーキテクチャを見せて」といった依頼のほとんどをカバーできます。ステークホルダー向けの概要にはレベル 1、単一サービスの詳細な調査にはレベル 3 を使用します。

ツールの選択

必要なこと使用するもの
チャット内ですばやくプレビューするMermaid → references/c4-mermaid.md
ドキュメント/Wiki 用に PNG/SVG をエクスポートするStructurizr → references/c4-structurizr.md
1 つのモデルから複数のビューを作成するStructurizr
組織全体のシステムランドスケープを作成するStructurizr(Mermaid に相当する C4 機能はありません)
動的/番号付きのインタラクションフローを作成するどちらでも可(C4Dynamic または Structurizr の dynamic)
デプロイメント/インフラストラクチャビューを作成するStructurizr(Mermaid の C4Deployment は機能が限定されています)
クラス/メソッドレベルの詳細(レベル 4)Mermaid の classDiagram — Structurizr に相当するものはありません
使用可能なツールがないMermaid

ユーザーが簡易な Mermaid プレビューを明示的に希望しない限り、デフォルトでは Structurizr DSL を使用してください。

図のルール

  • すべての要素に、名前、タイプ(Person/System/Container/Component)、簡潔な説明を含める必要があります
  • コンテナーとコンポーネントには、テクノロジー(例:「Node.js Express」、「PostgreSQL」)を明記する必要があります
  • すべての関係には、アクション+プロトコルのラベルを付ける必要があります(例:「イベントを gRPC で読み取る」。単に「使用する」とはしません)
  • 外部システム/人物には、モデル内で tags "External" を付けます
  • 境界は暗黙的です。systemContext ビューと container ビューではスコープが自動的に設定されます。境界内の論理的なサブグループには group を使用します
  • 図は約 12 要素以内に収めます。要素が多い場合は複数の図に分割します

レンダリング

順番に実行し、最初に成功した時点で停止します。Structurizr CLI にはネイティブの svg/png エクスポート機能はありません。必ず最初に PlantUML/Mermaid/D2 へエクスポートしてから、そのツールでレンダリングしてください。

  1. CLI が使用可能(ローカルインストール/Docker のバイナリは structurizr.sh、Homebrew/Scoop のバイナリは structurizr-cli)— DSL を /tmp/<name>.dsl に保存してから、次を実行します。

    structurizr.sh export -workspace /tmp/<name>.dsl -format plantuml -output /tmp/structurizr-out/
    # render the .puml to SVG/PNG with `plantuml /tmp/structurizr-out/*.puml`
    

    出力パスをユーザーに伝えます。

  2. Docker が使用可能 — DSL を /tmp/<name>.dsl に保存し、次をユーザーに提示します。

    # Active replacement (recommended):
    docker run -it --rm -p 8080:8080 -v /tmp:/usr/local/structurizr structurizr/structurizr local
    # Legacy (archived but functional):
    docker run -it --rm -p 8080:8080 -v /tmp:/usr/local/structurizr structurizr/lite
    

    http://localhost:8080 を案内します。

  3. どちらも使用できない — DSL をフェンス付きの dsl コードブロックで出力します。注:オンラインでレンダリングするには、https://playground.structurizr.com/ に貼り付けてください。


→ Structurizr DSL の構文:references/c4-structurizr.md → Mermaid C4 の構文:references/c4-mermaid.md


ベンチマーク

シナリオ:.benchmarks/scenarios/c4-diagram-001-container-view.md · 実行日:2026-08-31 · ログ:.benchmarks/runs/2026-08-31/c4-diagram-001-container-view.json

モデル使用前使用後差分
claude-opus-4-867%100%+33%
claude-sonnet-4-6100%100%+0%
claude-haiku-4-5100%100%+0%

合格(実行日:2026-08-31)。Opus は +33(67→100)、sonnet/haiku はすでに上限に達しています。リグレッションはありません。ゲートは .agents/skills/skill-optimizer/rules/release-gates.md に従います。

コメント