Excalidraw Diagram Generator
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a sys...
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a sys...
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
A skill for generating Excalidraw-format diagrams from natural language descriptions. This skill helps create visual representations of processes, systems, relationships, and ideas without manual drawing.
Use this skill when users request:
Supported diagram types:
Analyze the user's description to determine:
| User Intent | Diagram Type | Example Keywords |
|---|---|---|
| Process flow, steps, procedures | Flowchart | "workflow", "process", "steps", "procedure" |
| Connections, dependencies, associations | Relationship Diagram | "relationship", "connections", "dependencies", "structure" |
| Concept hierarchy, brainstorming | Mind Map | "mind map", "concepts", "ideas", "breakdown" |
| System design, components | Architecture Diagram | "architecture", "system", "components", "modules" |
| Data flow, transformation processes | Data Flow Diagram (DFD) | "data flow", "data processing", "data transformation" |
| Cross-functional processes, actor responsibilities | Business Flow (Swimlane) | "business process", "swimlane", "actors", "responsibilities" |
| Object-oriented design, class structures | Class Diagram | "class", "inheritance", "OOP", "object model" |
| Interaction sequences, message flows | Sequence Diagram | "sequence", "interaction", "messages", "timeline" |
| Database design, entity relationships | ER Diagram | "database", "entity", "relationship", "data model" |
For Flowcharts:
For Relationship Diagrams:
For Mind Maps:
For Data Flow Diagrams (DFD):
For Business Flow (Swimlane):
For Class Diagrams:
For Sequence Diagrams:
For ER Diagrams:
Create the
.excalidraw file with appropriate elements:
Available element types:
rectangle: Boxes for entities, steps, conceptsellipse: Alternative shapes for emphasisdiamond: Decision pointsarrow: Directional connectionstext: Labels and annotationsKey properties to set:
x, y coordinateswidth, heightstrokeColor, backgroundColor, fillStylefontFamily: 5 (Excalifont - required for all text elements)points array for arrowsImportant: All text elements must use
fontFamily: 5 (Excalifont) for consistent visual appearance.
Structure the complete Excalidraw file:
{ "type": "excalidraw", "version": 2, "source": "https://excalidraw.com", "elements": [ // Array of diagram elements ], "appState": { "viewBackgroundColor": "#ffffff", "gridSize": 20 }, "files": {} }
<descriptive-name>.excalidraw| Diagram Type | Recommended Count | Maximum |
|---|---|---|
| Flowchart steps | 3-10 | 15 |
| Relationship entities | 3-8 | 12 |
| Mind map branches | 4-6 | 8 |
| Mind map sub-topics per branch | 2-4 | 6 |
#a5d8ff)#b2f2bb)#ffd43b)#ffc9c9)fontFamily: 5 (Excalifont) for all text elementsIf user request has too many elements:
Example response:
"Your request includes 15 components. For clarity, I recommend: 1. High-level architecture diagram (6 main components) 2. Detailed diagram for each subsystemWould you like me to start with the high-level view?"
User: "Create a flowchart for user registration"
Agent generates:
user-registration-flow.excalidrawUser: "Diagram the relationship between User, Post, and Comment entities"
Agent generates:
user-content-relationships.excalidrawUser: "Mind map about machine learning concepts"
Agent generates:
machine-learning-mindmap.excalidraw| Issue | Solution |
|---|---|
| Elements overlap | Increase spacing between coordinates |
| Text doesn't fit in boxes | Increase box width or reduce font size |
| Too many elements | Break into multiple diagrams |
| Unclear layout | Use grid layout (rows/columns) or radial layout (mind maps) |
| Colors inconsistent | Define color palette upfront based on element types |
const columns = Math.ceil(Math.sqrt(entityCount)); const x = startX + (index % columns) * horizontalGap; const y = startY + Math.floor(index / columns) * verticalGap;
const angle = (2 * Math.PI * index) / branchCount; const x = centerX + radius * Math.cos(angle); const y = centerY + radius * Math.sin(angle);
Use timestamp + random string for unique IDs:
const id = Date.now().toString(36) + Math.random().toString(36).substr(2);
Always provide:
.excalidraw JSON fileExample summary:
Created: user-workflow.excalidraw Type: Flowchart Elements: 7 rectangles, 6 arrows, 1 title text Total: 14 elementsTo view:
- Visit https://excalidraw.com
- Drag and drop user-workflow.excalidraw
Or use File → Open in Excalidraw VS Code extension
Before delivering the diagram:
fontFamily: 5 (Excalifont)For specialized diagrams (e.g., AWS/GCP/Azure architecture diagrams), you can use pre-made icon libraries from Excalidraw. This provides professional, standardized icons instead of basic shapes.
If user asks for AWS/cloud architecture diagrams or mentions wanting to use specific icons:
Check if library exists: Look for
libraries/<library-name>/reference.md
If library exists: Proceed to use icons (see AI Assistant Workflow below)
If library does NOT exist: Respond with setup instructions:
To use [AWS/GCP/Azure/etc.] architecture icons, please follow these steps:
- Visit https://libraries.excalidraw.com/
- Search for "[AWS Architecture Icons/etc.]" and download the .excalidrawlib file
- Create directory: skills/excalidraw-diagram-generator/libraries/[icon-set-name]/
- Place the downloaded file in that directory
- Run the splitter script: python skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py skills/excalidraw-diagram-generator/libraries/[icon-set-name]/
This will split the library into individual icon files for efficient use. After setup is complete, I can create your diagram using the actual AWS/cloud icons.
Alternatively, I can create the diagram now using simple shapes (rectangles, ellipses) which you can later replace with icons manually in Excalidraw.
Step 1: Create Library Directory
mkdir -p skills/excalidraw-diagram-generator/libraries/aws-architecture-icons
Step 2: Download Library
.excalidrawlib fileStep 3: Place Library File
aws-architecture-icons.excalidrawlib)Step 4: Run Splitter Script
python skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py skills/excalidraw-diagram-generator/libraries/aws-architecture-icons/
Step 5: Verify Setup After running the script, verify the following structure exists:
skills/excalidraw-diagram-generator/libraries/aws-architecture-icons/ aws-architecture-icons.excalidrawlib (original) reference.md (generated - icon lookup table) icons/ (generated - individual icon files) API-Gateway.json CloudFront.json EC2.json Lambda.json RDS.json S3.json ...
When icon libraries are available in
:libraries/
RECOMMENDED APPROACH: Use Python Scripts (Efficient & Reliable)
The repository includes Python scripts that handle icon integration automatically:
Create base diagram structure:
.excalidraw file with basic layout (title, boxes, regions)Add icons using Python script:
python skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py \ <diagram-path> <icon-name> <x> <y> [--label "Text"] [--library-path PATH]
.excalidraw.edit is enabled by default to avoid overwrite issues; pass --no-use-edit-suffix to disable.Examples:
# Add EC2 icon at position (400, 300) with label python scripts/add-icon-to-diagram.py diagram.excalidraw EC2 400 300 --label "Web Server"Add VPC icon at position (200, 150)
python scripts/add-icon-to-diagram.py diagram.excalidraw VPC 200 150
Add icon from different library
python scripts/add-icon-to-diagram.py diagram.excalidraw Compute-Engine 500 200
--library-path libraries/gcp-icons --label "API Server"
Add connecting arrows:
python skills/excalidraw-diagram-generator/scripts/add-arrow.py \ <diagram-path> <from-x> <from-y> <to-x> <to-y> [--label "Text"] [--style solid|dashed|dotted] [--color HEX]
.excalidraw.edit is enabled by default to avoid overwrite issues; pass --no-use-edit-suffix to disable.Examples:
# Simple arrow from (300, 250) to (500, 300) python scripts/add-arrow.py diagram.excalidraw 300 250 500 300Arrow with label
python scripts/add-arrow.py diagram.excalidraw 300 250 500 300 --label "HTTPS"
Dashed arrow with custom color
python scripts/add-arrow.py diagram.excalidraw 400 350 600 400 --style dashed --color "#7950f2"
Workflow summary:
# Step 1: Create base diagram with title and structure # (Create .excalidraw file with initial elements)Step 2: Add icons with labels
python scripts/add-icon-to-diagram.py my-diagram.excalidraw "Internet-gateway" 200 150 --label "Internet Gateway" python scripts/add-icon-to-diagram.py my-diagram.excalidraw VPC 250 250 python scripts/add-icon-to-diagram.py my-diagram.excalidraw ELB 350 300 --label "Load Balancer" python scripts/add-icon-to-diagram.py my-diagram.excalidraw EC2 450 350 --label "EC2 Instance" python scripts/add-icon-to-diagram.py my-diagram.excalidraw RDS 550 400 --label "Database"
Step 3: Add connecting arrows
python scripts/add-arrow.py my-diagram.excalidraw 250 200 300 250 # Internet → VPC python scripts/add-arrow.py my-diagram.excalidraw 300 300 400 300 # VPC → ELB python scripts/add-arrow.py my-diagram.excalidraw 400 330 500 350 # ELB → EC2 python scripts/add-arrow.py my-diagram.excalidraw 500 380 600 400 # EC2 → RDS
Benefits of Python Script Approach:
ALTERNATIVE: Manual Icon Integration (Not Recommended)
Only use this if Python scripts are unavailable:
Check for libraries:
List directory: skills/excalidraw-diagram-generator/libraries/ Look for subdirectories containing reference.md files
Read reference.md:
Open: libraries/<library-name>/reference.md This is lightweight (typically <300 lines) and lists all available icons
Find relevant icons:
Search the reference.md table for icon names matching diagram needs Example: For AWS diagram with EC2, S3, Lambda → Find "EC2", "S3", "Lambda" in table
Load specific icon data (WARNING: Large files):
Read ONLY the needed icon files: - libraries/aws-architecture-icons/icons/EC2.json (200-300 lines) - libraries/aws-architecture-icons/icons/S3.json (200-300 lines) - libraries/aws-architecture-icons/icons/Lambda.json (200-300 lines) Note: Each icon file is 200-1000 lines - this consumes significant tokens
Extract and transform elements:
Each icon JSON contains an "elements" array Calculate bounding box (min_x, min_y, max_x, max_y) Apply offset to all x/y coordinates Generate new unique IDs for all elements Update groupIds references Copy transformed elements into your diagram
Position icons and add connections:
Adjust x/y coordinates to position icons correctly in the diagram Update IDs to ensure uniqueness across diagram Add connecting arrows and labels as needed
Manual Integration Challenges:
Request: "Create an AWS architecture diagram with Internet Gateway, VPC, ELB, EC2, and RDS"
Recommended Workflow (using Python scripts): Request: "Create an AWS architecture diagram with Internet Gateway, VPC, ELB, EC2, and RDS"
Recommended Workflow (using Python scripts):
# Step 1: Create base diagram file with title # Create my-aws-diagram.excalidraw with basic structure (title, etc.)Step 2: Check icon availability
Read: libraries/aws-architecture-icons/reference.md
Confirm icons exist: Internet-gateway, VPC, ELB, EC2, RDS
Step 3: Add icons with Python script
python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw "Internet-gateway" 150 100 --label "Internet Gateway" python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw VPC 200 200 python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw ELB 350 250 --label "Load Balancer" python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw EC2 500 300 --label "Web Server" python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw RDS 650 350 --label "Database"
Step 4: Add connecting arrows
python scripts/add-arrow.py my-aws-diagram.excalidraw 200 150 250 200 # Internet → VPC python scripts/add-arrow.py my-aws-diagram.excalidraw 265 230 350 250 # VPC → ELB python scripts/add-arrow.py my-aws-diagram.excalidraw 415 280 500 300 # ELB → EC2 python scripts/add-arrow.py my-aws-diagram.excalidraw 565 330 650 350 --label "SQL" --style dashed
Result: Complete diagram with professional AWS icons, labels, and connections
Benefits:
Alternative Workflow (manual, if scripts unavailable):
libraries/aws-architecture-icons/reference.md exists → Yesicons/Internet-gateway.json (298 lines)icons/VPC.json (550 lines)icons/ELB.json (363 lines)icons/EC2.json (231 lines)icons/RDS.json (similar size)
Total: ~2000+ lines of JSON to process.excalidraw fileChallenges with manual approach:
.excalidrawlib file you provide.If no icon libraries are set up:
See bundled references for:
references/excalidraw-schema.md - Complete Excalidraw JSON schemareferences/element-types.md - Detailed element type specificationstemplates/flowchart-template.json - Basic flowchart startertemplates/relationship-template.json - Relationship diagram startertemplates/mindmap-template.json - Mind map starterscripts/split-excalidraw-library.py - Tool to split .excalidrawlib filesscripts/README.md - Documentation for library toolsscripts/.gitignore - Prevents local Python artifacts from being committedPotential improvements:
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.