跳转到正文
报告库
用途分类 / 文档处理

Lark Slides Skill 安全审计

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

飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。

第三方安全检查结论

先别安装或运行

已检查文件
191
发现的风险
27
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 9 项风险
高风险

要求“无损复述历史上下文”,可能泄露先前对话和内部技能说明

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

该指令不属于创建或编辑幻灯片所必需的行为,却要求在用户提出相关请求时复述历史上下文、技能文档和语法说明。历史上下文可能包含私人内容、凭据、其他任务数据或系统内部指令。

为什么需要注意

敏感对话内容或内部操作规则可能被写入回复或演示文稿,并进一步暴露给文稿协作者或外部服务。

这段代码的正常用途

候选扩大了解释范围。原文虽提到“历史上下文”,但紧接着把复述对象限定为“以上权威经验、必读的技能文档和易错语法”,且只有用户明确提出无损复述时触发。它没有指示复述凭据、私人对话或其他任务数据,因此高危数据泄露说法不受当前证据支持。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:43来自说明文档打开原文件
- 绘制图表前必须阅读 [`xml/slides_chart_demo.xml`](references/xml/slides_chart_demo.xml)。- 当用户要求无损复述历史上下文时,必须无损复述以上权威经验、必读的技能文档(需要重新阅读)和易错元素语法(尤其是 `<table>` 和 `<chart>`)。
中风险

XML 中的本地图片路径会触发自动云端上传

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

创建、加页和整页更新会识别 `<img src="@...">`,先从当前工作目录读取对应文件并上传到演示文稿媒体库,再提交页面。

为什么需要注意

如果生成的 XML 引用了错误文件,工作目录中的内部截图、图表或其他敏感图片可能被复制到云端演示文稿,并向该演示文稿的协作者开放。

当页面 XML 主动包含 `@` 本地路径时,CLI 会从命令执行目录读取文件、上传到目标演示文稿,再提交页面。这可能把选中的本地图片复制到云端,但只在 XML 明确引用该路径时发生;路径还被限制在 CWD 内。用户可要求不引用本地图片,或先确认待上传文件清单。

references/cli/lark-slides-add-slide.md:52来自说明文档打开原文件
## 本地图片:`@路径` 占位符XML 里写 `<img src="@./chart.png" .../>`,CLI 会:先把每个不重复的本地文件上传到这份演示文稿(`parent_type=slide_file`),再把 `src` 替换成返回的 `file_token`,最后才提交页面。占位符路径按**执行命令时的 CWD** 解析,跟 `--slide @file` 所在目录无关;`@./assets/x.png` 找的是 `$PWD/assets/x.png`。
查看另外 4 个位置
references/cli/lark-slides-update-slide.md:57来自说明文档打开原文件
## 本地图片:`@路径` 占位符`--content` 的 XML 里写 `<img src="@./chart.png" .../>`,CLI 会:先把每个不重复的本地文件上传到这份演示文稿(`parent_type=slide_file`),再把 `src` 替换成返回的 `file_token`,最后才整页写回。占位符路径按**执行命令时的 CWD** 解析,跟 `--content @file` 所在目录无关;`@./assets/x.png` 找的是 `$PWD/assets/x.png`。
references/cli/lark-slides-add-slide.md:50来自说明文档打开原文件
`@file` 路径**必须在 CWD 内**(如 `@./plan/page3.xml`);绝对路径和 `../` 会被拒绝并报 `unsafe file path`。
references/cli/lark-slides-add-slide.md:54来自说明文档打开原文件
XML 里写 `<img src="@./chart.png" .../>`,CLI 会:先把每个不重复的本地文件上传到这份演示文稿(`parent_type=slide_file`),再把 `src` 替换成返回的 `file_token`,最后才提交页面。占位符路径按**执行命令时的 CWD** 解析,跟 `--slide @file` 所在目录无关;`@./assets/x.png` 找的是 `$PWD/assets/x.png`。
references/cli/lark-slides-update-slide.md:59来自说明文档打开原文件
`--content` 的 XML 里写 `<img src="@./chart.png" .../>`,CLI 会:先把每个不重复的本地文件上传到这份演示文稿(`parent_type=slide_file`),再把 `src` 替换成返回的 `file_token`,最后才整页写回。占位符路径按**执行命令时的 CWD** 解析,跟 `--content @file` 所在目录无关;`@./assets/x.png` 找的是 `$PWD/assets/x.png`。
中风险

本地图片会被上传到飞书,选错文件会造成数据披露

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

技能把 `<img src="@./path">` 解释为本地文件并自动上传到目标演示文稿。主流程还要求在使用网图时先下载到当前目录再上传。

为什么需要注意

如果代理选择了含机密信息、个人信息或未授权素材的本地图片,该文件内容会进入目标演示文稿的云端媒体存储,并可能被演示文稿协作者看到。

引用 `@` 本地路径会触发真实云端上传,并把返回的 file_token 写入演示文稿;因此若代理选错文件,文件内容可能披露给该演示文稿可访问者。该行为符合制作带图幻灯片的目的,且路径被限制在 CWD、上传前会检查存在性和大小,但这些限制不能判断内容是否敏感。用户可要求仅上传明确列出的素材并在执行前核对路径、目标演示文稿和访问权限。

SKILL.md:315来自说明文档打开原文件
7. **编辑已有页面优先原链接更新**:修改单个 shape/img 用 `+replace-slide`(`block_replace` / `block_insert`),不要整页重建;一页改动很多或要改背景用 `+update-slide` 整页覆盖(保 `slide_id` 和页序),多页整页重建就对每页各跑一次 `+update-slide`,不要用 `slides +create` 新建整份 PPT;追加/插入单页用 `+add-slide`、删除单页用 `+delete-slide`,只有这些 shortcut 未覆盖的参数才手动调 `slide.create` / `slide.delete`8. **`<img src>` 只能用上传到飞书 drive 的 `file_token`,禁止使用 http(s) 外链 URL**:飞书 slides 渲染端不会代理外链图片,外链 src 在 PPT 里通常不显示或显示破图。流程必须是「先把图存到本地 → 用 `slides +media-upload` 上传,或在 `+create --slides` 的 XML 里写 `<img src="@./path">` 占位符自动上传 → 拿 `file_token` 写进 `<img src>`」。如果用户给了网图链接,先 `curl`/下载到 CWD 内再走上传流程,不要直接把外链 URL 塞进 `src`。**图片最大 20 MB**(slides upload API 不支持分片上传)。
查看另外 5 个位置
references/cli/lark-slides-create.md:122来自说明文档打开原文件
## 本地图片:`@<path>` 占位符`<img>` 元素的 `src` 属性如果以 `@` 开头,CLI 会把它当作本地文件路径,自动上传到当前演示文稿,并把占位符替换为返回的 `file_token`。
references/cli/lark-slides-media-upload.md:81来自说明文档打开原文件
## 工作原理`+media-upload` 内部调用 `POST /open-apis/drive/v1/medias/upload_all`(单次上传,最大 20 MB),固定使用:- `parent_type=slide_file`(slides 后端唯一接受的取值)- `parent_node=<xml_presentation_id>`
references/cli/lark-slides-create.md:124来自说明文档打开原文件
`<img>` 元素的 `src` 属性如果以 `@` 开头,CLI 会把它当作本地文件路径,自动上传到当前演示文稿,并把占位符替换为返回的 `file_token`。
references/cli/lark-slides-create.md:142来自说明文档打开原文件
- 路径相对于**当前工作目录**(CWD)解析;**必须是 CWD 内的相对路径**(如 `./pic.png`、`./assets/x.png`)- 同一份图被多次引用时**只上传一次**(按路径去重)- `src` 不以 `@` 开头的会原样保留,但**只允许写 `slides +media-upload` 拿到的 `file_token`**;**禁止写 http(s) 外链 URL**:飞书 slides 渲染端不会代理外链图片,外链 src 通常显示破图。要用网图必须先下载到 CWD 内、再走上传流程- 单张图片最大 20 MB(slides upload API 不支持分片上传)- 校验阶段就会检查所有占位符文件存在及大小;缺文件或超限直接报错,不会创建空白 PPT 占位- 创空白 PPT → 上传所有图 → 替换 token → 逐页创建 slide,按这个顺序执行
references/cli/lark-slides-media-upload.md:83来自说明文档打开原文件
`+media-upload` 内部调用 `POST /open-apis/drive/v1/medias/upload_all`(单次上传,最大 20 MB),固定使用:- `parent_type=slide_file`(slides 后端唯一接受的取值)- `parent_node=<xml_presentation_id>`
中风险

本地图片占位符会把工作目录中的文件上传到飞书

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

文档规定 `@<本地路径>` 图片会由 CLI 自动上传并替换为云端 file_token;给已有页加图的流程也直接上传本地文件。

为什么需要注意

若代理选错文件,私人截图、客户素材或含敏感信息的图片可能被上传到目标演示文稿及其云端媒体存储,并继承相应共享范围。

当幻灯片 XML 的图片 `src` 使用 `@<本地路径>` 时,CLI 会读取并上传该本地图片,再用云端 token 替换占位符。只有明确引用的图片会被上传,且路径被限制在当前工作目录内;这符合创建带图幻灯片的用途,但可能把含敏感信息的图片发送到飞书。用户可要求作者在上传前列出文件、确认目标演示文稿和身份,并仅开放无敏感内容的工作目录。

references/xml/xml-schema-quick-ref.md:226来自说明文档打开原文件
### img```xml<img src="file_token_或_@本地路径" topLeftX="80" topLeftY="120" width="320" height="180"/>````img` 使用 `topLeftX` / `topLeftY`,不是 `x` / `y`。`src` 只支持:`slides +media-upload` 返回的 `file_token`,或 `@<本地路径>` 占位符(`+create --slides` 和 `+add-slide` 会自动上传并替换)。**禁止使用 http(s) 外链 URL**——飞书 slides 渲染端不会代理外链图,外链 src 在 PPT 里通常不显示。本地图片详见 [lark-slides-create.md](../cli/lark-slides-create.md#本地图片path-占位符) / [lark-slides-media-upload.md](../cli/lark-slides-media-upload.md)。本地图片的两种姿势:- 新建带图 PPT:`+create --slides` 里直接写 `src="@./pic.png"`,CLI 在创空白 PPT 后、加 slides 前自动上传并替换 token- 给已有 PPT 加带图新页:`+add-slide --slide` 的 XML 里直接写 `src="@./pic.png"`,CLI 上传后替换 token 再提交页面
查看另外 4 个位置
references/cli/lark-slides-replace-slide.md:180来自说明文档打开原文件
### 给已有页加图(典型场景)```bashPRES_ID=xxxSID=yyy# 1) 上传图片TOKEN=$(lark-cli slides +media-upload --as user \  --file ./pic.png --presentation "$PRES_ID" --jq '.data.file_token')
references/xml/xml-schema-quick-ref.md:228来自说明文档打开原文件
```xml<img src="file_token_或_@本地路径" topLeftX="80" topLeftY="120" width="320" height="180"/>````img` 使用 `topLeftX` / `topLeftY`,不是 `x` / `y`。`src` 只支持:`slides +media-upload` 返回的 `file_token`,或 `@<本地路径>` 占位符(`+create --slides` 和 `+add-slide` 会自动上传并替换)。**禁止使用 http(s) 外链 URL**——飞书 slides 渲染端不会代理外链图,外链 src 在 PPT 里通常不显示。本地图片详见 [lark-slides-create.md](../cli/lark-slides-create.md#本地图片path-占位符) / [lark-slides-media-upload.md](../cli/lark-slides-media-upload.md)。
references/xml/xml-schema-quick-ref.md:236来自说明文档打开原文件
本地图片的两种姿势:- 新建带图 PPT:`+create --slides` 里直接写 `src="@./pic.png"`,CLI 在创空白 PPT 后、加 slides 前自动上传并替换 token- 给已有 PPT 加带图新页:`+add-slide --slide` 的 XML 里直接写 `src="@./pic.png"`,CLI 上传后替换 token 再提交页面
references/cli/lark-slides-create.md:149来自说明文档打开原文件
> [!IMPORTANT]> **路径必须在 CWD 内**:`@/abs/path/x.png` 或 `@../up/x.png` 这种会被 CLI 拒绝(报 `unsafe file path`)。如果素材在别的目录,先 `cd` 过去再执行。
中风险

强制使用外部生图或搜图可能披露演示文稿主题

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

Skill 不只是允许图片,而是禁止无图交付,并要求封面图片来自生图或搜图工具。生成提示词和搜索词可能包含用户提供的项目、客户、产品或未公开计划。

为什么需要注意

如果演示文稿包含机密内容,相关主题或描述可能被发送给外部图片生成或搜索服务,并受其日志和数据政策约束。

这段证据能说明什么

技能强制大量图片,并指定封面图来自生图或搜图工具,因此在内容敏感时存在把描述性主题交给额外工具的可能。但可见内容没有说明这些工具是否联网、由谁运营、实际发送哪些字段,或是否会包含客户名等敏感信息,无法确认候选描述的披露范围。用户可要求敏感演示只使用已批准的本地素材。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:21来自说明文档打开原文件
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。- 禁止在 `headline` 或 `title` 下方放置用于分隔或装饰的 `rect` 或 `<line>`。- 禁止在任何页面内部使用无意义的装饰线条或色块条带,页面任何一边都不要使用贴边窄条。- 生图工具的指令参数必须以“不要出现任何文字和颜色色号”结尾,避免生成的图片上出现干扰文字。- 禁止使用 emoji 图标,任何位置都不能出现。
查看另外 1 个位置
SKILL.md:26来自说明文档打开原文件
- 禁止在任何页面内部使用无意义的装饰线条或色块条带,页面任何一边都不要使用贴边窄条。- 生图工具的指令参数必须以“不要出现任何文字和颜色色号”结尾,避免生成的图片上出现干扰文字。- 禁止使用 emoji 图标,任何位置都不能出现。
中风险

强制使用外部生图或搜图工具可能披露演示文稿主题

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

技能要求封面图片来自生图或搜图工具,并要求大量、互不重复的图片。为了得到相关素材,代理通常需要把页面主题、产品名称、项目描述或其他上下文写入这些工具的查询或提示词。

为什么需要注意

如果演示内容尚未公开,相关主题、内部项目名称或业务描述可能被发送给图片服务,并受该服务的日志、保留和训练政策约束。

这段证据能说明什么

规则确实强制封面通过生图或搜图获得,并要求多张不同图片;这可能需要描述页面主题。但证据未显示工具的网络/保留策略,也没有要求发送产品名、项目描述或其他敏感原文,所以不能确定实际外泄。用户可要求作者提供数据处理说明,或对机密内容禁用外部素材工具。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:21来自说明文档打开原文件
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。- 禁止在 `headline` 或 `title` 下方放置用于分隔或装饰的 `rect` 或 `<line>`。
查看另外 1 个位置
SKILL.md:63来自说明文档打开原文件
- 文字卡片:多数页面必须满足 6-8 张文字卡片、200-400 文字数量,字数不足时必须扩写成长句或段落,文字卡片不要留白,必须充实饱满。文字卡片不是短标签,而是“标题 + 完整说明”,像浓缩的分析文稿。文字内容不得不用列表、分栏、关键词或短句时,必须保证层次清晰,更建议拆分为多张子卡片。- 图片卡片:多数页面必须满足 1-3 张图片卡片,缺少图片时必须用生图工具补充配图,图片卡片与文字卡片组成网格,确保图文丰富。- 图表卡片:数据信息不要在文字卡片中罗列,必须在图表卡片中可视化(包括表格、图表、时间线、流程图等),图表卡片与其他卡片组成网格,展现数据驱动。
中风险

强制使用生图或搜图工具可能向外部服务透露演示主题

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

Skill 要求所有产物大量使用图片,并指定封面图片来自生图或搜图工具,还规定传给生图工具的提示词结尾。这意味着代理可能依据用户的演示内容构造并发送外部图片请求。

为什么需要注意

若演示包含未公开项目、客户名称、财务计划或内部策略,图片提示词或搜索词可能泄露主题、关键词及上下文。可见内容没有要求先征得同意、脱敏或避免发送机密文本。

这段证据能说明什么

规则要求图片并直接规定生图提示词的结尾,说明代理可能调用图片工具。但来源没有展示工具实现、网络目的地、发送内容或隐私策略;也未强制把完整演示内容放入提示词。因此只能确认存在条件性数据披露面,不能确认具体主题已发送。敏感任务可要求只用本地或用户提供素材。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:21来自说明文档打开原文件
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。
查看另外 1 个位置
SKILL.md:26来自说明文档打开原文件
- 禁止在任何页面内部使用无意义的装饰线条或色块条带,页面任何一边都不要使用贴边窄条。- 生图工具的指令参数必须以“不要出现任何文字和颜色色号”结尾,避免生成的图片上出现干扰文字。- 禁止使用 emoji 图标,任何位置都不能出现。
中风险

强制使用生图或搜图工具,可能向外部素材服务披露演示主题

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

技能不允许无图交付,并要求封面主视觉来自生图或搜图工具。生成或搜索合适图片通常需要把描述性提示词交给该工具,而规则没有为机密演示提供例外。

为什么需要注意

若演示涉及未发布产品、客户、财务或内部战略,派生自这些内容的图片提示词或搜索词可能被外部服务处理或记录。可见材料没有说明具体提供商或数据保留方式。

这段证据能说明什么

该技能没有为敏感演示提供无图例外,并要求封面来自生图或搜图工具,所以确有把描述性提示交给额外工具的可能。不过可见证据未说明工具是外部服务,也未规定提示必须包含机密主题、人物或产品名。用户可在运行前限制为已批准的本地图片或脱敏提示。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:21来自说明文档打开原文件
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。
查看另外 2 个位置
SKILL.md:26来自说明文档打开原文件
- 禁止在任何页面内部使用无意义的装饰线条或色块条带,页面任何一边都不要使用贴边窄条。- 生图工具的指令参数必须以“不要出现任何文字和颜色色号”结尾,避免生成的图片上出现干扰文字。- 禁止使用 emoji 图标,任何位置都不能出现。
SKILL.md:63来自说明文档打开原文件
- 文字卡片:多数页面必须满足 6-8 张文字卡片、200-400 文字数量,字数不足时必须扩写成长句或段落,文字卡片不要留白,必须充实饱满。文字卡片不是短标签,而是“标题 + 完整说明”,像浓缩的分析文稿。文字内容不得不用列表、分栏、关键词或短句时,必须保证层次清晰,更建议拆分为多张子卡片。- 图片卡片:多数页面必须满足 1-3 张图片卡片,缺少图片时必须用生图工具补充配图,图片卡片与文字卡片组成网格,确保图文丰富。- 图表卡片:数据信息不要在文字卡片中罗列,必须在图表卡片中可视化(包括表格、图表、时间线、流程图等),图表卡片与其他卡片组成网格,展现数据驱动。
中风险

强制使用生图或搜图工具,可能向额外服务披露演示文稿主题

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

该 Skill 不论内容敏感度都要求大量图片,并指定封面图片来自生图或搜图工具。生成合适图片通常需要把主题、人物、产品或业务场景写入提示词或搜索词。

为什么需要注意

未公开的产品计划、客户信息、内部项目名称或其他演示内容可能被额外的图片提供商接收、记录或用于其服务处理。

这段证据能说明什么

大量图片和生图/搜图要求构成潜在的额外数据接收方,但证据没有描述接收方、网络访问、日志保留或实际提示内容。候选所举的主题、人物、产品或业务场景可能被使用,却不是源文档强制发送的字段。对敏感演示,用户可要求不调用外部素材工具并只使用已审查资产。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:21来自说明文档打开原文件
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。
查看另外 1 个位置
SKILL.md:26来自说明文档打开原文件
- 禁止在任何页面内部使用无意义的装饰线条或色块条带,页面任何一边都不要使用贴边窄条。- 生图工具的指令参数必须以“不要出现任何文字和颜色色号”结尾,避免生成的图片上出现干扰文字。- 禁止使用 emoji 图标,任何位置都不能出现。
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 6 项风险
高风险

整页更新可删除遗漏内容,并可能覆盖读取后的协作修改

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

`+update-slide` 把提交 XML 当作页面最终状态;未包含的元素和讲者备注会被删除。指定旧 revision 并不是冲突保护,反而会基于旧快照重建页面并丢弃后续编辑。

为什么需要注意

使用不完整或过期 XML 时,图片、文本、备注以及其他协作者刚做的修改可能永久从当前页面消失。

整页更新确实有覆盖和协作丢失风险:旧 `revision_id` 会基于旧快照重建页面;未写入 XML 的元素会被删除,省略 `<note>` 会清空备注。若要求“读取后有变化就不写”,文档要求写前重新读取,因为该命令没有严格的 compare-and-swap。用户可要求只用块级替换,或写前回读并合并最新版。

references/cli/lark-slides-update-slide.md:35来自说明文档打开原文件
| `--content` | 是 | 这一页的完整目标 XML,单一 `<slide>` 根;支持字面量、`@file`、stdin `-`。别名:`--xml` / `--slide-xml` / `--slide-content` / `--content-xml` || `--revision-id` | 否 | 默认 `-1`(最新)。它只选择服务端执行所基于的快照,不是“页面有新编辑就拒绝”的乐观锁;传旧版本号会以旧快照重建页面并丢弃其后的编辑 || `--tid` | 否 | 调用方提供的任务/事务标识,CLI 原样透传;用于关联同一编辑任务或重试,不等同于版本前置条件,不能单独保证并发冲突时拒绝写入。一般留空 |`@file` 和 `+xml-get --output` 一样**只接受当前目录下的相对路径**,绝对路径会被拒。命令别名:`slides +update`(隐藏);服务别名:`lark-cli slide …` 等价于 `lark-cli slides …`。如果要求“从读取之后页面一旦变化就不再写入”,不能只传 `--revision-id` 或 `--tid`。写入前必须再次用 `+xml-get` 回读最新版,比较读取期间是否发生变化;有变化时先基于最新版重新合并本次修改,再执行整页写回。当前 shortcut 不提供严格的 compare-and-swap 保证。
查看另外 4 个位置
references/cli/lark-slides-update-slide.md:43来自说明文档打开原文件
## 语义:`--content` 就是这一页的最终状态**没写进 `--content` 的东西会从页面上消失。** 这不是补丁,是整页覆盖。| 你在 `--content` 里怎么写 | 页面上的结果 ||---|---|| 元素带原来的 `id` | 按新 XML 更新这个元素 || 元素不带 `id` | 作为新元素插入到它所在的位置 || 原来有、`--content` 里没有的元素 | **删除** || `<style>` 改了 | 背景等页面样式跟着改 || 没写 `<note>` | 讲者备注被清空 |
references/cli/lark-slides-update-slide.md:41来自说明文档打开原文件
如果要求“从读取之后页面一旦变化就不再写入”,不能只传 `--revision-id` 或 `--tid`。写入前必须再次用 `+xml-get` 回读最新版,比较读取期间是否发生变化;有变化时先基于最新版重新合并本次修改,再执行整页写回。当前 shortcut 不提供严格的 compare-and-swap 保证。
references/cli/lark-slides-update-slide.md:45来自说明文档打开原文件
**没写进 `--content` 的东西会从页面上消失。** 这不是补丁,是整页覆盖。
references/cli/lark-slides-update-slide.md:51来自说明文档打开原文件
| 元素不带 `id` | 作为新元素插入到它所在的位置 || 原来有、`--content` 里没有的元素 | **删除** || `<style>` 改了 | 背景等页面样式跟着改 || 没写 `<note>` | 讲者备注被清空 |
中风险

删页会立即改变原演示文稿,恢复依赖仍可用的历史版本

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

删除命令按 slide_id 原地删除页面,文档明确称该操作在原地不可撤销;恢复需要另外查找历史版本并发起异步回滚。

为什么需要注意

选错 slide_id 会使页面从当前演示文稿消失;如果历史版本不可用、选择错误或回滚失败,页面可能无法恢复。

删页会按 `slide_id` 原地移除单页,文档称其不可撤销;恢复需另行选择历史版本并发起回滚。因此选错页面会造成持久影响。已有缓解措施包括删除前回读、截图或 dry-run,以及历史回滚;用户应要求先展示目标页再确认删除。

references/cli/lark-slides-delete-slide.md:48来自说明文档打开原文件
`slide_id` 是服务端短 ID,**不能从 XML 里推导**。两个来源:1. `+create` / `+add-slide` 的返回值里存下来;2. 事后回读:`slides +xml-get --presentation "$PRES_ID" --output .lark-slides/plan/<deck>/readback.xml`。删错页的代价高于多跑一次回读 —— 不确定就先回读 + `+screenshot` 看一眼再删。## 删错了怎么办删除在原地不可撤销,但可以走历史版本回滚:`+history-list` 找 `history_version_id` → `+history-revert`(只接受 `history_version_id`,不能传 `revision_id`)→ `+history-revert-status` 轮询。命令用法见 [lark-slides-history.md](lark-slides-history.md)。
查看另外 4 个位置
references/cli/lark-slides-delete-slide.md:3来自说明文档打开原文件
从演示文稿删除**一页**,按 `slide_id` 指定。只改一页里的局部内容用 [`+replace-slide`](lark-slides-replace-slide.md),不要删了重建。
references/cli/lark-slides-delete-slide.md:22来自说明文档打开原文件
# 删之前先确认打到哪份 PPT、哪一页lark-cli slides +delete-slide --presentation "$PRES_ID" --slide-id "$SID" --dry-run```
references/cli/lark-slides-delete-slide.md:53来自说明文档打开原文件
删错页的代价高于多跑一次回读 —— 不确定就先回读 + `+screenshot` 看一眼再删。
references/cli/lark-slides-delete-slide.md:57来自说明文档打开原文件
删除在原地不可撤销,但可以走历史版本回滚:`+history-list` 找 `history_version_id` → `+history-revert`(只接受 `history_version_id`,不能传 `revision_id`)→ `+history-revert-status` 轮询。命令用法见 [lark-slides-history.md](lark-slides-history.md)。
中风险

整页更新可能删除未包含的元素,并使依赖旧元素 ID 的评论和链接失效

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

`+update-slide` 是覆盖式写入:提交内容中遗漏的元素会被删除。若读取时移除 ID,再写回时所有元素都会被当成新元素,旧 ID 上的评论和块直达链接会失效,而且不会报错。

为什么需要注意

用户可能在只想大幅修改一页时意外丢失图片、文本、备注或其他页面元素;评论定位和元素直达链接也可能永久断开。

这是实际的覆盖式编辑行为,不是示例:整页更新会删除提交 XML 中遗漏的元素。若回读时移除元素 ID 再写回,元素会被重建,绑定旧 ID 的评论和块链接会静默失效。只有用户明确要求整页改写且保留所需元素和 ID 时才应使用;用户可要求先 dry-run、保留 ID、回读并核对评论锚点。

SKILL.md:294来自说明文档打开原文件
| `+media-download` | 根据 Slides 图片 `file_token` 下载本地图片;`--output` 选填,未传时使用 `--output-dir` 默认值 `.lark-slides/media` 并自动生成文件名;调用后使用返回的 `path`,不要猜测实际路径;直连下载无权限时自动回退到源文件预览 || [`+replace-slide`](references/cli/lark-slides-replace-slide.md) | 对已有幻灯片页面进行块级替换/插入(`block_replace` / `block_insert`),自动注入 id 和 `<content/>`,不改变页序 || [`+update-slide`](references/cli/lark-slides-update-slide.md) | 把一整页 XML 交给已有页面,页面变成 `--content` 描述的样子;能一次改样式/插入/删除/备注/背景,`slide_id` 和页序不变。**没写进 `--content` 的元素会被删除** |
查看另外 3 个位置
references/cli/lark-slides-update-slide.md:87来自说明文档打开原文件
先 `--dry-run` 看请求,确认无误再执行。> ⚠️ **第 1 步不要加 `--remove-attr-id`。** 那个参数会把所有元素的 `id` 去掉,再交给 `+update-slide` 的话,每个元素都会被当成新元素插入、原来的全部被删除——页面看起来一样,但所有元素换了新 id,锚在旧 id 上的评论和 block 直达链接全部失效,而且**不会有任何报错**。`--remove-attr-id` 只用于只读查看。
SKILL.md:295来自说明文档打开原文件
| [`+replace-slide`](references/cli/lark-slides-replace-slide.md) | 对已有幻灯片页面进行块级替换/插入(`block_replace` / `block_insert`),自动注入 id 和 `<content/>`,不改变页序 || [`+update-slide`](references/cli/lark-slides-update-slide.md) | 把一整页 XML 交给已有页面,页面变成 `--content` 描述的样子;能一次改样式/插入/删除/备注/背景,`slide_id` 和页序不变。**没写进 `--content` 的元素会被删除** |
references/cli/lark-slides-update-slide.md:89来自说明文档打开原文件
> ⚠️ **第 1 步不要加 `--remove-attr-id`。** 那个参数会把所有元素的 `id` 去掉,再交给 `+update-slide` 的话,每个元素都会被当成新元素插入、原来的全部被删除——页面看起来一样,但所有元素换了新 id,锚在旧 id 上的评论和 block 直达链接全部失效,而且**不会有任何报错**。`--remove-attr-id` 只用于只读查看。
中风险

整页更新或页面删除会造成持久的云端内容变更

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

该能力覆盖删除页面和修改页面;整页更新文档说明单个 part 承载整页,成功后会写入新版本。

为什么需要注意

目标演示文稿、页面 ID或 XML 选择错误时,现有页面可能被整体替换或删除,影响其他协作者。原子事务只防止部分写入,并不防止一次完整但错误的覆盖。

该技能的实际范围包含删页和修改页面,两者都会持久改变云端演示文稿。整页更新把 XML 当成最终状态,遗漏元素会删除;删页则原地不可撤销。风险属于声明用途内的正常能力,但用户应要求精确目标、回读或 dry-run,并优先对局部修改使用块级替换。

SKILL.md:2来自说明文档打开原文件
---name: lark-slidesversion: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 5 个位置
references/cli/lark-slides-update-slide.md:144来自说明文档打开原文件
| `data` 下的字段 | 说明 ||------|------|| `xml_presentation_id` | 实际写入的演示文稿 ID || `slide_id` | 与传入相同——整页覆盖不换页 id || `revision_id` | 写入后的新版本号 || `images_uploaded` | 仅当 `--content` 带 `@` 占位符时出现:本次去重后实际上传的图片张数 |服务端拒绝这次写入时(`failed_reason` 非空)**不会**返回成功输出,而是报错并带上原因——单个 part 承载整页,任何失败都意味着页面没被写入。- 原因包含 `not found`:先检查 `--presentation` 和 `--slide-id`,再用 `slides +xml-get` 回读当前页面 ID。页面可能已删除,或 ID 来自另一份演示文稿。- 其他 invalid-parameter 错误:检查 `--content` 中不支持的元素、缺少 `<content/>` 的 `<shape>`,以及超出 960×540 的坐标。
references/cli/lark-slides-replace-slide.md:167来自说明文档打开原文件
| 字段 | 说明 ||------|------|| `xml_presentation_id` | 解析后的真实 token(wiki URL 解析后会变化) || `slide_id` | 与入参一致 || `parts_count` | 本次提交的 parts 条数 || `revision_id` | 成功后的新版本号,下次做乐观锁时用 || `failed_part_index` | 有部分失败时存在,指向第几条 part 失败 || `failed_reason` | 失败原因文字描述 |整批作为原子事务:任一 part 失败则整批不生效,服务端通过 `failed_part_index` / `failed_reason` 告诉你是哪条;按此定位修正后重发。
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
references/cli/lark-slides-update-slide.md:43来自说明文档打开原文件
## 语义:`--content` 就是这一页的最终状态**没写进 `--content` 的东西会从页面上消失。** 这不是补丁,是整页覆盖。
references/cli/lark-slides-delete-slide.md:53来自说明文档打开原文件
删错页的代价高于多跑一次回读 —— 不确定就先回读 + `+screenshot` 看一眼再删。## 删错了怎么办删除在原地不可撤销,但可以走历史版本回滚:`+history-list` 找 `history_version_id` → `+history-revert`(只接受 `history_version_id`,不能传 `revision_id`)→ `+history-revert-status` 轮询。命令用法见 [lark-slides-history.md](lark-slides-history.md)。
中风险

未使用版本锁时,块级写入可能覆盖并发修改

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

示例直接执行 `block_replace`,而版本锁被单独描述为可传参数。块级修改需要重写整个元素;若读取后其他人又编辑了同一页,不带读取时的 `revision_id` 写回可能基于过期内容。

为什么需要注意

协作者刚完成的标题、格式或元素内容可能被旧版本替换,且写入使用用户身份和幻灯片写权限。

示例在读取块 ID 后直接执行整块 `block_replace`,未携带读取时的版本号;同一文档另列了读取 `revision_id` 并在写入时传回的乐观锁方案。底层说明还表明属性级修改也必须重写整块。因此,如果他人在读取与写入之间修改同一块,无版本锁的示例流程存在覆盖并发修改的合理风险。用户可要求作者默认强制使用同一次读取获得的 `revision_id`,并在版本冲突时停止而非重试覆盖。

references/cli/lark-slides-replace-slide.md:204来自说明文档打开原文件
# block_replace 换掉整个标题块(id 自动注入)lark-cli slides +replace-slide --as user \  --presentation "$PRES_ID" --slide-id "$SID" \  --parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'```
查看另外 3 个位置
references/cli/lark-slides-replace-slide.md:223来自说明文档打开原文件
### 乐观锁```bash# 读时记录 revision_idREV=$(lark-cli slides xml_presentation.slide get --as user \  --params "{\"xml_presentation_id\":\"$PRES_ID\",\"slide_id\":\"$SID\"}" \  --jq '.data.revision_id')# 写时传 --revision-id;传不存在的版本号(超过当前 revision)返回 3350002lark-cli slides +replace-slide --as user \  --presentation "$PRES_ID" --slide-id "$SID" --revision-id "$REV" \  --parts "$PARTS"```
references/cli/lark-slides-xml-presentation-slide-replace.md:178来自说明文档打开原文件
3. **`<img>` 必须用 file_token**:不能用外链 URL——先 [`slides +media-upload`](lark-slides-media-upload.md) 拿 token。4. **不能字段级 patch**:要改一个块的某个属性(比如只改 `topLeftX`),得写整块新 XML 走 `block_replace`;API 不支持"只改一个字段"。5. **`block_replace` 要求 `replacement` 根元素带 `id="<block_id>"`**:底层 API 的硬约束,缺失会返回 3350001。推荐走 shortcut [`+replace-slide`](lark-slides-replace-slide.md)——它会自动把 `id` 注入到 `replacement` 根元素上,用户写 XML 时不用自己加。6. **`<shape>` 必须有 `<content/>` 子元素**:SML 2.0 schema 要求,缺失同样触发 3350001。shortcut [`+replace-slide`](lark-slides-replace-slide.md) 会自动注入 `<content/>`,直接调底层 API 需要自己加。7. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.replace` 查看最新参数结构。
references/cli/lark-slides-replace-slide.md:200来自说明文档打开原文件
```bash# 先拿原页 XML,从里面找到标题块的 3 位 short id(如 bUn)lark-cli slides xml_presentation.slide get --as user \  --params "{\"xml_presentation_id\":\"$PRES_ID\",\"slide_id\":\"$SID\"}"# block_replace 换掉整个标题块(id 自动注入)lark-cli slides +replace-slide --as user \  --presentation "$PRES_ID" --slide-id "$SID" \  --parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'```
低风险

该 Skill 具备删除云端幻灯片页面的持久修改能力

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

其声明的页面管理范围明确包含删除,并依赖可操作幻灯片的 `lark-cli`。可见说明中没有展示删除前确认或备份步骤。

为什么需要注意

目标文稿或页面识别错误时,用户的云端幻灯片内容可能被删除,恢复能力取决于平台版本历史和回收机制。

这段代码的正常用途

删除页面能力确实存在,但这是技能明示的幻灯片管理用途,不是隐藏功能。候选称未展示确认或恢复措施并不完整:主文要求删前回读确认,删除参考提供 dry-run、截图复核及历史回滚;共享安全规则还要求所有写入/删除先确认用户意图。仍应让用户核对具体演示文稿和页面。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 4 个位置
SKILL.md:6来自说明文档打开原文件
metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---
SKILL.md:87来自说明文档打开原文件
| 给已有 PPT 追加或插入页面 | 一次一页,`--slide` 支持 `@file` 绕开 shell 转义 | `slides +add-slide`、`cli/lark-slides-add-slide.md` || 删除页面 | 按 `slide_id` 单页删除,删前先回读确认 | `slides +delete-slide`、`cli/lark-slides-delete-slide.md` || 读取或分析已有 PPT | 解析 slides/wiki token,用 shortcut 回读全文 XML 或读取单页 XML,保存 `xml_presentation_id`、`slide_id`、`revision_id` | `slides +xml-get`、`xml_presentation.slide.get`、`cli/lark-slides-xml-presentations-get.md` |
references/cli/lark-slides-delete-slide.md:53来自说明文档打开原文件
删错页的代价高于多跑一次回读 —— 不确定就先回读 + `+screenshot` 看一眼再删。## 删错了怎么办删除在原地不可撤销,但可以走历史版本回滚:`+history-list` 找 `history_version_id` → `+history-revert`(只接受 `history_version_id`,不能传 `revision_id`)→ `+history-revert-status` 轮询。命令用法见 [lark-slides-history.md](lark-slides-history.md)。
lark-shared/SKILL.md:29来自说明文档打开原文件
2. **写入/删除操作前必须确认用户意图**。3. 目标命令支持 `--dry-run` 时,用 `--dry-run` 预览危险请求。4. **退出码 10 是高风险确认门禁(`risk: "high-risk-write"`),不是错误**:停下 → **向用户确认**(展示 `action`、`risk` 和关键参数)→ 取得**用户显式同意**后,将 `hint` 指出的确认 flag **追加到你原始 argv 的末尾**后重试;**绝不**静默加确认 flag 绕过 → [`lark-shared-high-risk-approval.md`](references/lark-shared-high-risk-approval.md)。
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 7 项风险
中风险

应用身份创建演示文稿会额外授予当前 CLI 用户可管理权限

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

以 bot 身份创建时,CLI 不仅创建演示文稿,还会尝试把 `full_access` 自动授予本机配置中的当前 CLI 用户;这是超出内容创建本身的权限变更。

为什么需要注意

若本机绑定了错误账号、共享设备账号或不应管理该资源的人,对方可能获得演示文稿的完整管理权限。

以 bot 身份创建时,CLI 会额外尝试把 `full_access` 授予当前 CLI 用户,确属权限变更。不过主技能限定:只有用户明确要求应用身份,或工作流需要 bot 持有资源时才使用 bot;默认使用用户身份。用户可要求始终使用 `--as user`,或在 bot 创建前明确拒绝自动授权。

references/cli/lark-slides-create.md:63来自说明文档打开原文件
>> 如果演示文稿是**以应用身份(bot)创建**的,如 `lark-cli slides +create --as bot`,CLI 会**尝试为当前 CLI 用户自动授予该演示文稿的 `full_access`(可管理权限)**。>> 以应用身份创建时,结果里会额外返回 `permission_grant` 字段,明确说明授权结果:> - `status = granted`:当前 CLI 用户已获得该演示文稿的可管理权限> - `status = skipped`:本地没有可用的当前用户 `open_id`,因此不会自动授权> - `status = failed`:演示文稿已创建成功,但自动授权用户失败>
查看另外 2 个位置
SKILL.md:122来自说明文档打开原文件
飞书幻灯片通常是用户自己的内容资源。**默认应优先显式使用 `--as user`(用户身份)执行 slides 相关操作**,始终显式指定身份。- **`--as user`(推荐)**:以当前登录用户身份创建、读取、管理演示文稿。执行前先完成用户授权:
SKILL.md:130来自说明文档打开原文件
- **`--as bot`**:仅在用户明确要求以应用身份操作,或需要让 bot 持有/创建资源时使用。使用 bot 身份时,要额外确认 bot 是否真的有目标演示文稿的访问权限。
中风险

仅依据路径和 token 路由,弱化了链接域名来源校验

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

Skill 明确要求把 doubao.com 的 `/slides/` URL/token 直接交给该能力,并规定路由依据不是域名。这样会减少对链接来源和目标服务的一层确认。

为什么需要注意

如果用户粘贴了伪造、误导或属于另一租户/账号的相似链接,代理可能尝试用当前飞书身份解析或操作错误目标。可见证据不能证明这种误操作已经发生。

这段证据能说明什么

文档确实明确按 `/slides/` 路径和 token 路由,并特别接受 doubao.com,而不以域名为路由依据。但提供的内容没有显示 URL 解析实现、允许的主机列表、重定向行为或最终 API 目标,因此无法判断是否真的绕过来源校验。用户可要求作者说明跨域 URL 如何验证并限制可接受主机。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:2来自说明文档打开原文件
---name: lark-slidesversion: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 2 个位置
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
references/cli/lark-slides-add-slide.md:44来自说明文档打开原文件
|------|------|------|| `--presentation` | 是 | `xml_presentation_id`、`/slides/` URL 或 `/wiki/` URL || `--slide` | 是 | 一个完整的 `<slide>...</slide>` 文档;支持字面量、`@file`、stdin `-` || `--before-slide-id` | 否 | 插到该 `slide_id` 之前;**不传就是追加到末尾** || `--revision-id` | 否 | 演示文稿版本号,默认 `-1`(最新);传具体版本号做乐观锁 |
中风险

链接校验接受 SSH、NFS、FTP 和邮箱地址,范围超过文档声称的 HTTP/HTTPS

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

超链接说明写着“仅支持 http/https”,但实际 XSD 正则还接受 FTP、NFS、SSH、主机式字符串和邮箱。检查器会使用该 schema 验证文稿,并且只要没有错误就标记为可发布。

为什么需要注意

恶意或误生成的演示文稿可能通过校验并包含打开外部协议的链接。用户点击后,客户端可能尝试连接网络主机、启动协议处理程序或创建邮件,暴露地址、主机信息或触发非预期操作。

说明声称超链接“仅支持 http/https”,但 `href` 的实际 schema 模式明确列出 FTP、NFS、SSH、主机式字符串和邮箱。检查流程调用 schema 校验,而发布就绪只取决于错误数,因此这些非网页链接可能通过结构校验并让结果显示可发布。是否会被客户端点击或调用仍取决于渲染端,但用户可能据此误信链接范围。可要求作者把允许协议收紧为 HTTPS,或增加独立的链接协议安全检查。

references/xml/slides_xml_schema_definition.xml:2069来自说明文档打开原文件
    <xs:element name="a">        <xs:annotation>            <xs:documentation>                超链接元素                属性: href (仅支持 http/https)            </xs:documentation>        </xs:annotation>        <xs:complexType mixed="true">            <xs:choice minOccurs="0" maxOccurs="unbounded">                <xs:element ref="sml:br"/>                <xs:element ref="sml:tab"/>                <xs:element ref="sml:formula"/>                <xs:element ref="sml:strong"/>                <xs:element ref="sml:em"/>                <xs:element ref="sml:u"/>                <xs:element ref="sml:span"/>                <xs:element ref="sml:del"/>                <xs:element ref="sml:shadow"/>                <xs:element ref="sml:outline"/>                <xs:element ref="sml:field"/>            </xs:choice>            <xs:attribute name="href" use="required">                <xs:simpleType>                    <xs:restriction base="xs:anyURI">                        <xs:pattern value="(https?|s?ftp|ftps|nfs|ssh)://\S+"/>                        <xs:pattern value="[\w.-]+[.:]\S*"/>                        <xs:pattern value="(mailto:)?\S+@\S+\.\w{2,}"/>                    </xs:restriction>                </xs:simpleType>            </xs:attribute>        </xs:complexType>
查看另外 4 个位置
scripts/xml_lint.py:2813来自代码打开原文件
    namespace_issues = validate_sml_tag_prefixes(xml)    root_name = xml_local_name(root.tag)    sxsd_issues = validate_sxsd_document(xml, root)    iconpark_issues = validate_iconpark_icon_types(root)    top_level_issues = [        normalize_issue(issue, None, {})        for issue in [            *namespace_issues,            *[                issue                for issue in sxsd_issues                if not is_slide_scoped_sxsd_issue(issue, root_name)            ],            *iconpark_issues,        ]    ]
scripts/xml_lint.py:2780来自代码打开原文件
        "summary": {            "slide_count": len(slides),            "error_count": error_count,            "warning_count": warning_count,            "info_count": info_count,            "status": status,            "release_ready": error_count == 0,            "screenshot_review_required": warning_count > 0,        },
references/xml/slides_xml_schema_definition.xml:2090来自说明文档打开原文件
            </xs:choice>            <xs:attribute name="href" use="required">                <xs:simpleType>                    <xs:restriction base="xs:anyURI">                        <xs:pattern value="(https?|s?ftp|ftps|nfs|ssh)://\S+"/>                        <xs:pattern value="[\w.-]+[.:]\S*"/>                        <xs:pattern value="(mailto:)?\S+@\S+\.\w{2,}"/>                    </xs:restriction>                </xs:simpleType>            </xs:attribute>
scripts/xml_lint.py:2779来自代码打开原文件
        "slide_size": slide_size,        "summary": {            "slide_count": len(slides),            "error_count": error_count,            "warning_count": warning_count,            "info_count": info_count,            "status": status,            "release_ready": error_count == 0,            "screenshot_review_required": warning_count > 0,        },
中风险

仅按 URL 路径和 token 路由会忽略域名信任边界

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

技能要求对 doubao.com 的 `/slides/` URL 或 token 直接启用此技能,并明确规定依据路径模式和 token 而不是域名路由。仅靠字符串形态无法证明链接属于预期租户、服务或资源。

为什么需要注意

精心构造或误粘贴的链接可能被当作飞书幻灯片资源交给已认证的 `lark-cli` 处理,造成错误账号访问尝试、资源混淆,或使用户误以为该域名已经过可信验证。

这段证据能说明什么

来源明确表示 doubao.com 的 `/slides/` URL/token 应按路径和 token 路由,而不是按域名路由。这证明了路由策略,但没有提供 CLI 的主机验证、token 解析和请求目标实现,因此无法证明它会把错误来源的链接当作有效飞书资源。用户可限制域名并要求跨域链接先做只读识别。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 1 个位置
SKILL.md:6来自说明文档打开原文件
metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---
中风险

仅按路径和 token 路由,明确忽略 URL 域名

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

Skill 指示把 doubao.com 的 /slides/ URL 或 token 直接交给飞书幻灯片流程,并明确说路由不依据域名。域名通常是判断链接来源和应由哪个服务处理的重要边界。

为什么需要注意

如果攻击者或误导性内容提供外观相似的链接,代理可能把来自不同服务的 token 交给 lark-cli 流程,导致错误账户或文稿被读取、修改,或让 token 暴露给并非用户预期的处理链。可见片段不能证明 lark-cli 会接受或泄露该 token。

这段证据能说明什么

可见规则确实不以域名决定路由,并将 doubao.com 的 `/slides/` 形式纳入幻灯片流程。但路由到某个技能不等于 CLI 会信任任意主机或向该主机发送凭据;相关实现未提供。域名边界是否真的被绕过无法确认。用户可要求仅接受批准域名或 canonical token。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 2 个位置
SKILL.md:6来自说明文档打开原文件
metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---
references/cli/lark-slides-xml-presentations-get.md:22来自说明文档打开原文件
|------|------|------|------|| `--presentation` | string | 是 | 演示文稿的唯一标识符 || `--revision-id` | integer | 否 | 版本号,`-1` 表示最新版本 || `--output` | string | 否 | XML 保存路径,必须使用相对路径;省略时 XML 在 stdout 的 JSON envelope 中返回 || `--raw` | flag | 否 | 直接把 XML 输出到 stdout,不包 JSON envelope;不能与 `--output`、`--jq` 或非 JSON `--format` 同时使用 |
中风险

仅凭路径和 token 路由,明确忽略 URL 域名边界

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

技能指示代理把 doubao.com 的 /slides/ URL/token 直接交给幻灯片技能,并明确规定依据路径和 token、而不是域名进行路由。路径外观不能证明链接属于预期的飞书服务或租户。

为什么需要注意

如果用户粘贴了伪造、误导或来自错误环境的链接,具备云端幻灯片权限的 lark-cli 可能被引导去解析该 token,并对错误资源发起读取或修改请求。可见材料不足以证明实际会成功。

这段证据能说明什么

候选准确引用了“不以域名路由”的活跃指令,但仅凭提供的说明无法判断 token 是否随后被 canonicalize、是否有服务端校验,或凭据会被发送到哪里。路径外观本身不足以验证资源,然而实际安全影响仍缺实现证据。用户可要求作者说明 host allowlist 和 canonicalization。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 1 个位置
SKILL.md:7来自说明文档打开原文件
  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"
中风险

URL 路由明确忽略域名,可能对错误来源的页面 token 执行云端操作

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

该 Skill 要求依据 `/slides/` 路径和 token 路由,并明确表示不以域名为依据。仅凭 URL 形状和 token 无法证明链接属于预期服务、租户或演示文稿。

为什么需要注意

误粘贴、伪装或来源不明的链接可能被交给具有飞书权限的 CLI 处理,导致读取或修改错误的云端文稿;URL 中的 token 也可能被送往并非用户预期的处理链。

这段证据能说明什么

技能确实按 `/slides/` 路径/token 而非域名选择处理流程。可是提供的源码没有显示任意主机的 URL 会被接受、token 如何验证,或云端写操作会指向 URL 所在主机;因此“会对错误来源 token 执行操作”尚不能确认。用户可要求跨域 URL 先只读解析并展示 canonical 资源。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 1 个位置
references/cli/lark-slides-delete-slide.md:30来自说明文档打开原文件
|------|------|------|| `--presentation` | 是 | `xml_presentation_id`、`/slides/` URL 或 `/wiki/` URL || `--slide-id` | 是 | 要删除的页面 ID || `--revision-id` | 否 | 演示文稿版本号,默认 `-1`(最新);传具体版本号做乐观锁 || `--dry-run` | 否 | 打印将要发起的请求,不删除 |
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。发现 3 项风险
高风险

要求自动且不让用户看见地运行程序

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

Skill 同时要求自动执行,并要求不要询问或告知用户。

为什么需要注意

AI 如果听从这段文字,可能不再按你的要求做事,或跳过本来需要你确认的操作。

这段代码的正常用途

所引内容要求把无法执行的检查记录为 `unsupported_checks`,避免静默遗漏;它没有要求隐瞒操作或在用户不知情时自动执行。相邻规则还明确要求每次写入前由用户确认准确范围,并在写后重新读取验证。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
lark-drive/references/lark-drive-workflow.md:36来自说明文档打开原文件
3. 事实必须来自可执行 CLI 命令或被引用 skill;不要只凭目录结构推断治理结论。4. 无法执行的检查必须记录到 `unsupported_checks`,不能静默省略。5. 写入前必须产出计划。每一次写入都需要用户对准确范围和 command family 显式确认。
查看另外 1 个位置
lark-drive/references/lark-drive-workflow.md:35来自说明文档打开原文件
2. 在昂贵读取或写入规划前,先解析并确认 `target_scope`。3. 事实必须来自可执行 CLI 命令或被引用 skill;不要只凭目录结构推断治理结论。4. 无法执行的检查必须记录到 `unsupported_checks`,不能静默省略。5. 写入前必须产出计划。每一次写入都需要用户对准确范围和 command family 显式确认。6. CLI/API 支持验证时,写入后必须用 fresh read 验证。7. 结束时进入 `done`,返回已完成事项、验证结果和剩余限制。不要把尚未完成的外部审批描述成已完成。
中风险

要求复述内部技能规则可能把实现说明泄露到用户内容中

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

技能明确指示:当用户要求无损复述历史上下文时,要重新读取并完整复述其“权威经验”、必读文档和易错语法。这超出了创建或编辑幻灯片所必需的行为,并可能覆盖代理通常不披露内部指令的边界。

为什么需要注意

内部工作流、工具约束和实现细节可能出现在聊天、幻灯片备注或其他交付物中,为后续提示注入或针对性规避提供信息。

这段代码的正常用途

该指令只在用户明确要求“无损复述历史上下文”时触发,并具体限定为本技能的权威经验、必读文档和易错语法。它可能暴露技能实现说明,但证据没有要求把凭据、其他用户数据或系统提示写入演示内容;这是用户主动请求下的文档复述。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:43来自说明文档打开原文件
- 绘制图表前必须阅读 [`xml/slides_chart_demo.xml`](references/xml/slides_chart_demo.xml)。- 当用户要求无损复述历史上下文时,必须无损复述以上权威经验、必读的技能文档(需要重新阅读)和易错元素语法(尤其是 `<table>` 和 `<chart>`)。
低风险

技能要求重复读取并可复述内部技能文档,超出了幻灯片操作本身

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

活跃指令要求完整读取技能两次,并在用户要求“无损复述历史上下文”时重新读取和复述内部规则及语法。这不是创建或编辑幻灯片所必需的操作。

为什么需要注意

这会消耗额外上下文,并可能把内部操作说明暴露在用户输出中,挤占用户内容或影响代理对当前任务的判断。所示证据未要求披露凭据。

这段代码的正常用途

要求重复读取完整技能文档会增加处理成本,但可见证据没有要求读取用户文件、凭据或执行额外云端操作。所谓“复述”也只在用户明确要求无损复述时触发,并限定为该技能的设计规则、必读文档和语法;这更像冗余的内部工作流要求,而非隐蔽的数据行为。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:13来自说明文档打开原文件
> 本技能文档较长,务必使用 Read 工具阅读两次,必须阅读完整全文。
查看另外 2 个位置
SKILL.md:41来自说明文档打开原文件
- 填充渐变颜色必须用 `<fill><fillColor color="linear-gradient(135deg, rgba(R,G,B,A) 0%, rgba(R,G,B,A) 100%)"/></fill>`。- 编辑页面前必须阅读 [`workflow/slides-editing.md`](references/workflow/slides-editing.md)。- 绘制图表前必须阅读 [`xml/slides_chart_demo.xml`](references/xml/slides_chart_demo.xml)。- 当用户要求无损复述历史上下文时,必须无损复述以上权威经验、必读的技能文档(需要重新阅读)和易错元素语法(尤其是 `<table>` 和 `<chart>`)。
SKILL.md:43来自说明文档打开原文件
- 绘制图表前必须阅读 [`xml/slides_chart_demo.xml`](references/xml/slides_chart_demo.xml)。- 当用户要求无损复述历史上下文时,必须无损复述以上权威经验、必读的技能文档(需要重新阅读)和易错元素语法(尤其是 `<table>` 和 `<chart>`)。
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 2 项风险
中风险

缺少真实 Logo 时建议生成“近似 Logo”,可能造成品牌误认

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

资产规划示例明确建议在找不到真实客户 Logo 时,用生图工具创建“close-enough”图片,而不是使用真实 Logo。可见规则没有要求把这种替代品标为虚构或待替换。

为什么需要注意

客户、管理层或外部观众可能把合成图案误认为真实品牌标识,导致错误归属、品牌不当使用或降低商业材料可信度。

资产规划要求每个计划资产提供缺失时的替代方案,而被标为“Good examples”的 Logo 示例明确要求生成“close-enough image”替代真实客户 Logo。可见内容没有要求添加“虚构”“占位”或“待替换”标识;相邻的图表示例反而明确要求标注模拟数据。这可能让观众把近似图形误认为真实品牌标识,影响品牌和身份判断。用户可限制不得生成仿制 Logo,只允许真实授权素材、普通文字名称或明确标注的占位符。

references/planning-layer.md:207来自说明文档打开原文件
`asset_need` is metadata. It can describe a desired figure, diagram, chart, icon, logo, screenshot, or fallback visual.Use an object for one planned asset, an array for multiple real needs, or `asset_type: "none"` when no asset is useful. Each planned asset must include:- `asset_type`: one of `paper_figure`, `architecture_diagram`, `icon`, `logo`, `chart`, `infographic`, `screenshot`, `flow_diagram`, or `none`.- `purpose`: why this asset helps the page's key message.- `suggested_query`: short future lookup hint only; do not execute it unless separately requested.- `fallback_if_missing`: a plan to create a close-enough image with the image generation tool, or a native `<chart>` for data.- `chart_contract`: when `asset_type` is `chart` and the visual is a supported standard data chart, set this optional slide-level field so generation is locked to native `<chart>`.
查看另外 1 个位置
references/planning-layer.md:219来自说明文档打开原文件
Good examples:- `{"asset_type":"architecture_diagram","purpose":"Explain component relationships.","suggested_query":"service architecture diagram","fallback_if_missing":"Render the component diagram with <shape> + <line>."}`- `{"asset_type":"logo","purpose":"Identify the customer context.","suggested_query":"customer logo","fallback_if_missing":"Create a close-enough image with the image generation tool instead of a real logo."}`- `{"asset_type":"chart","purpose":"Show adoption trend.","suggested_query":"monthly adoption trend chart","fallback_if_missing":"Render a native `<chart>` using the provided series when available; otherwise render a native `<chart>` with mock placeholder values and label it as 模拟数据,仅占位,待替换真实数据."}`
低风险

缺少真实数据时,Skill 会主动生成模拟图表数据

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

规划规则要求:用户要求趋势、比较或分布但未提供数值时,使用模拟数据,并要求清楚标注。

为什么需要注意

若占位标签在后续编辑、导出或截图中被裁掉,模拟数值可能被观众误认为真实业务数据,影响汇报和决策。

当用户要求图表、趋势、比较或分布却未提供数值时,规则会生成模拟或占位数据,而不是停下来索取真实数据。规则要求清楚标注,因此不是隐蔽伪造;但若标签被忽略或幻灯片被当成事实依据,仍可能影响用户决策。用户可要求禁止模拟数据、先确认数值,或让作者确保图内及讲者备注均明确标为示例。

references/planning-layer.md:143来自说明文档打开原文件
`data_source` must be one of:- `user_provided`: the user supplied concrete values, tables, CSV, or metric lists; use them and do not replace them with mock data.- `mock_placeholder`: the user asked for a placeholder, template, example, or later-replaceable chart position; use mock data in native `<chart>`.- `mock_required_by_intent`: the user did not provide concrete values but asked for data expression, charts, trends, comparisons, or distributions; use mock data in native `<chart>`.`data_series_required` means the generated XML must include `<chartData>`. It does not require user-provided real-world values. When real values are unavailable but chart expression is part of the user's intent, write mock or placeholder values into native `<chart>` and label them clearly instead of switching to manual drawing primitives or metric blocks.

Skill 逻辑拆解

8 个说明模块

该 Skill 通过 lark-cli 以用户或应用身份创建、读取、编辑和删除飞书幻灯片;默认要求显式使用用户身份,并通过登录流程取得授权。

查看原文
SKILL.md:122来自说明文档打开原文件
飞书幻灯片通常是用户自己的内容资源。**默认应优先显式使用 `--as user`(用户身份)执行 slides 相关操作**,始终显式指定身份。- **`--as user`(推荐)**:以当前登录用户身份创建、读取、管理演示文稿。执行前先完成用户授权:```bashlark-cli auth login --domain slides```
SKILL.md:134来自说明文档打开原文件
1. 创建、读取、增删 slide、按用户给出的链接继续编辑已有 PPT,默认都先用 `--as user`。2. 如果出现权限不足,先检查当前是否误用了 bot 身份;不要默认回退到 bot。3. 只有在用户明确要求"用应用身份 / bot 身份操作",或当前工作流就是 bot 创建资源后再做协作授权时,才切换到 `--as bot`。

新建或大幅改写时,它会在本地保存规划和 XML,运行本地 lint,然后把内容写入云端并回读验证。规划文件被设计为成功后继续保留。

查看原文
SKILL.md:104来自说明文档打开原文件
**CRITICAL — 新建演示文稿或大幅改写页面时,MUST 先生成 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`,再生成 XML。先创建对应目录,规划层规则和中间产物生命周期见 [planning-layer.md](references/planning-layer.md)。仅替换一个标题、插入一个块等小型已有页编辑可豁免。****CRITICAL — 新建演示文稿或大幅改写页面时,生成 XML 前 MUST 读取 [visual-planning.md](references/visual-planning.md),确保 `layout_type`、`visual_focus`、`text_density` 实际改变页面几何、主视觉和文本量。****CRITICAL — 新建演示文稿或大幅改写页面时,规划 `asset_need` MUST 遵循 [asset-planning.md](references/asset-planning.md):只做元数据规划,必须有 `fallback_if_missing`,不得要求真实搜索、下载或上传素材。****CRITICAL — 将完整 `<slide>` XML 提交给 `slides +create`、`slides +add-slide` 或 `slides +update-slide` 之前,MUST 先把待提交 XML 保存到本地文件并运行唯一版式准出入口 [`scripts/xml_lint.py`](scripts/xml_lint.py);`summary.error_count` 必须为 0 才能调用接口。**
references/planning-layer.md:36来自说明文档打开原文件
`.lark-slides/` is local agent state. It supports recovery, iteration, and later edits, but it should not be treated as source code or committed by default.Keep:- `.lark-slides/plan/<deck-or-task-id>/slide_plan.json` after successful creation or major rewrite. The plan is the editable design state for the deck.- A small manifest when useful for follow-up work, such as `xml_presentation_id`, slide IDs, `revision_id`, plan path, and verification status.
references/workflow/validation-xml.md:9来自说明文档打开原文件
1. 记录创建或编辑返回的 `xml_presentation_id`,以及已知的 `slide_id` / `revision_id`。2. 用 `slides +xml-get` 回读全文 XML 到本地文件。3. 检查实际页数是否符合计划或用户要求。4. 检查每页 `<data>` 内是否有预期主要元素。5. 检查没有明显空白页、破损页、缺失标题或缺失主视觉。6. 检查页面不是全部退化为标题加 bullet list。7. 检查视觉层级:标题、主视觉、支撑信息三者可区分。8. 检查明显溢出和布局风险:重叠、越界、底部拥挤、长文本框。9. 在最终回复中给出简短验证记录。

创建多页演示文稿不是原子操作;若中途失败,已创建的演示文稿和成功页面会保留,流程要求先回读再恢复。

查看原文
references/cli/lark-slides-create.md:18来自说明文档打开原文件
> [!IMPORTANT]> `slides +create` 带页面时底层会逐页创建,不是原子操作。中途失败时先记录 `xml_presentation_id`,回读确认当前状态,再继续修复或追加。**CRITICAL — 提交前必须先跑版式 lint**:把待提交的 `<slide>` XML 存成本地文件,运行 [`scripts/xml_lint.py`](../../scripts/xml_lint.py),`summary.error_count` 必须为 0。
references/cli/lark-slides-create.md:58来自说明文档打开原文件
> [!IMPORTANT]> 不带页面参数时,`slides +create` 只创建空白演示文稿。创建后用 [`+add-slide`](lark-slides-add-slide.md) 逐页添加 slide 内容。>> 带了页面时,CLI 先创建空白演示文稿,再逐页调用 slide 创建接口添加页面。如果某一页添加失败,CLI 会停止并报错,已创建的演示文稿和已添加的页面会保留。>> 如果演示文稿是**以应用身份(bot)创建**的,如 `lark-cli slides +create --as bot`,CLI 会**尝试为当前 CLI 用户自动授予该演示文稿的 `full_access`(可管理权限)**。>

该技能通过 lark-cli 读取、创建和编辑飞书幻灯片;编辑既支持单块替换,也支持整页覆盖。

查看原文
SKILL.md:283来自说明文档打开原文件
Shortcut 是对常用操作的高级封装(`lark-cli slides +<verb> [flags]`)。有 Shortcut 的操作优先使用。| Shortcut | 说明 ||----------|------|| [`+create`](references/cli/lark-slides-create.md) | 创建 PPT,可选一步添加页面 || [`+add-slide`](references/cli/lark-slides-add-slide.md) | 向已有演示文稿追加或插入**一页**(`--before-slide-id` 控制位置),XML 支持 `@file` / stdin,`<img src="@./path">` 占位符自动上传 || [`+delete-slide`](references/cli/lark-slides-delete-slide.md) | 按 `slide_id` 删除**一页** || [`+xml-get`](references/cli/lark-slides-xml-presentations-get.md) | 读取全文 XML,用 `--presentation` 指定演示文稿的 `xml_presentation_id`,用 `--output` 把 XML 存到本地文件(必须是 CWD 内的相对路径,如 `.lark-slides/plan/<deck>/readback.xml`) || [`+screenshot`](references/cli/lark-slides-screenshot.md) | 把幻灯片页面截图保存为本地图片;用 `--slide-number` 指定页码(从 1 开始,多页重复传入)或用 `--slide-id` 指定页面;单张用 `--output .lark-slides/screenshots/<deck-or-task-id>/page-01`,批量用 `--output-dir .lark-slides/screenshots/<deck-or-task-id>`(一次最多 10 页);后续必须读取返回的 `output` / `screenshots[].path` || [`+media-upload`](references/cli/lark-slides-media-upload.md) | 上传本地图片到指定演示文稿,返回 `file_token`(用作 `<img src="...">`),最大 20 MB || `+media-download` | 根据 Slides 图片 `file_token` 下载本地图片;`--output` 选填,未传时使用 `--output-dir` 默认值 `.lark-slides/media` 并自动生成文件名;调用后使用返回的 `path`,不要猜测实际路径;直连下载无权限时自动回退到源文件预览 || [`+replace-slide`](references/cli/lark-slides-replace-slide.md) | 对已有幻灯片页面进行块级替换/插入(`block_replace` / `block_insert`),自动注入 id 和 `<content/>`,不改变页序 || [`+update-slide`](references/cli/lark-slides-update-slide.md) | 把一整页 XML 交给已有页面,页面变成 `--content` 描述的样子;能一次改样式/插入/删除/备注/背景,`slide_id` 和页序不变。**没写进 `--content` 的元素会被删除** |

创建或大幅改写时,技能会在当前工作目录写入规划、XML 回读和截图等本地产物,并要求在写入云端后重新读取整份演示文稿验证。

查看原文
SKILL.md:308来自说明文档打开原文件
1. **先规划再写 XML**:新建演示文稿或大幅改写页面时,必须先写入 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`;模板、风格和大纲只能作为规划输入,不能绕过规划层2. **创建流程**:新建演示文稿用 `slides +create`,一步创建还是两步创建按 [`cli/lark-slides-create.md`](references/cli/lark-slides-create.md) 判断3. **`<slide>` 直接子元素只有 `<style>`、`<data>`、`<note>`**:文本和图形必须放在 `<data>` 内4. **文本通过 `<content>` 表达**:必须用 `<content><p>...</p></content>`,不能把文字直接写在 shape 内;不要混淆 XML 元素 `<content>` 和 `--parts` 的 JSON 字段:编写 `--parts` 时,`block_replace` 装载 XML 使用标准字段 `replacement`,`block_insert` 使用 `insertion`5. **保存关键 ID**:后续操作需要 `xml_presentation_id`、`slide_id`、`revision_id`6. **删除谨慎**:删除不可逆,删前先回读确认 `slide_id`7. **编辑已有页面优先原链接更新**:修改单个 shape/img 用 `+replace-slide`(`block_replace` / `block_insert`),不要整页重建;一页改动很多或要改背景用 `+update-slide` 整页覆盖(保 `slide_id` 和页序),多页整页重建就对每页各跑一次 `+update-slide`,不要用 `slides +create` 新建整份 PPT;追加/插入单页用 `+add-slide`、删除单页用 `+delete-slide`,只有这些 shortcut 未覆盖的参数才手动调 `slide.create` / `slide.delete`8. **`<img src>` 只能用上传到飞书 drive 的 `file_token`,禁止使用 http(s) 外链 URL**:飞书 slides 渲染端不会代理外链图片,外链 src 在 PPT 里通常不显示或显示破图。流程必须是「先把图存到本地 → 用 `slides +media-upload` 上传,或在 `+create --slides` 的 XML 里写 `<img src="@./path">` 占位符自动上传 → 拿 `file_token` 写进 `<img src>`」。如果用户给了网图链接,先 `curl`/下载到 CWD 内再走上传流程,不要直接把外链 URL 塞进 `src`。**图片最大 20 MB**(slides upload API 不支持分片上传)。
SKILL.md:219来自说明文档打开原文件
Step 4: 审查 & 交付  - 创建完成后,必须用 `slides +xml-get --presentation <xml_presentation_id>` 读取全文 XML,并按 workflow/validation-xml.md 做显式验证记录,包括 XML 文本重叠检查  - 失败或部分成功按 workflow/error-handling.md 处理;局部问题优先用 `+replace-slide` 修正  - 没问题 → 交付:使用 NotifyHuman 工具交付 PPT 链接```

图片工作流会把选定的本地图片上传到目标演示文稿的媒体存储;图片路径限制在当前工作目录内,单张上限为 20 MB。

查看原文
references/cli/lark-slides-create.md:122来自说明文档打开原文件
## 本地图片:`@<path>` 占位符`<img>` 元素的 `src` 属性如果以 `@` 开头,CLI 会把它当作本地文件路径,自动上传到当前演示文稿,并把占位符替换为返回的 `file_token`。`slide-01.xml`:```xml<slide xmlns="https://www.larkoffice.com/sml/2.0">  <data>    <img src="@./assets/chart.png" topLeftX="100" topLeftY="100" width="320" height="180"/>  </data></slide>``````bashlark-cli slides +create --as user --title "图测试" --slide @./slide-01.xml```行为:- 路径相对于**当前工作目录**(CWD)解析;**必须是 CWD 内的相对路径**(如 `./pic.png`、`./assets/x.png`)- 同一份图被多次引用时**只上传一次**(按路径去重)- `src` 不以 `@` 开头的会原样保留,但**只允许写 `slides +media-upload` 拿到的 `file_token`**;**禁止写 http(s) 外链 URL**:飞书 slides 渲染端不会代理外链图片,外链 src 通常显示破图。要用网图必须先下载到 CWD 内、再走上传流程- 单张图片最大 20 MB(slides upload API 不支持分片上传)- 校验阶段就会检查所有占位符文件存在及大小;缺文件或超限直接报错,不会创建空白 PPT 占位- 创空白 PPT → 上传所有图 → 替换 token → 逐页创建 slide,按这个顺序执行

该 Skill 声称用于创建、读取和编辑飞书幻灯片,包括创建、删除、读取和局部替换页面;因此在用户要求编辑现有演示文稿时会产生云端写入。

查看原文
SKILL.md:2来自说明文档打开原文件
---name: lark-slidesversion: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:

实际操作依赖本地安装的 lark-cli,并以用户身份调用幻灯片接口。创建演示文稿至少涉及创建和写入权限;编辑、Wiki 链接和本地图片还可能需要更新、Wiki 读取及媒体上传权限。

查看原文
SKILL.md:5来自说明文档打开原文件
description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---
references/cli/lark-slides-create.md:168来自说明文档打开原文件
| 错误码 | 含义 | 解决方案 ||--------|------|----------|| 400 | 参数错误 | 检查参数格式是否正确 || 403 | 权限不足 | 检查是否拥有 `slides:presentation:create` 和 `slides:presentation:write_only` scope |
references/cli/lark-slides-update-slide.md:160来自说明文档打开原文件
|------|------|------|| 3350001,原因包含 `not found` | `--presentation` 不匹配,或 `--slide-id` 对应的页面已被删除 | 检查 `--presentation` 和 `--slide-id`,再用 `slides +xml-get` 回读当前页面 ID || 3350001,其他 invalid param | `--content` 的 XML 结构有问题(如 `<shape>` 缺 `<content/>`、包含服务端不支持的元素) | 按 [error-handling.md](../workflow/error-handling.md) 检查 `--content` 的 XML 结构 || 3350002 not found | `--revision-id` 传了不存在的版本号 | 用 `-1` 或真实存在的 `revision_id` || 1061004 / 403 | 当前身份对这份 PPT 没有编辑权限 | 检查是否拥有 `slides:presentation:update` 或 `slides:presentation:write_only` scope;wiki 链接另需 `wiki:node:read`,`@` 占位符另需 `docs:document.media:upload`;`--as bot` 还要求该 bot 对目标 PPT 有编辑权限 |

Skill 包含本地静态 XML 校验逻辑,用于检查结构、图标、文本溢出、遮挡和画布越界。可见代码读取本地 schema 与图标索引;提供的片段未显示该校验器自行联网或读取凭据。

查看原文
scripts/xml_lint.py:316来自代码打开原文件
def load_sxsd_tag_attributes() -> dict[str, set[str]]:    global _SXSD_TAG_ATTRIBUTES_CACHE    if _SXSD_TAG_ATTRIBUTES_CACHE is not None:        return _SXSD_TAG_ATTRIBUTES_CACHE    _SXSD_TAG_ATTRIBUTES_CACHE = sxsd_validator.load_tag_attributes(SXSD_SCHEMA_PATH)    return _SXSD_TAG_ATTRIBUTES_CACHEdef load_iconpark_icon_types() -> set[str]:    global _ICONPARK_ICON_TYPES_CACHE    if _ICONPARK_ICON_TYPES_CACHE is not None:        return _ICONPARK_ICON_TYPES_CACHE    try:        index_data = json.loads(ICONPARK_INDEX_PATH.read_text(encoding="utf-8"))    except json.JSONDecodeError as error:        fail(f"invalid iconpark index JSON: {error}")    icons = index_data.get("icons")    if not isinstance(icons, list):        fail("iconpark index must contain an icons array")    icon_types = {        icon["iconType"]        for icon in icons        if isinstance(icon, dict) and isinstance(icon.get("iconType"), str) and icon["iconType"]    }    _ICONPARK_ICON_TYPES_CACHE = icon_types    return icon_types
scripts/xml_lint.py:1045来自代码打开原文件
def detect_image_text_occlusions(elements: list[dict[str, Any]]) -> list[dict[str, Any]]:    issues: list[dict[str, Any]] = []    text_elements = [        element        for element in elements        if is_text_element(element) and has_text_content(element) and not is_ghost_text(element)    ]    image_elements = [element for element in elements if element["kind"] == "img" and element["alpha"] > 0]    for text_element in text_elements:        for image_element in image_elements:            if image_element["order"] <= text_element["order"]:                continue            if is_vertical_text(text_element):                if intersects(image_element, text_element):                    issues.append({                        "level": "info",                        "code": "image_may_cover_vertical_text",                        "elements": [element_ref(image_element), element_ref(text_element)],                        "message": (                            f"image {element_label(image_element)} may cover vertical text shape "                            f"{element_label(text_element)}"                        ),                        "hint": "Inspect the rendered slide because vertical text layout is not statically modeled.",                    })                continue            text_visual_bbox = estimate_text_visual_bbox(text_element)            if text_visual_bbox is not None and intersects(image_element, text_visual_bbox):                issues.append({                    "level": "error",                    "code": "image_covers_text",                    "elements": [element_ref(image_element), element_ref(text_element)],                    "message": (                        f"image {element_label(image_element)} covers text shape "                        f"{element_label(text_element)}"                    ),                    "hint": "Move the image before the text shape in XML order, or adjust the image and text shape coordinates or dimensions.",                })    return issues

创建后要求回读演示文稿并核对页面和素材;文档也明确禁止仅凭静态 XML 检查声称已完成人工视觉验收。

查看原文
references/asset-planning.md:130来自说明文档打开原文件
When generating XML:1. If an asset exists and the workflow supports it, place it in the planned visual region.2. If no asset exists, immediately render `fallback_if_missing` with the planned generated close-enough image. Supported standard data visuals still use native `<chart>`; other fallbacks may use the image generation tool to create an approximate image.3. Size the fallback to satisfy `visual_focus`; it should be a real page element, not a tiny decoration.4. Keep text-density limits. Do not compensate for missing assets by adding long bullet text.5. After creation, fetch the presentation and verify asset pages are not blank and that each planned fallback is visible when no real asset was used.6. If the image generation tool is unavailable or fails, degrade to an XML-native fallback instead of leaving a blank: native `<chart>` for data, otherwise a simple in-card shape/text placeholder sized to fill `visual_focus`.
references/workflow/validation-xml.md:146来自说明文档打开原文件
最终回复必须包含简短验证记录,建议格式:```text验证记录:- 回读:已执行 slides +xml-get,实际页数 N / 预期 N。- 关键页:架构解释 / Self-Attention / 对比或演进 / 总结页均存在。- 结构:检查了主要 shape/img/table/chart 元素,无明显空白页或破损页。- 布局:检查了标题层级、主视觉、重叠/越界/文本溢出风险。```不要声称完成了人工视觉验收,除非确实打开或获取了可视化结果。仅从 XML 静态检查得出的结论,应表述为“静态检查未发现明显问题”。

该 Skill 声称用于创建、读取和编辑飞书幻灯片,并依赖本机安装的 `lark-cli`。

查看原文
SKILL.md:2来自说明文档打开原文件
---name: lark-slidesversion: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---

页面替换示例以用户身份写入指定演示文稿;块级替换会整体替换目标元素,而不是仅修改一个属性。

查看原文
references/cli/lark-slides-replace-slide.md:204来自说明文档打开原文件
# block_replace 换掉整个标题块(id 自动注入)lark-cli slides +replace-slide --as user \  --presentation "$PRES_ID" --slide-id "$SID" \  --parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'```
references/cli/lark-slides-xml-presentation-slide-replace.md:178来自说明文档打开原文件
3. **`<img>` 必须用 file_token**:不能用外链 URL——先 [`slides +media-upload`](lark-slides-media-upload.md) 拿 token。4. **不能字段级 patch**:要改一个块的某个属性(比如只改 `topLeftX`),得写整块新 XML 走 `block_replace`;API 不支持"只改一个字段"。5. **`block_replace` 要求 `replacement` 根元素带 `id="<block_id>"`**:底层 API 的硬约束,缺失会返回 3350001。推荐走 shortcut [`+replace-slide`](lark-slides-replace-slide.md)——它会自动把 `id` 注入到 `replacement` 根元素上,用户写 XML 时不用自己加。6. **`<shape>` 必须有 `<content/>` 子元素**:SML 2.0 schema 要求,缺失同样触发 3350001。shortcut [`+replace-slide`](lark-slides-replace-slide.md) 会自动注入 `<content/>`,直接调底层 API 需要自己加。7. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.replace` 查看最新参数结构。
从这里开始 · 工作说明SKILL.md
lark-slides
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 1 个章节,可在原文件中查看。

文件引用关系图

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

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文
  • scripts/iconpark_tool_test.py已纳入全文
  • scripts/iconpark_tool.py已纳入全文
  • scripts/sxsd_validator.py已纳入全文
  • scripts/xml_lint_test.py已纳入全文
  • scripts/xml_lint.py已纳入全文
  • scripts/xml_text_overlap_lint_test.py已纳入全文
  • scripts/xml_text_overlap_lint.py已纳入全文
  • references/asset-planning.md已纳入全文
  • references/cli/lark-slides-add-slide.md已纳入全文
  • references/cli/lark-slides-create.md已纳入全文
  • references/cli/lark-slides-delete-slide.md已纳入全文
  • references/cli/lark-slides-history.md已纳入全文
  • references/cli/lark-slides-media-upload.md已纳入全文
  • references/cli/lark-slides-replace-slide.md已纳入全文
  • references/cli/lark-slides-screenshot.md已纳入全文
  • references/cli/lark-slides-update-slide.md已纳入全文
  • references/cli/lark-slides-xml-presentations-get.md已纳入全文
  • references/planning-layer.md已纳入全文
  • references/visual-planning.md已纳入全文
  • references/workflow/error-handling.md已纳入全文
  • references/workflow/slides-editing.md已纳入全文
  • references/workflow/template-editing.md已纳入全文
  • references/workflow/validation-xml.md已纳入全文
  • references/xml/iconpark.md已纳入全文
  • references/xml/slides_chart_demo.xml已纳入全文
  • references/xml/slides_xml_schema_definition.xml已纳入全文
  • references/xml/xml-schema-quick-ref.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已纳入全文
  • lark-drive/references/lark-drive-add-comment.md已纳入全文
  • lark-drive/references/lark-drive-add-reply.md已纳入全文
  • lark-drive/references/lark-drive-apply-permission.md已纳入全文
  • lark-drive/references/lark-drive-batch-query-comments.md已纳入全文
  • lark-drive/references/lark-drive-comment-content.md已纳入全文
  • lark-drive/references/lark-drive-comment-location.md已纳入全文
  • lark-drive/references/lark-drive-copy.md已纳入全文
  • lark-drive/references/lark-drive-cover.md已纳入全文
  • lark-drive/references/lark-drive-create-folder.md已纳入全文
  • lark-drive/references/lark-drive-create-shortcut.md已纳入全文
  • lark-drive/references/lark-drive-delete-reply.md已纳入全文
  • lark-drive/references/lark-drive-delete.md已纳入全文
  • lark-drive/references/lark-drive-download.md已纳入全文
  • lark-drive/references/lark-drive-export-download.md已纳入全文
  • lark-drive/references/lark-drive-export.md已纳入全文
  • lark-drive/references/lark-drive-files-list.md已纳入全文
  • lark-drive/references/lark-drive-import.md已纳入全文
  • lark-drive/references/lark-drive-inspect.md已纳入全文
  • lark-drive/references/lark-drive-list-comments.md已纳入全文
  • lark-drive/references/lark-drive-list-replies.md已纳入全文
  • lark-drive/references/lark-drive-member-add.md已纳入全文
  • lark-drive/references/lark-drive-member-list.md已纳入全文
  • lark-drive/references/lark-drive-member-remove.md已纳入全文
  • lark-drive/references/lark-drive-move.md已纳入全文
  • lark-drive/references/lark-drive-permission-get-setting.md已纳入全文
  • lark-drive/references/lark-drive-permission-guide.md已纳入全文
  • lark-drive/references/lark-drive-preview.md已纳入全文
  • lark-drive/references/lark-drive-pull.md已纳入全文
  • lark-drive/references/lark-drive-push.md已纳入全文
  • lark-drive/references/lark-drive-react-reply.md已纳入全文
  • lark-drive/references/lark-drive-reactions.md已纳入全文
  • lark-drive/references/lark-drive-resolve-comment.md已纳入全文
  • lark-drive/references/lark-drive-restore-comment.md已纳入全文
  • lark-drive/references/lark-drive-search.md已纳入全文
  • lark-drive/references/lark-drive-secure-label.md已纳入全文
  • lark-drive/references/lark-drive-status.md已纳入全文
  • lark-drive/references/lark-drive-task-result.md已纳入全文
  • lark-drive/references/lark-drive-update-reply.md已纳入全文
  • lark-drive/references/lark-drive-update-title.md已纳入全文
  • lark-drive/references/lark-drive-upload.md已纳入全文
  • lark-drive/references/lark-drive-version-delete.md已纳入全文
  • lark-drive/references/lark-drive-version-get.md已纳入全文
  • lark-drive/references/lark-drive-version-history.md已纳入全文
  • lark-drive/references/lark-drive-version-revert.md已纳入全文
  • lark-drive/references/lark-drive-workflow-knowledge-organize-analysis.md已纳入全文
  • lark-drive/references/lark-drive-workflow-knowledge-organize-discovery.md已纳入全文
  • lark-drive/references/lark-drive-workflow-knowledge-organize-execution.md已纳入全文
  • lark-drive/references/lark-drive-workflow-knowledge-organize-planning.md已纳入全文
  • lark-drive/references/lark-drive-workflow-knowledge-organize-rollback.md已纳入全文
  • lark-drive/references/lark-drive-workflow-knowledge-organize.md已纳入全文
  • lark-drive/references/lark-drive-workflow-permission-governance-commands.md已纳入全文
  • lark-drive/references/lark-drive-workflow-permission-governance-outputs.md已纳入全文
  • lark-drive/references/lark-drive-workflow-permission-governance.md已纳入全文
  • lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md已纳入全文
  • lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md已纳入全文
  • lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md已纳入全文
  • lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md已纳入全文
  • lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md已纳入全文
  • lark-drive/references/lark-drive-workflow-topic-move-collector.md已纳入全文
  • lark-drive/references/lark-drive-workflow.md已纳入全文
  • lark-drive/SKILL.md已纳入全文
  • lark-shared/references/lark-shared-config-init.md已纳入全文
  • lark-shared/references/lark-shared-high-risk-approval.md已纳入全文
  • lark-shared/references/lark-shared-identity-and-permissions.md已纳入全文
  • lark-shared/references/lark-shared-output-contract.md已纳入全文
  • lark-shared/references/lark-shared-update-notice.md已纳入全文
  • lark-shared/references/lark-wiki-token-routing.md已纳入全文
  • lark-shared/SKILL.md已纳入全文
  • lark-whiteboard/elements/image.md已纳入全文
  • lark-whiteboard/references/lark-whiteboard-export.md已纳入全文
  • lark-whiteboard/references/lark-whiteboard-update.md已纳入全文
  • lark-whiteboard/references/lark-whiteboard-workflow.md已纳入全文
  • lark-whiteboard/routes/dsl.md已纳入全文
  • lark-whiteboard/routes/mermaid.md已纳入全文
  • lark-whiteboard/routes/svg-edit.md已纳入全文
  • lark-whiteboard/routes/svg.md已纳入全文
  • lark-whiteboard/scenes/mention.md已纳入全文
  • lark-whiteboard/scenes/photo-showcase.md已纳入全文
  • lark-whiteboard/SKILL.md已纳入全文
  • lark-wiki/references/lark-wiki-delete-space.md已纳入全文
  • lark-wiki/references/lark-wiki-member-add.md已纳入全文
  • lark-wiki/references/lark-wiki-member-list.md已纳入全文
  • lark-wiki/references/lark-wiki-member-remove.md已纳入全文
  • lark-wiki/references/lark-wiki-move-to-drive.md已纳入全文
  • lark-wiki/references/lark-wiki-move.md已纳入全文
  • lark-wiki/references/lark-wiki-node-copy.md已纳入全文
  • lark-wiki/references/lark-wiki-node-create.md已纳入全文
  • lark-wiki/references/lark-wiki-node-delete.md已纳入全文
  • lark-wiki/references/lark-wiki-node-get.md已纳入全文
  • lark-wiki/references/lark-wiki-node-list.md已纳入全文
  • lark-wiki/references/lark-wiki-space-create.md已纳入全文
  • lark-wiki/references/lark-wiki-space-list.md已纳入全文
  • lark-wiki/SKILL.md已纳入全文
  • references/cli/lark-slides-xml-presentation-slide-get.md已纳入全文
  • references/cli/lark-slides-xml-presentation-slide-replace.md已纳入全文
  • references/xml/iconpark-index.json已纳入全文
  • lark-contact/SKILL.md已纳入全文
  • references/iconpark-index.json已纳入全文
  • references/iconpark.md已纳入全文
  • references/lark-slides-add-slide.md已纳入全文
  • references/lark-slides-create.md已纳入全文
  • references/lark-slides-delete-slide.md已纳入全文
  • references/lark-slides-edit-workflows.md已纳入全文
  • references/lark-slides-history.md已纳入全文
  • references/lark-slides-media-upload.md已纳入全文
  • references/lark-slides-pptx-template-workflows.md已纳入全文
  • references/lark-slides-replace-slide.md已纳入全文
  • references/lark-slides-screenshot.md已纳入全文
  • references/lark-slides-xml-presentation-slide-get.md已纳入全文
  • references/lark-slides-xml-presentation-slide-replace.md已纳入全文
  • references/lark-slides-xml-presentations-get.md已纳入全文
  • references/slides_chart_demo.xml已纳入全文
  • references/slides_xml_schema_definition.xml已纳入全文
  • references/troubleshooting.md已纳入全文
  • references/validation-checklist.md已纳入全文
  • references/xml-schema-quick-ref.md已纳入全文

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

  • SKILL.md工作说明
  • references/asset-planning.md配套文件
  • references/cli/lark-slides-add-slide.md配套文件
  • references/cli/lark-slides-create.md配套文件
  • references/cli/lark-slides-delete-slide.md配套文件
  • references/cli/lark-slides-history.md配套文件
  • references/cli/lark-slides-media-upload.md配套文件
  • references/cli/lark-slides-replace-slide.md配套文件
  • references/cli/lark-slides-screenshot.md配套文件
  • references/cli/lark-slides-update-slide.md配套文件
  • references/cli/lark-slides-xml-presentation-slide-get.md配套文件
  • references/cli/lark-slides-xml-presentation-slide-replace.md配套文件
  • references/cli/lark-slides-xml-presentations-get.md配套文件
  • references/iconpark-index.json配套文件
  • references/iconpark.md配套文件
  • references/lark-slides-add-slide.md配套文件
  • references/lark-slides-create.md配套文件
  • references/lark-slides-delete-slide.md配套文件
  • references/lark-slides-edit-workflows.md配套文件
  • references/lark-slides-history.md配套文件
  • references/lark-slides-media-upload.md配套文件
  • references/lark-slides-pptx-template-workflows.md配套文件
  • references/lark-slides-replace-slide.md配套文件
  • references/lark-slides-screenshot.md配套文件
  • references/lark-slides-xml-presentation-slide-get.md配套文件
  • references/lark-slides-xml-presentation-slide-replace.md配套文件
  • references/lark-slides-xml-presentations-get.md配套文件
  • references/planning-layer.md配套文件
  • references/slides_chart_demo.xml配套文件
  • references/slides_xml_schema_definition.xml配套文件
  • references/troubleshooting.md配套文件
  • references/validation-checklist.md配套文件
  • references/visual-planning.md配套文件
  • references/workflow/error-handling.md配套文件
  • references/workflow/slides-editing.md配套文件
  • references/workflow/template-editing.md配套文件
  • references/workflow/validation-xml.md配套文件
  • references/xml-schema-quick-ref.md配套文件
  • references/xml/iconpark-index.json配套文件
  • references/xml/iconpark.md配套文件
  • references/xml/slides_chart_demo.xml配套文件
  • references/xml/slides_xml_schema_definition.xml配套文件
  • references/xml/xml-schema-quick-ref.md配套文件
  • scripts/iconpark_tool.py脚本
  • scripts/iconpark_tool_test.py脚本
  • scripts/sxsd_validator.py脚本
  • scripts/xml_lint.py脚本
  • scripts/xml_lint_test.py脚本
  • scripts/xml_text_overlap_lint.py脚本
  • scripts/xml_text_overlap_lint_test.py脚本
  • lark-drive/SKILL.md配套文件
  • lark-drive/references/lark-drive-copy.md配套文件
  • lark-drive/references/lark-drive-search.md配套文件
  • lark-drive/references/lark-drive-inspect.md配套文件
  • lark-drive/references/lark-drive-workflow.md配套文件
  • lark-drive/references/lark-drive-workflow-permission-governance.md配套文件
  • lark-drive/references/lark-drive-member-remove.md配套文件
  • lark-drive/references/lark-drive-secure-label.md配套文件
  • lark-drive/references/lark-drive-workflow-topic-move-collector.md配套文件
  • lark-drive/references/lark-drive-workflow-knowledge-organize.md配套文件
  • lark-drive/references/lark-drive-comment-location.md配套文件
  • lark-drive/references/lark-drive-export.md配套文件
  • lark-drive/references/lark-drive-update-title.md配套文件
  • lark-drive/references/lark-drive-permission-guide.md配套文件
  • lark-drive/references/lark-drive-permission-get-setting.md配套文件
  • lark-drive/references/lark-drive-apply-permission.md配套文件
  • lark-drive/references/lark-drive-upload.md配套文件
  • lark-drive/references/lark-drive-create-folder.md配套文件
  • lark-drive/references/lark-drive-download.md配套文件
  • lark-drive/references/lark-drive-preview.md配套文件
  • lark-drive/references/lark-drive-cover.md配套文件
  • lark-drive/references/lark-drive-status.md配套文件
  • lark-drive/references/lark-drive-pull.md配套文件
  • lark-drive/references/lark-drive-push.md配套文件
  • lark-drive/references/lark-drive-create-shortcut.md配套文件
  • lark-drive/references/lark-drive-add-comment.md配套文件
  • lark-drive/references/lark-drive-list-comments.md配套文件
  • lark-drive/references/lark-drive-batch-query-comments.md配套文件
  • lark-drive/references/lark-drive-resolve-comment.md配套文件
  • lark-drive/references/lark-drive-restore-comment.md配套文件
  • lark-drive/references/lark-drive-add-reply.md配套文件
  • lark-drive/references/lark-drive-list-replies.md配套文件
  • lark-drive/references/lark-drive-update-reply.md配套文件
  • lark-drive/references/lark-drive-delete-reply.md配套文件
  • lark-drive/references/lark-drive-react-reply.md配套文件
  • lark-drive/references/lark-drive-export-download.md配套文件
  • lark-drive/references/lark-drive-import.md配套文件
  • lark-drive/references/lark-drive-version-history.md配套文件
  • lark-drive/references/lark-drive-version-get.md配套文件
  • lark-drive/references/lark-drive-version-revert.md配套文件
  • lark-drive/references/lark-drive-version-delete.md配套文件
  • lark-drive/references/lark-drive-move.md配套文件
  • lark-drive/references/lark-drive-delete.md配套文件
  • lark-drive/references/lark-drive-task-result.md配套文件
  • lark-drive/references/lark-drive-member-add.md配套文件
  • lark-drive/references/lark-drive-member-list.md配套文件
  • lark-drive/references/lark-drive-files-list.md配套文件
  • lark-wiki/SKILL.md配套文件
  • lark-shared/SKILL.md配套文件
  • lark-doc/SKILL.md配套文件
  • lark-wiki/references/lark-wiki-node-copy.md配套文件
  • lark-shared/references/lark-wiki-token-routing.md配套文件
  • lark-drive/references/lark-drive-workflow-permission-governance-commands.md配套文件
  • lark-wiki/references/lark-wiki-node-list.md配套文件
  • lark-drive/references/lark-drive-workflow-permission-governance-outputs.md配套文件
  • lark-doc/references/lark-doc-fetch.md配套文件
  • lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md配套文件
  • lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md配套文件
  • lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md配套文件
  • lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md配套文件
  • lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md配套文件
  • lark-wiki/references/lark-wiki-move.md配套文件
  • lark-wiki/references/lark-wiki-move-to-drive.md配套文件
  • lark-wiki/references/lark-wiki-node-create.md配套文件
  • lark-wiki/references/lark-wiki-node-delete.md配套文件
  • lark-drive/references/lark-drive-workflow-knowledge-organize-discovery.md配套文件
  • lark-drive/references/lark-drive-workflow-knowledge-organize-analysis.md配套文件
  • lark-drive/references/lark-drive-workflow-knowledge-organize-planning.md配套文件
  • lark-drive/references/lark-drive-workflow-knowledge-organize-execution.md配套文件
  • lark-drive/references/lark-drive-workflow-knowledge-organize-rollback.md配套文件
  • lark-wiki/references/lark-wiki-node-get.md配套文件
  • lark-drive/references/lark-drive-comment-content.md配套文件
  • lark-drive/references/lark-drive-reactions.md配套文件
  • lark-wiki/references/lark-wiki-delete-space.md配套文件
  • lark-wiki/references/lark-wiki-space-list.md配套文件
  • lark-wiki/references/lark-wiki-space-create.md配套文件
  • lark-wiki/references/lark-wiki-member-add.md配套文件
  • lark-wiki/references/lark-wiki-member-remove.md配套文件
  • lark-wiki/references/lark-wiki-member-list.md配套文件
  • lark-shared/references/lark-shared-identity-and-permissions.md配套文件
  • lark-shared/references/lark-shared-output-contract.md配套文件
  • lark-shared/references/lark-shared-high-risk-approval.md配套文件
  • lark-shared/references/lark-shared-config-init.md配套文件
  • lark-shared/references/lark-shared-update-notice.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-whiteboard.md配套文件
  • lark-doc/references/lark-doc-mindnote.md配套文件
  • lark-whiteboard/SKILL.md配套文件
  • lark-whiteboard/references/lark-whiteboard-update.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-whiteboard/references/lark-whiteboard-export.md配套文件
  • lark-whiteboard/routes/svg-edit.md配套文件
  • lark-whiteboard/references/lark-whiteboard-workflow.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配套文件
  • lark-whiteboard/routes/svg.md配套文件
  • lark-whiteboard/routes/dsl.md配套文件
  • lark-whiteboard/routes/mermaid.md配套文件
  • lark-whiteboard/scenes/mention.md配套文件
  • lark-whiteboard/scenes/photo-showcase.md配套文件
  • lark-contact/SKILL.md配套文件
  • lark-whiteboard/elements/image.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配套文件

代码和说明中提到的操作

运行命令
scripts/iconpark_tool_test.py:6来自代码打开原文件
import jsonimport subprocessimport sys
scripts/iconpark_tool_test.py:120来自代码打开原文件
class IconParkToolCLITest(unittest.TestCase):    def run_tool(self, *args: str) -> subprocess.CompletedProcess[str]:        return subprocess.run(
scripts/iconpark_tool_test.py:121来自代码打开原文件
    def run_tool(self, *args: str) -> subprocess.CompletedProcess[str]:        return subprocess.run(            [sys.executable, str(SCRIPT_PATH), *args],
连接外部网站
scripts/sxsd_validator.py:18来自代码打开原文件
XS_NS = "{http://www.w3.org/2001/XMLSchema}"SML_NAMESPACE = "https://www.larkoffice.com/sml/2.0"
scripts/sxsd_validator.py:19来自代码打开原文件
XS_NS = "{http://www.w3.org/2001/XMLSchema}"SML_NAMESPACE = "https://www.larkoffice.com/sml/2.0"SML_LEGACY_HTTP_NAMESPACE = "http://www.larkoffice.com/sml/2.0"
scripts/sxsd_validator.py:20来自代码打开原文件
SML_NAMESPACE = "https://www.larkoffice.com/sml/2.0"SML_LEGACY_HTTP_NAMESPACE = "http://www.larkoffice.com/sml/2.0"SML_READBACK_NAMESPACE = "/sml/2.0"
读取文件
scripts/iconpark_tool.py:152来自代码打开原文件
    try:        index_data = json.loads(index_path.read_text(encoding="utf-8"))    except json.JSONDecodeError as error:
scripts/xml_lint.py:88来自代码打开原文件
def read_file(file_path: str | Path) -> str:    return Path(file_path).read_text(encoding="utf-8")
scripts/xml_lint.py:89来自代码打开原文件
def read_file(file_path: str | Path) -> str:    return Path(file_path).read_text(encoding="utf-8")
修改文件
scripts/xml_lint_test.py:60来自代码打开原文件
            requested_path = temp_path / "requested.xml"            resolved_path.write_text(                '<presentation xmlns="https://www.larkoffice.com/sml/2.0" width="960" height="540">'
scripts/xml_lint_test.py:86来自代码打开原文件
            input_path = Path(temp_dir) / "invalid-slide.xml"            input_path.write_text(                """
scripts/xml_lint_test.py:3161来自代码打开原文件
                    input_path = Path(temp_dir) / f"{name}.xml"                    input_path.write_text(                        f"""
安装其他软件包
lark-whiteboard/SKILL.md:15来自说明文档打开原文件
> - 运行 `lark-cli --version`,确认可用,无需询问用户。> - 运行 `npx -y @larksuite/whiteboard-cli@^0.2.13 -v`,确认可用,无需询问用户。
lark-whiteboard/references/lark-whiteboard-update.md:78来自说明文档打开原文件
# 使用 whiteboard-cli 生成 OpenAPI 格式并通过管道传递npx -y @larksuite/whiteboard-cli@^0.2.13 -i <产物文件> --to openapi --format json \  | lark-cli whiteboard +update \
lark-whiteboard/references/lark-whiteboard-update.md:92来自说明文档打开原文件
# 生成 OpenAPI 格式到文件npx -y @larksuite/whiteboard-cli@^0.2.13 -i <DSL 文件> --to openapi --format json -o ./temp.json
读取了多少行
69,183
文件校验值(用于核对版本)
fdc94905b795893ecb60b28c254525556b82b5131d898a6816897646eb21ec25