PluginBench
Skill
Pass
Audit score 90

drawio-skill

agents365-ai/365-skills

Create, edit, and publish polished editable draw.io diagrams from code, infrastructure, and natural language.

What is drawio-skill?

Generate and maintain editable .drawio diagram artifacts for architecture, ERD, UML, sequence, C4, BPMN, and infrastructure visualization. Use this skill when you need an interactive, styled draw.io file rather than diagrams-as-code (Mermaid/PlantUML), or when converting code, IaC, SQL, OpenAPI, or Protobuf into diagrams.

  • Author diagrams from natural language, XML, or Mermaid with precise styling and layout
  • Convert code, Terraform, Kubernetes, Docker Compose, SQL, OpenAPI, AsyncAPI, and Protocol Buffers into structured diagrams
  • Synchronize generated diagrams with source changes while preserving manual edits and layout
  • Generate multiple views (executive, system, deployment, data-flow, security) from a single diagram IR
  • Query, test, and review diagrams against architecture policies; run what-if failure analysis
  • Export to PNG, SVG, PDF, PPTX, HTML, Markdown, and animation formats with embedded editability

How to install drawio-skill

npx skills add https://github.com/agents365-ai/365-skills --skill drawio-skill
Prerequisites
  • Python 3 (required for core IR, sync, query, test, and review workflows)
  • draw.io CLI binary (optional; required only for native PNG/SVG/PDF export)
  • Graphviz (optional; improves automatic layout for large graphs)
Claude Code
Cursor
Windsurf
Cline

How to use drawio-skill

  1. 1.Run `python3 scripts/diagramctl.py doctor` to verify your environment and available tools
  2. 2.Select your authoring route: natural-language XML, Mermaid conversion, code import (Terraform/K8s/SQL/OpenAPI), or autolayout for large graphs
  3. 3.Generate the diagram using the appropriate command (e.g., `diagramctl.py build` for code sources, or author XML directly)
  4. 4.Run `python3 scripts/validate.py diagram.drawio --score` to validate structure
  5. 5.Export a draft PNG with `drawio -x -f png --width 2000 -o diagram.png diagram.drawio` and inspect visually
  6. 6.Apply targeted edits, then export final formats (PNG with `-e`, SVG, PDF) and publish both the editable .drawio and rendered exports

Use cases

Good for
  • Convert a Terraform or Kubernetes manifest into a polished architecture diagram with automatic layout
  • Update an existing hand-drawn diagram when infrastructure code changes, preserving manual styling
  • Generate executive, system, and deployment views from a single source-of-truth diagram IR
  • Validate a diagram against architecture rules (e.g., no direct database access from frontend) in CI/CD
  • Transform a legacy PNG or whiteboard photo into an editable draw.io diagram
Who it's for
  • Solutions architects and infrastructure engineers designing systems
  • DevOps and platform teams documenting cloud and Kubernetes deployments
  • Enterprise architects enforcing architecture governance and policy
  • Technical leads creating multi-audience views (executive, system, deployment)
  • Teams integrating diagram generation into CI/CD pipelines

drawio-skill FAQ

When should I use draw.io-skill instead of Mermaid or PlantUML?

Use draw.io-skill when the user explicitly requests a .drawio file, needs polished interactive editing, or wants to convert code/IaC/SQL/OpenAPI into a styled diagram. Prefer Mermaid/PlantUML for diagrams-as-code artifacts that don't require manual editing.

Can I update a diagram when my infrastructure code changes without losing manual edits?

Yes. Use `diagramctl.py sync` to merge source changes into an existing diagram while preserving your manual layout and styling.

What diagram types are supported?

Architecture, ERD, UML (class, sequence, state), C4, SysML, BPMN, network, swimlane, ML pipeline, infrastructure, flowchart, mindmap, Gantt, timeline, and metro/subway maps.

Can I generate multiple views (executive, system, deployment) from one diagram?

Yes. Use `diagramctl.py views` with a Diagram IR to project executive, system, deployment, data-flow, and security views from a single source.

Do I need draw.io installed to use this skill?

No. Python 3 is required for all core workflows (build, sync, query, test, review). The draw.io binary is optional and only needed if you want to export to PNG, SVG, or PDF directly.

Full instructions (SKILL.md)

Source of truth, from agents365-ai/365-skills.


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

RequestRoute
Natural-language diagram with precise stylingRead references/diagram-types.md, then references/xml-authoring.md and author XML
Standard flowchart/mindmap/gantt/timeline/etc. with no special stylingIf draw.io >=30, read references/mermaid-authoring.md and convert Mermaid to native .drawio
Large graph (~15+ nodes) that needs automatic layoutUse autolayout.py; read references/autolayout.md before passing any --layout value
Code, Terraform, K8s, compose, SQL, OpenAPI, AsyncAPI, or CI sourceUse 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 layoutUse diagramctl.py sync; read references/diagram-ir.md
Executive/system/deployment/data-flow/security viewsUse diagramctl.py views; read references/diagram-ir.md
Query, architecture policy, review, what-if, or guided walkthroughRead references/semantic-workflows.md
MCP host (Claude Desktop, Cursor, VS Code, Codex) should call these workflowsRegister scripts/diagramctl_mcp.py; read references/mcp.md
Prompt phrasing for a diagram type or semantic workflowRead references/cookbook.md
Enforce architecture rules or visual diffs in GitHub Actions CIRead references/ci-gate.md
Rendered before/after/diff images as a PR review commentUse prdiff.py; read references/pr-bot.md
Existing .drawio to HTML/PPTX/Mermaid/Markdown/animation/runbookRead references/toolbox.md; diagramctl.py transform exposes the existing tools
Pipeline, journey, or subsystem map drawn as a metro/subway mapUse tubemap.py; read references/tubemap.md
Shape, cloud/vendor, AI, or Databricks iconRead references/shapes.md or references/databricks.md; never guess shape names
Learn/apply/manage a visual styleRead references/style-presets.md
Extract a reusable style from an existing diagram or themeRead references/style-extraction.md
Existing image to editable diagram (screenshot, whiteboard photo, legacy PNG)Read references/derasterize.md
Export/platform problemRead 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.

  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.