From oh-my-feishu
Manages Feishu/Lark wiki knowledge spaces, members, and document nodes: create/query spaces, manage members/nodes, organize hierarchies/docs/shortcuts. Use for doc search/creation, space browsing, member ops, node moves/copies.
npx claudepluginhub yjzhang2003/oh-my-feishu --plugin oh-my-feishuThis skill uses the workspace's default tool permissions.
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理**
Manages LLM-compiled knowledge bases in .wiki/ or ~/wiki/: ingests sources to raw/, compiles interconnected markdown articles with indexes, queries, lints, and supports topic sub-wikis.
Use when compiling raw sources into the wiki, querying the knowledge base, running health checks or lint on the wiki, evolving or improving wiki coverage, or when user says 'compile', 'update the wiki', 'query', 'lint', 'health check', 'evolve', 'what's missing', or 'suggest improvements'. Also triggers on questions that should be answered from the knowledge base.
Share bugs, ideas, or general feedback.
CRITICAL — 开始前 MUST 先用 Read 工具读取 ../lark-shared/SKILL.md,其中包含认证、权限处理
成员管理硬限制:
- 如果目标是“部门”,先判断身份,再决定是否继续。
--as bot对应tenant_access_token。官方限制:这种身份下不能使用部门 ID (opendepartmentid) 添加知识空间成员。- 遇到“部门 + --as bot”时,禁止先调用
lark-cli wiki members create试错;直接说明该路径不可行。- 如果用户明确要求“以 bot 身份运行”,且目标是部门,必须停下说明 bot 路径无法完成,不要静默切到
--as user。
.../wiki/<token>),且后续要查成员/加成员/删成员:先调用 lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}' 获取 space_id,后续成员接口统一使用 space_id。wiki +delete-space)但只给了名称或 URL:不能把名称 / URL 原样传给 --space-id,必须先解析出真实 space_id。解析方式:
.../wiki/<token>):lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}' --format json,读 data.node.space_id。lark-cli wiki spaces list --format json,边翻页边收集 items 并按 name 精确匹配;一旦任一页累计到至少 1 条精确匹配就停止翻页。只有当翻完所有页(has_more=false)仍无精确匹配时,才对已收集的全量 items 做宽松匹配(name trim 空格、大小写不敏感、子串包含)。name + space_id + description + space_type)列给用户,由用户明确选定一个 space_id 再执行。不要因为"只命中一条"就自动执行删除。lark-cli wiki +delete-space --space-id <ID> --yes(高风险写操作,必须显式 --yes)。lark-cli wiki +node-create。member_type,不要先调 wiki members create 再根据报错反推类型。wiki members create --as bot;直接提示必须改成 --as user,或明确告知当前要求无法完成。wiki members create。lark-cli wiki members create 前,先把自然语言里的“人 / 群 / 部门”解析成正确的 member_id,不要猜格式。member_type=openid:用 lark-cli contact +search-user --query "<姓名/邮箱/手机号>" --format json 获取 open_id。member_type=openchat:用 lark-cli im +chat-search --query "<群名关键词>" --format json 获取 chat_id。userid / unionid 只在下游明确要求时才使用;先拿到 open_id,再调用 lark-cli api GET /open-apis/contact/v3/users/<open_id> --params '{"user_id_type":"open_id"}' --format json 读取 user_id / union_id。member_type=opendepartmentid:当前 CLI 没有 shortcut,需调用 lark-cli api POST /open-apis/contact/v3/departments/search --as user --params '{"department_id_type":"open_department_id"}' --data '{"query":"<部门名>"}' 获取 open_department_id。lark-cli wiki members create。对于部门场景,这意味着必须是 --as user。我的文档库 / My Document Library / 我的知识库 / 个人知识库 / my_library 都应视为 Wiki personal library,不是 Drive 根目录my_library 对应的真实 space_id,再执行 wiki +move、wiki +node-create 或其他 Wiki 写操作space_id 就退化成 drive +move我的空间,才进入 Drive 域处理Shortcut 是对常用操作的高级封装(lark-cli wiki +<verb> [flags])。有 Shortcut 的操作优先使用。
| Shortcut | 说明 |
|---|---|
+move | Move a wiki node, or move a Drive document into Wiki |
+node-create | Create a wiki node with automatic space resolution |
+delete-space | Delete a wiki space, polling the async delete task when needed |
lark-cli schema wiki.<resource>.<method> # 调用 API 前必须先查看参数结构
lark-cli wiki <resource> <method> [flags] # 调用 API
重要:使用原生 API 时,必须先运行
schema查看--data/--params参数结构,不要猜测字段格式。
create — 创建知识空间get — 获取知识空间信息get_node — 获取知识空间节点信息list — 获取知识空间列表create — 添加知识空间成员delete — 删除知识空间成员list — 获取知识空间成员列表copy — 创建知识空间节点副本create — 创建知识空间节点list — 获取知识空间子节点列表| 方法 | 所需 scope |
|---|---|
spaces.create | wiki:space:write_only |
spaces.get | wiki:space:read |
spaces.get_node | wiki:node:read |
spaces.list | wiki:space:retrieve |
members.create | wiki:member:create |
members.delete | wiki:member:update |
members.list | wiki:member:retrieve |
nodes.copy | wiki:node:copy |
nodes.create | wiki:node:create |
nodes.list | wiki:node:retrieve |