← 返回 Skills 市场
plgonzalezrx8

Excalidraw Creator

作者 Pedro Gonzalez · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
749
总下载
0
收藏
2
当前安装
1
版本数
在 OpenClaw 中安装
/install excalidraw-creator
功能描述
Create hand-drawn style Excalidraw diagrams, flowcharts, and architecture visuals as PNG images
使用说明 (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
安全使用建议
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.
功能分析
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.
能力评估
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.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install excalidraw-creator
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /excalidraw-creator 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
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.
元数据
Slug excalidraw-creator
版本 1.0.0
许可证
累计安装 2
当前安装数 2
历史版本数 1
常见问题

Excalidraw Creator 是什么?

Create hand-drawn style Excalidraw diagrams, flowcharts, and architecture visuals as PNG images. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 749 次。

如何安装 Excalidraw Creator?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install excalidraw-creator」即可一键安装,无需额外配置。

Excalidraw Creator 是免费的吗?

是的,Excalidraw Creator 完全免费(开源免费),可自由下载、安装和使用。

Excalidraw Creator 支持哪些平台?

Excalidraw Creator 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Excalidraw Creator?

由 Pedro Gonzalez(@plgonzalezrx8)开发并维护,当前版本 v1.0.0。

💬 留言讨论