feishu-doc-editinglisted
Install: claude install-skill qiaoxuelin/mobile-game-research-toolkit
# 飞书云文档编辑(lark-cli)
本 skill 封装飞书云文档的编辑操作流程与踩坑。**飞书是研究交付面**(专题报告/选题跟踪等交付物在飞书维护),本地只存过程与快照。需要编辑飞书文档时按本 skill 操作。
**前置**:安装 `@larksuite/cli`(`npm i -g @larksuite/cli`,提供 `lark-cli` 命令;⚠ 不是 `npm i -g lark-cli`,那是另一个不相关的 0.1.0 包)+ `lark-cli auth` 完成飞书 OAuth 授权。
lark-cli 1.0.66+:`docs +update` 操作名走 `--command <op>` flag(非 positional)。以 `lark-cli docs +update --help` 为准。
## 1. 核心编辑循环(必遵)
**凡写操作后必须 fetch 验证**--lark-cli 对 block_id 不存在/str_replace 0 命中 都返回 `"ok": true`(API 调用成功≠实际生效)。
```
1. fetch: lark-cli docs +fetch --doc <token> --doc-format xml --detail with-ids
2. 定位: 从返回 XML 正则提 block_id(<h2|p|table|li ... id="doxcn...">)
3. 写: lark-cli docs +update --doc <token> --command <op> --block-id <id> --content @file.xml
4. 验证: 再 fetch,核对实际文本/块结构(repr() 看精确字符、数 <tr>/<b> 行数)
```
- `--doc` 接文档 URL 或 token;wiki 页 token = obj_token/docx token(如 `doxcnABcdEFghIJklMNopQRst`,用 `docs +fetch` 时传此 token)。
- 写脚本统一 `os.chdir` 到脚本目录,`--content @file.xml` 用相对路径(绝对路径报 `unsafe file path`)。
- `--detail with-ids` 必带,否则拿不到 block_id。
## 2. 四种写操作选型
| 指令 | 用途 | 关键点 |
|---|---|---|
| `block_insert_after` | 在锚点 block 后插新内容 | 多块 XML **不包 `<fragment>`**(见踩坑①);`@file` 读多块 |
| `block_replace` | 整块替换 | 替换后旧 block_id 失效,继续 block 操作前重新 fetch;替换 `<li>` 触发 ol seq 重编号(rev 大跳,结构完好) |
| `str_replace` | 行内文本替换 | `--pattern` **inline 字符串**,不支持 @file(见踩坑②);不能跨 block/段落;XML 模式只行内 |
| `block_delete` | 删块 | leaf 块(p/h/li)可删;逗号分隔批量;ol 内删 li 会塌缩 |
**选型原则**:外科式 1-2 处文本修补用 `str_replace`(带 `--block-id` 限块内);整段/整表重