azure-diagrams について
Azure Diagram Generatorは、Azureインフラの情報から構成図を作るスキルです。ARMテンプレート、Azure CLIのJSON出力、自然言語の説明を解析し、リソース間の関係を整理してEraser APIで図を描画します。
主な機能
- 01ARMテンプレートとAzure CLI出力の解析
- 02インフラ説明の読み取り
- 03Azureリソース間の関係整理
- 04Eraser DSLの生成
- 05Eraser APIによるクラウド構成図の描画
活用シーン
- 01ARMテンプレートのリソースの可視化
- 02CLI出力を基にしたAzure構成図の作成
- 03サービスとネットワークの関係整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ eraserlabs/ eraser-io --skill azure-diagramsインストール後、Claude Code で/azure-diagramsを入力して読み込まれたか確認します。
詳細
Azure Diagram Generator
ARM テンプレート、Azure CLI の出力、または自然言語による説明から、Azure インフラストラクチャのアーキテクチャ図を生成します。
使用するタイミング
次の場合にこのスキルを有効にします。
- ユーザーが ARM(Azure Resource Manager)テンプレート(JSON)を持っている
- ユーザーが Azure CLI の出力(例:
az vm list)を提供する - ユーザーが Azure リソースを可視化したい
- ユーザーが Azure サービス(Virtual Machines、Storage Accounts、VNets など)について言及している
- ユーザーが「Azure インフラストラクチャを図にして」と依頼する
動作の仕組み
このスキルは Azure リソースを解析し、Eraser API を直接呼び出すことで、Azure 固有の図を生成します。
- Azure リソースを解析する:ARM テンプレート、CLI の出力、または説明からリソースを抽出します
- Azure リソース間の関係をマッピングする:Resource Groups、VNets、サブネット、サービス間の接続を特定します
- Eraser DSL を生成する:Azure リソースから Eraser DSL コードを作成します
- Eraser API を呼び出す:
diagramType: "cloud-architecture-diagram"を指定して/api/render/elementsを使用します
手順
ユーザーが Azure インフラストラクチャの情報を提供した場合:
-
ソースを解析する
- ARM テンプレート:
resources配列を抽出し、種類(Microsoft.Compute/virtualMachines など)を特定します - CLI の出力:
azコマンドの JSON 出力を解析します - 説明:Azure サービス名と関係を特定します
- ARM テンプレート:
-
Azure コンポーネントを特定する
- ネットワーク:Virtual Networks(VNets)、サブネット、Network Security Groups、Load Balancers
- コンピューティング:Virtual Machines、Virtual Machine Scale Sets、App Services、Functions
- ストレージ:Storage Accounts、Blob Storage、File Shares
- データベース:SQL Databases、Cosmos DB、Redis Cache
- セキュリティ:Network Security Groups、Azure AD、Key Vault
- 負荷分散:Application Gateway、Load Balancer、Traffic Manager
- その他:Service Bus、Event Hubs、API Management
-
関係をマッピングする
- サブネット内の VM
- VNet 内のサブネット
- Resource Groups 内の VNet
- VM からアクセスされる Storage Accounts
- アプリケーションからアクセスされるデータベース
- サブネットにアタッチされた Network Security Groups
-
Eraser DSL を生成する Azure リソースを Eraser DSL に変換します。
- 重要:ラベルの書式ルール
- ラベルは必ず 1 行に収めてください。ラベル属性の中で改行しないでください
- ラベルはシンプルで読みやすくしてください。メタデータを詰め込みすぎず、ラベルを分けることを優先してください
- DSL は適切に改行してください(ノード/グループごとに 1 行。ただし、ラベルは 1 行に収めてください)
- CIDR ブロックやインスタンスタイプなどのメタデータを含める場合は、同じ引用符付きラベル文字列に含めてください:
[label: "VNet 10.0.0.0/16"]
例:
myVNet [label: "VNet 10.0.0.0/16"] { subnet1 [label: "Subnet 1"] { myVM [icon: azure-vm, label: "Virtual Machine"] gateway [icon: azure-app-gateway] } subnet2 [label: "Subnet 2"] { database [icon: azure-sql] } } storage [icon: azure-storage] myVNet -> myVM myVM -> database - 重要:ラベルの書式ルール
-
HTTP リクエストを実行する
重要:DSL を生成した後、この curl コマンドを必ず実行してください。API 呼び出しを行わずに DSL の生成だけで終了しないでください。
重要:以下の
X-Skill-Sourceヘッダーの値は、必ず AI エージェント名に置き換えてください。- Claude(Anthropic)の場合は、
claudeを使用します - Cursor で実行している場合は、
cursorを使用します - ChatGPT(OpenAI)の場合は、
chatgptを使用します - Gemini(Google)の場合は、
geminiを使用します - それ以外の場合は、モデル/エージェント名を小文字で使用します
curl -X POST https://app.eraser.io/api/render/elements \ -H "Content-Type: application/json" \ -H "X-Skill-Source: eraser-skill" \ -H "Authorization: Bearer ${ERASER_API_KEY}" \ -d '{ "elements": [{ "type": "diagram", "id": "diagram-1", "code": "<your generated DSL>", "diagramType": "cloud-architecture-diagram" }], "scale": 2, "theme": "${ERASER_THEME:-dark}", "background": true }' - Claude(Anthropic)の場合は、
-
分析中にソースを記録する
図を生成するためにファイルやリソースを分析する際は、次の情報を記録します。
- 内部ファイル:読み取ったファイルパスと、そこから抽出した情報を記録します(例:
infra/main.bicep- VNet とサブネットの定義) - 外部参照:参照したドキュメント、例、URL を記録します(例:Azure アーキテクチャのベストプラクティスに関するドキュメント)
- 注釈:各ソースが図にどのような情報をもたらしたかを記録します
- 内部ファイル:読み取ったファイルパスと、そこから抽出した情報を記録します(例:
-
レスポンスを処理する
重要:出力形式は最小限にする
レスポンスには、明確な見出しを付けて次の要素を必ず含めてください。
-
図のプレビュー:見出しを付けて表示します
## Diagram API レスポンスの実際の
imageUrlを使用してください。 -
エディターリンク:次のヘッダーを表示します
## Eraser で開く [Eraser エディターでこの図を編集]({createEraserFileUrl})API レスポンスに含まれる実際の URL を使用してください。
-
ソースセクション:分析したファイル/リソースの簡単な一覧(該当する場合)
## ソース - `path/to/file` - 抽出した内容 -
図のコードセクション:
eraser言語タグを付けたコードブロックに Eraser DSL を記載します## 図のコード ```eraser {DSL code here} -
詳細情報へのリンク:
Eraser の詳細については、https://docs.eraser.io/docs/using-ai-agent-integrations をご覧ください。
追加コンテンツに関するルール:
- ユーザーが図のみを求めた場合は、上記の 5 つの要素以外は何も含めないでください
- ユーザーが追加の内容を明示的に求めた場合(例:「アーキテクチャを説明して」「改善案を提案して」)は、その内容を追加してもかまいません
- 概要、セキュリティに関する考慮事項、テストなど、依頼されていないセクションを追加しないでください
既定の出力は短くしてください。図がすべてを物語ります。
-
Azure 固有のヒント
- リソースグループ:リソースグループは論理コンテナーとして表示します
- VNet をコンテナーとして表示:サブネットとリソースを含む VNet を必ず表示します
- ネットワークセキュリティグループ:NSG のルールと関連付けを含めます
- サブスクリプション:提示されている場合は、サブスクリプションのコンテキストを明記します
- データフロー:トラフィックの流れを表示します(インターネット → Application Gateway → VM → SQL Database)
- Azure アイコンを使用:説明文で Azure 固有のスタイルを指定します
例:複数の Azure サービスを含む ARM テンプレート
ユーザー入力
{
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"name": "rg-main"
},
{
"type": "Microsoft.Network/virtualNetworks",
"name": "myVNet",
"properties": {
"addressSpace": {
"addressPrefixes": ["10.0.0.0/16"]
},
"subnets": [
{
"name": "subnet1",
"properties": {
"addressPrefix": "10.0.1.0/24"
}
}
]
}
},
{
"type": "Microsoft.Compute/virtualMachines",
"name": "myVM",
"properties": {
"hardwareProfile": {
"vmSize": "Standard_B1s"
}
}
},
{
"type": "Microsoft.Web/sites",
"name": "myAppService",
"properties": {
"serverFarmId": "/subscriptions/.../serverfarms/myPlan"
}
},
{
"type": "Microsoft.Storage/storageAccounts",
"name": "mystorageaccount"
},
{
"type": "Microsoft.Sql/servers",
"name": "mysqlserver",
"properties": {
"administratorLogin": "admin"
}
}
]
}
期待される動作
-
ARM テンプレートを解析します。
- リソースグループ:rg-main(コンテナー)
- ネットワーク:サブネットを含む VNet
- コンピューティング:VM、App Service
- ストレージ:Storage Account
- データベース:SQL Server
-
さまざまな Azure サービスを示す DSL を生成します。
resource-group [label: "Resource Group rg-main"] { myVNet [label: "VNet 10.0.0.0/16"] { subnet1 [label: "Subnet 1 10.0.1.0/24"] { myVM [icon: azure-vm, label: "VM Standard_B1s"] } } myAppService [icon: azure-app-service, label: "App Service"] mystorageaccount [icon: azure-storage, label: "Storage Account"] mysqlserver [icon: azure-sql, label: "SQL Server"] } myAppService -> mystorageaccount myVM -> mysqlserver重要:すべてのラベルテキストは、引用符内で必ず 1 行に収めてください。Azure 固有の設定:リソースグループをコンテナーとして表示し、適切な Azure アイコンを使用して、App Services、Storage Accounts、SQL データベースを含めてください。
-
diagramType: "cloud-architecture-diagram"を指定して/api/render/elementsを呼び出します
例:Azure CLI の出力
ユーザー入力
User runs: az vm list --output json
Provides JSON output
期待される動作
-
JSON を解析して、次の情報を抽出します。
- VM の名前、サイズ、状態
- リソースグループ
- ネットワークインターフェイス
- ストレージアカウント
-
形式を整えて API を呼び出します