draw-io-diagram-generator
Use when creating, editing, or generating draw.io diagram files (.drawio, .drawio.svg, .drawio.png). Covers mxGraph XML authoring, shape libraries, style strings, flowcharts, system architecture, sequence diagrams, ER diagrams, UML class diagrams, network topology, layout strategy, the hediet.vscode…
Install / Use
npx skills add github/awesome-copilot --skill draw-io-diagram-generatorInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Tags
Our assessment of draw-io-diagram-generator
draw-io-diagram-generator scores 90/100 on our quality scale, 281st of 1,111 Automation skills we index (top 26%).
Its SKILL.md is 19 KB long, well organised into 33 sections with 10 code examples: a thorough specification that gives an agent plenty to work with.
With 39,348 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated yesterday, so draw-io-diagram-generator is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
draw-io-diagram-generator compared with similar skills
All 4 of these similar skills score higher than draw-io-diagram-generator; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| draw-io-diagram-generator (this skill)by github | 90 | 39.3k | 1d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 85.4k | 9d ago | CLAUDE.md |
| rufloby ruvnet | 100 | 73.2k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 83.5k | today | MCP Server |
| algorithmic-artby anthropics | 100 | 177.9k | 2d ago | SKILL.md |
Frequently asked questions
- How do I install draw-io-diagram-generator?
- Run
npx skills add github/awesome-copilot --skill draw-io-diagram-generator. The install tabs above show the steps for each supported agent. - Which AI agents does draw-io-diagram-generator work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is draw-io-diagram-generator safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is draw-io-diagram-generator still maintained?
- The repository was last updated yesterday, so draw-io-diagram-generator is actively maintained.
Skill content
View source on GitHubname: draw-io-diagram-generator description: Use when creating, editing, or generating draw.io diagram files (.drawio, .drawio.svg, .drawio.png). Covers mxGraph XML authoring, shape libraries, style strings, flowcharts, system architecture, sequence diagrams, ER diagrams, UML class diagrams, network topology, layout strategy, the hediet.vscode-drawio VS Code extension, and the full agent workflow from request to a ready-to-open file.
Draw.io Diagram Generator
This skill enables you to generate, edit, and validate draw.io (.drawio) diagram files with
correct mxGraph XML structure. All generated files open immediately in the
Draw.io VS Code extension
(hediet.vscode-drawio) without any manual fixes required. You can also open the files in the draw.io web app or desktop app if you prefer.
1. When to Use This Skill
Trigger phrases (load this skill when you see these)
- "create a diagram", "draw a flowchart", "generate an architecture diagram"
- "design a sequence diagram", "make a UML class diagram", "build an ER diagram"
- "add a .drawio file", "update the diagram", "visualise the flow"
- "document the architecture", "show the data model", "diagram the service interactions"
- Any request to produce or modify a
.drawio,.drawio.svg, or.drawio.pngfile
Supported diagram types
| Diagram Type | Template Available | Description |
|---|---|---|
| Flowchart | assets/templates/flowchart.drawio | Process flows with decisions and branches |
| System Architecture | assets/templates/architecture.drawio | Multi-tier / layered service architecture |
| Sequence Diagram | assets/templates/sequence.drawio | Actor lifelines and timed message flows |
| ER Diagram | assets/templates/er-diagram.drawio | Database tables with relationships |
| UML Class Diagram | assets/templates/uml-class.drawio | Classes, interfaces, enums, relationships |
| Network Topology | (use shape library) | Routers, servers, firewalls, subnets |
| BPMN Workflow | (use shape library) | Business process events, tasks, gateways |
| Mind Map | (manual) | Central topic with radiating branches |
2. Prerequisites
- If running with VS Code integration enabled, Install the drawio extension: draw.io VS Code extension —
hediet.vscode-drawio(extension id). Install with:ext install hediet.vscode-drawio - Supported file extensions:
.drawio,.drawio.svg,.drawio.png - Python 3.8+ (optional) — for the validation and shape-insertion scripts in
scripts/
3. Step-by-Step Agent Workflow
Follow these steps in order for every diagram generation task.
Step 1 — Understand the Request
Ask or infer:
- Diagram type — What kind of diagram? (flowchart, architecture, UML, ER, sequence, network...)
- Entities / actors — What are the main components, actors, classes, or tables?
- Relationships — How are they connected? What direction? What cardinality?
- Output path — Where should the
.drawiofile be saved? - Existing file — Are we creating new or editing an existing file?
If the request is ambiguous, infer the most sensible diagram type from context (e.g. "show the tables" → ER diagram, "show how the API call flows" → sequence diagram).
Step 2 — Select a Template or Start Fresh
- Use a template when the diagram type matches one in
assets/templates/. Copy the template structure and replace placeholder values. - Start fresh for novel layouts. Begin with the minimal valid skeleton:
<!-- Set modified="" to the current ISO 8601 timestamp when generating a new file -->
<mxfile host="Electron" modified="" version="26.0.0">
<diagram id="page-1" name="Page-1">
<mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1"
tooltips="1" connect="1" arrows="1" fold="1"
page="1" pageScale="1" pageWidth="1169" pageHeight="827"
math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- Your cells go here -->
</root>
</mxGraphModel>
</diagram>
</mxfile>
Rule: ids
0and1are ALWAYS required and must be the first two cells. Never reuse them.
Step 3 — Plan the Layout
Before generating XML, sketch the logical placement:
- Organise into rows or tiers (use swimlanes for layers)
- Horizontal spacing: 40–60px between same-row shapes
- Vertical spacing: 80–120px between tier rows
- Standard shape size:
120x60px for process boxes,160x80px for swimlanes - Default canvas: A4 landscape =
1169 x 827px
Step 4 — Generate the mxGraph XML
Vertex cell (every shape):
<mxCell id="unique-id" value="Label"
style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;"
vertex="1" parent="1">
<mxGeometry x="100" y="100" width="120" height="60" as="geometry" />
</mxCell>
Edge cell (every connector):
<mxCell id="edge-id" value="Label (optional)"
style="edgeStyle=orthogonalEdgeStyle;html=1;"
edge="1" source="source-id" target="target-id" parent="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
Critical rules:
- Every cell id must be globally unique within the file
- Every vertex must have an
mxGeometrychild withx,y,width,height,as="geometry" - Every edge must have
sourceandtargetmatching existing vertex ids — exception: floating edges (e.g. sequence diagram lifelines) usesourcePoint/targetPointinside<mxGeometry>instead; see §4 Sequence Diagram - Every cell's
parentmust reference an existing cell id - Use
html=1in style when the label contains HTML (<b>,<i>,<br>) - Escape XML special characters in labels:
&=>&,<=><,>=>>
Step 5 — Apply Correct Styles
Use the standard semantic color palette for consistency:
| Purpose | fillColor | strokeColor |
|---|---|---|
| Primary / Info | #dae8fc | #6c8ebf |
| Success / Start | #d5e8d4 | #82b366 |
| Warning / Decision | #fff2cc | #d6b656 |
| Error / End | #f8cecc | #b85450 |
| Neutral | #f5f5f5 | #666666 |
| External / Partner | #e1d5e7 | #9673a6 |
Common style strings by diagram type:
# Rounded process box (flowchart)
rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;
# Decision diamond
rhombus;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;
# Start/End terminal
ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;
# Database cylinder
shape=mxgraph.flowchart.database;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;
# Swimlane container (tier)
swimlane;startSize=30;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;
# UML class box
swimlane;fontStyle=1;align=center;startSize=40;fillColor=#dae8fc;strokeColor=#6c8ebf;
# Interface / stereotype box
swimlane;fontStyle=3;align=center;startSize=40;fillColor=#f5f5f5;strokeColor=#666666;
# ER table container
shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;
# Orthogonal connector
edgeStyle=orthogonalEdgeStyle;html=1;
# ER relationship (crow's foot)
edgeStyle=entityRelationEdgeStyle;html=1;endArrow=ERmany;startArrow=ERone;
See
references/style-reference.mdfor the complete style key catalog andreferences/shape-libraries.mdfor all shape library names.
Step 6 — Save and Validate
- Write the file to the requested path with
.drawioextension - Run the validator (optional but recommended):
python .github/skills/draw-io-diagram-generator/scripts/validate-drawio.py <path-to-file.drawio> - Tell the user how to open the file:
"Open
<filename>in VS Code — it will render automatically with the draw.io extension. You can use draw.io's web app or desktop app as well if you prefer." - Provide a brief description of what is in the diagram so the user knows what to expect.
4. Diagram-Type Recipes
Flowchart
Key elements: Start (ellipse) => Process (rounded rectangle) => Decision (diamond) => End (ellipse)
<!-- Start node -->
<mxCell id="start" value="Start"
style="ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;"
vertex="1" parent="1">
<mxGeometry x="500" y="80" width="120" height="60" as="geometry" />
</mxCell>
<!-- Process -->
<mxCell id="p1" value="Process Step"
style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;"
vertex="1" parent="1">
<mxGeometry x="500" y="200" width="120" height="60" as="geometry" />
</mxCell>
<!-- Decision -->
<mxCell id="d1" value="Condition?"
style="rhombus;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;"
vertex="1" parent="1">
<mxGeometry x="460" y="320" width="200" height="100" as="geometry" />
</mxCell>
<!-- Arrow: start to p1 -->
<mxCell id="e1" value=""
style="edgeStyle=orthogonalEdgeStyle;html=1;"
edge="1" source="start" target="p1" parent="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
Architecture Diagram (3-tier)
Use swimlane containers for each tier. All service boxes are children of their swimlane.
<!-- Tier swimlane -->
<mxCell id="tier1" value="Client Layer"
style="swimlane;startSize=30;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;"
vertex="1" parent="1">
<mxGeometry x="60" y="100" width="1050" height="130" as="geometry" />
</mxCell>
<!-- Service inside tier (parent="tier1", coords are relative to tier) -->
<mxCell id="webapp" value="Web App"
style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;"
vertex="1" parent="tier1">
<mxGeometry x="80" y="40" width="120" height="60" as="geometry" />
</mxCell>
Connectors between tiers use absolute coordinates with
parent="1".
Sequence Diagram
Key elements: Actors (top), Lifelines (dashed vertical lines), Activation boxes, Message arrows.
- Lifelines:
edge="1"withendArrow=noneanddashed=1, no source/target — usesourcePoint/targetPointin geometry - Synchronous message:
endArrow=block;endFill=1 - Return message:
endArrow=open;endFill=0;dashed=1 - Self-call: loop the edge via two Array points to the right and back
Minimal XML snippet:
<!-- Actor (stick figure) -->
<mxCell id="actorA" value="Client"
style="shape=mxgraph.uml.actor;pointerEvents=1;dashed=0;whiteSpace=wrap;html=1;aspect=fixed;"
vertex="1" parent="1">
<mxGeometry x="110" y="80" width="60" height="80" as="geometry" />
</mxCell>
<!-- Service box -->
<mxCell id="actorB" value="API Server"
style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;"
vertex="1" parent="1">
<mxGeometry x="480" y="100" width="160" height="60" as="geometry" />
</mxCell>
<!-- Lifeline — floating edge: uses sourcePoint/targetPoint, NOT source/target attributes -->
<mxCell id="lifA" value=""
style="edgeStyle=none;dashed=1;endArrow=none;"
edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="140" y="160" as="sourcePoint" />
<mxPoint x="140" y="700" as="targetPoint" />
</mxGeometry>
</mxCell>
<!-- Activation box (thin rectangle on lifeline) -->
<mxCell id="actA1" value=""
style="fillColor=#dae8fc;strokeColor=#6c8ebf;"
vertex="1" parent="1">
<mxGeometry x="130" y="220" width="20" height="180" as="geometry" />
</mxCell>
<!-- Synchronous message -->
<mxCell id="msg1" value="POST /orders"
style="edgeStyle=elbowEdgeStyle;elbow=vertical;html=1;endArrow=block;endFill=1;"
edge="1" source="actA1" target="actorB" parent="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Return message (dashed) -->
<mxCell id="msg2" value="201 Created"
style="edgeStyle=elbowEdgeStyle;elbow=vertical;
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
85.4kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
ruflo
73.2k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
Scrapling
83.5k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
