Generate Excalidraw diagrams from natural language descriptions. Outputs .excalidraw JSON files openable in Excalidraw. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", "generate an Excalidraw file", "draw an ER diagram", "create a sequence diagram", or "make a class diagram". Supports flowcharts, relationship diagrams, mind maps, architecture, DFD, swimlane, class, sequence, and ER diagrams. Can use icon libraries (AWS, GCP, etc.) when set up. Do NOT use for code architecture analysis (use the architecture skills), Mermaid diagram rendering (use mermaid-studio), or non-visual documentation (use docs-writer).
Confirm successful installation by checking the skill directory location:
.cursor/skills/excalidraw-studio
Restart Cursor to activate excalidraw-studio. Access via /excalidraw-studio in your agent's command palette.
โ
Security Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Generate Excalidraw diagrams from natural language descriptions. Outputs .excalidraw JSON files openable in Excalidraw. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", "generate an Excalidraw file", "draw an ER diagram", "create a sequence diagram", or "make a class diagram". Supports flowcharts, relationship diagrams, mind maps, architecture, DFD, swimlane, class, sequence, and ER diagrams. Can use icon libraries (AWS, GCP, etc.) when set up. Do NOT use for code architecture analysis (use the architecture skills), Mermaid diagram rendering (use mermaid-studio), or non-visual documentation (use docs-writer).
license
CC-BY-4.0
metadata
author: Felipe Rodrigues - github.com/felipfr version: 1.0.1
Excalidraw Studio
Generate Excalidraw-format diagrams from natural language descriptions. Outputs .excalidraw JSON files that can be opened directly in Excalidraw (web, VS Code extension, or Obsidian plugin).
Workflow
UNDERSTAND โ CHOOSE TYPE โ EXTRACT โ GENERATE โ SAVE
Step 1: Understand the Request
Analyze the user's description to determine:
Diagram type โ Use the decision matrix below
Key elements โ Entities, steps, concepts, actors
Architecture diagrams (structural zones + sketchy shapes)
Step 3: Extract Structured Information
Extract the key components based on diagram type. For each type, identify:
Nodes/entities โ What are the boxes/shapes?
Connections โ What connects to what, and with what label?
Hierarchy โ What contains what, what comes before what?
Decision points โ Where does the flow branch?
For detailed extraction guidelines per diagram type, read references/element-types.md.
Step 4: Generate the Excalidraw JSON
CRITICAL: Read references/excalidraw-schema.md before generating your first diagram. It contains the correct element format, text container model, and binding system.
Key rules for generation:
Text inside shapes โ Use boundElements on the shape and a separate text element with containerId. Never use a label shorthand:
Element order for z-index โ Always declare shapes first, arrows second, text elements last. This guarantees text renders on top and is never obscured by arrows or other shapes.
Positioning โ Use grid-aligned coordinates (multiples of 20px when gridSize: 20). Leave 200-300px horizontal gap, 100-150px vertical gap between elements.
Unique IDs โ Every element must have a unique id. Use descriptive IDs like "step-1", "decision-valid", "arrow-1-to-2", "text-step-1".
Colors โ Use a consistent palette:
Role
Color
Hex
Primary entities
Light blue
#a5d8ff
Process steps
Light green
#b2f2bb
Important/Central
Yellow
#ffd43b
Warnings/Errors
Light red
#ffc9c9
Secondary
Cyan
#96f2d7
Default stroke
Dark
#1e1e1e
Step 5: Save and Present
Save as <descriptive-name>.excalidraw
Provide a summary:
Created: user-workflow.excalidraw
Type: Flowchart
Elements: 7 shapes, 6 arrows, 1 title
Total: 14 elements
To view:
1. Visit https://excalidraw.com โ Open โ drag and drop the file
2. Or use the Excalidraw VS Code extension
3. Or open in Obsidian with the Excalidraw plugin
Templates
Pre-built templates are available in assets/ for quick starting points. Use these when the diagram type matches โ they provide correct structure and styling:
Template
File
Flowchart
assets/flowchart-template.json
Relationship
assets/relationship-template.json
Mind Map
assets/mindmap-template.json
Data Flow (DFD)
assets/data-flow-diagram-template.json
Swimlane
assets/business-flow-swimlane-template.json
Class Diagram
assets/class-diagram-template.json
Sequence Diagram
assets/sequence-diagram-template.json
ER Diagram
assets/er-diagram-template.json
Read a template when creating that diagram type for the first time. Use its structure as a base, then modify elements to match the user's request.
Icon Libraries
For professional architecture diagrams with service icons (AWS, GCP, Azure, etc.), icon libraries can be set up. Read references/icon-libraries.md when:
User requests an AWS/cloud architecture diagram
User mentions wanting specific service icons
You need to check if icon libraries are available
Best Practices
Element Count
Diagram Type
Recommended
Maximum
Flowchart steps
3-10
15
Relationship entities
3-8
12
Mind map branches
4-6
8
Sub-topics per branch
2-4
6
If the user's request exceeds maximum, suggest breaking into multiple diagrams:
"Your request includes 15 components. For clarity, I recommend: (1) High-level architecture diagram with 6 main components, (2) Detailed sub-diagrams for each subsystem. Want me to start with the high-level view?"
Layout
Flow direction: Left-to-right for processes, top-to-bottom for hierarchies
Spacing: 200-300px horizontal, 100-150px vertical between elements
Grid alignment: Position on multiples of 20px for clean alignment
Margins: Minimum 50px from canvas edge
Text sizing: 28-36px titles, 18-22px labels, 14-16px annotations
Font: Use fontFamily: 5 (Excalifont) for hand-drawn consistency. Fallback to 1 (Virgil) if 5 is not supported.
Background zones: For architecture diagrams, add semi-transparent dashed zone rectangles (opacity: 35, strokeStyle: "dashed", roughness: 0) as the first elements in the array to create visual grouping regions. See references/excalidraw-schema.md โ Background Zones.
Element order: zones first โ shapes โ arrows โ text elements (ensures correct z-index and text always renders on top)
Common Mistakes to Avoid
โ Using label: { text: "..." } shorthand on shapes or arrows โ not supported by the Excalidraw parser
โ Putting text directly on shape elements without containerId
โ Using start/end for arrow bindings โ use startBinding/endBinding with elementId/focus/gap
โ Forgetting to add arrows to their connected shapes' boundElements arrays
โ Omitting originalText, lineHeight, autoResize, or backgroundColor: "transparent" from text elements inside containers
โ Omitting required base properties (angle, strokeStyle, opacity, groupIds, frameId, index, isDeleted, seed, version, versionNonce, updated, link, locked) โ elements will not render
โ Missing "files": {} at the top level of the JSON
โ Using roundness: { "type": 3 } on ellipses โ ellipses must use roundness: null
โ Missing lastCommittedPoint, startArrowhead, endArrowhead on arrows
โ Declaring text elements before arrows โ text renders underneath and gets obscured
โ Floating arrows without bindings (won't move with shapes)
โ Overlapping elements (increase spacing)
โ Inconsistent color usage (define palette upfront)
โ Too many elements on one diagram (break into sub-diagrams)
Validation Checklist
Before delivering the diagram, verify:
All elements have unique IDs
Every element has ALL required base properties: angle, strokeStyle, opacity, groupIds, frameId, index, isDeleted, link, locked, seed, version, versionNonce, updated
index values are assigned in order ("a0", "a1", โฆ) with text elements getting higher values than shapes/arrows
Top-level JSON includes "files": {}
Shapes with text use boundElements + separate text element with containerId
Text elements inside containers have containerId, originalText, lineHeight: 1.25, autoResize: true, roundness: null, backgroundColor: "transparent"
Arrows use startBinding/endBinding (with elementId, focus, gap) when connecting shapes, plus lastCommittedPoint: null, startArrowhead: null, endArrowhead: "arrow"
Connected shapes list the arrow in their boundElements arrays
Element order: shapes โ arrows โ text elements (text always on top)
Ellipses use roundness: null (not { "type": 3 })
Coordinates prevent overlapping (check spacing)
Text is readable (font size 16+)
Colors follow consistent scheme
File is valid JSON
Element count is reasonable (<20 for clarity)
Troubleshooting
Issue
Solution
Text not showing in shapes
Use boundElements + separate text element with containerId, originalText, lineHeight
Text hidden behind arrows
Move text elements to end of elements array (after all arrows)
Arrows don't move with shapes
Use startBinding/endBinding with elementId, focus: 0, gap: 1
Shape not moving with arrows
Add the arrow to the shape's boundElements array
Elements overlap
Increase spacing between coordinates
Text doesn't fit
Increase shape width or reduce font size
Too many elements
Break into multiple diagrams
Colors look inconsistent
Define color palette upfront, apply consistently
Limitations
Complex curves are simplified to straight/basic curved lines
Hand-drawn roughness is set to default (1)
No embedded images in auto-generation (use icon libraries for service icons)
Maximum recommended: 20 elements per diagram for clarity
No automatic collision detection โ use spacing guidelines
Implementation Guide
Prerequisites
โบClaude Desktop or compatible AI client with skill support
โบClear understanding of task or problem to solve
โบWillingness to iterate and refine outputs
Time Estimate
15-45 minutes depending on use case complexity
Steps
1Install skill using provided installation command
2Test with simple use case relevant to your work
3Evaluate output quality and relevance
4Iterate on prompts to improve results
5Integrate into regular workflow if valuable
Common Pitfalls
โ Expecting perfect results without iteration
โ Not providing enough context in prompts
โ Using skill for tasks outside its intended scope
โ Accepting outputs without review and validation
Best Practices
โ Do
+Start with clear, specific prompts
+Provide relevant context and constraints
+Review and refine all outputs before using
+Iterate to improve output quality
+Document successful prompt patterns
โ Don't
โDon't use without understanding skill limitations
โDon't skip validation of outputs
โDon't share sensitive information in prompts
โDon't expect skill to replace human judgment
๐ก Pro Tips
โ Be specific about desired format and style
โ Ask for multiple options to choose from
โ Request explanations to understand reasoning
โ Combine AI efficiency with human expertise
When to Use This
โ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
โ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
Learning Path
1Familiarize yourself with skill capabilities and limitations
2Start with low-risk, non-critical tasks
3Progress to more complex and valuable use cases
4Build expertise through regular use and experimentation