← 返回 Skills 市场
erdmannsilva

Erdmannsilva Excalidraw

作者 Alexandre Erdmann · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ 安全检测通过
62
总下载
0
收藏
1
当前安装
1
版本数
在 OpenClaw 中安装
/install erdmannsilva-excalidraw
功能描述
Generate hand-drawn style diagrams, flowcharts, and architecture diagrams as PNG images from Excalidraw JSON
使用说明 (SKILL.md)

Excalidraw Diagram Generator

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 looks benign for generating diagrams. Before installing, be aware that using it involves running a local Node script and setup may download npm dependencies and fonts. For sensitive diagrams, remember that the workflow writes JSON and PNG files under /tmp and does not document cleanup.
功能分析
Type: OpenClaw Skill Name: erdmannsilva-excalidraw Version: 1.0.0 The skill bundle provides a legitimate utility for rendering Excalidraw JSON diagrams into PNG images using Node.js, roughjs, and resvg-js. The setup script (scripts/setup.sh) downloads fonts from trusted sources (jsDelivr and Microsoft's GitHub) and uses standard tools for font conversion. The rendering logic (scripts/render.js) is self-contained, performs no unauthorized network activity, and handles file operations safely within the context of its stated purpose.
能力标签
crypto
能力评估
Purpose & Capability
The stated purpose is diagram rendering, and the visible code aligns by reading Excalidraw JSON, rendering shapes/text/arrows, and writing a PNG.
Instruction Scope
The workflow asks the agent to create temporary JSON/PNG files and run a local Node renderer; this is scoped and purpose-aligned, but it is still local code execution.
Install Mechanism
There is no install spec and no declared required binaries, but the included setup script performs npm installation and downloads font assets from external hosts.
Credentials
Node/npm and setup-time network access are proportionate for a renderer, but they are under-declared in metadata and should be expected before use.
Persistence & Privilege
No credentials, elevated privileges, background services, or autonomous persistence are visible; setup persists only dependencies/fonts and chmods the renderer.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install erdmannsilva-excalidraw
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /erdmannsilva-excalidraw 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release of Excalidraw diagram generator skill: - Generate hand-drawn style diagrams, flowcharts, and architecture diagrams as PNG images from Excalidraw JSON. - Supports core Excalidraw element types: rectangles, ellipses, diamonds, arrows, lines, and text. - Simple workflow: write JSON → save to file → render PNG via Node.js script. - Arrow elements use `from`/`to` bindings to auto-calculate connections between shapes. - Includes examples, layout guidelines, color palette reference, and best practices for diagram creation.
元数据
Slug erdmannsilva-excalidraw
版本 1.0.0
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 1
常见问题

Erdmannsilva Excalidraw 是什么?

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

如何安装 Erdmannsilva Excalidraw?

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

Erdmannsilva Excalidraw 是免费的吗?

是的,Erdmannsilva Excalidraw 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Erdmannsilva Excalidraw 支持哪些平台?

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

谁开发了 Erdmannsilva Excalidraw?

由 Alexandre Erdmann(@erdmannsilva)开发并维护,当前版本 v1.0.0。

💬 留言讨论