Skip to content
AI & Agents
Skill

/excalidraw

Create and revise editable `.excalidraw` diagrams as Excalidraw JSON for architecture diagrams, flowcharts, sequence diagrams, concept maps, and other hand-drawn explainers.

BOOST
From plugin
hybridclaw
15989 skills
Install
$ npx -y skills add HybridAIOne/hybridclaw --skill excalidraw --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/excalidraw

Context preview

The summary Claude sees to decide when to auto-load this skill.

Create and revise editable `.excalidraw` diagrams as Excalidraw JSON for architecture diagrams, flowcharts, sequence diagrams, concept maps, and other hand-drawn explainers.

SKILL.md

excalidraw.SKILL.md
name: excalidraw
description: Create and revise editable `.excalidraw` diagrams as Excalidraw JSON for architecture diagrams, flowcharts, sequence diagrams, concept maps, and other hand-drawn explainers.
user-invocable: true
disable-model-invocation: false
metadata:
  hybridclaw:
    category: publishing
    short_description: "Editable Excalidraw diagrams and share links."
    tags:
      - excalidraw
      - diagrams
      - flowcharts
      - architecture
      - visualization
    related_skills:
      - manim-video
      - write-blog-post

Excalidraw

Use this skill when the user wants an editable diagram, not just a rendered image.

Typical requests:

  • architecture or system diagrams
  • flowcharts and process maps
  • sequence diagrams
  • concept maps and explainers
  • hand-drawn style visuals that should stay editable in Excalidraw

Excalidraw files are plain JSON. The default deliverable is a `*.excalidraw` file in the workspace. The user can drag that file into [excalidraw.com](https://excalidraw.com) to view, edit, or export it.

Default Workflow

1. Plan the diagram before writing JSON: title, nodes, connectors, groups, and rough canvas size. 2. Write a valid Excalidraw `elements` array. 3. Wrap the array in the standard file envelope. 4. Save the result as `*.excalidraw`. 5. If the user wants a shareable browser link, run:

node skills/excalidraw/scripts/upload.mjs diagram.excalidraw

The upload helper encrypts the diagram client-side and prints the Excalidraw share URL.

File Envelope

Use this shape unless you are editing an existing file and need to preserve more fields:

{
  "type": "excalidraw",
  "version": 2,
  "source": "hybridclaw",
  "elements": [],
  "appState": {
    "viewBackgroundColor": "#ffffff"
  },
  "files": {}
}

When editing an existing `.excalidraw` file, preserve `appState`, `files`, and any other existing top-level keys unless the user asked for a deliberate reset.

Rules

  • Use Excalidraw JSON, not SVG or HTML, unless the user explicitly asked for another format.
  • For labeled shapes or arrows, create a separate `text` element and bind it with `containerId` plus the container's `boundElements`.
  • Do **not** invent a `"label"` property on rectangles, diamonds, ellipses, or arrows. Excalidraw ignores it.
  • Place a bound text element immediately after its container in the `elements` array.
  • Use readable sizes: `fontSize` 16+ for normal labels, 20+ for titles, and at least `120x60` for labeled boxes.
  • Leave about `20-30px` of space between major elements.
  • Prefer short stable ids such as `api`, `text-api`, `arrow-api-db`.
  • Avoid emoji and decorative Unicode. Stick to plain text that Excalidraw renders reliably.
  • Default to a white background with dark text unless the user explicitly asks for dark mode.
  • For arrows, `points` are offsets relative to the arrow's `x` and `y`.

Core Patterns

Labeled Rectangle

[
  {
    "type": "rectangle",
    "id": "api",
    "x": 120,
    "y": 120,
    "width": 220,
    "height": 80,
    "roundness": { "type": 3 },
    "backgroundColor": "#a5d8ff",
    "fillStyle": "solid",
    "boundElements": [{ "id": "text-api", "type": "text" }]
  },
  {
    "type": "text",
    "id": "text-api",
    "x": 130,
    "y": 145,
    "width": 200,
    "height": 24,
    "text": "API Service",
    "fontSize": 20,
    "fontFamily": 1,
    "strokeColor": "#1e1e1e",
    "textAlign": "center",
    "verticalAlign": "middle",
    "containerId": "api",
    "originalText": "API Service",
    "autoResize": true
  }
]

Arrow Between Shapes

{
  "type": "arrow",
  "id": "arrow-api-db",
  "x": 340,
  "y": 160,
  "width": 180,
  "height": 0,
  "points": [[0, 0], [180, 0]],
  "endArrowhead": "arrow",
  "startBinding": { "elementId": "api", "fixedPoint": [1, 0.5] },
  "endBinding": { "elementId": "db", "fixedPoint": [0, 0.5] }
}

Reference Files

  • For palette and contrast guidance, read [references/colors.md](references/colors.md).
  • For copy-pasteable diagram patterns, read [references/examples.md](references/examples.md).
  • For dark-background diagrams, read [references/dark-mode.md](references/dark-mode.md).

Anti-Patterns

  • Do not cram many tiny nodes into one canvas when two simpler diagrams would read better.
  • Do not put all shapes first and all text last; that usually breaks layering and bindings.
  • Do not guess at Excalidraw-only properties you have not already seen in a working example.
  • Do not replace an editable diagram request with a static PNG export unless the user asked for the export.
Read more
Ships withhybridclaw

Enterprise-ready self-hosted AI assistant runtime with sandboxed execution, secure credentials, approvals, and memory

Get the whole plugin
Stats
159
Stars
17
Forks
Active
Maintenance
TypeScript
Language
MIT
License
13h ago
Last commit
8mo ago
Created
3h ago
Added

Repo: HybridAIOne/hybridclaw

Other skills on hybridclaw.