feishu-docs
Installation
SKILL.md
Feishu Docs Skill
你正在管理飞书文档操作技能。
用户数据存储在 ~/.feishu-docs/。
首先,通过查找这个 SKILL.md 文件来定位技能目录:
- 使用 Glob 模式
**/skills/**/feishu-docs/SKILL.md找到其路径,然后从中推导技能根目录。 - 将该路径在脑中记为 SKILL_DIR,用于后续所有文件引用。
命令解析
从 $ARGUMENTS 中解析用户意图,映射到以下子命令之一:
| 用户说(示例) | 子命令 |
|---|---|
setup, configure, 配置 |
setup |
create <title>, 创建文档 <title> |
create |
list, 列出文档 |
list |
read <docToken>, 读取文档 <docToken> |
read |
update <docToken> <content>, 更新文档 <docToken> |
update |
delete <docToken>, 删除文档 <docToken> |
delete |
提取可选参数。
运行时检测
在执行任何子命令之前,检测你运行在哪个环境中:
- 交互式技能宿主 —
AskUserQuestion工具可用。使用它进行交互式设置向导。 - 非交互式宿主 —
AskUserQuestion不可用。回退到非交互式指导:解释步骤,展示SKILL_DIR/config.env.example,并要求用户手动创建~/.feishu-docs/config.env。
你可以通过检查 AskUserQuestion 是否在可用工具列表中来测试这一点。
配置检查(适用于 create、list、read、update、delete)
在运行除 setup 之外的任何子命令之前,检查 ~/.feishu-docs/config.env 是否存在:
- 如果不存在:
- 在交互式宿主中:告诉用户 "未找到配置" 并自动使用 AskUserQuestion 启动
setup向导。 - 在非交互式宿主中:告诉用户 "未找到配置。请根据示例创建
~/.feishu-docs/config.env:" 然后展示SKILL_DIR/config.env.example的内容并停止。不要尝试执行文档操作。
- 在交互式宿主中:告诉用户 "未找到配置" 并自动使用 AskUserQuestion 启动
- 如果存在: 继续执行请求的子命令。
子命令
setup
运行交互式设置向导。此子命令需要 AskUserQuestion。如果不可用,则展示 SKILL_DIR/config.env.example 的内容并附带逐字段说明,指导用户手动创建配置文件。
当 AskUserQuestion 可用时,逐个字段收集输入。每次回答后,向用户确认该值(密钥只显示最后 4 个字符),然后再进入下一个问题。
步骤 1 — 配置
收集以下信息:
- App ID - 从飞书开放平台获取
- App Secret - 从飞书开放平台获取
- Domain(可选)- 默认
https://open.feishu.cn,国际版用https://open.larksuite.com - 默认文件夹 Token(可选)- 文档创建的默认位置
在询问凭证之前,先阅读 SKILL_DIR/references/setup-guide.md 并向用户展示相关平台指南。
步骤 2 — 写入配置并验证
- 展示最终摘要表,所有设置清晰展示(密钥只显示最后 4 个字符)
- 在写入前询问用户确认
- 使用 Bash 创建目录结构:
mkdir -p ~/.feishu-docs/{data,logs} - 使用 Write 创建
~/.feishu-docs/config.env,所有设置采用 KEY=VALUE 格式 - 使用 Bash 设置权限:
chmod 600 ~/.feishu-docs/config.env - 验证凭证:
- 使用 Write 创建仅当前验证使用的临时 JSON 文件,例如
~/.feishu-docs/data/auth-check.json - 文件内容包含
app_id和app_secret - 使用 Bash 调用:
curl -s -X POST "${DOMAIN}/open-apis/auth/v3/tenant_access_token/internal" -H "Content-Type: application/json" --data-binary "@$HOME/.feishu-docs/data/auth-check.json" - 验证后立即删除临时文件
- 只向用户报告
code/msg/ 成功与否,绝不回显请求体、App ID 或 App Secret
- 使用 Write 创建仅当前验证使用的临时 JSON 文件,例如
- 报告结果并附带摘要表。如果任何验证失败,解释可能出错的地方以及如何修复。
- 成功时,告诉用户:"设置完成!现在可以使用飞书文档命令了。"
create <title> [content]
创建新的飞书文档。
- 从参数中提取标题和可选内容
- 如果未提供内容,提示用户输入或从剪贴板/当前文件读取
- 使用 Write 创建临时参数文件(JSON),例如
~/.feishu-docs/data/create-args.json - 写入
{ "command": "create", "title": "...", "content": "..." } - 调用
node SKILL_DIR/scripts/feishu-docs.js --args-file "$HOME/.feishu-docs/data/create-args.json" - 运行后删除临时参数文件
- 向用户展示结果,包括文档链接
list
列出最近的飞书文档。
运行:node SKILL_DIR/scripts/feishu-docs.js list
展示文档列表,包括标题、最后修改时间和文档链接。
read <docToken>
读取飞书文档内容。
- 使用 Write 创建临时参数文件(JSON),例如
~/.feishu-docs/data/read-args.json - 写入
{ "command": "read", "docToken": "..." } - 运行:
node SKILL_DIR/scripts/feishu-docs.js --args-file "$HOME/.feishu-docs/data/read-args.json" - 运行后删除临时参数文件
展示文档内容。如果内容较长,可以分段展示。
update <docToken> <content>
更新飞书文档内容。
- 使用 Write 创建临时参数文件(JSON),例如
~/.feishu-docs/data/update-args.json - 写入
{ "command": "update", "docToken": "...", "content": "..." } - 运行:
node SKILL_DIR/scripts/feishu-docs.js --args-file "$HOME/.feishu-docs/data/update-args.json" - 运行后删除临时参数文件
delete <docToken>
删除飞书文档。
- 在删除前先确认
- 使用 Write 创建临时参数文件(JSON),例如
~/.feishu-docs/data/delete-args.json - 写入
{ "command": "delete", "docToken": "..." } - 运行:
node SKILL_DIR/scripts/feishu-docs.js --args-file "$HOME/.feishu-docs/data/delete-args.json" - 运行后删除临时参数文件
- 向用户明确说明该操作会将文档移入回收站
注意事项
- 始终在输出中掩码密钥(只显示最后 4 个字符)
- 配置文件权限应为 600
- 文档操作需要相应的飞书 API 权限
- 不要把密钥、Token、用户内容直接内联到 shell 命令里;优先使用临时文件传参
- 错误输出只报告必要的状态信息,不回显原始请求体或完整异常对象
Related skills