Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aws-samples avatar

Excalidraw

  • 42 installs
  • 186 repo stars
  • Updated August 4, 2026
  • aws-samples/sample-strands-agent-with-agentcore

excalidraw is an agent skill that creates hand-drawn style diagrams and flowcharts using the Excalidraw JSON format.

About

excalidraw creates hand-drawn style diagrams and flowcharts using the Excalidraw JSON format for visualizing structure, flow, and relationships. A developer uses it for architecture diagrams, flowcharts, mind maps, and sequence or ER diagrams rather than numeric charts. It provides a consistent color palette, element format, and camera framing rules.

  • Creates hand-drawn style diagrams and flowcharts in Excalidraw format
  • Supports architecture, flowchart, mind map, sequence, ER, and DFD types
  • Renders interactively in a Canvas panel with a defined color palette

Excalidraw by the numbers

  • 42 all-time installs (skills.sh)
  • Ranked #1,270 of 1,880 Design & UI/UX skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

excalidraw capabilities & compatibility

Free; generates Excalidraw JSON rendered in a Canvas panel, no external keys stated.

Capabilities
diagram generation · flowchart generation · architecture diagram
Use cases
ui design · documentation
Pricing
Free
From the docs

What excalidraw says it does

Create hand-drawn style diagrams, flowcharts, architecture diagrams, and mind maps using the Excalidraw format.
SKILL.md
Use `create_excalidraw_diagram` when the user wants to visualize **structure, flow, or relationships** — not raw numbers.
SKILL.md
npx skills add https://github.com/aws-samples/sample-strands-agent-with-agentcore --skill excalidraw

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs42
repo stars186
Last updatedAugust 4, 2026
Repositoryaws-samples/sample-strands-agent-with-agentcore

What it does

Create hand-drawn style architecture diagrams, flowcharts, and mind maps from Excalidraw element JSON.

Who is it for?

Visualizing system architecture, flows, and relationships as editable hand-drawn diagrams.

Skip if: Plotting numeric data (sales figures, percentages, time series); use a visualization skill for x/y data.

When should I use this skill?

You need an architecture diagram, flowchart, mind map, or sequence/ER diagram rather than a data chart.

What you get

An interactive Excalidraw diagram of the architecture, flow, or relationships.

By the numbers

  • 1 tool (create_excalidraw_diagram)
  • 9 supported diagram types
  • cameraUpdate must be 4:3 ratio

Files

SKILL.mdMarkdownGitHub ↗

Excalidraw Diagrams

Create hand-drawn style diagrams, flowcharts, architecture diagrams, and mind maps using the Excalidraw format. Diagrams are rendered interactively in the Canvas panel.

When to Use This Skill

Use create_excalidraw_diagram when the user wants to visualize structure, flow, or relationships — not raw numbers.

Use this skill for...Use visualization skill for...
System architecture diagramSales figures by quarter
Flowchart or decision treeSurvey response percentages
Sequence / interaction diagramStock price over time
Mind map or concept mapMarket share breakdown
Shapes, boxes, arrows, labelsAny x/y or segment/value data

Diagram Type

Choose based on user intent. For Swimlane, Class, Sequence, ER, and DFD diagrams, read diagram-patterns.md before generating.

IntentTypePattern
Process steps, workflow, decisionsFlowchartRectangles + diamonds + arrows (see Example)
System components, dependenciesArchitectureZone rectangles + boxes + arrows
Concept hierarchy, brainstormingMind MapCenter node + radial branch arrows
Entity connections, associationsRelationshipBoxes + labeled arrows
Cross-functional workflow, actor responsibilitiesSwimlanediagram-patterns.md
OOP class structure, inheritanceClass Diagramdiagram-patterns.md
Object interactions over timeSequence Diagramdiagram-patterns.md
Database entities and relationshipsER Diagramdiagram-patterns.md
Data transformation, data movementDFDdiagram-patterns.md

Available Tools

  • create_excalidraw_diagram(elements, title, background_color): Generate a diagram from Excalidraw element JSON

Color Palette

Use these colors consistently across all diagrams.

Primary Colors (strokes, arrows, text)

NameHexUse
Blue#4a9eedPrimary actions, links
Amber#f59e0bWarnings, highlights
Green#22c55eSuccess, positive
Red#ef4444Errors, negative
Purple#8b5cf6Accents, special items
Cyan#06b6d4Info, secondary

Fill Colors (shape backgrounds)

ColorHexGood For
Light Blue#a5d8ffInput, sources, primary nodes
Light Green#b2f2bbSuccess, output, completed
Light Orange#ffd8a8Warning, pending, external
Light Purple#d0bfffProcessing, middleware
Light Red#ffc9c9Error, critical
Light Yellow#fff3bfNotes, decisions
Light Teal#c3fae8Storage, data

Background Zone Colors (use with opacity: 35 for layer grouping)

ColorHexGood For
Blue zone#dbe4ffUI / frontend layer
Purple zone#e5dbffLogic / agent layer
Green zone#d3f9d8Data / tool layer

Element Format

Required Fields (all elements)

type, id (unique string), x, y, width, height

Defaults (skip if using these values)

strokeColor="#1e1e1e", backgroundColor="transparent", fillStyle="solid", strokeWidth=2, roughness=1, opacity=100

Shape Types

Rectangle

{ "type": "rectangle", "id": "r1", "x": 100, "y": 100, "width": 200, "height": 80,
  "roundness": { "type": 3 }, "backgroundColor": "#a5d8ff", "fillStyle": "solid" }
  • roundness: { type: 3 } for rounded corners

Ellipse

{ "type": "ellipse", "id": "e1", "x": 100, "y": 100, "width": 150, "height": 150 }

Diamond

{ "type": "diamond", "id": "d1", "x": 100, "y": 100, "width": 150, "height": 150 }

Label on shape (PREFERRED — no separate text element needed)

{ "type": "rectangle", "id": "r1", "x": 100, "y": 100, "width": 200, "height": 80,
  "label": { "text": "My Label", "fontSize": 20 } }
  • Works on rectangle, ellipse, diamond
  • Text auto-centers; container auto-resizes to fit
  • Also works on arrows: "label": { "text": "connects" }

Standalone Text (titles, annotations only)

{ "type": "text", "id": "t1", "x": 150, "y": 50, "text": "Title", "fontSize": 24 }
  • x is the LEFT edge. To center at position cx: set x = cx - text.length × fontSize × 0.25

Arrow

{ "type": "arrow", "id": "a1", "x": 300, "y": 150, "width": 150, "height": 0,
  "points": [[0,0],[150,0]], "endArrowhead": "arrow",
  "startBinding": { "elementId": "r1", "fixedPoint": [1, 0.5] },
  "endBinding": { "elementId": "r2", "fixedPoint": [0, 0.5] } }
  • points: [dx, dy] offsets from element x, y
  • endArrowhead: null | "arrow" | "bar" | "dot" | "triangle"
  • strokeStyle: "solid" | "dashed" | "dotted"
  • fixedPoint for bindings: top [0.5,0], bottom [0.5,1], left [0,0.5], right [1,0.5]

Pseudo-Elements (not drawn — control behavior)

cameraUpdate — sets the viewport

{ "type": "cameraUpdate", "width": 800, "height": 600, "x": 0, "y": 0 }
  • x, y: top-left corner of visible area (scene coordinates)
  • Must be 4:3 ratio: 400×300, 600×450, 800×600, 1200×900, 1600×1200
  • ALWAYS place a cameraUpdate as the first element to frame the diagram
  • No id needed

delete — removes elements by ID

{ "type": "delete", "ids": "r1,a1,t2" }
  • Comma-separated element IDs to remove
  • Use when updating an existing diagram to remove elements before adding replacements
  • Never reuse a deleted ID — assign new IDs to replacements

Camera Sizing Guide

The diagram displays at ~700px width. Use these standard sizes:

SizeWidth × HeightUse When
S400 × 3002–3 elements, close-up
M600 × 450Small diagram section
L800 × 600Standard (default)
XL1200 × 900Large overview
XXL1600 × 1200Very complex diagrams

Font size rules:

  • Body text / labels: minimum 16
  • Titles / headings: minimum 20
  • Annotations: minimum 14 (use sparingly)
  • At XL/XXL camera: increase minimums by ~4px

Element sizing rules:

  • Labeled rectangles/ellipses: minimum 120 × 60
  • Leave 20–30px gaps between elements

Updating an Existing Diagram

When the user asks to modify a diagram, you will receive the current elements in context. Respond with the complete updated elements array:

  • Keep the same id for unchanged elements
  • Modify fields on elements you want to change
  • Omit elements you want to remove
  • Add new elements with unique IDs not used before

Example: Flowchart

[
  { "type": "cameraUpdate", "width": 800, "height": 600, "x": 0, "y": 0 },
  { "type": "rectangle", "id": "el-1",
    "x": 300, "y": 60, "width": 160, "height": 60,
    "strokeColor": "#4a9eed", "backgroundColor": "#a5d8ff",
    "fillStyle": "solid", "roundness": { "type": 3 },
    "label": { "text": "Start", "fontSize": 18 } },
  { "type": "diamond", "id": "el-2",
    "x": 280, "y": 170, "width": 200, "height": 90,
    "strokeColor": "#f59e0b", "backgroundColor": "#fff3bf",
    "fillStyle": "solid",
    "label": { "text": "Decision?", "fontSize": 16 } },
  { "type": "arrow", "id": "el-3",
    "x": 380, "y": 120, "width": 0, "height": 50,
    "points": [[0,0],[0,50]], "endArrowhead": "arrow",
    "startBinding": { "elementId": "el-1", "fixedPoint": [0.5, 1] },
    "endBinding": { "elementId": "el-2", "fixedPoint": [0.5, 0] } },
  { "type": "rectangle", "id": "el-4",
    "x": 300, "y": 320, "width": 160, "height": 60,
    "strokeColor": "#22c55e", "backgroundColor": "#b2f2bb",
    "fillStyle": "solid", "roundness": { "type": 3 },
    "label": { "text": "End", "fontSize": 18 } },
  { "type": "arrow", "id": "el-5",
    "x": 380, "y": 260, "width": 0, "height": 60,
    "points": [[0,0],[0,60]], "endArrowhead": "arrow",
    "startBinding": { "elementId": "el-2", "fixedPoint": [0.5, 1] },
    "endBinding": { "elementId": "el-4", "fixedPoint": [0.5, 0] } }
]

Common Mistakes to Avoid

  • Camera must use exact 4:3 ratios — non-4:3 viewports cause distortion
  • Always start with cameraUpdate — without it the viewport is unpredictable
  • No comments in element arrayselements must be valid JSON. Never add // or /* */ comments inside the array; they break JSON parsing
  • Text contrast — never use light gray on white. Minimum text color on white: #757575. For text on light fills use dark variants (#15803d not #22c55e)
  • Arrow labels need space — long labels overflow short arrows; keep labels short or widen arrows
  • No emoji — Excalidraw's font does not render emoji
  • Element overlap — check that labels, boxes, and zone overlays don't stack on each other (minimum 20px gap)
  • Camera padding — leave padding inside the camera frame; don't match camera size exactly to content size

UI Guidance (from tools-config)

Element Format:

  • Required: type, x, y, id
  • Shapes (rectangle/ellipse/diamond): add width, height
  • Arrows/lines: add width, height, points [[0,0],[dx,dy]]
  • Text: add text, fontSize
  • Use label field on shapes for centered text
  • Connect shapes with arrow elements using points routing

Related skills

FAQ

When should I use a chart instead?

For raw numbers like sales figures or time series, use a visualization skill; Excalidraw is for structure, flow, and relationships.

What diagram types are supported?

Flowchart, architecture, mind map, relationship, swimlane, class, sequence, ER, and DFD diagrams.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.