Create and maintain editable drawio architecture diagrams and matching self-contained SVG and PNG exports. Use for architecture diagrams, technical schematics, drawio updates, crossing arrows, overlapping labels, and Microsoft service icons. Apply logical columns, dedicated routing lanes, square-cornered colored rectangles, and synchronization with existing documentation or decks. Find accurate Microsoft icons across MsiconsCollections, Microsoft Learn Azure and Power Platform packs, az-icons.com, and DamoBird365/microsoft-cloud-icons. Verify provenance and current product identity. Project-agnostic: discover paths, labels, identifiers, architecture, and rendering tools from the current repository rather than assuming a stack.
Maintain one editable .drawio source (mxGraph XML) and two generated exports:
a self-contained SVG with embedded icons and a PNG rasterized from that SVG.
Keep all three consistent with the architecture actually implemented.
Before editing, read the current repository instructions, existing diagram, relevant
code/IaC, and its rendering commands. Discover output paths and consumers rather
than assuming a directory layout, cloud provider, framework, or presentation tool.
If no convention exists, propose source/export paths with a shared descriptive basename.
Use labels and stable IDs from the current system; never carry over customer names,
agent names, resource IDs, coordinates, or workstation paths from another project.
Keep temporary tools and downloads in the repository's designated temporary directory
and clean them up after validation. Do not commit or push without user authorization.
Layout rules
Containers represent actual domains or boundaries, not an assumed service list.
Use colored dashed borders and square corners (rounded=0 / rx=0).
Order columns by flow, for example client -> API -> processing -> storage.
Place components that communicate across containers near the facing boundary.
Use colored component rectangles, a coherent palette per domain, and readable
text in both light and dark documentation contexts.
No edge may cross an unrelated box or label. Reserve routing corridors first.
Routing recipe
Do not rely on orthogonalEdgeStyle to avoid every intermediate obstacle. Pin long
edges using explicit exitX/exitY/exitDx/exitDy, entryX/entryY/entryDx/entryDy, and
<Array as="points"><mxPoint x=".." y=".."/></Array> inside mxGeometry.
Reserve upper and lower corridors for long horizontal connections.
Start with inter-container gutters of at least 80 px, widening them for lane count.
Reserve internal column gutters for edges that skip intermediate components.
Offset entry/exit anchors sharing a border, for example entryY=0.42 and 0.52.
Derive all coordinates from the current layout; do not reuse another diagram's values.
Lane discipline: no crossings or overlaps
One lane per edge. Keep parallel segments at least 16 px apart wherever
their spans overlap, except for an explicitly modeled shared bus. Maintain a lane
registry while routing. Disjoint spans may reuse the same coordinate.
Prefer the shortest clear route. Exit through the side facing the target and
use a straight segment when it is unobstructed.
Separate opposing directions. Use distinct horizontal lanes and vertical
approaches so elbows do not coincide.
Check geometry before rendering. Expand waypoints into actual orthogonal
segments; check box intersections, perpendicular edge intersections, collinear
overlaps, and parallel clearances. Waypoint comparisons alone miss crossings.
Inspect the rendered PNG. Any accidental X or overlapping/doubled stroke is
a failure, even outside containers. Reroute and render again.
If the graph cannot be drawn without crossings in one view, split it into clearly
linked views or introduce labeled continuation connectors without losing relationships.
Do not hide a dependency merely to pass the layout check.
Generated SVG paths must preserve the source routing using orthogonal M/L segments,
arrow markers, and movable groups such as <g transform="translate()">.
Microsoft icons: approved sources and selection
Search across the approved sources to find the correct product or service icon;
do not restrict discovery or downloads to a single pack. Multiple sources may be
used in one diagram. Prefer current Microsoft-published assets when available;
the approved community catalogs below are also valid discovery and download sources,
not Microsoft publishers. Verify the identity and provenance of each selected asset.
Community-curated Microsoft Cloud product SVG/PNG collection; use its icons.json index and verify the asset, revision, and trademark notice.
Do not use FontAwesome, unverified built-in mxGraph service icons, arbitrary images,
or hand-drawn replacement logos to stand in for Microsoft products.
Plain labeled rectangles and connectors are diagram primitives, not substitute icons.
Resolve download links from the selected source rather than guessing filenames or
freezing a pack version or icon count into the workflow. For MsiconsCollections,
its previously used asset base is
https://tomkiljo.github.io/ms-icons/icons/; verify that it still belongs to the
linked collection before using it. Official archives and raw asset URLs linked by
the approved sources are valid download endpoints.
Search by exact product/service name and current or former names. If the first pack
lacks the correct icon, consult the other relevant approved sources before declaring
it missing. Prefer semantic accuracy and current branding over matching a pack's style.
Resolve conflicting variants against the current Microsoft product guidance.
Record the source page, asset path, resolved download URL, and pack version or commit
(where available). Record the retrieval date when no version is exposed. For community
assets, verify their claimed Microsoft origin against official guidance where possible;
do not treat a repository description as proof for every file.
Reuse cached assets only with known provenance. If relevant sources are unavailable
or no verified match exists, disclose which checks failed and use a labeled rectangle
without an icon. Never silently substitute another product's logo.
Follow the source's usage terms and Microsoft trademark guidance. Keep the product
name near the icon; preserve its colors, shape, and aspect ratio. Do not crop, flip,
rotate, distort, or use a Microsoft icon to represent a custom product.
In drawio, use shape=image;image=<URL> or a label node with
image=<URL>;imageAlign=left;imageVerticalAlign=middle.
Verify the selected source and asset meaning. Do not relabel a generic Microsoft
logo as a dedicated Microsoft 365, Teams, or Graph product logo. Building glyphs such
as office01..14 are not Office product logos.
These inherited paths are lookup candidates, not a claim of current availability or
an instruction to add these services. They do not limit discovery to this collection.
Verify each selected path before use and check newer packs for renamed products.
# Historical base: https://tomkiljo.github.io/ms-icons/icons/
# Verify that it is still linked by https://aka.ms/MsiconsCollections before use.
Function Apps Azure_Public_Service_Icons/Icons/compute/10029-icon-service-Function-Apps.svg
Storage Accounts Azure_Public_Service_Icons/Icons/storage/10086-icon-service-Storage-Accounts.svg
Managed Identities Azure_Public_Service_Icons/Icons/identity/10227-icon-service-Managed-Identities.svg
Application Insights Azure_Public_Service_Icons/Icons/management%20+%20governance/00012-icon-service-Application-Insights.svg
AI Studio / Foundry Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/03513-icon-service-AI-Studio.svg
Azure OpenAI Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/03438-icon-service-Azure-OpenAI.svg
Cognitive Search Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/10044-icon-service-Cognitive-Search.svg
Cognitive Services Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/10162-icon-service-Cognitive-Services.svg
Entra ID (color) Microsoft_Entra_architecture_icons/Microsoft%20Entra%20color%20icons%20SVG/Microsoft%20Entra%20ID%20color%20icon.svg
Microsoft logo Azure_UX_Patterns_icons/microsoft.svg
Microsoft squares Azure_UX_Patterns_icons/microsoft-square.svg
Copilot Azure_UX_Patterns_icons/copilot.svg
Fabric (general) Microsoft_Fabric_icons/general/<lakehouse_64_item|sql_database_64_item|data_warehouse_64_item|event_house_64_item|power_bi_32_color|notebook_64_item|one_lake_48_color|function_64_item|copilot_48_color|app_development_48_color|fabric_48_color|data_factory_48_color>.svg
Teams Bot Microsoft_365_Content_Icons/Teams%20Purple/48x48%20Dark%20Purple%20Icon/Bot.svg
Teams Chat (client) Microsoft_365_Content_Icons/Teams%20Purple/48x48%20Dark%20Purple%20Icon/Chat.svg
Person Microsoft_365_Content_Icons/Microsoft%20Blue/48x48%20Dark%20Blue%20Icon/Person.svg
Container Registry Azure_Public_Service_Icons/Icons/containers/10105-icon-service-Container-Registries.svg
Container Apps Env Azure_Public_Service_Icons/Icons/other/02989-icon-service-Container-Apps-Environments.svg
Worker Container App Azure_Public_Service_Icons/Icons/other/02884-icon-service-Worker-Container-App.svg
Service Bus Azure_Public_Service_Icons/Icons/integration/10836-icon-service-Azure-Service-Bus.svg
Cosmos DB Azure_Public_Service_Icons/Icons/databases/10121-icon-service-Azure-Cosmos-DB.svg
PostgreSQL Flexible Azure_Public_Service_Icons/Icons/databases/10131-icon-service-Azure-Database-PostgreSQL-Server.svg
Azure Maps Azure_Public_Service_Icons/Icons/iot/10185-icon-service-Azure-Maps-Accounts.svg
Log Analytics Azure_Public_Service_Icons/Icons/analytics/00009-icon-service-Log-Analytics-Workspaces.svg
Virtual Networks Azure_Public_Service_Icons/Icons/networking/10061-icon-service-Virtual-Networks.svg
Subnet Azure_Public_Service_Icons/Icons/networking/02742-icon-service-Subnet.svg
NAT Gateway Azure_Public_Service_Icons/Icons/networking/10310-icon-service-NAT.svg
Public IP Azure_Public_Service_Icons/Icons/networking/10069-icon-service-Public-IP-Addresses.svg
Private Endpoints Azure_Public_Service_Icons/Icons/other/02579-icon-service-Private-Endpoints.svg
DNS Zones Azure_Public_Service_Icons/Icons/networking/10064-icon-service-DNS-Zones.svg
Browser (SPA/client) Azure_Public_Service_Icons/Icons/general/10783-icon-service-Browser.svg
Globe (external API) Azure_Public_Service_Icons/Icons/general/10808-icon-service-Globe-Success.svg
Keys Azure_Public_Service_Icons/Icons/menu/00787-icon-service-Keys.svg
Azure Bot Service Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/10165-icon-service-Bot-Services.svg
Fabric Copilot Microsoft_Fabric_icons/general/copilot_48_color.svg
Policy Azure_Public_Service_Icons/Icons/management%20+%20governance/10316-icon-service-Policy.svg
Preserve URL encoding in paths (for example %20 for spaces); avoid double encoding.
The Fabric alternatives above describe individual filenames, not one literal URL.
Foundry pattern (only when present)
Apply this pattern only when the implementation actually uses a Foundry project and
Agent Service. Application agents, development assistants, and Azure Bot Service are
not interchangeable with Foundry-hosted agents.
Show the project as a dedicated square-cornered dashed frame with a short title and
a small verified Foundry icon. Use the current diagram palette, not a fixed theme.
Place each actual agent near its dependencies, with enough room around its edges.
Use a titled rectangle with an internal icon for long names rather than a caption
that overflows into neighboring components. Show the actual agent count if useful.
Distinguish model, knowledge, and tool connections where they exist.
Use solid lines for model/knowledge and dashed lines for tools, with a legend or
short labels. Connect to the real deployment, data source, or API. Do not invent
any of these connections; ordinary retrieval is not automatically Foundry IQ.
Keep external resources outside the project ownership boundary, even when a project
connection points to them. Distinguish integration from resource ownership.
Verify current icon availability across the relevant approved sources, including the
current Azure pack for Foundry Projects, Models, and Agent Service. If there is no dedicated
Agent Service icon, use the verified Foundry platform icon with an explicit label.
Do not substitute the Azure Bot Service icon for a Foundry agent.
Show a Teams or other publication surface only when it is implemented, using an
accurately labeled asset from an approved source or an icon-free rectangle.
Prevent label overlaps
For 48 px icons with two-line captions, start with at least 150 px center spacing;
measure the rendered text and widen, shorten, wrap, or stack nodes as necessary.
Never place an edge label over an icon, another label, or a routing corridor.
Open a gutter of at least 40 px and use a short label that fits, or remove the
edge label (value="") and put the connection type in the target caption or legend.
Verify the actual renderer's handling of verticalLabelPosition, align, wrapping,
and offsets. Do not assume all exporters honor the same mxGraph styles.
Keep routing corridors clear of every box and caption, including container titles.
Rendering and validation
The .drawio file is the single source of truth. Generate SVG and PNG from it;
do not hand-edit exports independently.
Reuse the repository's renderer or an available drawio exporter. Do not assume
headless Chrome, a CLI, Node.js, or a particular script path is installed.
If no exporter is available, state the limitation and agree on a fallback. A Node
mxGraph-to-SVG converter plus @resvg/resvg-js is an option, but must support the
source's styles, text, parent offsets, and routing; do not silently drop features.
Prefer SVG assets from the approved sources and inline them as nested <svg>
elements with viewBox. If only a verified PNG is available, embed it as a data URI
without upscaling beyond usable resolution; do not invent a vector replacement.
Prefix IDs per instance and update references to gradients, masks, and clip paths.
Remove scripts and external asset references; do not load fonts, CSS, or images
over the network. XML namespace URIs and local url(#id) references are allowed.
Default omitted numeric coordinates to zero when parsing mxGraph. Derive orthogonal
elbows from anchors and waypoints rather than connecting waypoints diagonally.
Parse both XML files, run available geometry checks, rasterize the SVG at the
consumer's required resolution, then inspect the PNG and its documentation embedding.
Report unavailable checks instead of claiming they passed.
Arrowheads
End each arrow perpendicular to, and touching, the target boundary.
Keep the final approach segment at least 15 px long to avoid unstable orientation.
Set entryX/entryY explicitly on the intended border.
Verify marker support in the selected renderer. For end markers, orient="auto"
is a useful fallback when auto-start-reverse renders incorrectly. Inspect upward,
downward, leftward, and rightward arrows wherever those directions occur.
Update triggers and consumer synchronization
Update the source and regenerate its exports when a change affects the architecture
depicted: components, dependencies, runtime agents, networks, identity, ingress, or
deployment boundaries. Discover relevant IaC/code paths rather than hardcoding them.
A formatting-only IaC edit or a development-assistant instruction change does not by
itself require a runtime diagram update.
Find existing references to the diagram in documentation and presentations. Update
paths, captions, copies, and rendered decks only where those consumers exist.
Do not assume a video directory, slide framework, or deck is present, and do not
create one solely to satisfy this skill. Keep updates together in the proposed change;
respect repository commit rules and publish only when authorized.
Verification checklist
Mark conditional items not applicable with a reason rather than inventing components.
Paths, labels, stable IDs, dependencies, and boundaries reflect the current project.
Icons come from the approved sources above or their linked download endpoints;
discovery was not limited to the inherited MsiconsCollections path list.
Each icon's product identity, current variant, provenance, source/download URLs,
version or retrieval date, and usage terms are checked; community catalogs are not mislabeled as Microsoft publishers.
Missing matches were sought in other relevant approved sources before using
labeled rectangles without substitute logos; unavailable sources and verification gaps are disclosed.
Logical columns, square corners, facing boundary placement, and readable colors are preserved.
If Foundry is present: actual agents and existing typed connections are shown;
ownership is distinct from integration. Otherwise the Foundry pattern is not applicable.
No icon, box, edge label, caption, or container title overlaps another or a routing corridor.
Drawio and SVG XML parse successfully; SVG and PNG were generated from the same source.
No edge crosses an unrelated box; no accidental edge crossing or overlapping stroke exists,
including outside containers. Shared buses are explicit; overlapping parallel spans are 16 px apart.
Geometry checks cover full segments, not just waypoints; rendered PNG was visually inspected.
Arrowheads touch target borders perpendicularly, with at least 15 px final approaches;
every direction present in the diagram was checked in the rendered output.
SVG contains embedded verified icons, unique IDs, and no external asset dependencies;
icon appearance and aspect ratios are preserved.
Existing documentation/deck consumers are synchronized and their image links resolve;
absent consumers are marked not applicable.
Temporary artifacts are cleaned up; unavailable checks are disclosed; no unauthorized commit or push.
1---2name: architecture-diagram-author3description: Create and maintain editable drawio architecture diagrams and matching self-contained SVG and PNG exports. Use for architecture diagrams, technical schematics, drawio updates, crossing arrows, overlapping labels, and Microsoft service icons. Apply logical columns, dedicated routing lanes, square-cornered colored rectangles, and synchronization with existing documentation or decks. Find accurate Microsoft icons across MsiconsCollections, Microsoft Learn Azure and Power Platform packs, az-icons.com, and DamoBird365/microsoft-cloud-icons. Verify provenance and current product identity. Project-agnostic: discover paths, labels, identifiers, architecture, and rendering tools from the current repository rather than assuming a stack.4---56# Architecture Diagram Author (drawio + SVG/PNG)78## Goal and project discovery9Maintain one editable `.drawio` source (mxGraph XML) and two generated exports:10a self-contained SVG with embedded icons and a PNG rasterized from that SVG.11Keep all three consistent with the architecture actually implemented.1213Before editing, read the current repository instructions, existing diagram, relevant14code/IaC, and its rendering commands. Discover output paths and consumers rather15than assuming a directory layout, cloud provider, framework, or presentation tool.16If no convention exists, propose source/export paths with a shared descriptive basename.17Use labels and stable IDs from the current system; never carry over customer names,18agent names, resource IDs, coordinates, or workstation paths from another project.19Keep temporary tools and downloads in the repository's designated temporary directory20and clean them up after validation. Do not commit or push without user authorization.2122## Layout rules231. **Containers represent actual domains or boundaries**, not an assumed service list.24 Use colored dashed borders and square corners (`rounded=0` / `rx=0`).252. **Order columns by flow**, for example client -> API -> processing -> storage.26 Place components that communicate across containers near the facing boundary.273. **Use colored component rectangles**, a coherent palette per domain, and readable28 text in both light and dark documentation contexts.294. **No edge may cross an unrelated box or label.** Reserve routing corridors first.3031## Routing recipe32Do not rely on `orthogonalEdgeStyle` to avoid every intermediate obstacle. Pin long33edges using explicit `exitX/exitY/exitDx/exitDy`, `entryX/entryY/entryDx/entryDy`, and34`<Array as="points"><mxPoint x=".." y=".."/></Array>` inside `mxGeometry`.3536- Reserve upper and lower corridors for long horizontal connections.37- Start with inter-container gutters of at least **80 px**, widening them for lane count.38- Reserve internal column gutters for edges that skip intermediate components.39- Offset entry/exit anchors sharing a border, for example `entryY=0.42` and `0.52`.40- Derive all coordinates from the current layout; do not reuse another diagram's values.4142### Lane discipline: no crossings or overlaps431. **One lane per edge.** Keep parallel segments at least **16 px** apart wherever44 their spans overlap, except for an explicitly modeled shared bus. Maintain a lane45 registry while routing. Disjoint spans may reuse the same coordinate.462. **Prefer the shortest clear route.** Exit through the side facing the target and47 use a straight segment when it is unobstructed.483. **Separate opposing directions.** Use distinct horizontal lanes and vertical49 approaches so elbows do not coincide.504. **Check geometry before rendering.** Expand waypoints into actual orthogonal51 segments; check box intersections, perpendicular edge intersections, collinear52 overlaps, and parallel clearances. Waypoint comparisons alone miss crossings.535. **Inspect the rendered PNG.** Any accidental X or overlapping/doubled stroke is54 a failure, even outside containers. Reroute and render again.5556If the graph cannot be drawn without crossings in one view, split it into clearly57linked views or introduce labeled continuation connectors without losing relationships.58Do not hide a dependency merely to pass the layout check.59Generated SVG paths must preserve the source routing using orthogonal `M`/`L` segments,60arrow markers, and movable groups such as `<g transform="translate()">`.6162## Microsoft icons: approved sources and selection63**Search across the approved sources to find the correct product or service icon;64do not restrict discovery or downloads to a single pack.** Multiple sources may be65used in one diagram. Prefer current Microsoft-published assets when available;66the approved community catalogs below are also valid discovery and download sources,67not Microsoft publishers. Verify the identity and provenance of each selected asset.6869| Source | Use and provenance |70| --- | --- |71| [MsiconsCollections](https://aka.ms/MsiconsCollections) | Broad collection; resolve the link and verify the selected pack and asset. |72| [Azure Architecture Center](https://learn.microsoft.com/en-us/azure/architecture/icons/) | Microsoft-published Azure SVG pack, update history, and usage terms; preferred reference for Azure service icons. |73| [az-icons.com](https://az-icons.com/) | Community catalog offering Azure SVG/PNG assets sourced from the Azure architecture pack; verify the stated pack version and exact service. |74| [Power Platform icons](https://learn.microsoft.com/en-us/power-platform/guidance/icons) | Microsoft-published Power Platform SVG pack, update history, and usage terms; preferred reference for these products. |75| [DamoBird365/microsoft-cloud-icons](https://github.com/DamoBird365/microsoft-cloud-icons/tree/master) | Community-curated Microsoft Cloud product SVG/PNG collection; use its `icons.json` index and verify the asset, revision, and trademark notice. |7677Do not use FontAwesome, unverified built-in mxGraph service icons, arbitrary images,78or hand-drawn replacement logos to stand in for Microsoft products.79Plain labeled rectangles and connectors are diagram primitives, not substitute icons.8081- Resolve download links from the selected source rather than guessing filenames or82 freezing a pack version or icon count into the workflow. For MsiconsCollections,83 its previously used asset base is84 `https://tomkiljo.github.io/ms-icons/icons/`; verify that it still belongs to the85 linked collection before using it. Official archives and raw asset URLs linked by86 the approved sources are valid download endpoints.87- Search by exact product/service name and current or former names. If the first pack88 lacks the correct icon, consult the other relevant approved sources before declaring89 it missing. Prefer semantic accuracy and current branding over matching a pack's style.90 Resolve conflicting variants against the current Microsoft product guidance.91- Record the source page, asset path, resolved download URL, and pack version or commit92 (where available). Record the retrieval date when no version is exposed. For community93 assets, verify their claimed Microsoft origin against official guidance where possible;94 do not treat a repository description as proof for every file.95- Reuse cached assets only with known provenance. If relevant sources are unavailable96 or no verified match exists, disclose which checks failed and use a labeled rectangle97 without an icon. Never silently substitute another product's logo.98- Follow the source's usage terms and Microsoft trademark guidance. Keep the product99 name near the icon; preserve its colors, shape, and aspect ratio. Do not crop, flip,100 rotate, distort, or use a Microsoft icon to represent a custom product.101- In drawio, use `shape=image;image=<URL>` or a label node with102 `image=<URL>;imageAlign=left;imageVerticalAlign=middle`.103- Verify the selected source and asset meaning. Do not relabel a generic Microsoft104 logo as a dedicated Microsoft 365, Teams, or Graph product logo. Building glyphs such105 as `office01..14` are not Office product logos.106107### MsiconsCollections path reference (non-exhaustive)108These inherited paths are lookup candidates, not a claim of current availability or109an instruction to add these services. They do not limit discovery to this collection.110Verify each selected path before use and check newer packs for renamed products.111112```text113# Historical base: https://tomkiljo.github.io/ms-icons/icons/114# Verify that it is still linked by https://aka.ms/MsiconsCollections before use.115Function Apps Azure_Public_Service_Icons/Icons/compute/10029-icon-service-Function-Apps.svg116Storage Accounts Azure_Public_Service_Icons/Icons/storage/10086-icon-service-Storage-Accounts.svg117Managed Identities Azure_Public_Service_Icons/Icons/identity/10227-icon-service-Managed-Identities.svg118Application Insights Azure_Public_Service_Icons/Icons/management%20+%20governance/00012-icon-service-Application-Insights.svg119AI Studio / Foundry Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/03513-icon-service-AI-Studio.svg120Azure OpenAI Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/03438-icon-service-Azure-OpenAI.svg121Cognitive Search Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/10044-icon-service-Cognitive-Search.svg122Cognitive Services Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/10162-icon-service-Cognitive-Services.svg123Entra ID (color) Microsoft_Entra_architecture_icons/Microsoft%20Entra%20color%20icons%20SVG/Microsoft%20Entra%20ID%20color%20icon.svg124Microsoft logo Azure_UX_Patterns_icons/microsoft.svg125Microsoft squares Azure_UX_Patterns_icons/microsoft-square.svg126Copilot Azure_UX_Patterns_icons/copilot.svg127Fabric (general) Microsoft_Fabric_icons/general/<lakehouse_64_item|sql_database_64_item|data_warehouse_64_item|event_house_64_item|power_bi_32_color|notebook_64_item|one_lake_48_color|function_64_item|copilot_48_color|app_development_48_color|fabric_48_color|data_factory_48_color>.svg128Teams Bot Microsoft_365_Content_Icons/Teams%20Purple/48x48%20Dark%20Purple%20Icon/Bot.svg129Teams Chat (client) Microsoft_365_Content_Icons/Teams%20Purple/48x48%20Dark%20Purple%20Icon/Chat.svg130Person Microsoft_365_Content_Icons/Microsoft%20Blue/48x48%20Dark%20Blue%20Icon/Person.svg131Container Registry Azure_Public_Service_Icons/Icons/containers/10105-icon-service-Container-Registries.svg132Container Apps Env Azure_Public_Service_Icons/Icons/other/02989-icon-service-Container-Apps-Environments.svg133Worker Container App Azure_Public_Service_Icons/Icons/other/02884-icon-service-Worker-Container-App.svg134Service Bus Azure_Public_Service_Icons/Icons/integration/10836-icon-service-Azure-Service-Bus.svg135Cosmos DB Azure_Public_Service_Icons/Icons/databases/10121-icon-service-Azure-Cosmos-DB.svg136PostgreSQL Flexible Azure_Public_Service_Icons/Icons/databases/10131-icon-service-Azure-Database-PostgreSQL-Server.svg137Azure Maps Azure_Public_Service_Icons/Icons/iot/10185-icon-service-Azure-Maps-Accounts.svg138Log Analytics Azure_Public_Service_Icons/Icons/analytics/00009-icon-service-Log-Analytics-Workspaces.svg139Virtual Networks Azure_Public_Service_Icons/Icons/networking/10061-icon-service-Virtual-Networks.svg140Subnet Azure_Public_Service_Icons/Icons/networking/02742-icon-service-Subnet.svg141NAT Gateway Azure_Public_Service_Icons/Icons/networking/10310-icon-service-NAT.svg142Public IP Azure_Public_Service_Icons/Icons/networking/10069-icon-service-Public-IP-Addresses.svg143Private Endpoints Azure_Public_Service_Icons/Icons/other/02579-icon-service-Private-Endpoints.svg144DNS Zones Azure_Public_Service_Icons/Icons/networking/10064-icon-service-DNS-Zones.svg145Browser (SPA/client) Azure_Public_Service_Icons/Icons/general/10783-icon-service-Browser.svg146Globe (external API) Azure_Public_Service_Icons/Icons/general/10808-icon-service-Globe-Success.svg147Keys Azure_Public_Service_Icons/Icons/menu/00787-icon-service-Keys.svg148Azure Bot Service Azure_Public_Service_Icons/Icons/ai%20+%20machine%20learning/10165-icon-service-Bot-Services.svg149Fabric Copilot Microsoft_Fabric_icons/general/copilot_48_color.svg150Policy Azure_Public_Service_Icons/Icons/management%20+%20governance/10316-icon-service-Policy.svg151```152Preserve URL encoding in paths (for example `%20` for spaces); avoid double encoding.153The Fabric alternatives above describe individual filenames, not one literal URL.154155## Foundry pattern (only when present)156Apply this pattern only when the implementation actually uses a Foundry project and157Agent Service. Application agents, development assistants, and Azure Bot Service are158not interchangeable with Foundry-hosted agents.1591601. Show the project as a dedicated square-cornered dashed frame with a short title and161 a small verified Foundry icon. Use the current diagram palette, not a fixed theme.1622. Place each actual agent near its dependencies, with enough room around its edges.163 Use a titled rectangle with an internal icon for long names rather than a caption164 that overflows into neighboring components. Show the actual agent count if useful.1653. Distinguish **model**, **knowledge**, and **tool** connections where they exist.166 Use solid lines for model/knowledge and dashed lines for tools, with a legend or167 short labels. Connect to the real deployment, data source, or API. Do not invent168 any of these connections; ordinary retrieval is not automatically Foundry IQ.1694. Keep external resources outside the project ownership boundary, even when a project170 connection points to them. Distinguish integration from resource ownership.1715. Verify current icon availability across the relevant approved sources, including the172 current Azure pack for Foundry Projects, Models, and Agent Service. If there is no dedicated173 Agent Service icon, use the verified Foundry platform icon with an explicit label.174 Do not substitute the Azure Bot Service icon for a Foundry agent.1756. Show a Teams or other publication surface only when it is implemented, using an176 accurately labeled asset from an approved source or an icon-free rectangle.177178## Prevent label overlaps179- For 48 px icons with two-line captions, start with at least **150 px** center spacing;180 measure the rendered text and widen, shorten, wrap, or stack nodes as necessary.181- Never place an edge label over an icon, another label, or a routing corridor.182 Open a gutter of at least **40 px** and use a short label that fits, or remove the183 edge label (`value=""`) and put the connection type in the target caption or legend.184- Verify the actual renderer's handling of `verticalLabelPosition`, `align`, wrapping,185 and offsets. Do not assume all exporters honor the same mxGraph styles.186- Keep routing corridors clear of every box and caption, including container titles.187188## Rendering and validation189The `.drawio` file is the **single source of truth**. Generate SVG and PNG from it;190do not hand-edit exports independently.1911921. Reuse the repository's renderer or an available drawio exporter. Do not assume193 headless Chrome, a CLI, Node.js, or a particular script path is installed.1942. If no exporter is available, state the limitation and agree on a fallback. A Node195 mxGraph-to-SVG converter plus `@resvg/resvg-js` is an option, but must support the196 source's styles, text, parent offsets, and routing; do not silently drop features.1973. Prefer SVG assets from the approved sources and inline them as nested `<svg>`198 elements with `viewBox`. If only a verified PNG is available, embed it as a data URI199 without upscaling beyond usable resolution; do not invent a vector replacement.200 Prefix IDs per instance and update references to gradients, masks, and clip paths.201 Remove scripts and external asset references; do not load fonts, CSS, or images202 over the network. XML namespace URIs and local `url(#id)` references are allowed.2034. Default omitted numeric coordinates to zero when parsing mxGraph. Derive orthogonal204 elbows from anchors and waypoints rather than connecting waypoints diagonally.2055. Parse both XML files, run available geometry checks, rasterize the SVG at the206 consumer's required resolution, then inspect the PNG and its documentation embedding.207 Report unavailable checks instead of claiming they passed.208209### Arrowheads210- End each arrow perpendicular to, and touching, the target boundary.211- Keep the final approach segment at least **15 px** long to avoid unstable orientation.212- Set `entryX/entryY` explicitly on the intended border.213- Verify marker support in the selected renderer. For end markers, `orient="auto"`214 is a useful fallback when `auto-start-reverse` renders incorrectly. Inspect upward,215 downward, leftward, and rightward arrows wherever those directions occur.216217## Update triggers and consumer synchronization218Update the source and regenerate its exports when a change affects the architecture219depicted: components, dependencies, runtime agents, networks, identity, ingress, or220deployment boundaries. Discover relevant IaC/code paths rather than hardcoding them.221A formatting-only IaC edit or a development-assistant instruction change does not by222itself require a runtime diagram update.223224Find existing references to the diagram in documentation and presentations. Update225paths, captions, copies, and rendered decks **only where those consumers exist**.226Do not assume a video directory, slide framework, or deck is present, and do not227create one solely to satisfy this skill. Keep updates together in the proposed change;228respect repository commit rules and publish only when authorized.229230## Verification checklist231Mark conditional items not applicable with a reason rather than inventing components.232233- [ ] Paths, labels, stable IDs, dependencies, and boundaries reflect the current project.234- [ ] Icons come from the approved sources above or their linked download endpoints;235 discovery was not limited to the inherited MsiconsCollections path list.236- [ ] Each icon's product identity, current variant, provenance, source/download URLs,237 version or retrieval date, and usage terms are checked; community catalogs are not mislabeled as Microsoft publishers.238- [ ] Missing matches were sought in other relevant approved sources before using239 labeled rectangles without substitute logos; unavailable sources and verification gaps are disclosed.240- [ ] Logical columns, square corners, facing boundary placement, and readable colors are preserved.241- [ ] If Foundry is present: actual agents and existing typed connections are shown;242 ownership is distinct from integration. Otherwise the Foundry pattern is not applicable.243- [ ] No icon, box, edge label, caption, or container title overlaps another or a routing corridor.244- [ ] Drawio and SVG XML parse successfully; SVG and PNG were generated from the same source.245- [ ] No edge crosses an unrelated box; no accidental edge crossing or overlapping stroke exists,246 including outside containers. Shared buses are explicit; overlapping parallel spans are 16 px apart.247- [ ] Geometry checks cover full segments, not just waypoints; rendered PNG was visually inspected.248- [ ] Arrowheads touch target borders perpendicularly, with at least 15 px final approaches;249 every direction present in the diagram was checked in the rendered output.250- [ ] SVG contains embedded verified icons, unique IDs, and no external asset dependencies;251 icon appearance and aspect ratios are preserved.252- [ ] Existing documentation/deck consumers are synchronized and their image links resolve;253 absent consumers are marked not applicable.254- [ ] Temporary artifacts are cleaned up; unavailable checks are disclosed; no unauthorized commit or push.
Run npx skillmds@latest add olivmertens/architecture-diagram-author in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Create and maintain editable drawio architecture diagrams and matching self-contained SVG and PNG exports. Use for architecture diagrams, technical schematics, drawio updates, crossing arrows, overlapping labels, and Microsoft service icons. Apply logical columns, dedicated routing lanes, square-cornered colored rectangles, and synchronization with existing documentation or decks. Find accurate Microsoft icons across MsiconsCollections, Microsoft Learn Azure and Power Platform packs, az-icons.com, and DamoBird365/microsoft-cloud-icons. Verify provenance and current product identity. Project-agnostic: discover paths, labels, identifiers, architecture, and rendering tools from the current repository rather than assuming a stack. It is listed under DevOps & Infra on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
olivMertens (@olivmertens) published this skill. Their other Agent Skills are listed on their SkillMD profile.