Draw.io Architecture Studio skill

Create and edit draw.io/diagrams.net diagrams as editable `.drawio` files.

by Agents365-ai·MIT license·★ 9,814 Stars on the repo·GitHub ↗

Use now

Files of Draw.io Architecture Studio

Agents365-ai/main1 file shown
SKILL.md
Show the full text149 lines

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:

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:

    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.

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

1---
2disable-model-invocation: true
3name: drawio-skill
4description: 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.
5license: MIT
6allowed-tools: [Bash, Read, Write, WebFetch]
7metadata: {"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"]}
8---
9 
10# Draw.io Architecture Studio
11 
12Produce editable `.drawio` artifacts, not flattened pictures. The preferred
13entrypoint is `scripts/diagramctl.py`, which unifies generation, incremental
14sync, multi-view projection, semantic queries/tests/reviews, failure analysis,
15and accessible publishing over a shared Diagram IR.
16 
17## Choose the workflow
18 
19| Request | Route |
20| --- | --- |
21| Natural-language diagram with precise styling | Read `references/diagram-types.md`, then `references/xml-authoring.md` and author XML |
22| 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` |
23| Large graph (~15+ nodes) that needs automatic layout | Use `autolayout.py`; read `references/autolayout.md` before passing any `--layout` value |
24| Code, Terraform, K8s, compose, SQL, OpenAPI, AsyncAPI, or CI source | Use `diagramctl.py build`; read `references/diagram-ir.md` |
25| Protocol Buffers schema (.proto) | Use `protoimports.py` or `diagramctl.py build`; read `references/toolbox.md` |
26| GraphQL SDL schema (.graphql/.gql) or introspection JSON | Use `graphqlerd.py` or `diagramctl.py build`; read `references/toolbox.md` |
27| Running cluster/stack/cloud (actual state, not declared config) | Read `references/live-infra.md`, then use `tfstate.py`, `dockerimports.py`, or `k8simports.py -` |
28| Update a generated diagram without losing manual layout | Use `diagramctl.py sync`; read `references/diagram-ir.md` |
29| Executive/system/deployment/data-flow/security views | Use `diagramctl.py views`; read `references/diagram-ir.md` |
30| Query, architecture policy, review, what-if, or guided walkthrough | Read `references/semantic-workflows.md` |
31| MCP host (Claude Desktop, Cursor, VS Code, Codex) should call these workflows | Register `scripts/diagramctl_mcp.py`; read `references/mcp.md` |
32| Prompt phrasing for a diagram type or semantic workflow | Read `references/cookbook.md` |
33| Enforce architecture rules or visual diffs in GitHub Actions CI | Read `references/ci-gate.md` |
34| Rendered before/after/diff images as a PR review comment | Use `prdiff.py`; read `references/pr-bot.md` |
35| Existing `.drawio` to HTML/PPTX/Mermaid/Markdown/animation/runbook | Read `references/toolbox.md`; `diagramctl.py transform` exposes the existing tools |
36| Pipeline, journey, or subsystem map drawn as a metro/subway map | Use `tubemap.py`; read `references/tubemap.md` |
37| Shape, cloud/vendor, AI, or Databricks icon | Read `references/shapes.md` or `references/databricks.md`; never guess shape names |
38| Learn/apply/manage a visual style | Read `references/style-presets.md` |
39| Extract a reusable style from an existing diagram or theme | Read `references/style-extraction.md` |
40| Existing image to editable diagram (screenshot, whiteboard photo, legacy PNG) | Read `references/derasterize.md` |
41| Export/platform problem | Read `references/troubleshooting.md`; for access/network questions read `references/security.md` |
42 
43## Unified CLI
44 
45Run from this skill directory, or replace `scripts/` with the absolute path to
46this skill's scripts directory:
47 
48```bash
49python3 scripts/diagramctl.py doctor
50python3 scripts/diagramctl.py build model.json --from ir -o architecture.drawio
51python3 scripts/diagramctl.py build ./infra --from terraform --group \
52 --ir-output architecture.ir.json -o architecture.drawio
53python3 scripts/diagramctl.py sync architecture.drawio ./infra --from terraform \
54 -o architecture.next.drawio
55python3 scripts/diagramctl.py views architecture.ir.json \
56 --views executive,system,deployment,dataflow,security -o views.drawio
57python3 scripts/diagramctl.py test architecture.drawio --rules policy.yml
58python3 scripts/diagramctl.py review architecture.drawio -o review.md
59python3 scripts/diagramctl.py query architecture.drawio --from internet --to orders-db
60python3 scripts/diagramctl.py whatif architecture.ir.json --fail kafka \
61 --drawio kafka-failure.drawio -o impact.json
62python3 scripts/diagramctl.py story architecture.ir.json -o walkthrough.html
63```
64 
65`doctor` does not launch GUI tools unless `--probe` is passed. Core semantic
66commands are offline and stdlib-only.
67 
68## Creation workflow
69 
701. Infer the diagram type, audience, scope, output format, and location from the
71 request. Ask only when a missing choice materially changes the result;
72 default to PNG plus `.drawio` in the working directory.
732. Select the authoring route from the table above. For a data-backed diagram,
74 prefer Diagram IR and preserve provenance. For a large graph, use an importer
75 or `autolayout.py`; do not hand-place more than roughly fifteen nodes.
763. Resolve an explicitly named style preset, or the user's default preset, as
77 documented in `references/style-presets.md`. Structural diagram conventions
78 and visual presets compose; they do not replace each other.
794. Generate the `.drawio`, then run structural validation:
80 
81 ```bash
82 python3 scripts/validate.py diagram.drawio --score
83 ```
84 
85 When semantic metadata or an architecture policy is in scope, also run
86 `diagramctl.py test`. Do not present inferred semantic findings as verified
87 runtime facts.
885. Export a draft PNG without embedded XML and inspect it visually. Fix obvious
89 overlap, clipping, disconnected edges, edge-through-node routing, stacked
90 edges, and unreadable labels. Stop automatic vision repair after two rounds.
91 When the drawio binary is unavailable or a visual check is inconclusive,
92 verify the renderer's own DOM instead (`--dump-dom` on the viewer URL, see
93 `references/troubleshooting.md`): read each edge's `<path>` segments and
94 label anchor coordinates directly — vision alone both misses geometry
95 defects and hallucinates new ones.
966. Show the draft and apply targeted edits. Preserve existing geometry for
97 local changes. Use `sync` for source-backed changes and write a reviewable
98 output; use `--prune` only when deletion was requested.
997. After approval, create final requested formats and report both editable
100 source and export paths.
101 
102## Export invariants
103 
104Resolve the available binary once (`drawio`, `draw.io`, the macOS app path, or
105the Windows executable) and use that exact binary for the run.
106 
107```bash
108# Draft for visual inspection: never use -e here
109drawio -x -f png --width 2000 -o diagram.png diagram.drawio
110 
111# Final editable PNG
112drawio -x -f png -e -s 2 -o diagram.drawio.png diagram.drawio
113python3 scripts/repair_png.py diagram.drawio.png
114 
115# Final editable SVG/PDF
116drawio -x -f svg -e --embed-svg-images -o diagram.svg diagram.drawio
117drawio -x -f pdf -e -o diagram.pdf diagram.drawio
118```
119 
120Do not combine `--width` and `-s`. Embedded PNG exports require
121`repair_png.py`; draft PNGs used by vision must not use `-e`. On Linux headless,
122follow `references/troubleshooting.md` rather than improvising Electron flags.
123If the CLI crashes in a macOS sandbox, try one permitted escalated run, then use
124`encode_drawio_url.py` or deliver XML; do not repeatedly launch it.
125 
126## Editing and identity
127 
128- Use stable semantic IDs and never reuse reserved IDs `0` or `1`.
129- Every edge requires `<mxGeometry relative="1" as="geometry"/>`.
130- For a local edit, change the matching cell only; for a global direction
131 change, regenerate/re-layout the page.
132- Keep provenance, `data-model-id`, semantic properties, manual geometry, and
133 manual styles intact unless the user requests otherwise.
134- When reconciling, retain removals as reviewable faded elements by default.
135- For edges stacked at a boundary, run `edgeports.py`; add waypoints when an
136 edge still crosses an unrelated shape. There is no CLI-only edge rerouter
137 that preserves node positions.
138 
139## Quality and trust
140 
141An attractive diagram can still be wrong. Prefer source-backed relationships,
142show provenance where useful, distinguish exact extraction from AI inference,
143and keep architecture review findings framed as prompts. Story HTML must remain
144self-contained, keyboard usable, and include a text alternative. Never include
145secrets in node properties or provenance because they are embedded in outputs.
146 
147For all focused scripts and composition patterns, read `references/toolbox.md`;
148load only the task-specific reference needed for the current request.
149 

Discussion

Alternatives

Diagram designCreate branded architecture, architecture delta, IT current-state, flowchart, sequence, state machine, ER/data model, timeline, swimlane, quadrant, radar/spider, polar chart (polar/radial lollipop), loop/flywheel, nested, tree, org chart, layer stack, Venn, pyramid/funnel, treemap and marimekko, heatmap, bar and dumbbell, waterfall, line (slopegraph, ridgeline, streamgraph, bump), Gantt and scatter charts (bubble, beeswarm), high-level, process, medallion, data flow, DP integration, DP security matrix, Sankey, fishbone, Wardley map, kanban, user journey, deployment, dependency graph, UML class, story map, or database schema diagrams as HTML/SVG/PNG, with .drawio, Mermaid, and .excalidraw import, plus lifecycle phase maps, block decomposition trees, and onboarding guidance.Coding · MITReview architectureReview a PR against the Pascal architectural rules — package boundaries (core/viewer/editor/nodes), the registry-driven composition model (def.geometry / def.renderer / def.system), legacy-dispatch regressions, the slots + world-scale-UV convention for new nodes/geometry, hook hygiene (useEditor/useScene/useViewer), and selector performance. Use when the user asks to review a PR, audit a branch, or check that changes respect the codebase's architecture.Coding · MITLLM Wiki — Knowledge Distillation PatternThe foundational knowledge distillation pattern for building and maintaining an AI-powered Obsidian wiki. Based on Andrej Karpathy's LLM Wiki architecture. Use this skill whenever the user wants to understand the wiki pattern, set up a new knowledge base, or needs guidance on the three-layer architecture (raw sources → wiki → schema). Also use when discussing knowledge management strategy, wiki structure decisions, or how to organize distilled knowledge. This is the "theory" skill — other skills handle specific operations (ingesting, querying, linting).Coding · MITA Philosophy of Software Design FrameworkManage software complexity through deep modules, information hiding, and strategic programming. Use when the user mentions "module design", "API too complex", "shallow class", "complexity budget", "strategic vs tactical", "deep module", "information leakage", "pass-through method", "this code is over-engineered", or "simplify this design". Also trigger when reviewing an interface for simplicity, evaluating whether an abstraction is pulling its weight, deciding whether a comment is worth writing, or choosing between general-purpose and special-purpose approaches. Covers deep vs shallow modules, red flags for complexity, and comments as design documentation. For code quality, see clean-code. For architecture boundaries, see clean-architecture.Coding · MIT