.github/skills/drawio-mcp-diagramming/SKILL.md
Create and edit architecture diagrams using Draw.io MCP (`drawio/create_diagram`) with reliable Azure and AWS icon rendering guidance and troubleshooting. Supports Azure2 and AWS4 icon libraries. Requires Python 3 and internet access to refresh icon catalogs (periodic, not per-run).
npx skillsauth add thomast1906/github-copilot-agent-skills drawio-mcp-diagrammingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to create or update diagrams through the Draw.io MCP tool and to avoid common Azure and AWS icon rendering problems.
See references/REFERENCE.md for reference artifacts and refresh commands.
For non-Azure/non-AWS diagrams, you can skip icon discovery/validation scripts and proceed directly to drawio/create_diagram.
drawio/create_diagramdrawio server:{
"servers": {
"drawio": {
"type": "http",
"url": "https://mcp.draw.io/mcp"
}
}
}
references/azure2-complete-catalog.txtreferences/aws4-complete-catalog.txtmxGraphModel payload using verified icons when applicable.drawio/create_diagram with the XML..drawio wrapped in <mxfile><diagram>...</diagram></mxfile>.Apply these defaults unless the user explicitly asks for a dense/technical view:
1, 2, 3, 4) instead of many edge labels.For worked examples of common layout problems (stacked edges, repeated labels, observability inside VNet, etc.), see references/layout-antipatterns.md.
When creating Azure infrastructure network diagrams with VNets, subnets, and network isolation:
pageWidth="1900" pageHeight="1500"strokeWidth=4) and large containers
fillColor=#fff2cc, strokeColor=#d6b656)fillColor=#d5e8d4, strokeColor=#82b366)fillColor=#dae8fc, strokeColor=#6c8ebf)strokeWidth=2, dashed=1, dashPattern=8 8)
edgeStyle=orthogonalEdgeStyle for clean routing<Array> waypoints for complex routingTraffic Legend Box (bottom-left)
strokeWidth=3)Network Isolation Explanation Box (top-left)
fillColor=#fff9cc)Zone Separation
fillColor=#f5f5f5, strokeColor=#666666)fillColor=#ffe6cc, strokeColor=#d79b00)<mxGraphModel pageWidth="1900" pageHeight="1500">
<!-- VNet Container with thick border -->
<mxCell id="vnet" value="Internal VNet - 10.x.0.0/16"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;
verticalAlign=top;fontSize=16;fontStyle=1;align=center;strokeWidth=4;">
<mxGeometry x="220" y="580" width="1340" height="820"/>
</mxCell>
<!-- Subnet Container with dashed border inside VNet -->
<mxCell id="subnet-app" value="Application Subnet - 10.x.2.0/24"
style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e6f4ea;strokeColor=#82b366;
verticalAlign=top;fontSize=13;fontStyle=1;align=center;strokeWidth=2;dashed=1;dashPattern=8 8;">
<mxGeometry x="260" y="650" width="480" height="340"/>
</mxCell>
<!-- Resources inside subnet -->
<mxCell id="vm" style="image;aspect=fixed;html=1;points=[];align=center;
image=img/lib/azure2/compute/Virtual_Machine.svg;">
<mxGeometry x="300" y="720" width="64" height="59"/>
</mxCell>
<!-- Labeled traffic edge -->
<mxCell id="edge" value="PostgreSQL:5432"
style="edgeStyle=orthogonalEdgeStyle;strokeWidth=2;strokeColor=#6c8ebf;dashed=1;"
edge="1" source="vm" target="postgres">
<mxGeometry relative="1"/>
</mxCell>
</mxGraphModel>
When creating AWS infrastructure network diagrams with VPCs, subnets, and network isolation:
pageWidth="1900" pageHeight="1500"strokeWidth=4) and large containers
fillColor=#d5e8d4, strokeColor=#82b366)fillColor=#dae8fc, strokeColor=#6c8ebf)fillColor=#fff2cc, strokeColor=#d6b656)strokeWidth=2, dashed=1, dashPattern=8 8)
fillColor=#e6f4ea, strokeColor=#82b366)fillColor=#EFF7FF, strokeColor=#6c8ebf)fillColor=#fff3e0, strokeColor=#e6821e)edgeStyle=orthogonalEdgeStyle for clean routingTraffic Legend Box (bottom-left)
Network Isolation Explanation Box (top-left)
Zone Separation
<mxGraphModel pageWidth="1900" pageHeight="1500">
<!-- VPC Container with thick border -->
<mxCell id="vpc" value="Production VPC - 10.x.0.0/16"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;
verticalAlign=top;fontSize=16;fontStyle=1;align=center;strokeWidth=4;">
<mxGeometry x="220" y="200" width="1340" height="1100"/>
</mxCell>
<!-- AZ Container inside VPC -->
<mxCell id="az-a" value="us-east-1a"
style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;
verticalAlign=top;fontSize=13;align=center;strokeWidth=1;dashed=1;">
<mxGeometry x="260" y="280" width="600" height="960"/>
</mxCell>
<!-- Public Subnet inside AZ -->
<mxCell id="subnet-public-a" value="Public Subnet A - 10.x.1.0/24"
style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e6f4ea;strokeColor=#82b366;
verticalAlign=top;fontSize=12;fontStyle=1;align=center;strokeWidth=2;dashed=1;dashPattern=8 8;">
<mxGeometry x="280" y="360" width="550" height="200"/>
</mxCell>
<!-- ALB stencil shape inside subnet -->
<mxCell id="alb" value="ALB"
style="shape=mxgraph.aws4.application_load_balancer;fillColor=#8C4FFF;
fontColor=#ffffff;strokeColor=none;align=center;html=1;">
<mxGeometry x="320" y="410" width="64" height="64"/>
</mxCell>
<!-- Labeled traffic edge -->
<mxCell id="edge-rds" value="PostgreSQL:5432"
style="edgeStyle=orthogonalEdgeStyle;strokeWidth=2;strokeColor=#6c8ebf;dashed=1;"
edge="1" source="alb" target="rds">
<mxGeometry relative="1"/>
</mxCell>
</mxGraphModel>
This section applies only when the diagram includes Azure services/icons.
references/azure2-complete-catalog.txt contains all 648 Azure2 icons.
grep -i "gateway" references/azure2-complete-catalog.txtdrawio/create_diagram.cd .github/skills/drawio-mcp-diagramming/scripts
python3 search_azure2_icons_github.py --max-results 9999 > ../references/azure2-complete-catalog.txt
Azure icon rendering in draw.io can fail for two common reasons:
Wrong style type
shape=mxgraph.azure2.* may not render in some hosts.image;aspect=fixed;html=1;...;image=img/lib/azure2/<category>/<Icon_Name>.svg;Library/environment mismatch
img/lib/azure2/... consistently.app.diagrams.net.This section applies only when the diagram includes AWS services/icons.
Important difference from Azure: AWS4 icons in draw.io are stencil-based, not individual SVG files. They are referenced using
shape=mxgraph.aws4.<name>rather thanimage=img/lib/aws4/.... The catalog lists ready-to-use style strings in this format.
references/aws4-complete-catalog.txt contains all 1,037 AWS4 stencil shape names.
grep -i "lambda" references/aws4-complete-catalog.txtshape=mxgraph.aws4.* style string.drawio/create_diagram.cd .github/skills/drawio-mcp-diagramming/scripts
python3 search_aws4_icons_github.py --max-results 9999 > ../references/aws4-complete-catalog.txt
AWS4 icon rendering in draw.io can fail for two common reasons:
Wrong style approach
image=img/lib/aws4/... — AWS4 icons are stencils, not SVG files.shape=mxgraph.aws4.<name>;fillColor=#E7157B;fontColor=#ffffff;strokeColor=none;fillColor=#ED7100fillColor=#3F8624fillColor=#C7131F (for Aurora/RDS use red)fillColor=#8C4FFFfillColor=#DD344CfillColor=#E7157BfillColor=#232F3E (AWS dark)Library/environment mismatch
mxgraph.aws4 stencil library.app.diagrams.net.Grep the static catalogs — no scripts needed at agent runtime:
Azure:
grep -i "gateway" references/azure2-complete-catalog.txt
grep -i "virtual_machine\|load_balancer\|key_vault" references/azure2-complete-catalog.txt
AWS:
grep -i "lambda" references/aws4-complete-catalog.txt
grep -i "load_balancing\|cloudfront\|route_53" references/aws4-complete-catalog.txt
Use verified paths in diagram cell styles:
Azure (SVG image style):
image;aspect=fixed;html=1;points=[];align=center;image=img/lib/azure2/<category>/<Icon_Name>.svg;
AWS (stencil shape style — AWS4 icons are stencils, not SVG files):
shape=mxgraph.aws4.<shape_name>;fillColor=<service_color>;fontColor=#ffffff;strokeColor=none;
For Azure renderer resilience, absolute URLs also work:
image;aspect=fixed;html=1;...;image=https://raw.githubusercontent.com/jgraph/drawio/dev/src/main/webapp/img/lib/azure2/<category>/<Icon_Name>.svg;
If local rendering still fails, open in app.diagrams.net.
See references/REFERENCE.md for known-good Azure2 and AWS4 icon examples.
If Azure or AWS icons still do not render:
OK, then generate the diagram.MCP: List Servers.MCP: Reset Cached Tools if tool list is stale.image=img/lib/azure2/... for Azure2 icon mode.image=img/lib/aws4/... for AWS4 icon mode.references/azure2-complete-catalog.txt for alternatives.references/aws4-complete-catalog.txt for alternatives.See references/REFERENCE.md for full example prompt templates.
references/azure2-complete-catalog.txt before calling drawio/create_diagram.references/aws4-complete-catalog.txt before calling drawio/create_diagram.drawio/create_diagram only with confirmed icon paths.development
Assess Azure architectures against Well-Architected Framework (WAF) five pillars - Reliability, Security, Cost Optimization, Operational Excellence, and Performance Efficiency. Provide scores and recommendations.
devops
Safe Terraform provider upgrades with automatic resource migration, breaking change detection, and state management using moved blocks. Use when upgrading provider versions, handling removed resources, migrating deprecated syntax, or performing major version upgrades.
development
Comprehensive skills for creating, compiling, debugging, and managing GitHub Agentic Workflows (gh-aw) with best practices and common patterns
tools
Create and edit diagrams on a live Excalidraw canvas using the Excalidraw MCP server. Use when asked to draw, diagram, sketch, or visualise architectures, workflows, data flows, system designs, flowcharts, mind maps, or sequence diagrams. Trigger phrases include "create an excalidraw", "draw me a diagram", "make a flowchart", "visualise the system", "diagram this architecture", "export to PNG/SVG". Can export to PNG, SVG, .excalidraw file, or a shareable URL. Do NOT use for Draw.io or diagrams.net output (use drawio-mcp-diagramming instead).