← Back to Skills Marketplace
plgonzalezrx8

Excalidraw Creator

by Pedro Gonzalez · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
749
Downloads
0
Stars
2
Active Installs
1
Versions
Install in OpenClaw
/install excalidraw-creator
Description
Create hand-drawn style Excalidraw diagrams, flowcharts, and architecture visuals as PNG images
README (SKILL.md)

Excalidraw Creator

Generate beautiful hand-drawn style diagrams rendered as PNG images.

Workflow

  1. Generate JSON — Write Excalidraw element array based on what the user wants
  2. Save to file — Write JSON to /tmp/\x3Cname>.excalidraw
  3. Rendernode \x3Cskill_dir>/scripts/render.js /tmp/\x3Cname>.excalidraw /tmp/\x3Cname>.png
  4. Send — Send the PNG via message tool with filePath

Quick Reference

node \x3Cskill_dir>/scripts/render.js input.excalidraw output.png

Element Types

Type Shape Key Props
rectangle Box x, y, width, height
ellipse Oval x, y, width, height
diamond Decision x, y, width, height
arrow Arrow connects shapes (see Arrow Binding below)
line Line x, y, points: [[0,0],[dx,dy]]
text Label x, y, text, fontSize, fontFamily (1=hand, 2=sans, 3=code)

Styling (all shapes)

{
  "strokeColor": "#1e1e1e",
  "backgroundColor": "#a5d8ff",
  "fillStyle": "hachure",
  "strokeWidth": 2,
  "roughness": 1,
  "strokeStyle": "solid"
}

fillStyle: hachure (diagonal lines), cross-hatch, solid roughness: 0=clean, 1=hand-drawn (default), 2=very sketchy

Arrow Binding (IMPORTANT)

Always use from/to bindings for arrows. The renderer auto-calculates edge intersection points — no manual coordinate math needed.

Simple arrow (straight, between two shapes)

{"type":"arrow","id":"a1","from":"box1","to":"box2","strokeColor":"#1e1e1e","strokeWidth":2,"roughness":1}

That's it. No x, y, or points needed. The renderer computes start/end at shape edges.

Multi-segment arrow (routed path with waypoints)

For arrows that need to go around obstacles, use absolutePoints with intermediate waypoints:

{
  "type":"arrow","id":"a2","from":"box3","to":"box1",
  "absolutePoints": true,
  "points": [[375,500],[30,500],[30,127],[60,127]],
  "strokeColor":"#1e1e1e","strokeWidth":2,"roughness":1
}
  • First point = near source shape edge (will snap to actual edge)
  • Last point = near target shape edge (will snap to actual edge)
  • Middle points = absolute waypoint coordinates for routing

Arrow labels

Place a separate text element near the arrow midpoint:

{"type":"text","id":"label","x":215,"y":98,"width":85,"height":16,"text":"sends data","fontSize":10,"fontFamily":1,"strokeColor":"#868e96"}

Arrow styles

  • "strokeStyle":"dashed" — dashed line
  • "startArrowhead": true — bidirectional arrow

Template: Flowchart with Bindings

{
  "type": "excalidraw",
  "version": 2,
  "elements": [
    {"type":"rectangle","id":"start","x":150,"y":50,"width":180,"height":60,"strokeColor":"#1e1e1e","backgroundColor":"#b2f2bb","fillStyle":"hachure","strokeWidth":2,"roughness":1},
    {"type":"text","id":"t1","x":200,"y":65,"width":80,"height":30,"text":"Start","fontSize":20,"fontFamily":1,"strokeColor":"#1e1e1e"},

    {"type":"arrow","id":"a1","from":"start","to":"decision","strokeColor":"#1e1e1e","strokeWidth":2,"roughness":1},

    {"type":"diamond","id":"decision","x":140,"y":170,"width":200,"height":120,"strokeColor":"#1e1e1e","backgroundColor":"#ffec99","fillStyle":"hachure","strokeWidth":2,"roughness":1},
    {"type":"text","id":"t2","x":185,"y":215,"width":110,"height":30,"text":"Condition?","fontSize":18,"fontFamily":1,"strokeColor":"#1e1e1e","textAlign":"center"},

    {"type":"arrow","id":"a2","from":"decision","to":"process","strokeColor":"#1e1e1e","strokeWidth":2,"roughness":1},

    {"type":"rectangle","id":"process","x":150,"y":350,"width":180,"height":60,"strokeColor":"#1e1e1e","backgroundColor":"#a5d8ff","fillStyle":"hachure","strokeWidth":2,"roughness":1},
    {"type":"text","id":"t3","x":190,"y":365,"width":100,"height":30,"text":"Process","fontSize":20,"fontFamily":1,"strokeColor":"#1e1e1e"}
  ]
}

Layout Guidelines

  • Node size: 140-200 × 50-70 px
  • Diamond: 180-200 × 100-120 px (taller for text)
  • Vertical spacing: 60-100 px between nodes
  • Horizontal spacing: 80-120 px between nodes
  • Text: Position inside shape manually (offset ~15-30px from top-left of shape)
  • Arrow labels: Place as separate text elements near midpoint of arrow path

Color Palette

Fills: #a5d8ff (blue), #b2f2bb (green), #ffec99 (yellow), #ffc9c9 (red), #d0bfff (purple), #f3d9fa (pink), #fff4e6 (cream) Strokes: #1e1e1e (dark), #1971c2 (blue), #2f9e44 (green), #e8590c (orange), #862e9c (purple) Labels: #868e96 (gray, for annotations)

Tips

  • Every element needs a unique id (required for binding!)
  • Use from/to on arrows — don't calculate coordinates manually
  • roughness:0 for clean diagrams, 1 for sketchy feel
  • Text fontFamily:1 for hand-drawn, 3 for code
  • Group related elements spatially, color-code by type
  • For nested layouts, use a large background rectangle as a container
Usage Guidance
This skill appears to actually implement an Excalidraw→PNG renderer and is not asking for credentials, but proceed cautiously: - Runtime prerequisites are not declared: you need Node.js (and npm) to run render.js/setup.sh; setup.sh also uses curl, unzip and optionally python3/fonttools. The registry metadata lists 'required binaries: none', which is inconsistent — assume Node/npm are required. - The provided setup.sh will run 'npm install' (pulling packages from npm) and download fonts from jsdelivr/github. Review package-lock.json and the dependencies (resvg-js, jsdom, roughjs and their transitive deps) before running npm install. - render.js itself performs only local file I/O (reads JSON input, writes PNG) and does not perform network calls or read environment secrets. The network activity is limited to the optional setup script. - If you plan to install/run this skill: run setup.sh and render.js in an isolated environment (container or VM), inspect package-lock.json for suspicious packages, and verify the downloaded font URLs. If you cannot review dependencies, avoid running npm install or run with a package-vetting process.
Capability Analysis
Type: OpenClaw Skill Name: excalidraw-creator Version: 1.0.0 The skill bundle is classified as suspicious due to a critical vulnerability. The `SKILL.md` workflow instructs the AI agent to save user-generated Excalidraw JSON to `/tmp/<name>.excalidraw` and then execute `node <skill_dir>/scripts/render.js /tmp/<name>.excalidraw /tmp/<name>.png`. If the `<name>` placeholder is derived directly from unsanitized user input, it creates a shell injection and path traversal vulnerability. An attacker could craft a malicious filename (e.g., `foo; rm -rf /; #` or `../../etc/passwd`) to execute arbitrary commands or read/write arbitrary files on the host system. While this is a severe vulnerability, there is no evidence of intentional malicious behavior (e.g., data exfiltration, backdoor installation) within the provided code or instructions. The `scripts/setup.sh` script downloads fonts from legitimate CDNs (cdn.jsdelivr.net, github.com) and the `scripts/render.js` script performs its stated function without additional risky operations.
Capability Assessment
Purpose & Capability
Name/description match the included renderer code: render.js converts Excalidraw JSON into PNG using roughjs + resvg-js. The SKILL.md workflow (generate JSON → save to /tmp → node render.js → send PNG) aligns with the stated purpose.
Instruction Scope
SKILL.md stays within the diagram-rendering domain and does not request unrelated files or credentials. It does instruct writing JSON to /tmp and running render.js; render.js reads the input JSON (or stdin) and writes the PNG. SKILL.md does not explicitly document the runtime requirement for Node/npm or the setup script, which is an omission.
Install Mechanism
There is no registry install spec, but repository includes scripts/setup.sh which runs 'npm install' and downloads fonts from jsdelivr and a GitHub release. That means dependencies will be fetched from npm and external CDNs if the user runs setup.sh. The package sources are standard (npm, jsdelivr, GitHub), but absence of an official install step plus networked downloads increases operational risk and requires manual review before running.
Credentials
The skill declares no environment variables or credentials and the renderer code does not read env vars or network endpoints. The only external network activity is in setup.sh (font downloads). No unrelated secrets are requested.
Persistence & Privilege
always:false and user-invocable:true. The skill does not request persistent system-wide changes or modify other skills. setup.sh writes to its own fonts directory and makes render.js executable; that's limited in scope.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install excalidraw-creator
  3. After installation, invoke the skill by name or use /excalidraw-creator
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of Excalidraw Creator. Create hand-drawn style diagrams, flowcharts, and architecture visuals as PNG images via JSON element arrays and bindings. - Generate Excalidraw diagrams by writing element arrays in JSON. - Save, render, and send diagrams as PNG images using a simple workflow. - Supports key shapes: rectangles, ellipses, diamonds, arrows (with `from`/`to` bindings), lines, and text. - Allows customizing styles (color, fill, roughness, dashed lines, etc.). - Includes workflow/reference, arrow routing, and layout/color guidelines for easy diagram creation.
Metadata
Slug excalidraw-creator
Version 1.0.0
License
All-time Installs 2
Active Installs 2
Total Versions 1
Frequently Asked Questions

What is Excalidraw Creator?

Create hand-drawn style Excalidraw diagrams, flowcharts, and architecture visuals as PNG images. It is an AI Agent Skill for Claude Code / OpenClaw, with 749 downloads so far.

How do I install Excalidraw Creator?

Run "/install excalidraw-creator" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Excalidraw Creator free?

Yes, Excalidraw Creator is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Excalidraw Creator support?

Excalidraw Creator is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Excalidraw Creator?

It is built and maintained by Pedro Gonzalez (@plgonzalezrx8); the current version is v1.0.0.

💬 Comments