# Excalidraw

Sketches ideas as hand-drawn Excalidraw diagrams on a live local canvas via the pinned...

- Repository: https://github.com/danielmiessler/LifeOS (19669 stars)
- Category: Design
- License: MIT
- Last updated: 2026-10-28
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add danielmiessler/LifeOS --skill Excalidraw -g -a claude-code -y`
Codex: `npx skills add danielmiessler/LifeOS --skill Excalidraw -g -a codex -y`
Cursor: `npx skills add danielmiessler/LifeOS --skill Excalidraw -g -a cursor -y`
Gemini CLI: `npx skills add danielmiessler/LifeOS --skill Excalidraw -g -a gemini-cli -y`

## Description

Sketches ideas as hand-drawn Excalidraw diagrams on a live local canvas via the pinned mcp-excalidraw-server CLI, with mermaid conversion, file I/O, and share links. USE WHEN excalidraw, whiteboard, canvas, sketch a diagram, draw this on a canvas, hand-drawn diagram, draw my idea, architecture sketch, live canvas, put this on the whiteboard, read my canvas, organize my whiteboard, .excalidraw file, mermaid to excalidraw. NOT FOR polished images (Art), web UI (Webdesign), video (HyperFrames).

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Excalidraw

Drives a live Excalidraw canvas from the command line via the community `mcp-excalidraw-server` package (MIT), version-pinned through `Tools/Canvas.ts`. The canvas runs locally; the user watches the diagram draw itself at the canvas URL and can hand-edit the moment the model stops. Two directions: model → canvas (sketch ideas) and canvas → model (`describe` reads a human's rough canvas back as structured data).

## Ideal State

- Every diagram left behind is readable by the person it is for: no truncated or overlapping text, label style set at creation, and `Tools/ContrastCheck.ts` exiting 0 against the real ground, which holds in light and dark themes alike.
- What leaves the machine is the form that renders correctly: a link from `Tools/Share.ts` for a scene without images, the exported `.excalidraw` file (or a PNG flattened from it) for a scene carrying screenshots, and never a local canvas screenshot as final art.
- The canvas is driven only through `Tools/Canvas.ts`, so the pinned package version and port hold, and the skill registers no MCP server.
- A human's canvas is read back faithfully and nothing they drew is lost: risky changes are snapshotted first, and the detached server is stopped when the drawing work is done unless the user keeps using it.

## Intent Routing

| Intent | Trigger | File |
|--------|---------|------|
| **SketchDiagram** | "sketch a diagram", "draw this", "put this on a canvas" | `Intents/SketchDiagram.md` |
| **RefineDiagram** | "refine the diagram", "read my canvas", "organize my whiteboard", edit an existing `.excalidraw` | `Intents/RefineDiagram.md` |

| File | Read when |
|------|-----------|
| `References/Cheatsheet.md` | writing element JSON or using a command the intents do not show: full command list, element format, palette and sizing, layout anti-patterns, quality checklist, error recovery, raw REST API |

## Data & Config

The rest: https://github.com/danielmiessler/LifeOS/blob/HEAD/LifeOS/install/skills/Excalidraw/SKILL.md
