Install
openclaw skills install cloud-architecture-diagramsBuild editable cloud architecture diagrams (Azure/Microsoft, AWS, GCP) using official vendor icons, output as both .excalidraw and .drawio with icons embedded and labeled arrows. Use to create, draw, recreate, or lay out an Azure, AWS, or GCP architecture or solution diagram from a text description or by uploading a screenshot to reproduce.
openclaw skills install cloud-architecture-diagramsGenerate professional cloud architecture diagrams that match the house style of the official vendor reference architectures: dashed grouping zones (Power Platform / Azure / Data Source, or VPC / Subnet / Region), white rounded "cards" with a real product icon plus a bold title and a small description, directional and bidirectional arrows with labels, and optional numbered step badges.
The output is two editable files from one spec:
<name>.excalidraw — JSON, opens at excalidraw.com (icons embedded as base64)<name>.drawio — mxGraph XML, opens at app.diagrams.net (icons embedded as data URIs)Both are self-contained: the icons travel inside the file, so they render offline and survive being shared.
Drawing the JSON/XML by hand is error-prone and the two formats drift apart. Instead you write ONE small spec (zones, nodes, edges) and a bundled script renders both files identically, fetches the right icons, embeds them, and routes the arrows. You spend your effort on the part that needs judgment — choosing icons and laying things out — not on file plumbing.
The skill knows ~3,900 icons across four providers, all bundled offline. Pick the one that matches the cloud you're drawing:
| Provider | What it covers | Where the icons live |
|---|---|---|
aws | Official AWS Architecture Icons — EC2, S3, Lambda, VPC, ECS/EKS, RDS, DynamoDB, etc. (~800) | bundled in assets/icons/aws/ (offline) |
azure | Official Microsoft Azure service icons V23 (~626) | bundled in assets/icons/azure/ (offline) |
gcp | Official Google Cloud icons — Compute Engine, GKE, BigQuery, Cloud Run, Vertex AI, Cloud Storage, etc. (a curated ~45-icon set of core products + category tiles) | bundled in assets/icons/gcp/ (offline) |
microsoft | The broadest Microsoft set, now bundled offline (~2,430): the official Power Platform pack (Power Apps, Power Automate, Power Pages, Copilot Studio, AI Builder, Dataverse, Agent 365) + the official Dynamics 365 pack (Sales, Customer Service, Field Service, Finance, Business Central, Commerce, Supply Chain, Customer Insights, Project Operations, HR, …) + the msicons.com set (Azure services, Microsoft Fabric, Teams, Entra, Intune, Purview, Planner, …) | bundled in assets/icons/microsoft/ (offline) |
Always pin the provider in the spec ("provider": "aws", "azure", "gcp",
or "microsoft"). For mixed Microsoft work (Power Platform + Azure) use
"microsoft" (the default) or "providers": ["azure","microsoft"]. A single
node can override with its own "provider" (e.g. an AWS diagram that also shows
an Entra ID logo → that node uses microsoft).
GCP coverage is partial. The bundled Google set is a curated subset (core products + category tiles). Services not in it (e.g. Pub/Sub, Cloud Functions, Firestore, Dataflow) will fall back to labeled boxes. To get full coverage, download Google's complete official icon pack and import it with
add_icon_pack.py --provider gcp(see "Refreshing or adding icon packs").
Before anything else, settle on the provider. If the user already made it clear — they said "AWS"/"Azure"/"GCP", named provider-specific services (S3, BigQuery, Power Automate…), or uploaded an image whose icons identify the cloud — just use that. If it's ambiguous, ask before building:
Which icon set should I use — Azure / Microsoft, AWS / Amazon, or GCP / Google?
Don't guess when it's unclear; the wrong icon set means redrawing the whole thing.
If the user described it in words: identify the logical groups (these become zones), the components in each (these become nodes), and how data flows between them (these become edges). Note any numbered sequence.
If the user uploaded an image of a diagram to recreate: read it carefully. List every grouping container, every icon/box (its title + any subtitle), the arrows (direction, any labels, any color coding), and any numbered step badges. Reproduce the structure and intent, not necessarily pixel positions. It's fine to tidy up spacing.
When the architecture is ambiguous or large, briefly confirm the component list and grouping with the user before generating — re-rendering is cheap but confirming intent first saves a wasted pass.
Use the finder, scoped to the provider you're drawing, to pick the right icon for each component:
python scripts/find_icon.py "S3" --provider aws -n 4
python scripts/find_icon.py "BigQuery" --provider gcp -n 4
python scripts/find_icon.py "Azure AI Search" --provider azure,microsoft -n 4
It prints scored candidates with their provider and location. Pick deliberately:
icon for that node), and tell the user.S3, EC2, VPC, IAM, SNS, SQS,
ECS, EKS, RDS, ELB all resolve to the canonical service icon.BigQuery/BQ, Compute Engine/GCE,
Cloud Storage/GCS, GKE, Cloud Run, Vertex AI. Coverage is partial —
if a service isn't found, fall back to a labeled box (or import the full pack).references/spec-format.md (e.g. Azure AI Search
is filed under Cognitive Search; Azure OpenAI under Open AI).--provider so an AWS query can't match an Azure icon (and vice
versa).If you're confident about a specific icon, pin it in the spec with "icon_url"
(a msicons.com URL) to skip matching for microsoft; for bundled providers,
just naming the service is reliable.
Create a JSON spec following references/spec-format.md. Set the spec
"provider", then lay it out using the conventions documented there
(left-to-right flow, zones as dashed containers, ~40px gaps, card size ~230×84).
Keep coordinates on a rough grid so the result looks deliberate.
Start from assets/spec-example.json as a template — it's a real worked
example you can adapt.
python scripts/build_diagram.py my_spec.json --out-prefix /mnt/user-data/outputs/my_diagram
This writes my_diagram.excalidraw and my_diagram.drawio, fetching and
embedding every icon. It prints an icon-resolution report to stderr — read
it: it tells you which query mapped to which icon and flags weak matches that
fell back to a labeled box. Fix any wrong matches by editing the icon value
(or pinning icon_url) and re-running.
Use --only excalidraw or --only drawio if the user wants just one.
By default both files embed the icons as SVG (identical look, works everywhere).
You can instead have the .drawio use draw.io's own built-in vector stencils
— add "drawio_shapes": true to the spec (or pass --drawio-shapes):
python scripts/build_diagram.py my_spec.json --out-prefix out/dia --drawio-shapes
What this changes (drawio only — Excalidraw always stays embedded SVG):
resourceIcon squares (mxgraph.aws4.*) with the
correct category color baked in.mxgraph.gcp2.* stencils.mxgraph.azure.* (monochrome; limited set) — most Azure nodes have
no native stencil and fall back to embedded SVG. microsoft (Power Platform,
Dynamics 365, etc.) has no native draw.io vector stencils, so it always uses
the bundled official SVGs — which are full-color and render in both formats.Why use it: the shapes become first-class draw.io objects the user can recolor and restyle, and the file is much smaller (no base64). Why not: matching is best-effort against draw.io's version-specific stencil names, so preview the mapping first:
python scripts/find_drawio_shape.py "IAM" --provider aws -n 5
If a match is wrong, pin the exact stencil on that node with
"drawio_shape": "mxgraph.aws4.identity_and_access_management_iam". Nodes
without a confident native match automatically fall back to embedded SVG, so the
diagram is never broken. (Note: I can't render .drawio to PNG here — the preview
PNG shows the embedded-SVG version; confirm native shapes in diagrams.net.)
The inline Excalidraw tool can't show the embedded icons, so render a PNG:
python scripts/preview_png.py /mnt/user-data/outputs/my_diagram.excalidraw -o /tmp/preview.png
Open the PNG and check for: overlapping boxes, clipped arrow labels (short
arrows can't hold long labels — widen the gap or shorten the label), arrows
crossing through cards (add waypoints to that edge), and wrong/missing icons.
Iterate on the spec until it's clean. Show the user this preview so they can
see it without opening a file.
Use present_files to give the user both files (and optionally the preview
PNG). Tell them which opens where (excalidraw.com / app.diagrams.net) and that
the icons are embedded so they can edit freely.
The skill ships with a prebuilt index (references/icon-index.json) plus the
bundled AWS and Azure SVGs, so normal use needs no network.
Refresh the msicons.com (microsoft) set: python scripts/build_icon_index.py
Add or update a bundled pack from a folder of SVGs you downloaded (e.g. a newer AWS Architecture Icons release, or an Azure icon pack):
python scripts/add_icon_pack.py --source /path/to/unzipped/pack --provider aws
It auto-detects AWS-style and Azure-style filenames, copies the chosen SVGs
into assets/icons/<provider>/, and merges them into the index (replacing any
prior entries for that provider). To add a brand-new cloud (e.g. GCP), unzip
its SVGs and import them under a new provider id.
add_icon_pack.py when needed.--provider / set the spec provider so an
AWS query can't pull an Azure or GCP icon.scripts/find_icon.py — search/fetch icons by service name (--provider aware)scripts/build_diagram.py — spec → .excalidraw + .drawio (the engine)scripts/preview_png.py — render a .excalidraw to PNG for visual checkscripts/build_icon_index.py — (re)build the msicons.com indexscripts/add_icon_pack.py — import a local SVG pack as a new/updated providerscripts/bundle_microsoft.py — bundle the Microsoft set offline (official Power Platform + Dynamics 365 packs + msicons.com)scripts/find_drawio_shape.py — preview native draw.io stencil matchesscripts/build_drawio_shape_index.py — (re)build the native-shape index from draw.io's stencil sourcereferences/spec-format.md — full spec schema, layout cookbook, icon synonymsreferences/icon-index.json — prebuilt unified icon index (aws + azure + gcp + microsoft)references/drawio-shape-index.json — native draw.io stencil index (aws + gcp + azure)assets/icons/aws/, assets/icons/azure/, assets/icons/gcp/, assets/icons/microsoft/ — bundled official SVGs (offline)assets/spec-example.json, assets/aws-spec-example.json, assets/gcp-spec-example.json — worked examples