Co-Pilot
Updated 24 days ago

cc-excalidraw-skill

Rrnjn
0.0k
rnjn/cc-excalidraw-skill
82
Agent Score

💡 Summary

This skill allows users to create and edit Excalidraw diagrams programmatically in JSON format.

🎯 Target Audience

Software developers creating flowchartsUX/UI designers drafting wireframesProject managers visualizing processesEducators designing teaching materialsData analysts mapping data flows

🤖 AI Roast:Powerful, but the setup might scare off the impatient.

Security AnalysisMedium Risk

Risk: Medium. Review: outbound network access (SSRF, data egress). Run with least privilege and audit before enabling in production.


name: excalidraw description: Create and edit Excalidraw diagrams programmatically. Use when the user asks to create diagrams, flowcharts, architecture diagrams, wireframes, or any visual drawings in Excalidraw format (.excalidraw files).

Excalidraw Diagram Creation

This skill enables you to create beautiful, hand-drawn style diagrams in the Excalidraw JSON format.

File Format Overview

Excalidraw files (.excalidraw) are JSON with this structure:

{ "type": "excalidraw", "version": 2, "source": "https://excalidraw.com", "elements": [], "appState": { "viewBackgroundColor": "#ffffff", "gridSize": null }, "files": {} }

Quick Start - Creating Elements

Every element needs at minimum: type, id, x, y, and styling properties.

Minimal Rectangle

{ "type": "rectangle", "id": "rect-1", "x": 100, "y": 100, "width": 200, "height": 100, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "seed": 1234, "version": 1, "versionNonce": 1234, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, "roundness": { "type": 3 } }

Text Element

{ "type": "text", "id": "text-1", "x": 120, "y": 130, "width": 160, "height": 25, "text": "Hello World", "fontSize": 20, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "seed": 5678, "version": 1, "versionNonce": 5678, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, "containerId": null, "originalText": "Hello World", "autoResize": true, "lineHeight": 1.25 }

Arrow Element

{ "type": "arrow", "id": "arrow-1", "x": 300, "y": 150, "width": 100, "height": 0, "points": [[0, 0], [100, 0]], "startArrowhead": null, "endArrowhead": "arrow", "startBinding": null, "endBinding": null, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "seed": 9012, "version": 1, "versionNonce": 9012, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false }

Element Types

| Type | Use For | |------|---------| | rectangle | Boxes, containers, cards | | ellipse | Circles, ovals, nodes | | diamond | Decision points, conditions | | text | Labels, descriptions | | arrow | Connections, flow direction | | line | Connectors without arrowheads | | freedraw | Hand-drawn paths | | image | Embedded images | | frame | Grouping/framing elements |

Color Palette (Recommended)

Backgrounds

  • #a5d8ff - Light blue
  • #b2f2bb - Light green
  • #ffec99 - Light yellow
  • #ffc9c9 - Light red/pink
  • #e9ecef - Light gray
  • #d0bfff - Light purple
  • #99e9f2 - Light cyan

Strokes

  • #1e1e1e - Default black
  • #1971c2 - Blue
  • #2f9e44 - Green
  • #f08c00 - Orange
  • #e03131 - Red
  • #9c36b5 - Purple

Styling Properties

| Property | Values | Description | |----------|--------|-------------| | fillStyle | "solid", "hachure", "cross-hatch" | Fill pattern | | strokeWidth | 1, 2, 4 | Line thickness | | strokeStyle | "solid", "dashed", "dotted" | Line style | | roughness | 0, 1, 2 | Hand-drawn feel (0=smooth, 2=rough) | | opacity | 0-100 | Transparency | | roundness | { "type": 3 } | Rounded corners |

Connecting Elements with Arrows

To connect shapes with arrows, use bindings:

{ "type": "arrow", "id": "arrow-1", "startBinding": { "elementId": "rect-1", "focus": 0, "gap": 5 }, "endBinding": { "elementId": "rect-2", "focus": 0, "gap": 5 }, "points": [[0, 0], [200, 0]] }

Also add boundElements to the connected shapes:

{ "type": "rectangle", "id": "rect-1", "boundElements": [{ "id": "arrow-1", "type": "arrow" }] }

Font Families

| Value | Font | |-------|------| | 1 | Hand-drawn (Virgil) | | 2 | Normal (Helvetica) | | 3 | Code (Cascadia) |

Best Practices

  1. Generate unique IDs - Use descriptive prefixes like rect-1, arrow-2, text-header
  2. Use random seeds - Each element needs a unique seed for consistent rendering
  3. Space elements well - Leave 50-100px between elements
  4. Align elements - Use consistent x/y coordinates for visual alignment
  5. Group related items - Use matching groupIds arrays
  6. Use the color palette - Stick to Excalidraw's built-in colors for consistency

Diagram Types You Can Create

| Type | Description | |------|-------------| | Flowcharts | Process flows, algorithms, decision trees | | Sequence Diagrams | API calls, user interactions, message flows | | Architecture Diagrams | System design, microservices, infrastructure | | Mind Maps | Brainstorming, concept mapping, idea organization | | Data Flow Diagrams | Data movement, system analysis | | ERD | Database schemas, entity relationships | | Wireframes | UI mockups, layout sketches |

Reference Documentation

  • diagram-patterns.md - Professional patterns for each diagram type (flowcharts, sequence diagrams, mind maps, architecture, etc.)
  • examples.md - Complete working JSON examples you can use as templates
  • element-reference.md - Full property reference for all element types
  • best-practices.md - Design tips, color theory, typography guidelines

Quick Tips for Beautiful Diagrams

  1. Use roughness: 0 for formal/technical diagrams, roughness: 1 for friendly sketches
  2. Use fontFamily: 2 (Helvetica) for professional look, fontFamily: 1 (Virgil) only when casual look is requested
  3. Consistent spacing - 100px between major elements, 50px for related items
  4. Color semantics - Blue for info/input, Green for success/data, Yellow for decisions, Red for errors
  5. Arrow conventions - Solid for actions, Dashed for responses/async
5-Dim Analysis
Clarity9/10
Novelty7/10
Utility9/10
Completeness8/10
Maintainability8/10
Pros & Cons

Pros

  • Supports various diagram types
  • Easy to integrate with existing tools
  • Customizable styling options

Cons

  • Requires understanding of JSON format
  • Limited to Excalidraw's styling capabilities
  • No built-in GUI for diagram creation

Related Skills

pytorch

S
toolCode Lib
92/ 100

“It's the Swiss Army knife of deep learning, but good luck figuring out which of the 47 installation methods is the one that won't break your system.”

agno

S
toolCode Lib
90/ 100

“It promises to be the Kubernetes for agents, but let's see if developers have the patience to learn yet another orchestration layer.”

nuxt-skills

S
toolCo-Pilot
90/ 100

“It's essentially a well-organized cheat sheet that turns your AI assistant into a Nuxt framework parrot.”

Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.

Copyright belongs to the original author rnjn.