Skip to content
Back to skills

Drawio

ASecurity

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.

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added February 7, 2026
documentationpythongobashapidocumentation

Works with

  • api

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned February 10, 2026

npx -y skills add fpl9000/ai-skills --skill drawio --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Drawio?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Drawio
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fpl9000-drawio/badge)](https://www.skillsdirectory.com/skills/fpl9000-drawio)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: drawio
description: 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.
license: MIT
metadata:
  author: example
  version: "1.1"
  dependency-management: uv (PEP 723 inline script metadata)
---

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

```bash
# 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:

```python
#!/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)
```python
# 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)
```python
edge = drawpyo.diagram.Edge(
    page=page,
    source=obj1,
    target=obj2,
    label="connects to"
)
```

### Styling
```python
# 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:

| Script | Purpose | Usage |
|--------|---------|-------|
| `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

Files in this skill

  • LICENSE.txt1 KB
  • SKILL.md4.3 KB
  • references/REFERENCE.md11.2 KB
  • references/examples.md7.4 KB
  • scripts/create_flowchart.py9.3 KB
  • scripts/create_tree.py11.3 KB
  • scripts/from_data.py12.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.