Claude-skill-registry drawio

Generate draw.io diagrams programmatically using Python. Creates flowcharts, architecture diagrams, tree structures, network diagrams, and more. Use when the user requests a .drawio file, diagram, flowchart, or visual documentation.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/drawio" ~/.claude/skills/majiayu000-claude-skill-registry-drawio && rm -rf "$T"
manifest: skills/data/drawio/SKILL.md
source content

Draw.io Diagram Generation

Overview

This skill generates

.drawio
files using the drawpyo Python library. Draw.io diagrams are XML-based and can be opened in:

  • draw.io desktop app
  • diagrams.net (web)
  • VS Code draw.io extension

Quick Start

All scripts include inline dependency metadata (PEP 723). Use

uv run
to execute them — dependencies are handled automatically in an isolated environment:

# No installation needed — uv handles dependencies automatically
uv run scripts/create_flowchart.py steps.json /mnt/user-data/outputs/flow.drawio

For custom code, you can also use

uv run
with inline dependencies:

#!/usr/bin/env python3
# /// script
# requires-python = ">=3.10"
# dependencies = ["drawpyo>=0.2.0"]
# ///
import drawpyo

# Create a file and page
file = drawpyo.File()
file.file_path = "/home/claude"
file.file_name = "diagram.drawio"
page = drawpyo.Page(file=file)

# Add a shape
box = drawpyo.diagram.Object(page=page, value="Hello World")
box.position = (100, 100)

# Save
file.write()

Then run with:

uv run my_script.py

Decision Tree

What type of diagram?
├── Tree/Hierarchy (org chart, decision tree, file structure)
│   └── Use TreeDiagram class (auto-layout) — see references/REFERENCE.md
│
├── Flowchart (sequential steps with decisions)
│   └── Use helper script: scripts/create_flowchart.py
│   └── Or write custom code with Object + Edge classes
│
├── Architecture/Network (boxes with connections)
│   └── Write custom code using Object + Edge classes
│   └── See references/REFERENCE.md
│
├── From structured data (CSV, JSON, dict)
│   └── Use helper script: scripts/from_data.py
│
└── Complex/Custom
    └── Write custom drawpyo code — see references/REFERENCE.md

Key Concepts

Objects (Shapes)

# Basic rectangle
obj = drawpyo.diagram.Object(page=page, value="Label")
obj.position = (x, y)        # Coordinates in pixels
obj.width = 120              # Default: 120
obj.height = 60              # Default: 60

# From draw.io shape library
obj = drawpyo.diagram.object_from_library(
    page=page,
    library="general",       # or "flowchart", "basic", etc.
    obj_name="process",      # shape name from library
    value="Process Step"
)

Edges (Connections)

edge = drawpyo.diagram.Edge(
    page=page,
    source=obj1,
    target=obj2,
    label="connects to"
)

Styling

# Apply a style string (same format as draw.io)
obj.apply_style_string(
    "rounded=1;whiteSpace=wrap;html=1;"
    "fillColor=#dae8fc;strokeColor=#6c8ebf;"
)

Helper Scripts

Run with

uv run
— dependencies are handled automatically:

ScriptPurposeUsage
scripts/create_flowchart.py
Create flowcharts from step definitions
uv run scripts/create_flowchart.py input.json output.drawio
scripts/create_tree.py
Create tree diagrams with auto-layout
uv run scripts/create_tree.py input.json output.drawio
scripts/from_data.py
Create diagrams from JSON/dict data
uv run scripts/from_data.py input.json output.drawio

Common Shape Libraries

Use with

object_from_library(library=..., obj_name=...)
:

  • general:
    rectangle
    ,
    ellipse
    ,
    process
    ,
    diamond
    ,
    parallelogram
    ,
    hexagon
    ,
    triangle
    ,
    cylinder
    ,
    cloud
    ,
    document
    ,
    note
    ,
    actor
  • flowchart:
    terminator
    ,
    process
    ,
    decision
    ,
    data
    ,
    document
    ,
    predefined_process
    ,
    stored_data
    ,
    internal_storage
    ,
    manual_input
    ,
    manual_operation
  • basic:
    rectangle
    ,
    ellipse
    ,
    rhombus
    ,
    triangle
    ,
    pentagon
    ,
    hexagon
    ,
    octagon

Output

Always save generated

.drawio
files to
/mnt/user-data/outputs/
and use the
present_files
tool to share with the user.

Next Steps

  • references/REFERENCE.md: Complete API documentation, styling options, all shape libraries
  • references/examples.md: Example code for common diagram types
  • scripts/: Ready-to-use helper scripts