drawio-skill
This skill creates and edits draw.io diagrams as editable .drawio files from natural language descriptions, code, infrastructure, and schema sources.
Community author
- Agents
- Claude Code
- License
- MIT (permissive)
- Pin
- 88fd923pinned Oct 9, 2026
- Context cost
- about 2,100 tokenswhen the skill loads
- GitHub stars
- 10,007on agents365-ai/drawio-skill
- Scripts
- 45 scripts
What it does
“Create and edit draw.io/diagrams.net diagrams as editable `.drawio` files. Covers architecture, UML/ERD/sequence, BPMN, network, and swimlane views authored from a description or converted from code, IaC, SQL, and API schemas, plus sync, query, test, review, export, and publish of existing diagrams. Use when the user asks for draw.io/diagrams.net or an editable diagram; prefer Mermaid/PlantUML when diagrams-as-code is enough.”
Generated summary from the skill's own text
This skill creates and edits draw.io diagrams as editable .drawio files from natural language descriptions, code, infrastructure, and schema sources. It supports architecture, UML, BPMN, and network diagrams with automatic layout, semantic queries, version sync, and exports to PNG, SVG, PDF, and HTML. The primary entry point is diagramctl.py, which handles generation, incremental updates, multi-view projections, and policy-based reviews.
When to use it
- User requests editable draw.io or diagrams.net artifacts, not static images
- Converting code, Terraform, Kubernetes, SQL, OpenAPI schemas to diagrams
- Generating architecture, deployment, data-flow, or system diagrams from sources
- Updating existing diagrams while preserving manual layout and styling
When not to
- Diagrams-as-code suffices; prefer Mermaid or PlantUML instead
- User needs only a quick static image, not an editable diagram file
- No Python 3 runtime available for core semantic operations
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add agents365-ai/drawio-skill --skill drawio-skillInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install agents365-ai/drawio-skill drawio-skill@88fd9236bc532aac4c25cb008a8bd59bc650b904Installs the commit we checked (88fd923).
Copy by hand
Download the folder at 88fd923 and put it in .claude/skills/drawio-skill for Claude Code and in .agents/skills/drawio-skill for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "drawio-skill" by Agents365-ai. Source, pinned to commit 88fd9236bc532aac4c25cb008a8bd59bc650b904: https://github.com/agents365-ai/drawio-skill/tree/88fd9236bc532aac4c25cb008a8bd59bc650b904/skills/drawio-skill 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/drawio-skill/ for Claude Code and .agents/skills/drawio-skill/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/agents365-ai/drawio-skill
SKILL.md at the pin
---
disable-model-invocation: true
name: drawio-skill
description: Create and edit draw.io/diagrams.net diagrams as editable `.drawio` files. Covers architecture, UML/ERD/sequence, BPMN, network, and swimlane views authored from a description or converted from code, IaC, SQL, and API schemas, plus sync, query, test, review, export, and publish of existing diagrams. Use when the user asks for draw.io/diagrams.net or an editable diagram; prefer Mermaid/PlantUML when diagrams-as-code is enough.
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.4.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` |
| GraphQL SDL schema (.graphql/.gql) or introspection JSON | Use `graphqlerd.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.
When the drawio binary is unavailable or a visual check is inconclusive,
verify the renderer's own DOM instead (`--dump-dom` on the viewer URL, see
`references/troubleshooting.md`): read each edge's `<path>` segments and
label anchor coordinates directly — vision alone both misses geometry
defects and hallucinates new ones.
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.
From agents365-ai/drawio-skill at 88fd923, shown as plain text under its license: MIT (permissive). The license text is in skills/drawio-skill/LICENSE.
View SKILL.md on GitHub at 88fd923Files
- SKILL.md9.7 KB · 2a510dea53b7
- LICENSE1.1 KB · 0d43b46456ed
- agents/
- openai.yaml307 B · ca8053ac6cec
- data/
- SHAPE-INDEX-NOTICE.md880 B · dc6e070b9fd9
- databricks-icons.json12 KB · 760d80cdd57e
- diagram-ir.schema.json1.5 KB · 92891a36b416
- lobe-icons.json13 KB · e7c309bd5ebf
- shape-index.json.gz436 KB · f19d9f794775
- references/
- autolayout.md20 KB · 1d993371633b
- ci-gate.md2.1 KB · 4aff775b7256
- cookbook.md7.1 KB · c85e1373b685
- databricks.md2.6 KB · aa47283c8c87
- derasterize.md2.5 KB · a4efd3152ba3
- diagram-ir.md4.8 KB · 3a12b71703f1
- diagram-types.md17 KB · 958b6d0ab59b
- live-infra.md3.7 KB · 87d92e8b8ae2
- mcp.md2.8 KB · 020af01efd02
- mermaid-authoring.md5.0 KB · b44d45322be9
- pr-bot.md3.9 KB · c34a85d91ec4
- security.md2.1 KB · 35f2072dcf1a
- semantic-workflows.md2.8 KB · 797e504c2e9b
- shapes.md7.2 KB · b696df00bb4d
- style-extraction.md18 KB · 9dfba198a0e0
- style-presets.md11 KB · b40f2dfd2cd2
- toolbox.md12 KB · 1b3d27a32af3
- troubleshooting.md7.4 KB · 46dee9804e8f
- tubemap.md3.3 KB · 654db7cc5f5c
- xml-authoring.md15 KB · 731a128920fe
- scripts/
- aiicons.py8.4 KB · 96017e7e289e
- asyncapiimports.py11 KB · 8a4e39f8933d
- autolayout.py18 KB · d72e15eb0cfa
- buildup.py14 KB · e496e39605f5
- c4.py6.7 KB · 82f349e1a524
- ciimports.py7.8 KB · c9de9a7af0aa
- composeimports.py4.7 KB · ae9c96282daa
- compress.py11 KB · 464689570ecc
- dbxicons.py13 KB · dfa302a7d803
- diagram_ir.py58 KB · 8afdb80d3b53
- diagramctl.py21 KB · dd857659d23b
- diagramctl_mcp.py13 KB · 4c0bd49d58d1
- dockerimports.py6.4 KB · 7a06bcc73f75
- drawio2mermaid.py6.0 KB · c6bc00fd9d3e
- drawio2pptx.py4.5 KB · 22be444d8ee4
- drawiodiff.py11 KB · 392396ad3633
- drawiohtml.py11 KB · 334226f9fccf
- edgeports.py9.3 KB · 429f1c8c0be9
- encode_drawio_url.py2.3 KB · 47b77e4bc462
- explain.py6.1 KB · a804ae7094e5
- goimports.py6.1 KB · a2cb0ea9cfbf
- graphqlerd.py16 KB · be39395bd95f
- heatmap.py9.2 KB · 91d0c98537bf
- jsimports.py6.5 KB · 63b563d5ec10
- k8simports.py9.8 KB · 3d2c32c908c7
- openapiimports.py6.8 KB · 2d29c8b205d8
- prdiff.py8.0 KB · 2e89c97b89b5
- protoimports.py18 KB · e742b59c5e9f
- pyclasses.py6.3 KB · 1fbcf0370c01
- pyimports.py7.0 KB · 619a27f15e22
- raster2drawio.py7.5 KB · 7a81fad51336
- relabel.py4.2 KB · 98db0ebe5928
- repair_png.py1.1 KB · 1a453cb88231
- restyle.py7.2 KB · b12ff51e133d
- runbook.py10 KB · 56059a1bb86f
- rustimports.py7.9 KB · 9b6bfbc97a1d
- seqlayout.py9.9 KB · 527c522dfd1c
- shapesearch.py6.0 KB · ac624fa2d532
- sqlerd.py6.7 KB · f3896f9c17bb
- svgflow.py3.8 KB · ba02ca683dc5
- tfimports.py12 KB · 66636c6b73b4
- tfstate.py5.6 KB · aa2728eb2034
- timelapse.py11 KB · 992ba6bb6ad5
- tubemap.py6.9 KB · f3bf38c0ca69
- validate.py17 KB · 3effc1cdfd5b
- styles/
- built-in/
- colorblind-safe.json1.5 KB · 3b836988e653
- corporate.json1.5 KB · 0cb0ba05b44e
- dark.json1.5 KB · 2a78d4da3b6b
- default.json1.5 KB · 5340c1f80ab9
- handdrawn.json1.5 KB · 92a1fdca1bbb
- schema.json5.4 KB · 4886d7648128
79 files, 1.1 MB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at 88fd923Related in Media and creative
all-images-ai-automation
This skill automates All Images AI operations by discovering and executing tools through Composio's All Images AI toolkit via Rube MCP.
by ComposioOfficial publisher
Agents not labelled yet · about 710 tokens · pinned 6 days ago
remotion-best-practices
This skill routes the agent through Remotion's specialized knowledge bases for video creation, editing, and deployment.
by RemotionOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 920 tokens · pinned 6 days ago
remotion-best-practices
This skill routes the agent to specialized Remotion sub-skills based on the user's task, covering video creation, project setup, React markup, maps…
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 1K tokens · pinned 6 days ago
remotion-captions
This skill enables video caption workflows including transcribing audio to generate captions, displaying captions in videos, and importing captions from SRT…
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 220 tokens · pinned 6 days ago
remotion-captions
This skill enables the agent to work with captions in Remotion videos by transcribing audio to generate captions, displaying them in videos, and importing…
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 270 tokens · pinned 6 days ago
remotion-create
This skill scaffolds a new Remotion video project, opens the browser-based Studio for live preview, and guides composition development using React markup.
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 680 tokens · pinned 6 days ago