Create, edit, synchronize, inspect, test, and publish editable draw.io diagrams. Use when the user explicitly requests draw.io/diagrams.net, needs a polished architecture, ERD, UML, sequence, C4, SysML, BPMN, network, swimlane, ML, or infrastructure diagram, wants code/IaC/SQL/OpenAPI/AsyncAPI/Protobuf converted into a diagram, or wants an existing diagram queried, reviewed, diffed, restyled, kept in sync, or made interactive. Prefer Mermaid/PlantUML elsewhere when the requested artifact is diag
git clone https://github.com/Agents365-ai/drawio-skill.git--- name: drawio-skill description: Create, edit, synchronize, inspect, test, and publish editable draw.io diagrams. Use when the user explicitly requests draw.io/diagrams.net, needs a polished architecture, ERD, UML, sequence, C4, SysML, BPMN, network, swimlane, ML, or infrastructure diagram, wants code/IaC/SQL/OpenAPI/AsyncAPI/Protobuf converted into a diagram, or wants an existing diagram queried, reviewed, diffed, restyled, kept in sync, or made interactive. Prefer Mermaid/PlantUML elsewhere when the requested artifact is diagrams-as-code rather than an editable draw.io file. license: MIT allowed-tools: [Bash, Read, Write, WebFetch] metadata: {"openclaw":{"requires":{"anyBins":["python3"]},"emoji":"📐","os":["darwin","linux","win32"],"install":[{"id":"brew-drawio","kind":"brew","formula":"drawio","bins":["drawio"],"label":"Install draw.io for native exports","os":["darwin"],"optional":true},{"id":"brew-graphviz","kind":"brew","formula":"graphviz","bins":["dot"],"label":"Install Graphviz for automatic layout","os":["darwin"],"optional":true}]},"hermes":{"tags":["drawio","diagram","architecture","visualization","uml"],"category":"design","requires_tools":["python3"],"related_skills":["mermaid","excalidraw","plantuml"]},"author":"Agents365-ai","version":"3.3.0","homepage":"https://github.com/Agents365-ai/drawio-skill","compatibility":"Core IR, XML, sync, query, test, review, and Story workflows need Python 3 only; native export needs draw.io; Graphviz is optional.","platforms":["macos","linux","windows"]} --- # Draw.io Architecture Studio Produce editable `.drawio` artifacts, not flattened pictures. The preferred entrypoint is `scripts/diagramctl.py`, which unifies generation, incremental sync, multi-view projection, semantic queries/tests/reviews, failure analysis, and accessible publishing over a shared Diagram IR. ## Choose the workflow | Request | Route | | --- | --- | | Natural-language diagram with precise styling | Read `references/diagram-types.md`, then `references/xml-authoring.md` and author XML | | Standard flowchart/mindmap/gantt/timeline/etc. with no special styling | If draw.io >=30, read `references/mermaid-authoring.md` and convert Mermaid to native `.drawio` | | Large graph (~15+ nodes) that needs automatic layout | Use `autolayout.py`; read `references/autolayout.md` before passing any `--layout` value | | Code, Terraform, K8s, compose, SQL, OpenAPI, AsyncAPI, or CI source | Use `diagramctl.py build`; read `references/diagram-ir.md` | | Protocol Buffers schema (.proto) | Use `protoimports.py` or `diagramctl.py build`; read `references/toolbox.md` | | Running cluster/stack/cloud (actual state, not declared config) | Read `references/live-infra.md`, then use `tfstate.py`, `dockerimports.py`, or `k8simports.py -` | | Update a generated diagram without losing manual layout | Use `diagramctl.py sync`; read `references/diagram-ir.md` | | Executive/system/deployment/data-flow/security views | Use `diagramctl.py views`; read `references/diagram-ir.md` | | Query, architecture policy, review, what-if, or guided walkthrough | Read `references/semantic-workflows.md` | | MCP host (Claude Desktop, Cursor, VS Code, Codex) should call these workflows | Register `scripts/diagramctl_mcp.py`; read `references/mcp.md` | | Prompt phrasing for a diagram type or semantic workflow | Read `references/cookbook.md` | | Enforce architecture rules or visual diffs in GitHub Actions CI | Read `references/ci-gate.md` | | Rendered before/after/diff images as a PR review comment | Use `prdiff.py`; read `references/pr-bot.md` | | Existing `.drawio` to HTML/PPTX/Mermaid/Markdown/animation/runbook | Read `references/toolbox.md`; `diagramctl.py transform` exposes the existing tools | | Pipeline, journey, or subsystem map drawn as a metro/subway map | Use `tubemap.py`; read `references/tubemap.md` | | Shape, cloud/vendor, AI, or Databricks icon | Read `references/shapes.md` or `references/databricks.md`; never guess shape names | | Learn/apply/manage a visual style | Read `references/style-presets.md` | | Extract a reusable style from an existing diagram or theme | Read `references/style-extraction.md` | | Existing image to editable diagram (screenshot, whiteboard photo, legacy PNG) | Read `references/derasterize.md` | | Export/platform problem | Read `references/troubleshooting.md`; for access/network questions read `references/security.md` | ## Unified CLI Run from this skill directory, or replace `scripts/` with the absolute path to this skill's scripts directory: ```bash python3 scripts/diagramctl.py doctor python3 scripts/diagramctl.py build model.json --from ir -o architecture.drawio python3 scripts/diagramctl.py build ./infra --from terraform --group \ --ir-output architecture.ir.json -o architecture.drawio python3 scripts/diagramctl.py sync architecture.drawio ./infra --from terraform \ -o architecture.next.drawio python3 scripts/diagramctl.py views architecture.ir.json \ --views executive,system,deployment,dataflow,security -o views.drawio python3 scripts/diagramctl.py test architecture.drawio --rules policy.yml python3 scripts/diagramctl.py review architecture.drawio -o review.md python3 scripts/diagramctl.py query architecture.drawio --from internet --to orders-db python3 scripts/diagramctl.py whatif architecture.ir.json --fail kafka \ --drawio kafka-failure.drawio -o impact.json python3 scripts/diagramctl.py story architecture.ir.json -o walkthrough.html ``` `doctor` does not launch GUI tools unless `--probe` is passed. Core semantic commands are offline and stdlib-only. ## Creation workflow 1. Infer the diagram type, audience, scope, output format, and location from the request. Ask only when a missing choice materially changes the result; default to PNG plus `.drawio` in the working directory. 2. Select the authoring route from the table above. For a data-backed diagram, prefer Diagram IR and preserve provenance. For a large graph, use an importer or `autolayout.py`; do not hand-place more than roughly fifteen nodes. 3. Resolve an explicitly named style preset, or the user's default preset, as documented in `references/style-presets.md`. Structural diagram conventions and visual presets compose; they do not replace each other. 4. Generate the `.drawio`, then run structural validation: ```bash python3 scripts/validate.py diagram.drawio --score ``` When semantic metadata or an architecture policy is in scope, also run `diagramctl.py test`. Do not present inferred semantic findings as verified runtime facts. 5. Export a draft PNG without embedded XML and inspect it visually. Fix obvious overlap, clipping, disconnected edges, edge-through-node routing, stacked edges, and unreadable labels. Stop automatic vision repair after two rounds. 6. Show the draft and apply targeted edits. Preserve existing geometry for local changes. Use `sync` for source-backed changes and write a reviewable output; use `--prune` only when deletion was requested. 7. After approval, create final requested formats and report both editable source and export paths. ## Export invariants Resolve the available binary once (`drawio`, `draw.io`, the macOS app path, or the Windows executable) and use that exact binary for the run. ```bash # Draft for visual inspection: never use -e here drawio -x -f png --width 2000 -o diagram.png diagram.drawio # Final editable PNG drawio -x -f png -e -s 2 -o diagram.drawio.png diagram.drawio python3 scripts/repair_png.py diagram.drawio.png # Final editable SVG/PDF drawio -x -f svg -e --embed-svg-images -o diagram.svg diagram.drawio drawio -x -f pdf -e -o diagram.pdf diagram.drawio ``` Do not combine `--width` and `-s`. Embedded PNG exports require `repair_png.py`; draft PNGs used by vision must not use `-e`. On Linux headless, follow `references/troubleshooting.md` rather than improvising Electron flags. If the CLI crashes in a macOS sandbox, try one permitted escalated run, then use `encode_drawio_url.py` or deliver XML; do not repeatedly launch it. ## Editing and identity - Use stable semantic IDs and never reuse reserved IDs `0` or `1`. - Every edge requires `<mxGeometry relative="1" as="geometry"/>`. - For a local edit, change the matching cell only; for a global direction change, regenerate/re-layout the page. - Keep provenance, `data-model-id`, semantic properties, manual geometry, and manual styles intact unless the user requests otherwise. - When reconciling, retain removals as reviewable faded elements by default. - For edges stacked at a boundary, run `edgeports.py`; add waypoints when an edge still crosses an unrelated shape. There is no CLI-only edge rerouter that preserves node positions. ## Quality and trust An attractive diagram can still be wrong. Prefer source-backed relationships, show provenance where useful, distinguish exact extraction from AI inference, and keep architecture review findings framed as prompts. Story HTML must remain self-contained, keyboard usable, and include a text alternative. Never include secrets in node properties or provenance because they are embedded in outputs. For all focused scripts and composition patterns, read `references/toolbox.md`; load only the task-specific reference needed for the current request.
[{"step":"Describe your diagram requirements clearly","action":"Specify the diagram type (e.g., C4, UML, BPMN), topic (e.g., 'microservices architecture'), and any specific elements to include. Mention if you need to convert from another format (e.g., OpenAPI spec, SQL schema, or code).","tip":"Include details like 'needs to show 3-tier architecture with load balancer' or 'convert this PlantUML sequence diagram to BPMN'. The more specific your requirements, the better the diagram will match your needs."},{"step":"Provide source material if converting from another format","action":"Upload your source file (e.g., OpenAPI YAML, SQL schema, IaC Terraform code) or paste the relevant portions. For code conversion, specify the programming language and framework.","tip":"For IaC conversion, share the Terraform/CloudFormation files. For API specs, provide the OpenAPI/AsyncAPI document. This ensures accurate representation in the diagram."},{"step":"Request specific style or formatting guidelines","action":"Mention any style preferences like color schemes, layout direction, or labeling conventions. Specify if you need to follow a particular standard (e.g., C4 model, AWS Well-Architected Framework).","tip":"Common styles include 'use C4 model colors', 'align all components horizontally', or 'use AWS icons'. For enterprise diagrams, request a consistent style guide to maintain professionalism."},{"step":"Specify the output format and any additional requirements","action":"State whether you need the diagram as an editable .drawio file, PNG/SVG export, or interactive HTML. Mention if you need annotations, swimlanes, or specific diagram layers.","tip":"For collaborative work, request an editable link. For documentation, ask for high-resolution exports. If reviewing an existing diagram, specify 'inspect this .drawio file for consistency with our style guide'."},{"step":"Review and iterate","action":"Open the generated .drawio file in diagrams.net and make manual adjustments if needed. Use the AI skill again to refine specific elements or request a 'diff' between versions.","tip":"Use the 'Organize > Layers' feature in diagrams.net to manage complex diagrams. For version control, save each iteration with a timestamp in the filename."}]
No install command available. Check the GitHub repository for manual installation instructions.
git clone https://github.com/Agents365-ai/drawio-skill/tree/main/skills/drawio-skillCopy the install command above and run it in your terminal.
Launch Claude Code, Cursor, or your preferred AI coding agent.
Use the prompt template or examples below to test the skill.
Adapt the skill to your specific use case and workflow.
Generate a [DIAGRAM_TYPE] diagram in draw.io format for [TOPIC/PROJECT_NAME]. Include [SPECIFIC_ELEMENTS] and follow [STYLE_GUIDE] if provided. Ensure the diagram is editable, properly labeled, and follows best practices for [DIAGRAM_TYPE]. If converting from [SOURCE_FORMAT], preserve all key relationships and annotations. Export the diagram as an editable .drawio file.
```xml
<mxfile host="app.diagrams.net" modified="2024-05-20T14:30:00" agent="Mozilla/5.0" version="22.0.7" type="device">
<diagram name="Page-1" id="UxXyZ1234567890">
<mxGraphModel dx="1200" dy="600" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="2" value="AWS Cloud Architecture: E-Commerce Platform" style="swimlane;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="100" y="50" width="600" height="400" as="geometry" />
</mxCell>
<mxCell id="3" value="User" style="ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="150" y="150" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="4" value="CloudFront" style="shape=cloud;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="300" y="100" width="100" height="80" as="geometry" />
</mxCell>
<mxCell id="5" value="S3 Static Website" style="shape=cylinder;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="450" y="100" width="100" height="80" as="geometry" />
</mxCell>
<mxCell id="6" value="API Gateway" style="shape=hexagon;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="300" y="250" width="100" height="60" as="geometry" />
</mxCell>
<mxCell id="7" value="Lambda" style="shape=process;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="450" y="250" width="100" height="60" as="geometry" />
</mxCell>
<mxCell id="8" value="DynamoDB" style="shape=cylinder;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="600" y="250" width="100" height="80" as="geometry" />
</mxCell>
<mxCell id="9" edge="1" source="3" target="4" style="edgeStyle=none;curved=1;endArrow=classic;endFill=1;rounded=0;">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="10" edge="1" source="4" target="5" style="edgeStyle=none;curved=1;endArrow=classic;endFill=1;rounded=0;">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="11" edge="1" source="5" target="6" style="edgeStyle=none;curved=1;endArrow=classic;endFill=1;rounded=0;">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="12" edge="1" source="6" target="7" style="edgeStyle=none;curved=1;endArrow=classic;endFill=1;rounded=0;">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="13" edge="1" source="7" target="8" style="edgeStyle=none;curved=1;endArrow=classic;endFill=1;rounded=0;">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
```
**Diagram Explanation:**
This editable draw.io diagram illustrates a serverless e-commerce platform architecture on AWS. The diagram includes:
- A user interacting with CloudFront for CDN caching
- Static website content hosted on S3
- API Gateway routing requests to Lambda functions
- DynamoDB storing product catalog and order data
- Color-coded components (green for user, yellow for CDN/storage, red for compute, blue for database)
- All elements are properly connected with directional arrows showing data flow
- The diagram is formatted as an editable .drawio XML file that can be imported directly into diagrams.net
**Next Steps:**
1. Import the XML file into diagrams.net (File > Open From > Device)
2. Adjust component sizes or positions as needed
3. Add additional elements like VPC, RDS, or SQS queues
4. Export as PNG/SVG or share the editable linkskills-collection
Take a free 3-minute scan and get personalized AI skill recommendations.
Take free scan