Skip to content

Commit 88a64ac

Browse files
committed
chore: sync lark-doc skill from online-doc
1 parent e753b15 commit 88a64ac

12 files changed

Lines changed: 310 additions & 185 deletions

skills/lark-doc/SKILL.md

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,38 +8,38 @@ metadata:
88
cliHelp: "lark-cli docs --help; lark-cli docs +create --help; lark-cli docs +fetch --help; lark-cli docs +update --help; lark-cli docs +resource-download --help; lark-cli docs +resource-update --help; lark-cli docs +resource-delete --help"
99
---
1010

11-
# docs
11+
# docs (v2)
1212

13-
**身份:文档操作默认使用 `--as user`。首次使用前执行 `lark-cli auth login`**
13+
14+
> **CRITICAL — API 版本:本 skill 使用 v2 API。执行 `docs +create``docs +fetch``docs +update` 时必须显式传入 `--api-version v2`**
1415
1516
```bash
1617
# 常用示例
17-
lark-cli docs +fetch --doc "文档URL或token"
18-
lark-cli docs +create --content '<title>标题</title><p>内容</p>'
19-
lark-cli docs +update --doc "文档URL或token" --command append --content '<p>内容</p>'
18+
lark-cli docs +fetch --api-version v2 --doc "文档URL或token"
19+
lark-cli docs +create --api-version v2 --content '<title>标题</title><p>内容</p>'
20+
lark-cli docs +update --api-version v2 --doc "文档URL或token" --command append --content '<p>内容</p>'
2021
```
2122

2223
## 前置条件 — 执行操作前必读
2324

2425
**CRITICAL — 执行对应操作前,MUST 先用 Read 工具读取以下文件,缺一不可:**
25-
1. [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) — 认证、权限处理、全局参数(所有操作通用)
26-
2. **读取文档(`docs +fetch`** → 必读 [`lark-doc-fetch.md`](references/lark-doc-fetch.md)`--scope` / `--detail` 选择、局部读取策略、`<fragment>` / `<excerpt>` 输出结构)
27-
3. **创建或编辑文档内容** → 必读 [`lark-doc-xml.md`](references/lark-doc-xml.md)(XML 语法规则,仅当用户明确要求 Markdown 时改读 [`lark-doc-md.md`](references/lark-doc-md.md))和 [`lark-doc-style.md`](references/style/lark-doc-style.md)(元素选择、丰富度规则、颜色语义);从零创建时加读 [`lark-doc-create-workflow.md`](references/style/lark-doc-create-workflow.md);编辑已有文档时加读 [`lark-doc-update.md`](references/lark-doc-update.md)[`lark-doc-update-workflow.md`](references/style/lark-doc-update-workflow.md)
26+
1. **读取文档(`docs +fetch --api-version v2`** → 必读 [`lark-doc-fetch.md`](references/lark-doc-fetch.md)`--scope` / `--detail` 选择、局部读取策略、`<fragment>` / `<excerpt>` 输出结构)
27+
2. **创建或编辑文档内容** → 必读 [`lark-doc-xml.md`](references/lark-doc-xml.md)(XML 语法规则,仅当用户明确要求 Markdown 时改读 [`lark-doc-md.md`](references/lark-doc-md.md))和必读 [`lark-doc-style.md`](references/style/lark-doc-style.md)(写作原则:默认段落、按体裁、组件克制);从零创建时加读 [`lark-doc-create-workflow.md`](references/style/lark-doc-create-workflow.md);编辑已有文档时加读 [`lark-doc-update.md`](references/lark-doc-update.md)[`lark-doc-update-workflow.md`](references/style/lark-doc-update-workflow.md)
2828

2929
**未读完以上文件就执行相应操作会导致参数选择错误或格式错误。**
3030

3131
> **格式选择规则(全局):**
32-
> - **创建 / 导入场景**`docs +create`,或 `docs +update --command append/overwrite` 的整段写入):XML 和 Markdown 都可以。用户提供 `.md` 本地文件、或明确说"导入 Markdown"时,直接用 Markdown;否则默认 XML(可用 callout、grid、checkbox 等富 block)
32+
> - **创建 / 导入场景**`docs +create`,或 `docs +update --command append/overwrite` 的整段写入):XML 和 Markdown 都可以。用户提供 `.md` 本地文件、或明确说"导入 Markdown"时,直接用 Markdown;否则默认 XML。
3333
> - **精准编辑场景**`docs +update``str_replace` / `block_insert_after` / `block_replace` / `block_delete` / `block_move_after` 等局部精修指令):优先使用 XML(`--doc-format xml`,即默认值)。XML 能稳定表达 block 结构和样式,局部精修更可控;不要因为 Markdown 更简单就自行切换。
3434
3535
## 快速决策
36-
- 用户要**复制文档 / 创建文档副本 / 另存为副本**时,切到 [`lark-drive`](../lark-drive/SKILL.md),按其中的复制指引使用 `lark-cli drive files copy`;不要用 `docs +fetch` + `docs +create` 重建正文,也不要走 `drive +export` / `drive +import`
3736
- 先判定任务路径:找文档 / 导入导出走 [`lark-drive`](../lark-drive/SKILL.md);只读 / 摘要用 `docs +fetch` 默认 `simple`;明确旧文本 → 新文本直接 `str_replace`;只有 block 链接、评论锚点、插入 / 替换 / 删除 / 移动才局部 fetch `with-ids`;保真改写已有内容才读 `full`
3837
- block 直达链接格式:`文档基础 URL#block_id`;没有 block_id 时局部 fetch `with-ids`
3938
- 连续执行多个文档写操作时,必须按 [`lark-doc-update.md`](references/lark-doc-update.md) 的「Block ID 生命周期」判断旧 block ID 是否还能复用;`overwrite` / `block_replace` / `block_delete` 后不要复用受影响的旧 ID,插入 / 复制后要重新 fetch 才能拿到新 block ID
4039
- 用户需要在文档内**创建、复制或移动**资源块(画板、电子表格、多维表格等)时,必须先读取 [`lark-doc-xml.md`](references/lark-doc-xml.md) 的「三、资源块」章节
4140
- 写文档时,由内容和用户意图决定表达形式;流程、架构、路线图、关键指标等信息可以使用画板,但不要默认把重要信息都画板化
42-
- 新增画板必须隔离到 SubAgent:简单图由 SubAgent 直接插入 `<whiteboard type="svg">完整 SVG</whiteboard>`,不读 `lark-whiteboard`;复杂图才由主 Agent 先建 `<whiteboard type="blank"></whiteboard>`,再启动 SubAgent 读取 `lark-whiteboard` 写入
41+
- 用户给了明确字数要求(写 N 字 / x-y 字 / x 字左右 / 上下浮动)→ 生成或改写后用 `scripts/count_chars.py`(lark-doc skill 根的 `scripts/` 下,对齐飞书「总字数」)校验,按 create/update workflow 的「字数校验」闭环处理(最多 2 轮,不达标如实告知)
42+
- 新增画板:思维导图/时序图/类图/饼图/甘特图用 Mermaid,由**主 Agent 直接插入** `<whiteboard type="mermaid">…</whiteboard>`,无需 SubAgent;其他图表隔离到 SubAgent——简单图由 SubAgent 直接插入 `<whiteboard type="svg">完整 SVG</whiteboard>`(不读 `lark-whiteboard`),复杂图由主 Agent 先建 `<whiteboard type="blank"></whiteboard>`,再启动 SubAgent 读取 `lark-whiteboard` 写入
4343
- 用户说"看一下文档里的图片/附件/素材""预览素材" → 用 `lark-cli docs +media-preview`
4444
- 用户明确说"下载素材" → 用 `lark-cli docs +media-download`
4545
- 用户明确说"下载/更新/删除文档封面图" → 用 `lark-cli docs +resource-download/+resource-update/+resource-delete --type cover`
@@ -55,8 +55,7 @@ lark-cli docs +update --doc "文档URL或token" --command append --content '<p>
5555
| `<bitable token="..." table-id="...">` | `token` -> app_token, `table-id` | [`lark-base`](../lark-base/SKILL.md) |
5656
| `<cite type="doc" file-type="sheets" token="..." sheet-id="...">` |`<sheet>` | [`lark-sheets`](../lark-sheets/SKILL.md) |
5757
| `<cite type="doc" file-type="bitable" token="..." table-id="...">` |`<bitable>` | [`lark-base`](../lark-base/SKILL.md) |
58-
| `<vc-transcribe-tab vc-node-id="...">` | `vc-node-id` -> note_id | [`lark-note`](../lark-note/SKILL.md):先 `note +detail --note-id <vc-node-id>` |
59-
| `<synced_reference src-token="..." src-block-id="...">` | `src-token` -> doc_token, `src-block-id` -> block_id |`docs +fetch` 读取 src-token 文档,定位 block |
58+
| `<synced_reference src-token="..." src-block-id="...">` | `src-token` -> doc_token, `src-block-id` -> block_id |`docs +fetch --api-version v2` 读取 src-token 文档,定位 block |
6059

6160
## Shortcuts(推荐优先使用)
6261

skills/lark-doc/references/lark-doc-create.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22

33
> **前置条件(MUST READ):** 生成文档内容前,必须先用 Read 工具读取以下文件,缺一不可:
44
> 1. [`lark-doc-xml.md`](lark-doc-xml.md) — XML 语法规则(使用 Markdown 格式时改读 [`lark-doc-md.md`](lark-doc-md.md)
5-
> 2. [`lark-doc-style.md`](style/lark-doc-style.md)排版指南(元素选择、丰富度规则、颜色语义
6-
> 3. [`lark-doc-create-workflow.md`](style/lark-doc-create-workflow.md) — 从零创作工作流(Code-Act Loop、并行执行策略
5+
> 2. [`lark-doc-style.md`](style/lark-doc-style.md)写作原则(默认段落、按体裁、组件克制
6+
> 3. [`lark-doc-create-workflow.md`](style/lark-doc-create-workflow.md) — 从零创作工作流(Code-Act Loop、单 Agent 串行撰写
77
>
88
> **未读完以上文件就生成内容会导致格式错误。**
99
1010
从 XML(默认)或 Markdown 内容创建一个新的飞书云文档。
1111

12-
> **⚠️ 格式选择规则:** 创建 / 导入场景下 XML 和 Markdown 都可以——用户提供 `.md` 本地文件、或明确说"导入 Markdown"时,直接用 Markdown;没有明确指示时默认 XML(表达能力更强,支持 callout、grid、checkbox 等富 block 类型)。不要在用户没要求的情况下主动从 XML 切到 Markdown,也不要在用户已给出 Markdown 时强行改成 XML。
12+
> **⚠️ 格式选择规则:** 创建 / 导入场景下 XML 和 Markdown 都可以——用户提供 `.md` 本地文件、或明确说"导入 Markdown"时,直接用 Markdown;没有明确指示时默认 XML(表达能力更强,可承载更丰富的结构化内容)。不要在用户没要求的情况下主动从 XML 切到 Markdown,也不要在用户已给出 Markdown 时强行改成 XML。
1313
1414
## 命令
1515

1616
```bash
1717
# 创建 XML 文档(默认格式,推荐)
18-
lark-cli docs +create --content '<title>项目计划</title><h1>目标</h1><p>记录本周重点。</p>'
18+
lark-cli docs +create --api-version v2 --content '<title>项目计划</title><h1>目标</h1><p>记录本周重点。</p>'
1919

2020
# 仅当用户明确要求导入 Markdown 时才使用;文档标题用 --title,正文标题按内容自然组织
21-
lark-cli docs +create --doc-format markdown --title "项目计划" --content $'## 目标\n\n- 明确重点\n- 记录待办'
21+
lark-cli docs +create --api-version v2 --doc-format markdown --title "项目计划" --content $'## 目标\n\n- 明确重点\n- 记录待办'
2222
```
2323

2424
## 返回值
@@ -43,12 +43,12 @@ lark-cli docs +create --doc-format markdown --title "项目计划" --content $'#
4343
- **`document.new_blocks`**:本次操作新增的 block 列表(如画板)。`block_id` 可用于 `docs +update``--block-id` 做精确编辑;`block_token` 是资源块(如画板)的 token,可交给 `lark-whiteboard` 等 skill 继续操作
4444

4545
> \[!IMPORTANT]
46-
> 如果文档是**以应用身份(bot)创建**的,如 `lark-cli docs +create --as bot` 在文档创建成功后,CLI 会**尝试为当前 CLI 用户自动授予该文档的 `full_access`(可管理权限)**
46+
> 文档创建成功后,CLI 会**尝试为当前 CLI 用户自动授予该文档的 `full_access`(可管理权限)**
4747
>
48-
> 以应用身份创建时,结果里会额外返回 `permission_grant` 字段,明确说明授权结果:
48+
> 此时结果里会额外返回 `permission_grant` 字段,明确说明授权结果:
4949
> - `status = granted`:当前 CLI 用户已获得该文档的可管理权限
50-
> - `status = skipped`:本地没有可用的当前用户 `open_id`,因此不会自动授权;可提示用户先完成 `lark-cli auth login`,再让 AI / agent 继续使用应用身份(bot)授予当前用户权限
51-
> - `status = failed`:文档已创建成功,但自动授权用户失败;会带上失败原因,并提示稍后重试或继续使用 bot 身份处理该文档
50+
> - `status = skipped`:本地没有可用的当前用户 `open_id`,因此不会自动授权;可先让 agent 平台补齐用户凭证,再继续授予当前用户权限
51+
> - `status = failed`:文档已创建成功,但自动授权用户失败;会带上失败原因,并提示稍后重试
5252
>
5353
> `permission_grant.perm = full_access` 表示该资源已授予”可管理权限”。
5454
>
@@ -58,6 +58,7 @@ lark-cli docs +create --doc-format markdown --title "项目计划" --content $'#
5858

5959
| 参数 | 必填 | 说明 |
6060
| ------------------- | -- |---------------------------------------------|
61+
| `--api-version` || 固定传 `v2` |
6162
| `--title` || 文档标题,Markdown 导入时使用;XML 创建推荐在 `--content` 开头写 `<title>...</title>`;多个标题仅保留第一个并在 `warnings` / `degrade_details` 提示 |
6263
| `--content` | 视情况 | 文档内容(XML 或 Markdown 格式);不传 `--content` 时必须传 `--title` |
6364
| `--doc-format` || 内容格式:`xml`(默认,始终优先使用)\| `markdown`(仅用户明确要求时) |
@@ -71,8 +72,8 @@ lark-cli docs +create --doc-format markdown --title "项目计划" --content $'#
7172

7273
## 参考
7374

74-
- [`lark-doc-create-workflow.md`](style/lark-doc-create-workflow.md) — 从零创作工作流(Code-Act Loop、并行执行策略
75-
- [`lark-doc-style.md`](style/lark-doc-style.md)文档样式指南(元素选择 + 丰富度规则 + 颜色语义
75+
- [`lark-doc-create-workflow.md`](style/lark-doc-create-workflow.md) — 从零创作工作流(Code-Act Loop、单 Agent 串行撰写
76+
- [`lark-doc-style.md`](style/lark-doc-style.md)文档写作原则(默认段落、按体裁、组件克制
7677
- [`lark-doc-xml.md`](lark-doc-xml.md) — XML 语法规范
7778
- [`lark-doc-fetch.md`](lark-doc-fetch.md) — 获取文档
7879
- [`lark-doc-update.md`](lark-doc-update.md) — 更新文档

skills/lark-doc/references/lark-doc-fetch.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@
55

66
```bash
77
# 获取文档(默认 XML,simple)
8-
lark-cli docs +fetch --doc "https://xxx.feishu.cn/docx/Z1Fj...tnAc"
8+
lark-cli docs +fetch --api-version v2 --doc "https://xxx.feishu.cn/docx/Z1Fj...tnAc"
99

1010
# Markdown 格式
11-
lark-cli docs +fetch --doc Z1Fj...tnAc --doc-format markdown
11+
lark-cli docs +fetch --api-version v2 --doc Z1Fj...tnAc --doc-format markdown
1212

1313
# 带 block ID(用于后续 block 级更新)
14-
lark-cli docs +fetch --doc Z1Fj...tnAc --detail with-ids
14+
lark-cli docs +fetch --api-version v2 --doc Z1Fj...tnAc --detail with-ids
1515

1616
# 只拿目录
17-
lark-cli docs +fetch --doc Z1Fj...tnAc --scope outline --max-depth 3
17+
lark-cli docs +fetch --api-version v2 --doc Z1Fj...tnAc --scope outline --max-depth 3
1818

1919
# 按 block id 区间精读
20-
lark-cli docs +fetch --doc Z1Fj...tnAc \
20+
lark-cli docs +fetch --api-version v2 --doc Z1Fj...tnAc \
2121
--scope range --start-block-id blkA --end-block-id blkB --detail with-ids
2222

2323
# 读整个章节(以标题 id 为锚点,自动展开到下一个同级/更高级标题前)
24-
lark-cli docs +fetch --doc Z1Fj...tnAc \
24+
lark-cli docs +fetch --api-version v2 --doc Z1Fj...tnAc \
2525
--scope section --start-block-id <标题id> --detail with-ids
2626

2727
# 按关键词定位(多关键词用 | 分隔,任一命中即返回)
28-
lark-cli docs +fetch --doc Z1Fj...tnAc \
28+
lark-cli docs +fetch --api-version v2 --doc Z1Fj...tnAc \
2929
--scope keyword --keyword "部署|发布|上线"
3030
```
3131

@@ -97,6 +97,7 @@ lark-cli docs +fetch --doc Z1Fj...tnAc \
9797

9898
| 参数 | 必填 | 说明 |
9999
|------|------|------|
100+
| `--api-version` || 固定传 `v2` |
100101
| `--doc` || 文档 URL 或 token(支持 `/docx/``/wiki/`|
101102
| `--doc-format` || `xml`(默认)\| `markdown` \| `im-markdown`(仅用于获取内容后在 `lark-im` 场景下使用) |
102103
| `--detail` || `simple`(默认)\| `with-ids` \| `full` |
@@ -127,7 +128,7 @@ lark-cli docs +fetch --doc Z1Fj...tnAc \
127128

128129
## 嵌入电子表格 / 多维表格
129130

130-
返回中可能含 `<sheet>``<bitable>``<cite file-type="sheets|bitable">`。内部数据无法通过 `docs +fetch` 获取,提取 `token` 等属性后切到 [`lark-sheets`](../../lark-sheets/SKILL.md) / [`lark-base`](../../lark-base/SKILL.md) 下钻,详见 [SKILL.md 快速决策](../SKILL.md) 路由表。
131+
返回中可能含 `<sheet>``<bitable>``<cite file-type="sheets|bitable">`。内部数据无法通过 `docs +fetch --api-version v2` 获取,提取 `token` 等属性后切到 [`lark-sheets`](../../lark-sheets/SKILL.md) / [`lark-base`](../../lark-base/SKILL.md) 下钻,详见 [SKILL.md 快速决策](../SKILL.md) 路由表。
131132

132133
## 参考
133134

skills/lark-doc/references/lark-doc-md.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Markdown 格式参考
22

3-
`docs +fetch` / `docs +create` / `docs +update` 使用 `--doc-format markdown` 时适用;fetch 的 `--doc-format im-markdown` 仅用于获取内容后在 `lark-im` 场景下使用,不作为 create/update 写入格式。
3+
`docs +fetch --api-version v2` / `docs +create --api-version v2` / `docs +update --api-version v2` 使用 `--doc-format markdown` 时适用;fetch 的 `--doc-format im-markdown` 仅用于获取内容后在 `lark-im` 场景下使用,不作为 create/update 写入格式。
44

55
## 转义规则
66

@@ -34,14 +34,14 @@
3434
- `$...$` 数学公式内部,符号为 LaTeX 语法,不受 Markdown 转义影响
3535

3636
**导出已转义,不要反转义:**
37-
`docs +fetch --doc-format markdown` 导出的内容中,特殊字符**已经被转义过了**(例如 `\[``\|``\\` 等)。这些 `\` 是有意义的——去掉会导致后续写入时字符被 Markdown 语法吞掉。**不要反转义或去掉 `\`**
37+
`docs +fetch --api-version v2 --doc-format markdown` 导出的内容中,特殊字符**已经被转义过了**(例如 `\[``\|``\\` 等)。这些 `\` 是有意义的——去掉会导致后续写入时字符被 Markdown 语法吞掉。**不要反转义或去掉 `\`**
3838

3939
**写入时必须转义:**
4040
使用 `docs +create``docs +update``--doc-format markdown` 写入内容时,字面文本中的特殊字符同样必须转义。`--pattern` 参数中也必须使用转义形式才能正确匹配。
4141

4242
**导出 → 更新 工作流示例:**
4343

44-
1. `docs +fetch` 导出得到 `C:\\Users\\test\[1\]`
44+
1. `docs +fetch --api-version v2` 导出得到 `C:\\Users\\test\[1\]`
4545
2.`str_replace --pattern 'C:\\Users\\test\[1\]'` 匹配(直接使用导出的转义形式)
4646
3. `--content` 中的替换内容也要保持转义:`C:\\Users\\prod\[2\]`
4747

skills/lark-doc/references/lark-doc-media-insert.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ lark-cli docs +media-insert --doc doxcnXXX --from-clipboard
4848

4949
# 从本地文件插入
5050
# 除了上传本地文件,还可以在 `docs +update` 时直接通过网络 URL 插入图片,无需先下载到本地:
51-
lark-cli docs +update --doc "<doc_id>" --command block_insert_after \
51+
lark-cli docs +update --api-version v2 --doc "<doc_id>" --command block_insert_after \
5252
--block-id "目标 block_id" \
5353
--content '<img href="https://example.com/photo.png"/>'
5454

0 commit comments

Comments
 (0)