lark-whiteboard-cli

当用户要求或使用飞书画板绘制架构图、流程图、思维导图、时序图或其他可视化图表时使用此 skill,作为使用 whiteboard-cli 设计图表布局的指南

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "lark-whiteboard-cli" with this command: npx skills add larksuite/cli/larksuite-cli-lark-whiteboard-cli

[!NOTE] 环境依赖:绘制画板需要 @larksuite/whiteboard-cli(画板 Node.js CLI 工具),以及 lark-cli(LarkSuite CLI 工具)。 如果执行失败,手动安装后重试:npm install -g @larksuite/whiteboard-cli@^0.2.0

[!IMPORTANT] 执行 npm install 安装新的依赖前,务必征得用户同意!

Workflow

这是画板,不是网页。 画板是无限画布上自由放置元素,flex 布局是可选增强。

Step 1: 路由 & 读取知识
  - 判断渲染路径(见路由表):Mermaid 还是 DSL?
  - 读对应 scene 指南 — 了解结构特征和布局策略
  - 确定布局策略(见下方快速判断)和构建方式
  - 读 references/ 核心模块 — 语法、布局、配色、排版、连线

Step 2: 生成完整 DSL(含颜色)
  - 按 content.md 规划信息量和分组
  - 按 layout.md 选择布局模式和间距
  - 推荐使用图标让图表更直观,运行 `npx -y @larksuite/whiteboard-cli@^0.2.0 --icons` 查看可用图标,选取合适的图标, 但不要过度使用或者所有图表都用图标, 根据图表类型和内容选择是否使用图标
  - 按 style.md 上色(用户没指定时用默认经典色板)
  - 按 schema.md 语法输出完整 JSON
  - 连线参考 connectors.md,排版参考 typography.md

  注意:部分图形(鱼骨/飞轮/柱状/折线等)要按 scene 指南的脚本模板写 .js 脚本生成 JSON:
    1. 创建产物目录 ./diagrams/YYYY-MM-DDTHHMMSS/
    2. 将脚本保存为 diagram.gen.js,执行 node diagram.gen.js 产出 diagram.json
    3. 用产出的 diagram.json 进入 Step 3

Step 3: 渲染 & 审查 → 交付
  - 渲染前自查(见下方检查清单)
  - 渲染 PNG,检查:
    · 信息完整?布局合理?配色协调?
    · 文字无截断?连线无交叉?
  - 有问题 → 按症状表修复 → 重新渲染(最多 2 轮)
  - 2 轮后仍有严重问题 → 考虑走 Mermaid 路径兜底
  - 没问题 → 交付:
    · 用户要求上传飞书 → 见下方”上传飞书画板”章节中的说明
    · 用户未指定 → 展示 PNG 图片给用户

布局策略快速判断(详见 references/layout.md):

先定主布局,再定子布局:结构化信息优先用 Flex,关系链路优先用 Dagre,灵活定位用绝对布局。

涉及 Dagre / Flex 的具体边界、危险模式、混合布局原则,统一以 references/layout.md 为准;scene 文件只描述场景差异,不重复定义通用布局规则。

构建方式是强约束:当 scene 指南要求"脚本生成"时,必须先写脚本(.js)并用 node 执行来产出 JSON 文件。绝对定位场景(鱼骨图、飞轮图、柱状图、折线图等)的坐标需要数学计算,直接手写 JSON 极易导致节点重叠或连线穿模。


渲染路径选择(DSL or Mermaid)

图表类型路径理由
思维导图Mermaid辐射结构自动布局
时序图Mermaid参与方+消息自动排列
类图Mermaid类关系自动布局
饼图MermaidMermaid 原生支持
其他所有类型DSL精确控制样式和布局

路由规则

  1. 自动 Mermaid:思维导图、时序图、类图、饼图 → 默认走 Mermaid
  2. 显式 Mermaid:用户输入包含 Mermaid 语法 → 走 Mermaid
  3. DSL 路径:其他所有类型 → 先读核心模块,再读对应场景指南

Mermaid 路径:参考 scenes/mermaid.md 编写 .mmd 文件,跳过 DSL 模块。 DSL 路径:按 Workflow 3 步执行。


模块索引

核心参考(DSL 路径必读)

模块文件说明
DSL 语法references/schema.md节点类型、属性、尺寸值
内容规划references/content.md信息提取、密度决策、连线预判
布局系统references/layout.md网格方法论、Flex 映射、间距规则
排版规则references/typography.md字号层级、对齐、行距
连线系统references/connectors.md拓扑规划、锚点选择
配色系统references/style.md多色板、视觉层级

场景指南(按类型选读一个)

图表类型文件适用场景
架构图scenes/architecture.md分层架构、微服务架构
组织架构图scenes/organization.md公司组织、树形层级
泳道图scenes/swimlane.md跨角色流程、跨系统交互流程、端到端链路
对比图scenes/comparison.md方案对比、功能矩阵
鱼骨图scenes/fishbone.md因果分析、根因分析
柱状图scenes/bar-chart.md柱状图、条形图
折线图scenes/line-chart.md折线图、趋势图
树状图scenes/treemap.md矩形树图、层级占比
漏斗图scenes/funnel.md转化漏斗、销售漏斗
金字塔图scenes/pyramid.md层级结构、需求层次
循环/飞轮图scenes/flywheel.md增长飞轮、闭环链路
里程碑scenes/milestone.md时间线、版本演进
流程图scenes/flowchart.md业务流、状态机、带条件判断的链路
Mermaidscenes/mermaid.md思维导图、时序图、类图、饼图

文件产物规范

每次绘图在 ./diagrams/ 下按当前时间创建子目录(格式 YYYY-MM-DDTHHMMSS),目录内文件名固定。用户指定了保存路径时以用户为准。

./diagrams/
  2026-03-27T143000/      ← 自动按时间创建,无需起名
    diagram.json          ← DSL(CLI 输入)
    diagram.gen.js        ← 坐标计算脚本(仅脚本构建方式)
    diagram.png           ← 最终图片
    diagram.mmd           ← Mermaid 源码(仅 Mermaid 路径)

CLI 命令

查看可用图标

npx -y @larksuite/whiteboard-cli@^0.2.0 --icons

渲染

npx -y @larksuite/whiteboard-cli@^0.2.0 -i ./diagrams/2026-03-27T143000/diagram.json -o ./diagrams/2026-03-27T143000/diagram.png    # DSL
npx -y @larksuite/whiteboard-cli@^0.2.0 -i ./diagrams/2026-03-27T143000/diagram.mmd -o ./diagrams/2026-03-27T143000/diagram.png     # Mermaid

上传飞书画板

上传需要飞书认证。遇到认证或权限错误时,阅读 ../lark-shared/SKILL.md 了解登录和权限处理。

第一步:获取画板 Token

用户给了什么怎么获取 Token
画板 Token(XXX直接使用
文档 URL 或 doc_id,文档中已有画板lark-cli docs +fetch --doc <URL> --as user,从返回的 <whiteboard token=”XXX”/> 中提取 token
文档 URL 或 doc_id,需要新建画板lark-cli docs +update --doc <doc_id> --mode append --markdown '<whiteboard type=”blank”></whiteboard>' --as user,从响应的 data.board_tokens[0] 获取 token

关于飞书文档的创建,读取等更多操作,请参考 lark-doc skill ../lark-doc/SKILL.md

第二步:上传

[!CAUTION] MANDATORY PRE-FLIGHT CHECK (上传前强制拦截检查) 当你要向一个已存在的画板 Token 写入内容时,绝对禁止直接执行上传命令!你必须严格遵守以下两步: 强制执行 Dry Run(状态探测) 必须先在命令中添加 --overwrite --dry-run 参数来探测画板当前状态。示例命令:

npx -y @larksuite/whiteboard-cli@^0.2.0 --to openapi -i <输入文件> --format json | lark-cli whiteboard +update --whiteboard-token <Token> --source - --overwrite --dry-run --as user

解析结果并拦截

  • 仔细阅读 Dry Run 的输出日志。
  • 如果日志包含 XX whiteboard nodes will be deleted:这说明画板非空,当前操作会覆盖并摧毁用户的原有图表!
  • 你必须立即停止操作,并通过 AskUserQuestion 工具(或直接回复)向用户确认:”目标画板当前非空,继续更新将清空原有的 XX 个节点,是否确认覆盖?”
  • 只有在用户明确授权”同意覆盖”后,你才能移除 --dry-run 真正执行上传。
  • 用户可能会要求你不覆盖更新画板内容,在这种情况下,移除 --overwrite--dry-run 参数再上传。
npx -y @larksuite/whiteboard-cli@^0.2.0 --to openapi -i <输入文件> --format json | lark-cli whiteboard +update --whiteboard-token <画板Token> --source - --yes --as user

画板一经上传不可修改。如需应用身份上传,将 --as user 替换为 --as bot。 如果画板非空,先加 --overwrite --dry-run 检查待删除节点数,向用户确认后去掉 --dry-run 执行。

你也可以将布局输出为原生 OpenAPI json 格式,再通过 lark-cli 导入飞书画板。关于 lark-cli 操作画板的更多方式,请参照 ../lark-whiteboard/SKILL.md

症状→修复表(视觉审查发现问题时参照):

看到的问题改什么
文字被截断height 改为 fit-content
文字溢出容器右侧增大 width,或缩短文字
节点重叠粘连增大 gap
节点挤成一团增大 padding 和 gap
连线穿过节点调整 fromAnchor/toAnchor 或增大间距
大面积空白缩小外层 frame 宽度
文字和背景色太接近调整 fillColor 或 textColor
布局整体偏左/偏右调整绝对定位的 x 坐标使内容居中

渲染前自查

生成 DSL 后、渲染前,快速检查:

  • 不同分组用了不同颜色?同组节点样式完全一致?
  • 外层浅色背景、内层白色节点?(外重内轻)
  • 所有节点有边框(borderWidth=2)?文字在背景上清晰可读?
  • 连线用灰色(#BBBFC4),不用彩色?
  • frame 都写了 layout 属性?gap 和 padding 都显式设置了?
  • 含文字节点 height 用 fit-content?connector 在顶层 nodes 数组?

关键约束速查

最高频出错的规则,即使不读子模块文件也必须遵守。

  1. 含文字节点的 height 必须用 'fit-content' — 写死数值会截断文字
  2. fill-container 仅在 flex 父容器中生效layout: 'none' 下宽度退化为 0
  3. layout: 'none' 的容器必须有固定宽高 — 不要写成 fit-content
  4. connector 必须放在顶层 nodes 数组 — 不能嵌套在 frame children 里
  5. 图层顺序 — 数组顺序 = 绘制顺序。后定义的元素层级越高,会覆盖先定义的。重叠/浮层/标注元素务必放在数组末尾。
  6. flex 容器内的 x/y 会被完全忽略 — 需要自由定位时用 layout: 'none' 或放在顶层 nodes
  7. Dagre 子容器默认为不透明节点 — 外层连线无法寻址其内部子节点(引擎会自动重定向至外壳)。需穿透时声明 layout: "dagre" + layoutOptions: { isCluster: true }

❌ 致命错误:flex 容器内设 x/y,坐标不生效,节点按顺序排列

{ "type": "frame", "layout": "vertical", "children": [
  { "type": "rect", "x": 100, "y": 0, "text": "成都" },
  { "type": "rect", "x": 540, "y": 0, "text": "康定" }
]}

✅ 正确:用 layout: "none" 或放在顶层 nodes 用 x/y 定位。

❌ 致命错误:layout: "none" 容器本身写 width: "fit-content", height: "fit-content",再在内部摆绝对坐标节点

✅ 正确:绝对定位容器先给固定宽高,再在内部用 x/y 放置子节点。

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

lark-doc

飞书云文档:创建和编辑飞书文档。从 Markdown 创建文档、获取文档内容、更新文档(追加/覆盖/替换/插入/删除)、上传和下载文档中的图片和文件、搜索云空间文档。当用户需要创建或编辑飞书文档、读取文档内容、在文档中插入图片、搜索云空间文档时使用;如果用户是想按名称或关键词先定位电子表格、报表等云空间对象,也优先使用本 skill 的 docs +search 做资源发现。

Repository Source
52.3K7.5Klarksuite
Coding

lark-base

当需要用 lark-cli 操作飞书多维表格(Base)时调用:适用于建表、字段管理、记录读写、视图配置、历史查询,以及角色/表单/仪表盘管理/工作流;也适用于把旧的 +table / +field / +record 写法改成当前命令写法。涉及字段设计、公式字段、查找引用、跨表计算、行级派生指标、数据分析需求时也必须使用本 skill。

Repository Source
52.2K7.5Klarksuite
Coding

lark-im

飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件(支持大文件分片下载)、管理表情回复。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员时使用。

Repository Source
52.2K7.5Klarksuite
Coding

lark-calendar

飞书日历(calendar):提供日历与日程(会议)的全面管理能力。核心场景包括:查看/搜索日程、创建/更新日程、管理参会人、查询忙闲状态及推荐空闲时段、查询/搜索与预定会议室。注意:涉及【预约日程/会议】或【查询/预定会议室】时,必须先读取 references/lark-calendar-schedule-meeting.md 工作流!高频操作请优先使用 Shortcuts:+agenda(快速概览今日/近期行程)、+create(创建日程并按需邀请参会人及预定会议室)、+freebusy(查询用户主日历的忙闲信息和rsvp的状态)、+rsvp(回复日程邀请)

Repository Source
52.1K7.5Klarksuite
lark-whiteboard-cli | V50.AI