跳转到正文
报告库
用途分类 / 其他用途

Lark Whiteboard Skill 安全审计

作者说它能做什么(原文)

>

第三方安全检查结论

先别安装或运行

已检查文件
79
发现的风险
5
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 2 项风险
中风险

自动下载并执行允许浮动版本的 npm 包

原文依据:3 处
发现了什么

Skill 要求无需询问用户就运行 `npx -y @larksuite/whiteboard-cli@^0.2.13`。`-y` 自动接受安装,而 `^0.2.13` 不固定到唯一发布版本。

为什么需要注意

首次运行或缓存失效时会从 npm 获取并执行第三方代码;若上游账号、发布物或依赖被破坏,代码可在代理权限范围内读取文件、使用环境凭据或修改本地数据。

Skill 明确要求无需询问便用 npx 的 `-y` 执行包,并采用 `^0.2.13` 版本范围。首次运行或缓存缺失时,npx 可从配置的 npm registry 下载并执行满足范围的版本,因此后续发布的 0.2.x 代码可能在用户机器上运行。用户可要求固定精确版本及完整性校验,或预装并只允许运行审核过的二进制。

SKILL.md:13来自说明文档打开原文件
> [!IMPORTANT]> - 运行 `lark-cli --version`,确认可用,无需询问用户。> - 运行 `npx -y @larksuite/whiteboard-cli@^0.2.13 -v`,确认可用,无需询问用户。
查看另外 2 个位置
routes/svg.md:35来自说明文档打开原文件
写文件   <dir>/diagram.svg渲染     npx -y @larksuite/whiteboard-cli@^0.2.13 -i <dir>/diagram.svg -o <dir>/diagram.png -f svg检查     npx -y @larksuite/whiteboard-cli@^0.2.13 -i <dir>/diagram.svg -f svg --check导出     npx -y @larksuite/whiteboard-cli@^0.2.13 -i <dir>/diagram.svg -f svg --to openapi --format json > <dir>/diagram.json```
routes/svg.md:33来自说明文档打开原文件
```建目录   ./diagrams/YYYY-MM-DDTHHMMSS/         (例:./diagrams/2026-04-15T143022/)写文件   <dir>/diagram.svg渲染     npx -y @larksuite/whiteboard-cli@^0.2.13 -i <dir>/diagram.svg -o <dir>/diagram.png -f svg检查     npx -y @larksuite/whiteboard-cli@^0.2.13 -i <dir>/diagram.svg -f svg --check导出     npx -y @larksuite/whiteboard-cli@^0.2.13 -i <dir>/diagram.svg -f svg --to openapi --format json > <dir>/diagram.json```
中风险

图表文字可能被写入生成的 JavaScript 后由 Node 执行

原文依据:4 处
发现了什么

部分场景要求把用户需求填入 `.cjs` 脚本的数据或字符串,再执行 `node diagram.gen.cjs`;可见规则没有规定对引号、反引号、换行或 JavaScript 语法字符进行安全编码。

为什么需要注意

若不可信标签被直接拼进脚本而未正确转义,构造的文本可能跳出字符串并成为本地 JavaScript,继而以代理权限读取文件、访问凭据或执行命令。

这段证据能说明什么

源码确实要求某些图形生成 `.cjs` 并由 Node 执行,模板也把标题等内容放进 JavaScript 字符串;但可见内容没有规定将用户文本原样拼接进脚本,也没有展示实际生成器或插值实现。因此无法确认引号、反引号等会形成代码注入。用户可要求作者明确用 JSON 序列化数据、禁止模板字符串拼接,并在执行前审查生成的脚本。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
routes/dsl.md:21来自说明文档打开原文件
  注意:部分图形(鱼骨/飞轮/柱状/折线等)要按 scene 指南的脚本模板写 CommonJS 脚本生成 JSON:    1. 创建产物目录 ./diagrams/YYYY-MM-DDTHHMMSS/    2. 将脚本保存为 diagram.gen.cjs(必须 .cjs 后缀,脚本用 require() 写,.js 在 ESM 项目下会崩),执行 node diagram.gen.cjs 产出 diagram.json    3. 用产出的 diagram.json 进入 Step 3
查看另外 3 个位置
scenes/flywheel.md:60来自说明文档打开原文件
// ══════════════════════════════════════════════════════════════// 只需修改这里 -- 填入用户要求的阶段数据和中心标题// ══════════════════════════════════════════════════════════════const centerTitle = '{{CENTER_TITLE}}';const centerSubtitle = '{{CENTER_SUBTITLE}}'; // 可选,不需要就留空字符串const stages = [  { title: '{{STAGE_1}}', subtitle: '{{SUB_1}}', desc: '{{DESC_1}}' },  { title: '{{STAGE_2}}', subtitle: '{{SUB_2}}', desc: '{{DESC_2}}' },  { title: '{{STAGE_3}}', subtitle: '{{SUB_3}}', desc: '{{DESC_3}}' },  { title: '{{STAGE_4}}', subtitle: '{{SUB_4}}', desc: '{{DESC_4}}' },];
scenes/flywheel.md:59来自说明文档打开原文件
// ══════════════════════════════════════════════════════════════// 只需修改这里 -- 填入用户要求的阶段数据和中心标题// ══════════════════════════════════════════════════════════════const centerTitle = '{{CENTER_TITLE}}';const centerSubtitle = '{{CENTER_SUBTITLE}}'; // 可选,不需要就留空字符串const stages = [  { title: '{{STAGE_1}}', subtitle: '{{SUB_1}}', desc: '{{DESC_1}}' },  { title: '{{STAGE_2}}', subtitle: '{{SUB_2}}', desc: '{{DESC_2}}' },  { title: '{{STAGE_3}}', subtitle: '{{SUB_3}}', desc: '{{DESC_3}}' },  { title: '{{STAGE_4}}', subtitle: '{{SUB_4}}', desc: '{{DESC_4}}' },];
scenes/flywheel.md:187来自说明文档打开原文件
writeFileSync('diagram.json', JSON.stringify({ version: 2, nodes }, null, 2));```
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
高风险

任意 URL 会由 curl 跟随重定向下载,并可能随后上传到飞书画板

原文依据:2 处
发现了什么

图片流程直接使用 `curl -L` 获取 URL,没有要求限制协议、拒绝内网/本机地址或逐次检查重定向;随后规定所有图片都上传到目标画板。

为什么需要注意

若 URL 来自不可信内容并指向云元数据、本机或企业内网资源,代理可能把内部响应保存为图片文件并上传到飞书,造成敏感数据外泄。

当图片来源是网络 URL 时,流程给出的命令会让 curl 跟随重定向并写入本地,但此处没有限制协议、内网/本机地址或逐跳校验。若用户或画板内容提供了恶意 URL,代理可能请求本不应访问的地址;下载所得文件随后还可能被上传到目标飞书画板。用户可要求作者仅允许公开 HTTPS、拒绝私有/回环/link-local 地址并逐次校验重定向,且上传前确认来源与内容。

elements/image.md:17来自说明文档打开原文件
| 图片来源 | 获取方式 ||---------|---------|| 本地文件 | 直接使用 || 网络 URL | `curl -L -o photo.jpg "<URL>"` || 文档中的图片 token | `lark-cli docs +media-download --token <token> --output ./photo.png` || 其他域的 Drive token | `lark-cli docs +media-download --token <token> --output ./photo.png` |
查看另外 1 个位置
elements/image.md:49来自说明文档打开原文件
### 3. 上传到目标画板**必须**使用 `docs +media-upload --parent-type whiteboard` 上传:```bashlark-cli docs +media-upload --file ./photo1.jpg --parent-type whiteboard --parent-node <whiteboard_token># 响应: { "file_token": "<media_token>", ... }```
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
中风险

覆盖更新会清空画板并永久丢失结构化语义

原文依据:6 处
发现了什么

`--overwrite` 在写入前删除全部现有内容;SVG 导出再导入还会丢失层级、节点 ID、mention、评论、锁定和连接器绑定等信息。虽然 SVG 编辑流程要求两次确认,但其他更新示例也直接展示了 overwrite。

为什么需要注意

选错画板 token、误判画板为空或用户未理解“整板重建”时,原有可编辑结构、评论和关联可能无法从回写结果恢复。

风险成立,但仅在对非空已有画板执行 overwrite,尤其是 SVG 导出—编辑—回写路径时发生。overwrite 会先删除全部现有内容;SVG 回写会丢失层级、节点 ID、mention、评论、锁定和连接器绑定等语义。流程包含强制知情确认和 dry-run 后再次确认,能降低误操作但不能消除损失。用户可限制为 append,或要求先导出 raw/备份并验证可恢复性。

references/lark-whiteboard-update.md:20来自说明文档打开原文件
| `--idempotent-token` | 否  | 幂等 token,确保更新操作幂等;最少 10 个字符,建议使用时间戳 + 场景标识拼接(如 `1744800000-board-1`)。同一次逻辑更新只生成一次该 token,重试时须原样复用;切勿在每次重试时重新生成时间戳或幂等 key,否则会重复写入 || `--overwrite`        | 否  | 写入模式:带上则覆盖更新(写入前删除画板所有现有内容再写入);省略则为增量追加(保留原有内容,新内容叠加写入)。默认 false(增量追加)|| `--source`           | 是  | 输入画板内容,支持使用 `@path` 从文件读取,或 `-` 从 stdin 读取 |
查看另外 5 个位置
routes/svg-edit.md:7来自说明文档打开原文件
## ⚠️ 有损性警告SVG 导出是**纯视觉快照**,再次导入后画板语义(思维导图层级/表格结构/连线绑定/容器类型/mention/节点 ID/锁定/评论)会丢失。**保留的信息**:形状几何(位置/大小/路径)、文本内容与基本格式(字号/粗体/斜体/对齐)、填充色/描边色/透明度(线性渐变降级为第一个 stop-color 纯色)、连接器路径形状与箭头样式、`<g>` 嵌套的基本分组关系(≥2 子元素时重建为 DirectFocusGroup)。
references/lark-whiteboard-update.md:64来自说明文档打开原文件
# 从文件读取并更新lark-cli whiteboard +update \  --whiteboard-token <画板Token> \  --input_format mermaid \  --source @./diagram.mmd \  --overwrite --as user```
references/lark-whiteboard-update.md:18来自说明文档打开原文件
|----------------------|----|--------------------------------------------|| `--whiteboard-token` | 是  | 画板 token,需要拥有画板的编辑权限                       || `--idempotent-token` | 否  | 幂等 token,确保更新操作幂等;最少 10 个字符,建议使用时间戳 + 场景标识拼接(如 `1744800000-board-1`)。同一次逻辑更新只生成一次该 token,重试时须原样复用;切勿在每次重试时重新生成时间戳或幂等 key,否则会重复写入 || `--overwrite`        | 否  | 写入模式:带上则覆盖更新(写入前删除画板所有现有内容再写入);省略则为增量追加(保留原有内容,新内容叠加写入)。默认 false(增量追加)|| `--source`           | 是  | 输入画板内容,支持使用 `@path` 从文件读取,或 `-` 从 stdin 读取 || `--input_format`     | 否  | 输入格式:`raw`、`plantuml`、`mermaid`、`svg`,默认为 `raw`  |
routes/svg-edit.md:17来自说明文档打开原文件
### 0. 用户确认(强制)执行任何编辑前,先判断**紧邻的上一条用户消息**是否已明确确认有损编辑:- **已确认**(含用户主动预授权,如"我知道有损,直接改")→ 直接进入 Step 1,不再重复警告。- **未确认或回复含糊** → 原样向用户发出下面这句话,**然后立即结束本回合等待回复** —— 同一条消息内不得附带任何导出/编辑/写回命令或工具调用:> SVG 编辑只保证视觉层面对齐,画板语义(层级/节点类型/思维导图结构/表格结构/连线绑定/容器类型/mention 等)将不可恢复,是否继续?这是**知情确认**(动手前让用户对语义丢失止损);真正的破坏性写入在 Step 4 还会再经 `--overwrite` dry-run 确认一次,二者职责不同、都不可省。
routes/svg-edit.md:68来自说明文档打开原文件
### 4. 写回画板`--overwrite` 会清空原画板内容,确认后再执行```bash# dry-run 探测lark-cli whiteboard +update \  --whiteboard-token <TOKEN> \  --source @<dir>/edited.svg \  --input_format svg \  --idempotent-token <10+字符唯一串> \  --overwrite --dry-run --as user# 用户确认后执行lark-cli whiteboard +update \  --whiteboard-token <TOKEN> \  --source @<dir>/edited.svg \  --input_format svg \  --idempotent-token <10+字符唯一串> \  --overwrite --as user```
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

所给包包含超出“画板”用途的文档和通讯录能力

原文依据:6 处
发现了什么

顶层说明称该 Skill 不负责文档编辑,但源码同时包含可读取、创建和编辑文档的 lark-doc,以及可查询姓名、邮箱、部门、联系方式和个人状态的 lark-contact。

为什么需要注意

如果安装器会注册所有嵌套 SKILL.md,用户可能在只预期画板功能时一并启用更广泛的文档写权限和员工资料访问能力,扩大误操作和隐私暴露范围。

这段代码的正常用途

提供的文件集合确实还包含独立的 lark-doc 与 lark-contact 技能,但仅凭同包存在不能证明 lark-whiteboard 会调用其全部能力。顶层画板技能明确排除文档内容编辑;画板工作流仅在需要从文档取得或新建画板 token 时调用文档命令,而联系人能力用于明确要求 @用户时解析真实 open_id。仍可让作者说明安装时会启用哪些技能和权限,并仅授予当前任务需要的 scope。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: >  飞书画板:查询和编辑飞书云文档中的画板。支持导出画板为预览图片、导出原始节点结构、使用多种格式更新画板内容。  当用户需要查看画板内容、导出画板图片、编辑画板时使用此 skill。不负责:飞书云文档内容编辑(lark-doc)、文档内嵌电子表格/Base(lark-sheets / lark-base)。metadata:
查看另外 5 个位置
lark-doc/SKILL.md:2来自说明文档打开原文件
---name: lark-docdescription: "飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。"metadata:
lark-contact/SKILL.md:2来自说明文档打开原文件
---name: lark-contactversion: 1.0.0description: "飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部门树遍历、按部门列员工、组织架构图,这类需求走原生 OpenAPI。"metadata:
references/lark-whiteboard-workflow.md:8来自说明文档打开原文件
**Step 1:获取 board_token**| 用户给了什么 | 怎么获取 ||---|---|| 直接给了 whiteboard token(`wbcnXXX`)| 直接使用 || 文档 URL 或 doc_id,文档中已有画板 | `lark-cli docs +fetch --doc <URL> --as user`,从返回的 `<whiteboard token="xxx"/>` 提取 || 文档 URL 或 doc_id,需要新建画板 | `lark-cli docs +update --doc <doc_id> --command append --content '<whiteboard type="blank"></whiteboard>' --as user`,从响应 `data.new_blocks[0].block_token` 取得(`block_type == "whiteboard"` 的那条;参数详见 lark-doc SKILL.md)|
scenes/mention.md:7来自说明文档打开原文件
## 取值来源(强约束)- 本页只讲 @用户(mentionUser)。@文档(mentionDoc)暂不支持。- `mentionUserId` 必须是**真实的飞书用户 open_id**(形如 `ou_xxxxxxxx`)。- 用户只给出**姓名**时,先用 `lark-contact` skill 把姓名解析成 open_id,再填入 `mentionUserId`。- **无法解析出真实 open_id 时,停下向用户确认,禁止臆造 id**。假 id 会写入失败或 @ 到错误的人。
lark-contact/SKILL.md:67来自说明文档打开原文件
## 不在本 skill 范围- 发消息 / 查聊天记录 → [`lark-im`](../lark-im/SKILL.md)- 排日程 / 邀请会议 → [`lark-calendar`](../lark-calendar/SKILL.md)- 部门树 / 按部门列员工 / 组织架构 → [`lark-openapi-explorer`](../lark-openapi-explorer/SKILL.md) 查找原生接口
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

3 个说明模块

该 Skill 通过 lark-cli 读取、导出和更新飞书画板,默认以当前用户身份操作;支持预览图、SVG、源码和原始节点格式。

查看原文
SKILL.md:23来自说明文档打开原文件
**身份**:画板操作默认使用 `--as user`。仅当需要以应用身份上传时使用 `--as bot`。
references/lark-whiteboard-export.md:11来自说明文档打开原文件
|----------------------|----|------------------------------------------------------------------------|| `--whiteboard-token` | 是  | 画板 token,需要拥有画板的读权限                                                    || `--output-type`      | 是  | 输出格式:`preview`(预览图片)、`svg`(SVG 矢量图)、`source`(PlantUML/Mermaid 代码)、`raw`(OpenAPI 原生画板节点格式) || `--output`           | 否  | 输出路径。当 `--output-type preview` 时必填;当 `--output-type svg/source/raw` 时可选,不填则直接输出到终端 || `--overwrite`        | 否  | 覆盖已存在的文件,默认为 false                                                     |

写入既可追加,也可清空后重建整块画板。编辑流程对会丢失语义的 SVG 回写设置了知情确认、dry-run 和再次确认。

查看原文
references/lark-whiteboard-update.md:20来自说明文档打开原文件
| `--idempotent-token` | 否  | 幂等 token,确保更新操作幂等;最少 10 个字符,建议使用时间戳 + 场景标识拼接(如 `1744800000-board-1`)。同一次逻辑更新只生成一次该 token,重试时须原样复用;切勿在每次重试时重新生成时间戳或幂等 key,否则会重复写入 || `--overwrite`        | 否  | 写入模式:带上则覆盖更新(写入前删除画板所有现有内容再写入);省略则为增量追加(保留原有内容,新内容叠加写入)。默认 false(增量追加)|| `--source`           | 是  | 输入画板内容,支持使用 `@path` 从文件读取,或 `-` 从 stdin 读取 |
routes/svg-edit.md:19来自说明文档打开原文件
执行任何编辑前,先判断**紧邻的上一条用户消息**是否已明确确认有损编辑:- **已确认**(含用户主动预授权,如"我知道有损,直接改")→ 直接进入 Step 1,不再重复警告。- **未确认或回复含糊** → 原样向用户发出下面这句话,**然后立即结束本回合等待回复** —— 同一条消息内不得附带任何导出/编辑/写回命令或工具调用:> SVG 编辑只保证视觉层面对齐,画板语义(层级/节点类型/思维导图结构/表格结构/连线绑定/容器类型/mention 等)将不可恢复,是否继续?这是**知情确认**(动手前让用户对语义丢失止损);真正的破坏性写入在 Step 4 还会再经 `--overwrite` dry-run 确认一次,二者职责不同、都不可省。

认证和权限规则被委托给未包含在所给源码中的 lark-shared,因此本次审计无法验证凭据保存方式、授权范围或错误恢复规则。

查看原文
SKILL.md:17来自说明文档打开原文件
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理**
从这里开始 · 工作说明SKILL.md
lark-whiteboard
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

40 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录79 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • references/lark-whiteboard-export.md已纳入全文
  • references/lark-whiteboard-update.md已纳入全文
  • references/lark-whiteboard-workflow.md已纳入全文
  • routes/svg-edit.md已纳入全文
  • elements/image.md已纳入全文
  • lark-contact/references/lark-contact-get-user.md已纳入全文
  • lark-contact/references/lark-contact-search-bot.md已纳入全文
  • lark-contact/references/lark-contact-search-user.md已纳入全文
  • lark-doc/references/genres/business-analysis.md已纳入全文
  • lark-doc/references/genres/data-report.md已纳入全文
  • lark-doc/references/genres/email.md已纳入全文
  • lark-doc/references/genres/execution-plan.md已纳入全文
  • lark-doc/references/genres/formal-doc.md已纳入全文
  • lark-doc/references/genres/meeting-minutes.md已纳入全文
  • lark-doc/references/genres/memo-brief.md已纳入全文
  • lark-doc/references/genres/official-redhead.md已纳入全文
  • lark-doc/references/genres/prd.md已纳入全文
  • lark-doc/references/genres/proposal.md已纳入全文
  • lark-doc/references/genres/research-report.md已纳入全文
  • lark-doc/references/genres/retrospective.md已纳入全文
  • lark-doc/references/genres/route-consumer.md已纳入全文
  • lark-doc/references/genres/route-creative.md已纳入全文
  • lark-doc/references/genres/route-knowledge.md已纳入全文
  • lark-doc/references/genres/route-marketing.md已纳入全文
  • lark-doc/references/genres/route-media.md已纳入全文
  • lark-doc/references/genres/route-opinion.md已纳入全文
  • lark-doc/references/genres/route-personal-brand.md已纳入全文
  • lark-doc/references/genres/route-platform.md已纳入全文
  • lark-doc/references/genres/route-report.md已纳入全文
  • lark-doc/references/genres/route-workplace.md已纳入全文
  • lark-doc/references/genres/sop-tutorial.md已纳入全文
  • lark-doc/references/genres/technical-doc.md已纳入全文
  • lark-doc/references/genres/wechat.md已纳入全文
  • lark-doc/references/genres/weekly-report.md已纳入全文
  • lark-doc/references/genres/white-paper.md已纳入全文
  • lark-doc/references/genres/xiaohongshu.md已纳入全文
  • lark-doc/references/lark-doc-create-workflow.md已纳入全文
  • lark-doc/references/lark-doc-create.md已纳入全文
  • lark-doc/references/lark-doc-fetch.md已纳入全文
  • lark-doc/references/lark-doc-history.md已纳入全文
  • lark-doc/references/lark-doc-md.md已纳入全文
  • lark-doc/references/lark-doc-media-download.md已纳入全文
  • lark-doc/references/lark-doc-media-insert.md已纳入全文
  • lark-doc/references/lark-doc-media-preview.md已纳入全文
  • lark-doc/references/lark-doc-mindnote.md已纳入全文
  • lark-doc/references/lark-doc-resource-cover.md已纳入全文
  • lark-doc/references/lark-doc-script.md已纳入全文
  • lark-doc/references/lark-doc-update.md已纳入全文
  • lark-doc/references/lark-doc-whiteboard.md已纳入全文
  • lark-doc/references/lark-doc-xml-extended-blocks.md已纳入全文
  • lark-doc/references/lark-doc-xml.md已纳入全文
  • lark-doc/SKILL.md已纳入全文
  • routes/dsl.md已纳入全文
  • routes/mermaid.md已纳入全文
  • routes/svg.md已纳入全文
  • scenes/mention.md已纳入全文
  • scenes/photo-showcase.md已纳入全文
  • lark-contact/SKILL.md已纳入全文
  • elements/connectors.md已纳入全文
  • elements/content.md已纳入全文
  • elements/layout.md已纳入全文
  • elements/schema.md已纳入全文
  • elements/style.md已纳入全文
  • elements/typography.md已纳入全文
  • scenes/architecture.md已纳入全文
  • scenes/bar-chart.md已纳入全文
  • scenes/comparison.md已纳入全文
  • scenes/fishbone.md已纳入全文
  • scenes/flowchart.md已纳入全文
  • scenes/flywheel.md已纳入全文
  • scenes/funnel.md已纳入全文
  • scenes/line-chart.md已纳入全文
  • scenes/mermaid.md已纳入全文
  • scenes/milestone.md已纳入全文
  • scenes/organization.md已纳入全文
  • scenes/pyramid.md已纳入全文
  • scenes/swimlane.md已纳入全文
  • scenes/treemap.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • elements/connectors.md配套文件
  • elements/content.md配套文件
  • elements/image.md配套文件
  • elements/layout.md配套文件
  • elements/schema.md配套文件
  • elements/style.md配套文件
  • elements/typography.md配套文件
  • references/lark-whiteboard-export.md配套文件
  • references/lark-whiteboard-update.md配套文件
  • references/lark-whiteboard-workflow.md配套文件
  • routes/dsl.md配套文件
  • routes/mermaid.md配套文件
  • routes/svg-edit.md配套文件
  • routes/svg.md配套文件
  • scenes/architecture.md配套文件
  • scenes/bar-chart.md配套文件
  • scenes/comparison.md配套文件
  • scenes/fishbone.md配套文件
  • scenes/flowchart.md配套文件
  • scenes/flywheel.md配套文件
  • scenes/funnel.md配套文件
  • scenes/line-chart.md配套文件
  • scenes/mention.md配套文件
  • scenes/mermaid.md配套文件
  • scenes/milestone.md配套文件
  • scenes/organization.md配套文件
  • scenes/photo-showcase.md配套文件
  • scenes/pyramid.md配套文件
  • scenes/swimlane.md配套文件
  • scenes/treemap.md配套文件
  • lark-doc/SKILL.md配套文件
  • lark-doc/references/lark-doc-whiteboard.md配套文件
  • lark-doc/references/lark-doc-fetch.md配套文件
  • lark-doc/references/lark-doc-create-workflow.md配套文件
  • lark-doc/references/lark-doc-create.md配套文件
  • lark-doc/references/lark-doc-update.md配套文件
  • lark-doc/references/lark-doc-script.md配套文件
  • lark-doc/references/lark-doc-history.md配套文件
  • lark-doc/references/lark-doc-media-insert.md配套文件
  • lark-doc/references/lark-doc-media-preview.md配套文件
  • lark-doc/references/lark-doc-media-download.md配套文件
  • lark-doc/references/lark-doc-resource-cover.md配套文件
  • lark-doc/references/lark-doc-mindnote.md配套文件
  • lark-contact/SKILL.md配套文件
  • lark-doc/references/genres/route-workplace.md配套文件
  • lark-doc/references/genres/route-report.md配套文件
  • lark-doc/references/genres/route-knowledge.md配套文件
  • lark-doc/references/genres/route-media.md配套文件
  • lark-doc/references/genres/route-opinion.md配套文件
  • lark-doc/references/genres/route-consumer.md配套文件
  • lark-doc/references/genres/route-marketing.md配套文件
  • lark-doc/references/genres/route-personal-brand.md配套文件
  • lark-doc/references/genres/route-creative.md配套文件
  • lark-doc/references/genres/route-platform.md配套文件
  • lark-doc/references/lark-doc-xml.md配套文件
  • lark-doc/references/lark-doc-xml-extended-blocks.md配套文件
  • lark-doc/references/lark-doc-md.md配套文件
  • lark-contact/references/lark-contact-search-user.md配套文件
  • lark-contact/references/lark-contact-search-bot.md配套文件
  • lark-contact/references/lark-contact-get-user.md配套文件
  • lark-doc/references/genres/memo-brief.md配套文件
  • lark-doc/references/genres/weekly-report.md配套文件
  • lark-doc/references/genres/proposal.md配套文件
  • lark-doc/references/genres/execution-plan.md配套文件
  • lark-doc/references/genres/formal-doc.md配套文件
  • lark-doc/references/genres/official-redhead.md配套文件
  • lark-doc/references/genres/meeting-minutes.md配套文件
  • lark-doc/references/genres/retrospective.md配套文件
  • lark-doc/references/genres/prd.md配套文件
  • lark-doc/references/genres/technical-doc.md配套文件
  • lark-doc/references/genres/sop-tutorial.md配套文件
  • lark-doc/references/genres/research-report.md配套文件
  • lark-doc/references/genres/data-report.md配套文件
  • lark-doc/references/genres/white-paper.md配套文件
  • lark-doc/references/genres/business-analysis.md配套文件
  • lark-doc/references/genres/xiaohongshu.md配套文件
  • lark-doc/references/genres/wechat.md配套文件
  • lark-doc/references/genres/email.md配套文件

代码和说明中提到的操作

安装其他软件包
SKILL.md:15来自说明文档打开原文件
> - 运行 `lark-cli --version`,确认可用,无需询问用户。> - 运行 `npx -y @larksuite/whiteboard-cli@^0.2.13 -v`,确认可用,无需询问用户。
elements/layout.md:339来自说明文档打开原文件
```bashnpx -y @larksuite/whiteboard-cli@^0.2.13 -i skeleton.json -o step1.png -l coords.json```
elements/schema.md:275来自说明文档打开原文件
  height?: WBSizeValue;         // 默认 48,保持正方形  name: string;                 // 图标名称,从 npx -y @larksuite/whiteboard-cli@^0.2.13 --icons 输出中选取  color?: string;               // 可选颜色覆盖,hex 格式如 '#FF6600'
连接外部网站
elements/image.md:20来自说明文档打开原文件
| 本地文件 | 直接使用 || 网络 URL | `curl -L -o photo.jpg "<URL>"` || 文档中的图片 token | `lark-cli docs +media-download --token <token> --output ./photo.png` |
elements/schema.md:224来自说明文档打开原文件
- 包含 `viewBox` 属性(如 `viewBox="0 0 24 24"`),引擎依赖它确定坐标系- 包含 `xmlns="http://www.w3.org/2000/svg"`(SVG 作为独立 `image/svg+xml` 解析时,XML 规范要求声明命名空间)
elements/schema.md:248来自说明文档打开原文件
    { "type": "svg", "x": 0, "y": 0, "width": 1400, "height": 680,      "svg": { "code": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1400 680\" ...>...</svg>" } },    { "type": "rect", "x": 100, "y": 50, "width": 200, "height": 40,
运行命令
elements/image.md:40来自说明文档打开原文件
```bashls -l *.jpg   # 确认每张文件大小不同;若大小相同则内容可能重复,需重新下载
elements/image.md:53来自说明文档打开原文件
```bashlark-cli docs +media-upload --file ./photo1.jpg --parent-type whiteboard --parent-node <whiteboard_token>
elements/image.md:60来自说明文档打开原文件
```bashlark-cli docs +media-upload --file ./photo1.jpg --parent-type whiteboard --parent-node <whiteboard_token>  # → <media_token_1>
读取文件
references/lark-whiteboard-update.md:38来自说明文档打开原文件
# 编写 PlantUML 代码cat > diagram.puml << 'EOF'@startuml
references/lark-whiteboard-update.md:46来自说明文档打开原文件
# 通过管道传递给命令cat diagram.puml | lark-cli whiteboard +update \  --whiteboard-token <画板Token> \
references/lark-whiteboard-update.md:56来自说明文档打开原文件
# 编写 Mermaid 代码cat > diagram.mmd << 'EOF'graph TD
修改文件
scenes/bar-chart.md:186来自说明文档打开原文件
```javascriptconst { writeFileSync } = require('fs');```
scenes/fishbone.md:185来自说明文档打开原文件
fs.writeFileSync('diagram.json', JSON.stringify({ version: 2, nodes }, null, 2));```
scenes/flywheel.md:57来自说明文档打开原文件
```javascriptconst { writeFileSync } = require('fs');
读取了多少行
7,659
文件校验值(用于核对版本)
c03553862b5b99ffa2cc678da8121ee80ebdfa0c7fff98631a5a6d8ae39f7925