Skip to content
Back to skills

Excalidraw Diagram

ASecurity

Create Excalidraw diagrams for workflows, architectures, protocols, concepts, and system explanations. Use when a user wants a flowchart, architecture sketch, visual explanation, or diagram as a .excalidraw file plus PNG preview. Includes a local Playwright renderer for visual QA and reference files for palette, JSON structure, and reusable element patterns.

  • 279 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
testingpythonbashgitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add infometa/workbuddyskills --skill excalidraw-diagram --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Excalidraw Diagram?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Excalidraw Diagram
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/infometa-excalidraw-diagram/badge)](https://www.skillsdirectory.com/skills/infometa-excalidraw-diagram)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: excalidraw-diagram
description: "Create Excalidraw diagrams for workflows, architectures, protocols, concepts, and system explanations. Use when a user wants a flowchart, architecture sketch, visual explanation, or diagram as a .excalidraw file plus PNG preview. Includes a local Playwright renderer for visual QA and reference files for palette, JSON structure, and reusable element patterns."
description_zh: "Excalidraw 图解生成与渲染校验"
description_en: "Generate Excalidraw diagrams with local rendering validation"
homepage: https://github.com/coleam00/excalidraw-diagram-skill
allowed-tools: Read,Write,Bash
display_name: "excalidraw-diagram"
display_name_en: "excalidraw-diagram"
visibility: "public"
icon: "https://codebuddy-platform-1258344699.cos.accelerate.myqcloud.com/public/45edac6b-2078-4678-89f3-6f9800cf5e5f/avatar/skill/au_d7ebe354-e87.png"
---

# Excalidraw Diagram

用 Excalidraw 生成能够“解释问题”的图,而不是把文字机械摆成卡片。

## 适用场景

当用户要你生成以下内容时使用本 skill:

- 流程图、架构图、协议图、系统关系图
- 把复杂概念可视化
- 需要 `.excalidraw` 源文件,后续还要继续编辑
- 需要先导出 PNG 预览,再迭代布局与视觉层次

## 输出要求

默认产出两份文件:

1. `*.excalidraw`:可继续编辑的源文件
2. `*.png`:本地渲染预览图

**不要只交付 JSON。** 生成后必须本地渲染一次,并根据预览修正明显问题。

## 首次阅读顺序

开始画图前按需读取:

| 任务 | 先读什么 |
|---|---|
| 所有任务 | `references/color-palette.md` |
| 需要写元素 JSON | `references/element-templates.md` |
| 不确定 Excalidraw 文件结构 | `references/json-schema.md` |
| 准备渲染和排查布局 | `references/rendering-workflow.md` |

## 核心方法

### 1. 先判断深度

先决定这张图属于哪一类:

- **概念图**:强调关系、层次、因果,不必塞太多技术细节
- **技术图**:要展示真实事件名、接口名、请求结构、代码片段、输入输出样例

如果是技术图,先查真实资料,再开画。不要用“Service A → Service B”这种空标签糊弄过去。

### 2. 结构先行,不要先写样式

先确定这张图真正想表达什么:

- 是顺序?用时间线或分阶段布局
- 是聚合?用汇聚结构
- 是分发?用扇出结构
- 是对比?用左右并列
- 是层级?用树形或分区

**形状必须服务含义。** 不要默认所有节点都是同尺寸卡片。

### 3. 默认少容器、多层级文字

不是每段文字都需要矩形包住。默认优先:

- 标题、注释、说明:直接用文字
- 只有需要承载语义或承接箭头时,才加形状
- 同一张图里,尽量让容器节点少于总文本节点的三分之一

### 4. 技术图必须给“证据”

技术图至少加入一种真实证据:

- 真实事件名
- JSON payload 样例
- API / method 名称
- 关键代码片段
- 真实输入输出格式

这样图本身就能用于教学,而不是只做装饰。

## 推荐工作流

### Step 1:定义视觉论点

先用一句话写清楚这张图想证明什么。

示例:
- “事件流是从 AI agent 单向推送到前端,而不是轮询”
- “系统的复杂度主要集中在中间编排层”
- “用户看到的是单入口,但底层是多阶段处理”

### Step 2:列出区块

先把图拆成 3-6 个区块,再决定每块内部怎么画。大图一定要分区写,别一次性生成全部元素。

常见分区方式:
- 按阶段:输入 / 处理 / 输出
- 按角色:用户 / 客户端 / 服务端 / 外部系统
- 按层级:界面层 / 编排层 / 数据层

### Step 3:选择视觉模式

按概念选择模式:

| 概念 | 建议模式 |
|---|---|
| 顺序流程 | 时间线 / 横向流程 |
| 一对多分发 | 扇出 |
| 多对一聚合 | 汇聚 |
| 层级结构 | 树形 / 分区 |
| 对比分析 | 左右并列 |
| 循环反馈 | 回环箭头 |

### Step 4:生成 `.excalidraw`

写文件时遵守三条:

1. 使用可读的字符串 ID
2. 大图按区块逐段补元素
3. 坐标和尺寸以可读性优先,不追求“程序算出来”

### Step 5:本地渲染并回看

生成 JSON 后,必须执行本地渲染:

```bash
uv sync --project {baseDir}/scripts
uv run --project {baseDir}/scripts playwright install chromium
uv run --project {baseDir}/scripts python {baseDir}/scripts/render_excalidraw.py /absolute/path/to/diagram.excalidraw --output /absolute/path/to/diagram.png
```

然后读取 PNG,检查:

- 文字有没有被裁切
- 箭头是否落在正确对象上
- 重要节点是否足够醒目
- 区块之间是否太挤或太散
- 是否出现大片无意义空白

### Step 6:修正后再交付

如果预览里出现以下任何问题,先修再交:

- 文本溢出或重叠
- 箭头穿过不该穿过的内容
- 节点尺寸失衡
- 色彩层次混乱
- 技术图没有真实证据片段

## 视觉默认值

- 背景:纯白 `#FFFFFF`
- 线条:干净、克制,默认 `roughness: 0`
- 强调方式:用尺寸、间距、颜色层级,不用透明度堆效果
- 配色:全部从 `references/color-palette.md` 取,不临时发明新颜色

## 安装与依赖

渲染链路依赖 `uv` 和 Playwright。

### 推荐安装

```bash
brew install uv
uv sync --project {baseDir}/scripts
uv run --project {baseDir}/scripts playwright install chromium
```

### 依赖说明

- `uv`:管理 Python 运行环境
- `playwright`:驱动无头 Chromium 把 `.excalidraw` 渲染成 PNG
- 浏览器资源首次安装较慢,属于正常现象

## 交付格式建议

给用户交付时,尽量同时说明:

- 这张图的核心论点
- 你采用的结构(例如分区、时间线、扇出)
- 如为技术图,指出证据片段在哪一块
- 提供 `.excalidraw` 与 `.png` 路径

## 常见误区

### 误区 1:所有节点都画成一样的卡片
这样会让图只剩“排版”,没有论证。

### 误区 2:技术图只写概念,不给实物
如果没有真实事件、接口、数据格式,教学价值会很弱。

### 误区 3:只看 JSON 不看渲染结果
坐标在 JSON 里看着没问题,不代表视觉上真的成立。

### 误区 4:把颜色当装饰
颜色应该承担语义分层,而不是随机好看。

## 最终检查清单

交付前确认:

- [ ] 已生成 `.excalidraw`
- [ ] 已渲染 PNG 预览
- [ ] 没有明显裁切、重叠、错连
- [ ] 结构和论点一致
- [ ] 技术图包含真实证据片段
- [ ] 使用了统一配色与文字层级

Files in this skill

  • SKILL.md6.5 KB
  • references/color-palette.md1.5 KB
  • references/element-templates.md4.3 KB
  • references/json-schema.md1.7 KB
  • references/rendering-workflow.md985 B
  • scripts/pyproject.toml137 B
  • scripts/render_excalidraw.py5 KB
  • scripts/render_template.html1.5 KB
  • scripts/uv.lock20.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…