skills/drawio-diagrams-enhanced/SKILL.md
This skill should be used when the user asks to "create a diagram", "draw a flowchart", "make a swimlane diagram", "create WBS", "generate RACI matrix", "build network diagram", "create org chart", or mentions draw.io, diagrams.net, BPMN, UML, Gantt, PERT, or project management diagrams. Integrates with next-ai-draw-io MCP server for real-time diagram creation and editing.
npx skillsauth add jim60105/copilot-prompt drawio-diagrams-enhancedInstall 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.
Create professional diagrams using the next-ai-draw-io MCP server. Generate mxGraphModel XML for real-time browser preview and editing.
Call start_session tool first to open browser with real-time preview.
Use create_new_diagram tool with mxGraphModel XML (not full mxfile wrapper):
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- shapes here -->
</root>
</mxGraphModel>
Critical constraints:
For modifications, call get_diagram first to see current structure, then use edit_diagram with operations array.
Use get_diagram to retrieve current XML including user's manual edits.
Agents can reference and incorporate shapes from extensive custom libraries:
Icon & Symbol Libraries:
Technology & Infrastructure:
Business & General Purpose:
How to Use Custom Libraries: When generating diagrams that would benefit from specific icons, Agents can note which libraries to enable:
To use this diagram optimally, open it with these custom libraries:
https://app.diagrams.net/?clibs=Uhttps://jgraph.github.io/drawio-libs/libs/templates.xml
For MCP tools, output only mxGraphModel (not full mxfile):
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- shapes here -->
</root>
</mxGraphModel>
For standalone files, use full mxfile wrapper:
<mxfile host="app.diagrams.net">
<diagram id="diagram-1" name="Page-1">
<mxGraphModel dx="1434" dy="759" grid="1" gridSize="10">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- shapes here -->
</root>
</mxGraphModel>
</diagram>
</mxfile>
Everything in draw.io is a cell - shapes, connectors, containers, and even the root elements.
Basic Shape Cell:
<mxCell id="2" value="Process Step" 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>
Connector Cell:
<mxCell id="3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="4">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
x, y: Position (top-left corner)width, height: Dimensionsrelative="1": For connectors (relative positioning)Styles are semicolon-separated key-value pairs:
rounded=1, ellipse, rhombusfillColor=#dae8fc, strokeColor=#6c8ebf, fontColor=#000000fontSize=12, fontStyle=1 (bold=1, italic=2, underline=4)align=center, verticalAlign=middlespacingLeft=10, spacingTop=5WBS uses hierarchical tree structure with boxes connected by lines.
WBS Package Box:
shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontStyle=1;fontSize=10;
WBS Levels:
Activity Node (AON - Activity on Node):
shape=rectangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=0;
Node Structure (divided into sections):
┌─────────────────┐
│ Early Start ES │ Duration
├─────────────────┤
│ Activity Name │
├─────────────────┤
│ Late Start LS │ Late Finish LF
└─────────────────┘
Critical Path Highlighting:
fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=3;
Matrix Container:
swimlane;html=1;startSize=40;fillColor=#f5f5f5;strokeColor=#666666;fontStyle=1;
RACI Cells:
fillColor=#d5e8d4;strokeColor=#82b366;fillColor=#dae8fc;strokeColor=#6c8ebf;fillColor=#fff2cc;strokeColor=#d6b656;fillColor=#e1d5e7;strokeColor=#9673a6;Timeline Bar:
rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;
Milestone Diamond:
rhombus;whiteSpace=wrap;html=1;fillColor=#fa6800;strokeColor=#C73500;fontColor=#000000;
Dependency Arrow:
edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=block;endFill=1;strokeWidth=2;
Risk Matrix Structure:
5x5 grid with:
- X-axis: Impact (Very Low, Low, Medium, High, Very High)
- Y-axis: Probability (Very Low, Low, Medium, High, Very High)
Risk Level Colors:
fillColor=#d5e8d4;strokeColor=#82b366; (Green)fillColor=#fff2cc;strokeColor=#d6b656; (Yellow)fillColor=#ffe6cc;strokeColor=#d79b00; (Orange)fillColor=#f8cecc;strokeColor=#b85450; (Red)Quadrant Structure:
┌─────────────────┬─────────────────┐
│ Manage │ Partner │
│ Closely │ Closely │
│ (High Power, │ (High Power, │
│ High Interest) │ High Interest) │
├─────────────────┼─────────────────┤
│ Keep │ Keep │
│ Satisfied │ Informed │
│ (High Power, │ (Low Power, │
│ Low Interest) │ High Interest) │
└─────────────────┴─────────────────┘
Process (Rectangle):
rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;
Decision (Diamond):
rhombus;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;
Start/End (Rounded Rectangle):
ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;
Document:
shape=document;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;
Data (Parallelogram):
shape=parallelogram;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;
Swimlane Container:
swimlane;html=1;startSize=20;fillColor=#f5f5f5;strokeColor=#666666;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;
Vertical Swimlane:
swimlane;html=1;startSize=20;fillColor=#f5f5f5;strokeColor=#666666;horizontal=0;fontStyle=1;
<mxfile host="app.diagrams.net">
<diagram id="WBS-1" name="Project WBS">
<mxGraphModel dx="1434" dy="759" grid="1" gridSize="10" guides="1">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- Level 0: Project -->
<mxCell id="2" value="Project Name" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;fontStyle=1;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="280" y="40" width="200" height="80" as="geometry"/>
</mxCell>
<!-- Level 1: Major Deliverables -->
<mxCell id="3" value="Deliverable 1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="40" y="160" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="4" value="Deliverable 2" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="240" y="160" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="5" value="Deliverable 3" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="440" y="160" width="160" height="60" as="geometry"/>
</mxCell>
<!-- Connectors -->
<mxCell id="6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="4">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
<mxfile host="app.diagrams.net">
<diagram id="RACI-1" name="RACI Matrix">
<mxGraphModel dx="1434" dy="759" grid="1" gridSize="10" guides="1">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- Matrix Container -->
<mxCell id="2" value="RACI Matrix" style="swimlane;html=1;startSize=40;fillColor=#f5f5f5;strokeColor=#666666;fontStyle=1;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="720" height="400" as="geometry"/>
</mxCell>
<!-- Header Row -->
<mxCell id="3" value="Activities / Tasks" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontStyle=1;" vertex="1" parent="2">
<mxGeometry x="10" y="50" width="180" height="40" as="geometry"/>
</mxCell>
<mxCell id="4" value="Role A" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontStyle=1;" vertex="1" parent="2">
<mxGeometry x="200" y="50" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="5" value="Role B" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontStyle=1;" vertex="1" parent="2">
<mxGeometry x="330" y="50" width="120" height="40" as="geometry"/>
</mxCell>
<!-- Task Rows with RACI Assignments -->
<mxCell id="6" value="Task 1: Define Requirements" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;" vertex="1" parent="2">
<mxGeometry x="10" y="100" width="180" height="50" as="geometry"/>
</mxCell>
<mxCell id="7" value="R" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontStyle=1;fontSize=16;" vertex="1" parent="2">
<mxGeometry x="200" y="100" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="8" value="A" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=16;" vertex="1" parent="2">
<mxGeometry x="330" y="100" width="120" height="50" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
<mxfile host="app.diagrams.net">
<diagram id="Stakeholder-1" name="Stakeholder Map">
<mxGraphModel dx="1434" dy="759" grid="1" gridSize="10" guides="1">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- Grid Background -->
<!-- High Power, High Interest -->
<mxCell id="2" value="Manage Closely<br><b>(Key Players)</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;verticalAlign=top;fontSize=12;fontStyle=0;" vertex="1" parent="1">
<mxGeometry x="400" y="80" width="320" height="280" as="geometry"/>
</mxCell>
<!-- High Power, Low Interest -->
<mxCell id="3" value="Keep Satisfied<br><b>(Keep Informed)</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;verticalAlign=top;fontSize=12;fontStyle=0;" vertex="1" parent="1">
<mxGeometry x="400" y="360" width="320" height="280" as="geometry"/>
</mxCell>
<!-- Low Power, High Interest -->
<mxCell id="4" value="Keep Informed<br><b>(Show Consideration)</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;verticalAlign=top;fontSize=12;fontStyle=0;" vertex="1" parent="1">
<mxGeometry x="80" y="80" width="320" height="280" as="geometry"/>
</mxCell>
<!-- Low Power, Low Interest -->
<mxCell id="5" value="Monitor<br><b>(Minimal Effort)</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;verticalAlign=top;fontSize=12;fontStyle=0;" vertex="1" parent="1">
<mxGeometry x="80" y="360" width="320" height="280" as="geometry"/>
</mxCell>
<!-- Axis Labels -->
<mxCell id="6" value="Interest" style="text;html=1;align=center;verticalAlign=middle;fontSize=14;fontStyle=1;rotation=90;" vertex="1" parent="1">
<mxGeometry x="20" y="320" width="100" height="40" as="geometry"/>
</mxCell>
<mxCell id="7" value="Power / Influence" style="text;html=1;align=center;verticalAlign=middle;fontSize=14;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="350" y="660" width="200" height="40" as="geometry"/>
</mxCell>
<!-- Sample Stakeholders -->
<mxCell id="8" value="CEO" style="ellipse;whiteSpace=wrap;html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="520" y="150" width="80" height="60" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
fillColor=#dae8fc;strokeColor=#6c8ebf;fillColor=#b1ddf0;strokeColor=#10739e;fillColor=#f8cecc;strokeColor=#b85450;fillColor=#d5e8d4;strokeColor=#82b366;fillColor=#fff2cc;strokeColor=#d6b656;fillColor=#e1d5e7;strokeColor=#9673a6;fillColor=#f5f5f5;strokeColor=#666666;fillColor=#e1d5e7;strokeColor=#9673a6;fillColor=#ffe6cc;strokeColor=#d79b00;fillColor=#8B0000;strokeColor=#600000;fontColor=#ffffff; (Dark Red)fillColor=#FF0000;strokeColor=#CC0000;fontColor=#ffffff; (Red)fillColor=#FFA500;strokeColor=#CC8400;fontColor=#000000; (Orange)fillColor=#FFFF00;strokeColor=#CCCC00;fontColor=#000000; (Yellow)fillColor=#90EE90;strokeColor=#66AA66;fontColor=#000000; (Light Green)edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;
rounded=0;html=1;jettySize=auto;orthogonalLoop=1;
curved=1;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;
edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=classic;endFill=1;
edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;dashed=1;dashPattern=5 5;
edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=3;strokeColor=#b85450;
#d5e8d4)#dae8fc)#ffe6cc)#fff2cc)#e1d5e7)#f5f5f5)#dae8fc)#d5e8d4)#ffe6cc)#f8cecc)#e1d5e7)#b1ddf0)#fff2cc)#f8cecc)#e1d5e7)Use Case: Business process across departments Structure: Horizontal swimlanes, one per department Key Features: Clear handoffs, decision points, subprocess indicators
Use Case: Project scope decomposition Structure: Hierarchical tree, 3-4 levels deep Key Features: Numbered packages (1.1, 1.2, etc.), deliverable-oriented
Use Case: Activity sequencing and critical path analysis Structure: Activity nodes with duration, early/late start/finish Key Features: Critical path highlighted, float calculations
Use Case: Role and responsibility assignment Structure: Grid with tasks (rows) and roles (columns) Key Features: R, A, C, I assignments with color coding
Use Case: Visual risk assessment Structure: 5x5 grid (Probability vs Impact) Key Features: Color-coded zones, risk items plotted on grid
Use Case: Stakeholder analysis and engagement strategy Structure: 2x2 or 3x3 grid Key Features: Quadrant labels, stakeholder names plotted
Use Case: Project team hierarchy Structure: Hierarchical tree similar to org chart Key Features: Names, roles, reporting relationships
Use Case: Resource allocation over time Structure: Bar chart with time on X-axis, resources on Y-axis Key Features: Color-coded resource types, over-allocation indicators
source and target must match existing shape IDsWhen creating diagrams that benefit from specific icon libraries, include instructions like:
## How to Open with Custom Libraries
To access additional icons and shapes for this diagram, open it with:
https://app.diagrams.net/?clibs=Uhttps://jgraph.github.io/drawio-libs/libs/templates.xml;Uhttps://jgraph.github.io/drawio-libs/libs/un-ocha-icons.xml
Or manually in draw.io:
1. Open the diagram in app.diagrams.net
2. File → Open Library from → URL
3. Enter: https://jgraph.github.io/drawio-libs/libs/[library-name].xml
Always output the complete .drawio file with:
.drawio or .xml extensionThe following template patterns can be adapted for various use cases:
Remember: The goal is to create diagrams that are immediately usable, professional-looking, accurately represent the user's process or system, and follow PMP/PMBOK best practices when applicable!
development
Generate images via the Stable Diffusion WebUI / Forge HTTP API (AUTOMATIC1111-compatible `/sdapi/v1/*`). Use when the user wants to (1) discover or pick a model / extra module (TE/VAE) / sampler / scheduler / style preset from a running sd-webui server, (2) generate an image with a given prompt (txt2img), (3) check generation progress, (4) cancel/interrupt an in-flight generation, (5) inspect or change a global sd-webui option (e.g. active checkpoint), or (6) test connectivity. This skill talks to a *generic* sd-webui-compatible server (AUTOMATIC1111, Forge, reForge, sd-webui-forge-classic). Do NOT trigger for requests that are purely writing the prompt itself.
testing
Verify implementation matches change artifacts. Use when the user wants to validate that implementation is complete, correct, and coherent before archiving.
development
Update an OpenSpec change by revising its existing planning artifacts and keeping them coherent with one another. Use when the user wants to revise a change's plan, fold new decisions into it, or reconcile its artifacts after an edit. Never edits code.
data-ai
Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change.