Updated April 2026Cookbook19 min read

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.

Editorial illustration: three connected geometric nodes (circle, square, hexagon) joined by teal arrow lines suggesting an architecture diagram, on a midnight navy background.
On this page · 21 sections
  1. What this skill does
  2. The cookbook
  3. Install + README
  4. Watch it built
  5. 01 · AWS reference architecture
  6. 02 · C4 system context diagram
  7. 03 · OAuth 2.0 authorization-code sequence
  8. 04 · ER diagram with crow's-foot notation
  9. 05 · Multi-AZ network topology
  10. 06 · PMP swim-lane process map
  11. 07 · Radial mind map
  12. 08 · Kubernetes topology
  13. 09 · Org chart
  14. 10 · Decision-tree runbook
  15. Community signal
  16. The contrarian take
  17. Real diagrams shipped
  18. Gotchas
  19. Pairs well with
  20. FAQ
  21. 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 format

Cost 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 page

Install

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.zip

Installs 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.

01

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.

02

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&#10;[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&#10;[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&#10;[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.

03

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).

04

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.

05

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.

06

PMP swim-lane process map

Build a five-lane PMP cross-functional flowchart for a procurement process (Initiating → Planning → Executing → Monitoring &amp; 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 &amp; 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&amp;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.

07

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.

08

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.

09

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&#10;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&#10;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&#10;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.

10

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 &gt; 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.

Source
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.

Source
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.

Source

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.

Source

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.

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.

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 &amp; 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=&apos;10&apos;) 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

Community

Critical and contrarian

Internal

Keep reading