Skip to main content
ClaudeWave
Skill1.6k estrellas del repoactualizado 3d ago

wecomcli-doc-manage

何时用:仅当用户明确指向企业微信文档的公共管理(搜索/改名/成员权限/加入规则)时使用;本地文件管理默认走本地工具。适用所有企微文档类型;新建 doc 走 wecomcli-doc、新建在线表格走 wecomcli-sheet、智能表格 CRUD 走 wecomcli-smartsheet、生成智能文档走 wecomcli-smartpage;「看过哪些文档/浏览历史」走本技能。

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/Pinvou/pinvou-agent /tmp/wecomcli-doc-manage && cp -r /tmp/wecomcli-doc-manage/pinvou3-app/src-tauri/resources/common/bundle/wecom-skills/wecomcli-doc-manage ~/.claude/skills/wecomcli-doc-manage
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

> 执行任何 `wecom-cli` 命令前,必须先读取并完成 `wecomcli-shared` 技能的公共前置检查。

## 核心概念

- **四种文档类型**:在线文档 `doc`、在线表格 `sheet`、智能表格 `smartsheet`、智能文档 `smartpage`。`doc_type` 枚举在多接口中复用。
- **搜索接口额外支持的类型**:收集表 `collect`、PPT `ppt`、脑图 `mind`、流程图 `flow`、汇报 `journal`、PDF `pdf`。这些类型仅在「搜索文档」接口的 `doc_types` 过滤中可用,其他接口(改名、权限、加入规则等)不适用。

## 适用范围

**适用**:
- 仅支持搜索 doc文档 / 在线表格 / 智能表格 / 智能文档 / PPT / 收集表 / 脑图 / 流程图 / 汇报 / PDF 文档类型
- 仅支持修改 doc文档 / 在线表格 / 智能表格 / 智能文档 的名称
- 仅支持添加 doc文档 / 在线表格 / 智能表格 / 智能文档 的成员权限
- 仅支持设置 doc文档 / 在线表格 / 智能表格 / 智能文档 的加入规则

## 接口路由表

路由表第二列若是 `references/xxx.md` 链接 → 必须先用 `File(action="read")` 读完该文件,再构造命令。

| 用户意图                                                    | 参考位置 |
|---------------------------------------------------------|---|
| 搜索文档(包含最近浏览/创建)                                         | 见下方「搜索文档」 |
| 修改文档名                                                   | [+names-update](references/doc-names-update.md) |
| 添加文档成员 / 改权限                                            | [+members-update](references/doc-members-update.md) |
| 设置链接加入规则                                                | [+rules-update](references/doc-rules-update.md) |

## 接口详述

### 搜索文档

按关键词与过滤条件(类型 / 创建者 / 浏览者-成员 / 时间窗 / 排序)搜索文档

> 关于"浏览者"与"成员":在本接口的搜索语义下二者等价——`visitor_userids` 命中的是"该 userid 作为浏览者/成员/相关者"的文档,用来表达"包含 X"、"X 参与的"、"与 X 相关的"、"X 作为成员的"均可。**注意权限约束**:无论传谁的 userid,最终结果只会返回**当前调用者本人有权限访问**的文档;他人有权限但你没权限的文档不会出现在结果中,因此本接口不能用于"窥探他人独占的文档列表"。

#### 命令

```bash
wecom-cli doc search --json '<JSON 参数>'
```

#### 参数

| 字段 | 类型 | 必填 | 默认值 | 语义                                                                                                                |
|---|---|---|---|-------------------------------------------------------------------------------------------------------------------|
| `keywords` | string[] | 是 | — | 关键词数组,OR 关系。仅按其他条件过滤时传空数组 `[]`                                                                               |
| `search_scope` | string | 否 | `title_content` | 搜索范围枚举:`title`(仅标题) / `title_content`(标题和内容,默认) / `content`(仅内容)                                                  |
| `doc_types` | string[] | 否 | — | 限定类型,取值为 `doc` / `sheet` / `smartsheet` / `smartpage` / `collect` / `ppt` / `mind` / `flow` / `journal` / `pdf` 的子集 |
| `creator_userids` | string[] | 否 | — | 限定创建者 userid 列表(典型:传当前用户 userid 查"我最近创建")                                                                         |
| `visitor_userids` | string[] | 否 | — | 限定"浏览者 / 成员" userid 列表                                                                           |
| `created_after` / `created_before` | string | 否 | — | 创建时间窗,`YYYY-MM-DD HH:mm:ss`                                                                                       |
| `opened_after` / `opened_before` | string | 否 | — | 最近打开时间窗,`YYYY-MM-DD HH:mm:ss`                                                                                     |
| `sort_by` | string | 否 | `best_match` | 排序枚举:`best_match`(默认) / `create_time`(创建时间) / `modify_time`(修改时间)                                                 |
| `limit` | int | 否 | `10` | 返回上限,不超过 100                                                                                                      |
| `cursor` | string | 否 | — | 分页游标;首次传空,后续取上页 `next_cursor`                                                                                     |

#### 返回

| 字段 | 类型 | 说明 |
|---|---|---|
| `has_more` | boolean | 是否还有下一页;`true` 时用 `next_cursor` 续取 |
| `next_cursor` | string | 下一页游标 |
| `docs` | array | 结果文档列表,每项字段见下表 |

`docs[]` 单条文档字段:

| 字段 | 类型 | 说明           |
|---|---|--------------|
| `docid` | string | 文档唯一 ID      |
| `doc_name` | string | 文档名          |
| `doc_type` | string | 文档类型         |
| `url` | string | 可访问的文档链接     |
| `creator_userid` | string | 文档创建者 userid |
| `create_time` / `modify_time` | string | 创建 / 最近修改时间  |
| `title_highlight` / `text_highlight` | string[] | 命中高亮片段       |

#### 使用规则

- **`ppt` / `journal` / `collect` / `mind` / `flow` 目前没有任何下游 skill 或 CLI 能读取正文**,命中这些类型且用户要看内容时,直接告知暂不支持读取,引导用户用 `doc_url` 在企业微信客户端内打开查看。
- **参数组合按意图分派(含必填约束)**:先判定用户意图,再按对应分支组装参数。禁止所有参数均不传或仅传空值(如 `{}`)。
  - (a) 按内容找 → `keywords`(必填,不得为空数组) + `search_scope=title_content` + `sort_by=best_match`
  - (b) "我最近浏览 / 与我相关 / 我作为成员 / 包含我的文档" → `visitor_userids=[<当前 userid>]`(必填,不得为空) + `sort_by=best_match` + `opened_after`(默认近 7 天)
  - (c) "包含某人为成员 / 某人参与 "(他人)→ `visitor_userids=[<他人 userid>]`(必填,先经 `wecomcli-contact` 由姓名解析)+ `sort_by=best_match`;**必须提醒用户**:只会返回当前调用者有权限访问的那部分文档,对方独占且你无权访问的文档不会出现。
  - (d) "我最近创建" → `creator_userids=[<当前 userid>]`(必填,不得为空) + `created_*` 时间窗 + `sort_by=create_time` + `created_after`(默认近 7 天)
  - 若意图不属于 (b)(c)(d),一律按 (a) 处理,`keywords` 必填。
- **`userid`(前缀 `wo`)**:用户提供的是姓名时通过 `读取 wecomcli-contact 技能` 解析为 `userid`;禁止把姓名当 `userid` 拼接,禁止凭记忆或猜测编造。
- **`keywords` 必须先分词再组装**:当用户给出自然语言 query(如 `"帮我找下产品的待办tool文档"`)时,禁止把整段 query 直接当成单个 keyword 传入。处理流程:
  1. 对 query 做中英文分词,得到 token 列表(中文按词切分,英文按空格 / 大小写边界切分),并剔除"帮我"、"找下"、"文档"、"的"等口语化 / 通用 / 停用词。
  2. 判定"必传 token":从剩余 token 中挑出真正承载用户检索意图的核心词(通常是专有名词、产品名、功能名等强区分度词),其余作为辅助 token。
  3. 组装 `keywords` 数组:第 1 个元素是所有"必传 token"用空格拼接的串(只拼必传的,不要把全部 token 都塞进去),后续元素依次是各单独 token(必传 + 辅助)。例如 query `"帮我找下产品的待办tool文档"`,分词后必传 token 为 `["待办", "tool"]`,则 `keywords = ["待办 tool", "待办", "tool"]`。
  4. 若必传 token 只有 1 个,第 1 个元素就是该 token 本身,不必重复追加。例如 query `"周报"` → `keywords = ["周报"]`。
- **多候选必须让用户确认**:结果 >1 条时,按下方「结果展示规范」展示候选列表,等用户选定后再继续后续动作。
- **无候选必须追问用户**:结果 =0 条时,告知用户当前没有搜到文档,追问用户是否可以提供更多的关键词线索。

示例:用户 query `"帮我找下产品的待办tool文档"`

剔除"帮我 / 找下 / 的 / 文档"等通用词,剩余 `["产品", "待办", "tool"]`;判定核心检索意图为 `"待办"` 与 `"tool"`,故必传 token 为 `["待办", "tool"]`,`"产品"` 作为辅助 token。

```bash
wecom-cli doc search --json '{"keywords":["待办 tool","待办","tool","产品"],"search_scope":"title_content","limit":10}'
```

#### 结果展示规范

向用户展示搜索结果(含单条与多候选)时严格遵守:

- **用 markdown 无序列表逐条展示,禁止使用表格**——最多展示10条结果,即使只有 2~3 条结果也用列表;表格会强制四列对齐,反而把 ID / 时间等噪声字段一起暴露。
- **文档名必须是可点击链接**:每条首行写成 `- [doc_name](url)`,`url` 取接口返回的 `url` 字段原样使用。
- **默认不展示创建者**:`creator_userid` 是内部 ID,禁止以任何形式
visual-designSkill

直出好看的网页/落地页/banner/海报/产品介绍页/数据报告/简历/作品集等视觉物料——套一套设计系统,模型自由写自包含 HTML,颜值由规则锁死、不靠模板。用户说"做个网页/页面/落地页/banner/海报/报告页/作品集/简历"或"把这份内容做成网页版"时使用。⚠️ 不含信息检索:查天气/查行情/查股价/查数据请走对应连接器,不是本技能。

dwsSkill

【何时用:仅当用户明确指向钉钉/DingTalk(钉钉文档、钉钉日程等)时使用;泛指做文档/表格/待办/审批默认走本地工具,不要误用钉钉】用 dws CLI 管理钉钉:AI表格/AI搜问(找人首选)/目标管理(Agoal)/组织大脑/日历/通讯录/群聊与机器人消息/待办/审批/考勤/日志(日报周报)/DING消息/钉钉文档/云盘/Markdown文件/AI听记/邮箱/在线电子表格(axls)/知识库/白板/开放平台文档/个人IM与OA事件订阅。用户要求操作上述钉钉产品时使用。

lark-baseSkill

【何时用:仅当用户明确指向飞书/Lark(发到飞书、飞书文档等)时使用;泛指做个文档或PPT或表格或方案默认走本地工具,不要误用飞书】飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限;遇到 Base/多维表格/bitable、BaseApp/AppMode 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入转 lark-drive,认证/授权转 lark-shared。

lark-calendarSkill

【何时用:仅当用户明确指向飞书/Lark(发到飞书、飞书文档等)时使用;泛指做个文档或PPT或表格或方案默认走本地工具,不要误用飞书】飞书日历:管理日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。不负责:查询视频会议记录(本 skill 只覆盖日程;lark-vc 技能未随包收录,可 CLI 直连,见意图路由)、待办任务(走 lark-task)。

lark-docSkill

【何时用:仅当用户明确指向飞书/Lark(发到飞书、飞书文档等)时使用;泛指做个文档或PPT或表格或方案默认走本地工具,不要误用飞书】飞书云文档(Docx/Wiki)与思维笔记内容操作:读取、创建、编辑文档,插入或下载图片附件,查询或回滚历史版本。用户给出文档 URL/token(含 doubao.com 的 /docx/、/wiki/)时使用,按 URL 路径/token 而非域名路由;内嵌表格、多维表格、画板先提取 token 再切对应 skill。文档评论走 lark-drive;表格或 Base 内部数据操作不在本 skill。

lark-driveSkill

【何时用:仅当用户明确指向飞书/Lark(发到飞书、飞书文档等)时使用;泛指做个文档或PPT或表格或方案默认走本地工具,不要误用飞书】飞书云空间:管理 Drive 文件/文件夹,上传下载、复制移动删除、评论、权限、密级标签、版本、改标题,导入 Word/Markdown/Excel/CSV/PPTX/.base 为在线文档;doubao.com 云空间 URL 同走本 skill,不回退 WebFetch。不负责:文档内容编辑(lark-doc)、表格/Base 表内数据(lark-sheets/lark-base)、知识库节点(lark-wiki)。

lark-imSkill

【何时用:仅当用户明确指向飞书/Lark(发到飞书、飞书文档等)时使用;泛指做个文档或PPT或表格或方案默认走本地工具,不要误用飞书】飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)与卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索或创建群聊/话题群、管理标记数据、Feed 置顶与标签数据、处理卡片回调时使用。

lark-sharedSkill

【何时用:仅在其他 lark-* 技能遇到认证/授权/身份/配置问题时,或首次使用 lark-cli 时;泛指需求默认走本地工具】lark-cli 共享规则:首次配置(config init)、认证登录(auth login --domain/--scope,split-flow)、登录态查询与撤销(auth status/logout/whoami)、--as user/bot 身份切换、权限不足与 missing_scope 处理、JSON 输出契约与 _notice、update 更新、高风险操作审批(exit 10)。