The Claude drawio skill: 10 PMP-grade diagrams in one prompt
Ten real .drawio diagrams — AWS reference architecture, C4 system context, OAuth sequence, ERD, multi-AZ network, PMP swim-lane, radial mind map, Kubernetes topology, org chart, decision-tree runbook — each as a single Claude prompt with the exact mxCell XML it produces.
Already know what skills are? Skip to the cookbook. First time? Read the explainer then come back. Need the install? It’s on the /skills/drawio-diagrams-enhanced page.

On this page · 21 sections▾
- What this skill does
- The cookbook
- Install + README
- Watch it built
- 01 · AWS reference architecture
- 02 · C4 system context diagram
- 03 · OAuth 2.0 authorization-code sequence
- 04 · ER diagram with crow's-foot notation
- 05 · Multi-AZ network topology
- 06 · PMP swim-lane process map
- 07 · Radial mind map
- 08 · Kubernetes topology
- 09 · Org chart
- 10 · Decision-tree runbook
- Community signal
- The contrarian take
- Real diagrams shipped
- Gotchas
- Pairs well with
- FAQ
- Sources
What this skill actually does
Sixty seconds of context before the cookbook — what the drawio skill is, what Claude returns when you invoke it, and the one thing it does NOT do for you.
What this skill actually does
“Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates.”
— jgtolentino, the skill author · /skills/drawio-diagrams-enhanced
What Claude returns
When triggered, Claude returns a complete `<mxfile>` document wrapping one or more `<diagram>` pages, each populated with `<mxCell>` shapes whose `<mxGeometry>` carries explicit x, y, width, and height. Coordinates align to a 10-pixel grid (`gridSize="10"`) and shapes use a fixed scale: 80x40 small, 120x60 medium, 160x80 large, 200x80 project-level. Custom stencils load via `https://jgraph.github.io/drawio-libs/libs/<name>.xml` — AWS, Azure, GCP, Kubernetes, Cisco, Material Design Icons, Font Awesome — and PMBOK fills (init #d5e8d4, plan #dae8fc, execute #ffe6cc, M&C #fff2cc, close #e1d5e7) are baked in.
What it does NOT do
It does not install the draw.io desktop app or the VS Code Draw.io Integration extension for you, and it does not render PNG/SVG/PDF — you open the returned `.drawio` file in app.diagrams.net or the VS Code extension to view or export.
How you trigger it
draw an AWS architecture for a 3-tier web app with RDS and ALBmake a swim-lane diagram for our PMP procurement process with PMBOK colorscreate a C4 system context diagram of the auth service in .drawio formatCost when idle
~100 tokens at idle (skill name + description in the system prompt). The body of SKILL.md and the AWS/Cisco/K8s shape libraries load only when the skill is triggered.
The cookbook
Each entry below is a diagram you could ship this week. They run in the order I’d teach them — the early ones use the everyday shape libraries (AWS, generic process flow), the later ones lean on draw.io features you only need when the deliverable gets serious (UML lifelines, ER crow’s-foot, mxCell rotation for mind maps). Every entry pairs with one or two skills or MCP servers you already have on mcp.directory.
Install + README
If the skill isn’t on your machine yet, here’s the one-liner. The full install panel (Codex, Copilot, Antigravity variants) is on the skill page.
One-line install · by jgtolentino
Open skill pageInstall
mkdir -p .claude/skills/drawio-diagrams-enhanced && curl -L -o skill.zip "https://mcp.directory/api/skills/download/75" && unzip -o skill.zip -d .claude/skills/drawio-diagrams-enhanced && rm skill.zipInstalls to .claude/skills/drawio-diagrams-enhanced
Watch it built
A clean walkthrough of the draw.io editor and the .drawio file format — useful before the cookbook because it anchors what each output snippet looks like once you open it inside diagrams.net.
AWS reference architecture
Generate an A3-printable AWS reference architecture for a 3-tier web app — VPC with public/private subnets, ALB, two ECS Fargate tasks, an RDS Multi-AZ, and an S3 bucket — using the official AWS24 stencil so it looks like the AWS docs.
ForSolutions architects and platform engineers writing the diagram for an RFP or runbook.
The prompt
Use the drawio-diagrams-enhanced skill. Read @docs/architecture/aws-3tier-spec.md for the service list. Produce a single-page `.drawio` file (gridSize=10, A3 landscape) of a 3-tier AWS architecture: a single VPC in eu-west-1 with two AZs; in each AZ one public subnet hosting an ALB target and one private subnet hosting an ECS Fargate task; a multi-AZ RDS Postgres in a third (data) private subnet; an S3 bucket for static assets fronted by CloudFront. Use the AWS24 stencil — every service shape must use `shape=mxgraph.aws4.<service>` (vpc, public_subnet, private_subnet, application_load_balancer, ecs, rds, s3, cloudfront). PMBOK colours are not relevant here; use the AWS orange (#F58536) for compute and AWS blue (#3F8624) for managed data. Include orthogonal connectors with traffic-flow labels. Save the file as `docs/diagrams/aws-3tier.drawio`.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="aws3tier" name="AWS 3-tier">
<mxGraphModel dx="1422" dy="757" gridSize="10" pageWidth="1654" pageHeight="1169">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="vpc" value="VPC eu-west-1" style="shape=mxgraph.aws4.vpc;fillColor=#E7157B;strokeColor=#232F3E" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="1560" height="1080" as="geometry"/>
</mxCell>
<mxCell id="alb" value="ALB" style="shape=mxgraph.aws4.application_load_balancer;fillColor=#8C4FFF" vertex="1" parent="1">
<mxGeometry x="720" y="120" width="80" height="80" as="geometry"/>
</mxCell>
<mxCell id="ecs1" value="ECS Fargate AZ-a" style="shape=mxgraph.aws4.fargate;fillColor=#F58536" vertex="1" parent="1">
<mxGeometry x="320" y="320" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="rds" value="RDS Postgres (Multi-AZ)" style="shape=mxgraph.aws4.rds;fillColor=#3F8624" vertex="1" parent="1">
<mxGeometry x="720" y="640" width="160" height="80" as="geometry"/>
</mxCell>
<mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle" edge="1" parent="1" source="alb" target="ecs1"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Swap to a Lambda + API Gateway serverless variant by replacing every `shape=mxgraph.aws4.fargate` with `shape=mxgraph.aws4.lambda` and adding an `mxgraph.aws4.api_gateway` in front of the ALB.
Pairs with
aws-solution-architect
Pairs the visual deliverable with the AWS-specific prose (Well-Architected pillars, cost notes) you would attach to the same RFP.
aws-managed
Lets Claude pull the actual VPC/subnet/ALB IDs from your account before drawing them, so the diagram matches reality instead of a template.
C4 system context diagram
Produce a Simon Brown-style C4 Level 1 system context for an internal auth service: the service in the centre, three persona boxes (employee, contractor, system admin), and four external systems (Okta, Postgres, Vault, the email provider).
ForStaff engineers writing an ADR or onboarding doc that needs the canonical C4 look.
The prompt
Use the drawio-diagrams-enhanced skill with C4 notation. Read @docs/adr/0017-auth-service.md for the actor list. Output `docs/diagrams/c4-l1-auth.drawio` with one page sized 1200x800. Centre the auth service as a C4 software system box (rounded=1; fillColor=#1168bd; strokeColor=#0b4884; fontColor=#ffffff) at x=480,y=320 size 240x120. Place three person actors above (Employee, Contractor, IT Admin) using the C4 person shape (`shape=mxgraph.c4.person2;fillColor=#08427B`). Place four external systems below — Okta, Postgres, Vault, SendGrid — as grey rounded boxes (fillColor=#999999;strokeColor=#6b6b6b). Use solid lines for sync HTTPS and dashed for async webhooks; label every relationship with verb + protocol (e.g. "Authenticates via [HTTPS]"). gridSize=10, snap every shape to the grid.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="c4ctx" name="C4 - System Context">
<mxGraphModel gridSize="10" pageWidth="1200" pageHeight="800">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="emp" value="Employee [Person]" style="shape=mxgraph.c4.person2;fillColor=#08427B;fontColor=#ffffff" vertex="1" parent="1">
<mxGeometry x="120" y="80" width="120" height="160" as="geometry"/>
</mxCell>
<mxCell id="auth" value="Auth Service [Software System]" style="rounded=1;fillColor=#1168bd;strokeColor=#0b4884;fontColor=#ffffff" vertex="1" parent="1">
<mxGeometry x="480" y="320" width="240" height="120" as="geometry"/>
</mxCell>
<mxCell id="okta" value="Okta [External IdP]" style="rounded=1;fillColor=#999999;fontColor=#ffffff" vertex="1" parent="1">
<mxGeometry x="200" y="600" width="160" height="80" as="geometry"/>
</mxCell>
<mxCell id="r1" value="Authenticates via [HTTPS]" style="endArrow=block" edge="1" parent="1" source="emp" target="auth"/>
<mxCell id="r2" value="Federates SAML [HTTPS]" style="endArrow=block;dashed=1" edge="1" parent="1" source="auth" target="okta"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Promote it to a C4 Level 2 (container) view by replacing the single auth-service box with three container boxes — Web App, API, Worker — and re-routing the persona arrows to the Web App box only.
OAuth 2.0 authorization-code sequence
Author a UML sequence diagram with proper lifelines for the OAuth 2.0 authorization-code-with-PKCE flow — Browser, Client, Auth Server, Resource Server — including the redirect, code exchange, token issue, and a refresh round-trip.
ForBackend engineers documenting the auth handshake for a security review.
The prompt
Use the drawio-diagrams-enhanced skill, UML sequence-diagram preset. Read @specs/auth/oauth-pkce.md for the message names. Output `docs/diagrams/oauth-pkce-sequence.drawio` on one A4-portrait page. Place four lifelines top-to-bottom-aligned (Browser at x=120, Client at x=320, Auth Server at x=560, Resource Server at x=800). Each lifeline head is a rectangle 120x40 at y=40; the lifeline itself is a vertical dashed line down to y=720 with `shape=umlLifeline;perimeter=lifelinePerimeter`. Render activation bars as 12-wide rectangles overlapping the lifeline, and messages as `endArrow=open` (sync) or `endArrow=open;dashed=1` (response). Label each arrow with the HTTP verb and one query/body field. Number messages 1..9 with the activation order: 1 GET /authorize?code_challenge, 2 302 redirect to login, 3 user authenticates, 4 302 with code, 5 POST /token with code_verifier, 6 access_token + refresh_token, 7 GET /api with bearer, 8 200 resource, 9 POST /token with refresh_token.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="oauthseq" name="OAuth PKCE">
<mxGraphModel gridSize="10" pageWidth="827" pageHeight="1169">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="b" value="Browser" style="shape=umlLifeline;perimeter=lifelinePerimeter;fillColor=#dae8fc" vertex="1" parent="1">
<mxGeometry x="120" y="40" width="120" height="700" as="geometry"/>
</mxCell>
<mxCell id="c" value="Client App" style="shape=umlLifeline;perimeter=lifelinePerimeter;fillColor=#d5e8d4" vertex="1" parent="1">
<mxGeometry x="320" y="40" width="120" height="700" as="geometry"/>
</mxCell>
<mxCell id="as" value="Auth Server" style="shape=umlLifeline;perimeter=lifelinePerimeter;fillColor=#fff2cc" vertex="1" parent="1">
<mxGeometry x="560" y="40" width="120" height="700" as="geometry"/>
</mxCell>
<mxCell id="m1" value="1: GET /authorize?code_challenge" style="endArrow=open" edge="1" parent="1" source="b" target="as"/>
<mxCell id="m4" value="4: 302 ?code=…" style="endArrow=open;dashed=1" edge="1" parent="1" source="as" target="b"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Convert it to the device-authorization-grant flow by adding a fifth lifeline ("Device") and replacing messages 1-4 with the polling pattern (POST /device_authorization, user_code display, polling /token).
Pairs with
ER diagram with crow's-foot notation
Generate an ER diagram for a four-table schema (users, organizations, memberships, projects) using crow's-foot cardinality so it reads cleanly to a DBA reviewer.
ForBackend engineers writing the schema chapter of a design doc.
The prompt
Use the drawio-diagrams-enhanced skill with the entity-relation preset (`shape=mxgraph.er.*`). Read @db/schema.sql to extract column names. Output `docs/diagrams/erd-core.drawio` 1200x800. Render four entity boxes at fixed positions: users (x=80,y=80), organizations (x=480,y=80), memberships (x=280,y=360), projects (x=720,y=360). Each entity is `shape=table;startSize=30` with rows for every column — type, PK/FK marker, NOT NULL — using sub-cells `shape=partialRectangle`. Foreign-key relationships use crow's-foot endpoints: `startArrow=ERmany;endArrow=ERone` for many-to-one, `startArrow=ERmany;endArrow=ERmany` for the membership join. Label each edge with the FK column and the cardinality phrase ("belongs to", "has many"). Snap every entity to the 10-grid.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="erd" name="Core ERD">
<mxGraphModel gridSize="10" pageWidth="1200" pageHeight="800">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="users" value="users" style="shape=table;startSize=30;fillColor=#dae8fc" vertex="1" parent="1">
<mxGeometry x="80" y="80" width="200" height="160" as="geometry"/>
</mxCell>
<mxCell id="u_id" value="id uuid PK" style="shape=partialRectangle;top=0;left=0;right=0" vertex="1" parent="users">
<mxGeometry y="30" width="200" height="26" as="geometry"/>
</mxCell>
<mxCell id="orgs" value="organizations" style="shape=table;startSize=30;fillColor=#d5e8d4" vertex="1" parent="1">
<mxGeometry x="480" y="80" width="200" height="160" as="geometry"/>
</mxCell>
<mxCell id="rel1" value="user_id" style="startArrow=ERmany;endArrow=ERone" edge="1" parent="1" source="users" target="orgs"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Add an `audit_log` table with a polymorphic `subject_type/subject_id` reference, then connect it to all four core tables with `startArrow=ERmany;endArrow=ERmandOne` to model the polymorphic FK explicitly.
Multi-AZ network topology
Draw a multi-AZ network topology — three AZs, a transit gateway, two VPCs (prod, shared-services), VPN to on-prem, and a NAT gateway per AZ — using the AWS24 networking shapes.
ForNetwork engineers preparing the change-control diagram for a CAB review.
The prompt
Use the drawio-diagrams-enhanced skill. Read @infra/terraform/network.tf for the CIDR blocks. Output `docs/diagrams/network-multi-az.drawio` on a 1654x1169 page. Three AZ swim columns at x=80, x=620, x=1160 (each 380 wide, 1000 tall, fillColor=#dae8fc with 30% opacity). Two VPC bands across the top: prod-vpc 10.0.0.0/16 (y=80,height=440) and shared-svcs-vpc 10.10.0.0/16 (y=560,height=440). In each AZ-VPC cell place a public-subnet shape (`shape=mxgraph.aws4.public_subnet`), a private-subnet shape, and a NAT gateway (`shape=mxgraph.aws4.nat_gateway`). Place a transit gateway (`shape=mxgraph.aws4.transit_gateway`) at x=820,y=520, and a VPN connection (`shape=mxgraph.aws4.vpn_connection`) at x=1480,y=80. Connect every NAT to its IGW and every VPC to the TGW with orthogonal edges. Label each subnet with its CIDR.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="netmaz" name="Multi-AZ network">
<mxGraphModel gridSize="10" pageWidth="1654" pageHeight="1169">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="az_a" value="AZ eu-west-1a" style="rounded=0;fillColor=#dae8fc;opacity=30" vertex="1" parent="1">
<mxGeometry x="80" y="80" width="380" height="1000" as="geometry"/>
</mxCell>
<mxCell id="nat_a" value="NAT GW a" style="shape=mxgraph.aws4.nat_gateway;fillColor=#8C4FFF" vertex="1" parent="1">
<mxGeometry x="160" y="200" width="80" height="80" as="geometry"/>
</mxCell>
<mxCell id="tgw" value="Transit GW" style="shape=mxgraph.aws4.transit_gateway" vertex="1" parent="1">
<mxGeometry x="820" y="520" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle" edge="1" parent="1" source="nat_a" target="tgw"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Swap to Cisco glyphs by replacing `shape=mxgraph.aws4.transit_gateway` with `shape=mxgraph.cisco.routers.router` and the NAT shapes with `shape=mxgraph.cisco.security.firewall` — the same topology, the on-prem look.
PMP swim-lane process map
Build a five-lane PMP cross-functional flowchart for a procurement process (Initiating → Planning → Executing → Monitoring & Controlling → Closing) using the canonical PMBOK fill colours so it passes a PMP audit visually.
ForPMs and PMO leads building the audit binder for a programme review.
The prompt
Use the drawio-diagrams-enhanced skill. Read @docs/pmo/procurement-process.md for the activity list. Output `docs/diagrams/pmp-procurement-swimlane.drawio` on a 1654x1169 A3 page. Render a single horizontal pool with five lanes top-to-bottom — Initiating, Planning, Executing, Monitoring & Controlling, Closing — using the cross-functional pool shape (`shape=swimlane;startSize=20;horizontal=0`). Lane fills MUST follow PMBOK: Initiating #d5e8d4, Planning #dae8fc, Executing #ffe6cc, M&C #fff2cc, Closing #e1d5e7. Place 12 process activities as rounded rectangles (rounded=1, size 120x60) inside their owning lane, each linked left-to-right by orthogonal edges with arrowheads. Add two diamond decisions (`rhombus`) for vendor-shortlist and contract-award gates. Snap every activity to the 10-pixel grid.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="pmpsl" name="PMP Procurement">
<mxGraphModel gridSize="10" pageWidth="1654" pageHeight="1169">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="pool" value="Procurement Process" style="shape=swimlane;startSize=20;horizontal=0" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="1560" height="1080" as="geometry"/>
</mxCell>
<mxCell id="l_init" value="Initiating" style="shape=swimlane;startSize=20;fillColor=#d5e8d4" vertex="1" parent="pool">
<mxGeometry x="0" y="20" width="1560" height="200" as="geometry"/>
</mxCell>
<mxCell id="a_charter" value="Develop Procurement Charter" style="rounded=1;fillColor=#ffffff" vertex="1" parent="l_init">
<mxGeometry x="60" y="80" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="l_plan" value="Planning" style="shape=swimlane;startSize=20;fillColor=#dae8fc" vertex="1" parent="pool">
<mxGeometry x="0" y="220" width="1560" height="200" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Convert the same activities into a RACI matrix on a second page — replace the lane colours with R/A/C/I cell fills (#d5e8d4, #dae8fc, #fff2cc, #e1d5e7) and put role columns instead of process-group rows.
Radial mind map
Author a radial mind map of a programme's risk categories — eight branches around a central node, each with two sub-leaves — using mxCell rotation so the labels stay readable around the circle.
ForPMs prepping the workshop slide for a risk-identification session.
The prompt
Use the drawio-diagrams-enhanced skill. Output `docs/diagrams/risk-mindmap.drawio` 1200x1200 (square). Place a central ellipse "Programme Risk" at x=540,y=540,width=120,height=120 with fillColor=#fad7ac. Place 8 branch nodes evenly around a circle of radius 360 centred on the page centre — at angles 0,45,90,135,180,225,270,315 — each rendered as a 160x60 rounded rectangle with PMBOK colours rotating: Schedule (#dae8fc), Cost (#d5e8d4), Quality (#ffe6cc), Resource (#fff2cc), Comms (#e1d5e7), Risk (#f8cecc), Procurement (#dae8fc), Stakeholder (#d5e8d4). Each branch node uses `rotation=<angle>` so its long axis points outward from the centre. Add two sub-leaves per branch as 100x40 rectangles further along the same radial. Use straight (non-orthogonal) edges from centre to branch (`edgeStyle=none`). Document the rotation logic in a top-left legend cell.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="mindmap" name="Risk mind map">
<mxGraphModel gridSize="10" pageWidth="1200" pageHeight="1200">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="core" value="Programme Risk" style="ellipse;fillColor=#fad7ac;strokeColor=#b46504" vertex="1" parent="1">
<mxGeometry x="540" y="540" width="120" height="120" as="geometry"/>
</mxCell>
<mxCell id="b_sched" value="Schedule" style="rounded=1;fillColor=#dae8fc;rotation=0" vertex="1" parent="1">
<mxGeometry x="900" y="570" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="b_cost" value="Cost" style="rounded=1;fillColor=#d5e8d4;rotation=45" vertex="1" parent="1">
<mxGeometry x="820" y="220" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="e_sched" style="edgeStyle=none" edge="1" parent="1" source="core" target="b_sched"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Re-anchor the radial as a tree by setting rotation=0 on every branch and switching `edgeStyle=none` to `edgeStyle=orthogonalEdgeStyle` — same content, hierarchical look.
Kubernetes topology
Draw a single-cluster Kubernetes topology — control plane on one side, three worker nodes, a Deployment fronting two ReplicaSets, an Ingress with a TLS Secret, and a PersistentVolumeClaim — using the official Kubernetes shape library.
ForPlatform engineers documenting the cluster for a new starter or an SRE handover.
The prompt
Use the drawio-diagrams-enhanced skill. Read @infra/k8s/manifests/*.yaml for resource names. Output `docs/diagrams/k8s-cluster.drawio` 1654x1169. Use `shape=mxgraph.kubernetes.<resource>` throughout — control_plane (kube-apiserver, etcd, scheduler, controller-manager) on the left at x=80,y=80 in a vertical stack; three worker nodes as 240x320 boxes at x=600,x=920,x=1240,y=80. Inside each worker put two pods (`shape=mxgraph.kubernetes.pod`) and a kubelet glyph. Place a Deployment shape spanning the three workers at y=460, two ReplicaSets at y=560, and an Ingress (`shape=mxgraph.kubernetes.ing`) at x=80,y=460 with a Secret glyph attached. Add a PVC + StorageClass cluster at x=600,y=900. All control-plane resources fill #ECECFF, workloads fill #FFF2CC, networking fill #DAE8FC. Connect with orthogonal edges labelled with the API verb (apply, scale, schedule).What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="k8s" name="Cluster topology">
<mxGraphModel gridSize="10" pageWidth="1654" pageHeight="1169">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="api" value="kube-apiserver" style="shape=mxgraph.kubernetes.api;fillColor=#ECECFF" vertex="1" parent="1">
<mxGeometry x="80" y="80" width="160" height="80" as="geometry"/>
</mxCell>
<mxCell id="w1" value="worker-1" style="rounded=0;fillColor=#FFFFFF;strokeColor=#666666" vertex="1" parent="1">
<mxGeometry x="600" y="80" width="240" height="320" as="geometry"/>
</mxCell>
<mxCell id="pod1" value="pod" style="shape=mxgraph.kubernetes.pod;fillColor=#FFF2CC" vertex="1" parent="w1">
<mxGeometry x="20" y="40" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="ing" value="Ingress" style="shape=mxgraph.kubernetes.ing;fillColor=#DAE8FC" vertex="1" parent="1">
<mxGeometry x="80" y="460" width="160" height="80" as="geometry"/>
</mxCell>
<mxCell id="e1" value="schedule" style="edgeStyle=orthogonalEdgeStyle" edge="1" parent="1" source="api" target="w1"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Promote it to a multi-cluster (fleet) view by wrapping everything in a `mxgraph.kubernetes.cluster` group and adding a second cluster cell to the right with a peering edge between the two API servers.
Org chart
Author a five-level org chart for a product organization (CEO → CTO/CPO/COO → directors → managers → ICs) using a tree layout and PMI hierarchy colours so it reads cleanly at A3 print.
ForHR partners and engineering managers preparing the all-hands org slide.
The prompt
Use the drawio-diagrams-enhanced skill. Read @docs/people/org.csv for the role list. Output `docs/diagrams/org-chart.drawio` on an A3 landscape page (1654x1169). Render five levels top-to-bottom with the canonical tree-layout style (`shape=rectangle;rounded=1;tree=1`). Level fills follow PMI hierarchy: L1 CEO #1f497d (white text), L2 C-suite #4f81bd, L3 directors #95b3d7, L4 managers #b8cce4, L5 ICs #dbe5f1. Each box is 200x80 with role title bold and the person's name on a second line. Use `shape=treeRoot` for the CEO, `shape=treeNode` for everyone else. Connectors must be `edgeStyle=orthogonalEdgeStyle;rounded=0` with no arrowheads. Snap every node to the 10-grid; spacing 40 horizontal between siblings, 60 vertical between levels.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="org" name="Org chart">
<mxGraphModel gridSize="10" pageWidth="1654" pageHeight="1169">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="ceo" value="CEO Avery Park" style="rounded=1;fillColor=#1f497d;fontColor=#ffffff;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="720" y="40" width="200" height="80" as="geometry"/>
</mxCell>
<mxCell id="cto" value="CTO Lin Chen" style="rounded=1;fillColor=#4f81bd;fontColor=#ffffff" vertex="1" parent="1">
<mxGeometry x="380" y="180" width="200" height="80" as="geometry"/>
</mxCell>
<mxCell id="cpo" value="CPO Mara Olu" style="rounded=1;fillColor=#4f81bd;fontColor=#ffffff" vertex="1" parent="1">
<mxGeometry x="720" y="180" width="200" height="80" as="geometry"/>
</mxCell>
<mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle;endArrow=none" edge="1" parent="1" source="ceo" target="cto"/>
<mxCell id="e2" style="edgeStyle=orthogonalEdgeStyle;endArrow=none" edge="1" parent="1" source="ceo" target="cpo"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Switch to a matrix-org view by adding dotted lines (`dashed=1`) from each IC to a horizontal "Programme Lead" lane on a second page, so the same people show solid line management and dotted programme line at once.
Decision-tree runbook
Build an on-call decision-tree runbook for an HTTP 5xx alert — root "5xx > 1% for 5 min" branching through three diagnostic checks and ending in five concrete remediations — as a single-page printable A4 sheet.
ForSREs and on-call engineers who need a pageable decision aid at 3am.
The prompt
Use the drawio-diagrams-enhanced skill. Read @docs/runbooks/5xx-alert.md for the decision logic. Output `docs/diagrams/runbook-5xx.drawio` on A4 portrait (827x1169). The root is a rhombus (`shape=rhombus;fillColor=#f8cecc`) at x=320,y=40 size 200x80 labelled "5xx rate > 1% for 5 min?". Three diagnostic decisions branch left-to-right at level 2 (y=200): "Recent deploy?", "Upstream dependency healthy?", "DB connection-pool saturated?" — each rhombus 200x80, fillColor=#fff2cc. Yes/No edges drop to level-3 leaves (y=400) which are rounded rectangles 200x80 with fillColor=#d5e8d4 (action) or #f8cecc (escalate): rollback last deploy, page upstream owner, increase pool size, page DBA, escalate to incident commander. Every edge is labelled "Yes" or "No" and uses `edgeStyle=orthogonalEdgeStyle`. Add a top-bar legend cell stating the SLO and the page target.What slides.md looks like
<mxfile host="app.diagrams.net">
<diagram id="rb5xx" name="5xx runbook">
<mxGraphModel gridSize="10" pageWidth="827" pageHeight="1169">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="root" value="5xx rate > 1% for 5 min?" style="rhombus;fillColor=#f8cecc" vertex="1" parent="1">
<mxGeometry x="320" y="40" width="200" height="80" as="geometry"/>
</mxCell>
<mxCell id="d_deploy" value="Recent deploy?" style="rhombus;fillColor=#fff2cc" vertex="1" parent="1">
<mxGeometry x="80" y="200" width="200" height="80" as="geometry"/>
</mxCell>
<mxCell id="a_rb" value="Roll back last deploy" style="rounded=1;fillColor=#d5e8d4" vertex="1" parent="1">
<mxGeometry x="80" y="400" width="200" height="80" as="geometry"/>
</mxCell>
<mxCell id="e1" value="Yes" style="edgeStyle=orthogonalEdgeStyle" edge="1" parent="1" source="root" target="d_deploy"/>
<mxCell id="e2" value="Yes" style="edgeStyle=orthogonalEdgeStyle" edge="1" parent="1" source="d_deploy" target="a_rb"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>One-line tweak
Add a fourth diagnostic branch "Cert expiry < 7 days?" and a corresponding remediation leaf — same A4 page; just shift the level-2 rhombuses from x=80/x=320/x=560 to x=40/x=240/x=440/x=640 to fit four columns.
Community signal
Three voices from people using draw.io for real work. The first is the diagram-as-code endorsement; the second is the daily-use story inside an enterprise repo; the third is the canonical adoption note from the r/devops community.
“The diagram can be part of documentation of the code in the the same working directory, possibly version controlled.”
fadzlan · Hacker News
Diagram-as-code endorsement on the original Show HN for the VS Code Draw.io Integration — the canonical argument for keeping `.drawio` files alongside the source they document.
“I've always used Draw.io to draw workflows and graphical to-do lists when bootstrapping these type of repositories”
lukasdanin · Hacker News
Daily-use story from the second Show HN thread (collaboratively-edit version) — drawio as the everyday tool inside an enterprise repo workflow.
“draw.io diagrams can be embedded into documentation (e.g., confluence) and are editable in future.”
thisisabug · Hacker News
From the Ask HN thread on sequence diagrams in draw.io — the canonical adoption note: drawio sticks in DevOps and platform teams because Confluence renders the embed and the diagram stays editable years later.
The contrarian take
Not everyone reaches for draw.io. The most honest critique on the Hacker News diagram threads is from mdaniel:
“draw.io is the wrong level of abstraction for sequence diagrams, in my opinion.”
mdaniel · Hacker News
From the Ask HN: Do you have a setup for drawing sequence diagrams with draw.io? thread.
Fair. For a five-node `graph LR; A --> B`, Mermaid is unbeatable — ten lines of text and the README renders it. The drawio skill earns its keep on diagrams that have to look professional in a deliverable: a swim-lane process map for a PMP audit, a network topology with the actual Cisco router glyphs, an A3-printable reference architecture in the brand colour. The cookbook above leans hard into those cases and explicitly hands off to the mermaid, mermaid-expert, and d2-diagram-creator skills when a markdown-embedded diagram would suffice.
One more alternative worth naming: there is no first-party draw.io MCP server. The closest neighbours on mcp.directory are the mermaid, mermaid-chart, and mermaid-diagram-generator servers, plus the excalidraw-mcp-server. None of them author native `.drawio` XML — they emit Mermaid or Excalidraw output. If you need a `.drawio` file in the repo (because your team reviews diagrams in PRs, or because a stakeholder will edit it later in app.diagrams.net), the skill is the right composition.
Real diagrams shipped with draw.io
Concrete examples from public sources. None of these used the Claude skill specifically — they’re here so you have a target shape in mind when you write the prompt.
- asabitov/3-tier-aws-architecture — public 3-tier AWS reference architecture as a `.drawio` file in the repo root
- colinjlacy/draw.io-interactive-diagrams-example — OAuth 2.0 sequence diagram authored in `.drawio` format
- garystafford/draw-io — Ansible AWS DevOps reference diagram and other production `.drawio` files
- philippemerle/Awesome-Kubernetes-Architecture-Diagrams — curated catalog of K8s reference architectures, many in `.drawio`
- jgraph/drawio-diagrams — the official sample-and-template repo (UML, BPMN, network, ERD) maintained by the drawio team
- amrelhusseiny/drawio_network_plot — Python library that emits `.drawio` XML using built-in Cisco icon sets for network HLDs
- rlodbrok/draw.io-repo — community library of templates and samples covering org charts, swim-lanes, and risk matrices
Gotchas (the four that bite)
Sourced from the jgraph/drawio issue tracker and the VS Code Draw.io Show HN thread.
Custom shape libraries need internet
The AWS, Cisco, and Kubernetes stencils load from jgraph.github.io/drawio-libs at render time. If your reviewer is on an air-gapped machine, embed the SVG with `shape=image;image=data:image/svg+xml;base64,...` instead.
Auto-layout is not automatic
Every <mxCell> needs explicit x/y geometry. The skill aligns to a 10px grid, but if you change one shape size by hand, expect to nudge its neighbours. There is no hidden layout engine to fall back on.
Large WBS structures need pagination
A WBS with more than ~40 leaf packages overflows a single A3 page. The skill handles this by splitting across pages, but you have to ask for it — otherwise you get one giant page that prints across multiple sheets.
Style strings are positional
An mxCell `style="rounded=1;fillColor=#dae8fc"` is order-sensitive in subtle ways. If a reviewer hand-edits the file and reorders the keys, the visual diff in your PR will look noisier than the actual change. Lock the convention in a CONTRIBUTING note.
Pairs well with
Curated to match the cookbook’s actual integrations: the diagram-adjacent skills (mermaid, excalidraw-architect, c4-architecture, mermaid-expert) plus the MCP servers the longer use cases (1, 4, 5, 8) lean on.
Related skills
Related MCP servers
Two posts that compose well with this cookbook: What are Claude Code skills? covers the underlying mechanism, and the Slidev skill cookbook shows how to embed your rendered .drawio diagrams inside a presentation deck.
Frequently asked questions
What is the drawio skill and what does it produce?
The drawio skill (drawio-diagrams-enhanced by jgtolentino) is a Claude Code skill that authors `.drawio` files — the native XML format used by diagrams.net (formerly Draw.io). Claude returns an `<mxfile>` wrapper with one or more `<diagram>` pages of `<mxCell>` shapes and orthogonal connectors, ready to open in app.diagrams.net or the VS Code Draw.io Integration extension.
Is there a draw.io MCP server I should use instead of the skill?
Not a first-party one. The closest neighbours on mcp.directory are the Mermaid MCP servers (mermaid, mermaid-chart, mermaid-diagram-generator) and the Excalidraw MCP server, plus a frame0 diagramming server. None of them author native `.drawio` XML — they generate Mermaid or Excalidraw output. If you specifically need a `.drawio` file (because your team reviews diagrams in PRs), the skill is the right composition. If a Mermaid block in markdown is enough, reach for the mermaid MCP servers.
Why is the bare query 'drawio' or 'draw.io' getting impressions on Google but few clicks?
The bare 'drawio' / 'draw.io' query brings up drawio.com and diagrams.net as the top results — the official tool homepage will always win that intent. This blog targets the long-tail variants where developers want a how-to: 'drawio skill', 'claude drawio skill', 'draw io skill claude', 'draw.io skills', plus the 10 specific diagram types in the cookbook (AWS architecture, C4, ERD, swim-lane, BPMN, sequence, network, K8s, org chart, decision tree).
How does the drawio skill handle PMP/PMBOK diagrams (WBS, RACI, risk matrix)?
It bakes the PMBOK colour code into shape fills: Initiating green (#d5e8d4), Planning blue (#dae8fc), Executing orange (#ffe6cc), Monitoring & Controlling yellow (#fff2cc), Closing purple (#e1d5e7). Use case 6 in the cookbook is the canonical PMP swim-lane example. RACI assignment colours follow the same convention (R=green, A=blue, C=yellow, I=purple) and risk matrices use the standard 5x5 probability/impact heat map.
Can the drawio skill use AWS, Cisco, or Kubernetes stencils?
Yes. The skill loads custom shape libraries via `https://jgraph.github.io/drawio-libs/libs/<name>.xml`. The cookbook above demonstrates AWS24 (`shape=mxgraph.aws4.*`) for use case 1, the Kubernetes stencil (`shape=mxgraph.kubernetes.*`) for use case 8, and Cisco network shapes (`shape=mxgraph.cisco.*`) as a tweak in use case 5. Material Design Icons, Font Awesome, and the OSA security architecture libraries are also available.
When should I reach for Mermaid or Excalidraw instead of drawio?
Mermaid wins when the diagram lives inline in markdown (READMEs, ADRs, GitHub issues) and a 10-line `graph LR; A --> B` is enough — the d2-diagram-creator and mermaid-expert skills are tuned for that workflow. Excalidraw wins for whiteboard-style sketches you want to feel hand-drawn. Drawio wins for printable deliverables that need pixel-positioned stencils (AWS icons, Cisco glyphs), brand colours, and a multi-page A3 layout.
Why does the drawio skill output mxCell with x/y geometry instead of a graph DSL?
Because that is how the `.drawio` format works. Every shape in a `.drawio` file is an `<mxCell>` with an `<mxGeometry>` that carries explicit x, y, width, height — there is no implicit layout engine. The skill leans into this by aligning every coordinate to a 10-pixel grid (gridSize='10') and using shape sizes from a fixed scale: small 80x40, medium 120x60, large 160x80, extra large 200x80. The output diffs cleanly in git for the same reason.
Sources
Primary
- drawio-diagrams-enhanced SKILL.md (the skill manifest)
- drawio.com — official tool homepage
- Draw.io default shape styles reference
- jgraph/drawio-libs (the public stencil registry)
- PMI PMBOK Guide standards
Community
- fadzlan — Hacker News
- lukasdanin — Hacker News
- thisisabug — Hacker News
- blntechie — Hacker News
- 2mol — Hacker News
- KallDrexx — Hacker News
Critical and contrarian
Internal