bicep-diagrams
Azure BicepファイルからアーキテクチャダイアグラムをGenerate します。ユーザーが`.bicep`ファイルを持っている場合や、Bicepインフラをビジュアル化したいと要望したときに使用します。
description の原文を見る
Generates architecture diagrams from Azure Bicep files. Use when user has .bicep files or asks to visualize Bicep infrastructure.
SKILL.md 本文
Bicep ダイアグラムジェネレータ
Azure Bicep ファイルから直接アーキテクチャダイアグラムを生成します。Bicep は Azure リソースを宣言的にデプロイするための専用言語 (DSL) です。
使用する場合
以下の場合にこのスキルを有効化します:
- ユーザーが Bicep ファイル (
.bicep) を持っており、インフラストラクチャを可視化したい - ユーザーが「Bicep をダイアグラム化して」または「この Bicep インフラストラクチャを可視化して」と尋ねる
- ユーザーが Bicep または Azure Bicep について言及する
- ユーザーが Bicep でデプロイされたリソースのアーキテクチャを見たい
仕組み
このスキルは Bicep コードを解析し、Eraser API を直接呼び出すことで Bicep 固有のダイアグラムを生成します:
- Bicep ファイルの解析:リソース宣言、モジュール、パラメータ、出力を識別
- 関係の抽出:依存関係、リソース参照、モジュール階層をマッピング
- Eraser DSL の生成:Bicep リソースから Eraser DSL コードを作成
- Eraser API の呼び出し:
diagramType: "cloud-architecture-diagram"で/api/render/elementsを使用
手順
ユーザーが Bicep コードを提供した場合:
-
Bicep を解析
- すべての
resource宣言を識別(Microsoft.Compute/virtualMachines など) module宣言とその構成を抽出paramとoutput定義を記録var変数とその使用法を識別
- すべての
-
関係をマッピング
- リソース依存関係を追跡(例:
dependsOnまたは暗黙的依存関係) - リソースをタイプ別にグループ化(コンピュート、ネットワーク、ストレージなど)
- VNet をサブネットとリソースのコンテナとして識別
- ネットワークセキュリティグループ、Key Vault、その他のセキュリティリソースを記録
- リソース依存関係を追跡(例:
-
Eraser DSL を生成 Bicep リソースを Eraser DSL に変換:
- 重要:ラベルフォーマットルール
- ラベルは必ず 1 行内 - ラベル属性内で改行を使用しない
- ラベルはシンプルで読みやすく - 過度なメタデータの連結より別々のラベルを優先
- DSL を適切に改行フォーマット(1 ノード/グループは 1 行だが、ラベルは 1 行に保つ)
- CIDR ブロックや VM サイズなどのメタデータを含める場合、同じクォート文字列内に含める:
[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) の場合は:
-
分析中にソースを追跡
Bicep ファイルとリソースを分析してダイアグラムを生成する際に、以下を追跡します:
- 内部ファイル:読み込んだ各 Bicep ファイルパスと抽出されたリソースを記録(例:
infra/main.bicep- VNet とサブネット定義、infra/sql.bicep- SQL Database 設定) - 外部参照:参照したドキュメント、例、URL を記録(例:Azure Bicep ドキュメント、Azure アーキテクチャベストプラクティス)
- 注釈:各ソースについて、ダイアグラムへの貢献を記録
- 内部ファイル:読み込んだ各 Bicep ファイルパスと抽出されたリソースを記録(例:
-
レスポンスを処理
重要:最小限の出力フォーマット
レスポンスには常に以下の要素を明確なヘッダー付きで含める必要があります:
-
ダイアグラムプレビュー:ヘッダー付きで表示
## ダイアグラム 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 つの要素以外は一切含めない
- ユーザーが明示的により詳しい情報を要求した場合(例:「アーキテクチャを説明して」、「改善案を提案して」)、その追加コンテンツを含めてもよい
- 概要、セキュリティ考慮事項、テストなど、要求されていないセクションを追加しない
デフォルト出力は短くします。ダイアグラム画像が自ら語ります。
-
-
モジュールを処理
- モジュールが使用されている場合、モジュール境界を表示
- モジュールのパラメータと出力を含める
- モジュールがメインリソースとどう接続されているかを表示
Bicep 固有のヒント
- リソースグループを表示:Bicep デプロイメントはリソースグループをターゲット
- VNet をコンテナとして:VNet がサブネットとリソースを含む形で表示
- 依存関係を含める:
dependsOn関係を表示 - モジュール構造:モジュールが使用されている場合、その境界を表示
- パラメータ:リソース設定に影響する主要パラメータを記録
- Azure アイコンを使用:Azure 固有のスタイリングをリクエスト
例:パラメータとモジュールを含む Bicep
ユーザー入力
@description('The name of the Virtual Network')
param vnetName string = 'myVNet'
@description('The address prefix for the VNet')
param vnetAddressPrefix string = '10.0.0.0/16'
@description('The address prefix for the subnet')
param subnetAddressPrefix string = '10.0.1.0/24'
@description('VM size')
param vmSize string = 'Standard_B1s'
// Main VNet resource
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: vnetName
location: resourceGroup().location
properties: {
addressSpace: {
addressPrefixes: [vnetAddressPrefix]
}
subnets: [
{
name: 'subnet1'
properties: {
addressPrefix: subnetAddressPrefix
}
}
]
}
}
// VM resource with dependsOn
resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-11-01' = {
name: 'myVM'
location: resourceGroup().location
properties: {
hardwareProfile: {
vmSize: vmSize
}
}
dependsOn: [virtualNetwork]
}
// Module usage
module storageModule './modules/storage.bicep' = {
name: 'storage'
params: {
location: resourceGroup().location
}
}
予期される動作
-
Bicep を解析:
- パラメータ:vnetName、vnetAddressPrefix、subnetAddressPrefix、vmSize
- リソース:dependsOn 関係を持つ VNet とサブネット、VM
- モジュール:パラメータを持つストレージモジュール
-
Bicep 固有機能を表示する DSL を生成:
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"] } } storage-module [label: "Storage Module"] { storage-account [icon: azure-storage] } myVNet -> myVM重要:すべてのラベルテキストはクォート内で 1 行に保つ必要があります。Bicep 固有:モジュールをコンテナとして表示、
dependsOn関係を含める、リソース設定でのパラメータ使用を記録。 -
diagramType: "cloud-architecture-diagram"で/api/render/elementsを呼び出し -
diagramType: "cloud-architecture-diagram"で/api/render/elementsを呼び出し
結果
ユーザーは以下を表示するダイアグラムを受け取ります:
- コンテナとしての VNet
- VNet 内にネストされたサブネット
- サブネット内の VM
- 表示される依存関係
- 適切な Azure スタイリング
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- eraserlabs
- リポジトリ
- eraserlabs/eraser-io
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/eraserlabs/eraser-io / ライセンス: MIT
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。