/wecomcli-msg
企业微信消息技能。提供会话列表查询、消息记录拉取(支持文本/图片/文件/语音/视频)、多媒体文件获取和文本消息发送能力。当用户需要"查看消息"、"看聊天记录"、"发消息给某人"、"最近有什么消息"、"给群里发消息"、"看看发了什么图片/文件"时触发。
$ npx -y skills add wecomteam/wecom-cli --skill wecomcli-msg --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/wecomcli-msg
Context preview
The summary Claude sees to decide when to auto-load this skill.
企业微信消息技能。提供会话列表查询、消息记录拉取(支持文本/图片/文件/语音/视频)、多媒体文件获取和文本消息发送能力。当用户需要"查看消息"、"看聊天记录"、"发消息给某人"、"最近有什么消息"、"给群里发消息"、"看看发了什么图片/文件"时触发。
SKILL.md
wecomcli-msg.SKILL.mdname: wecomcli-msg
description: 企业微信消息技能。提供会话列表查询、消息记录拉取(支持文本/图片/文件/语音/视频)、多媒体文件获取和文本消息发送能力。当用户需要"查看消息"、"看聊天记录"、"发消息给某人"、"最近有什么消息"、"给群里发消息"、"看看发了什么图片/文件"时触发。
metadata:
requires:
bins: ["wecom-cli"]
cliHelp: "wecom-cli msg --help"企业微信消息技能
> `wecom-cli` 是企业微信提供的命令行程序,所有操作通过执行 `wecom-cli` 命令完成。
通过 `wecom-cli msg <接口名> '<json入参>'` 与企业微信消息系统交互。
---
接口列表
get_msg_chat_list — 获取会话列表
wecom-cli msg get_msg_chat_list '{"begin_time": "2026-03-11 00:00:00", "end_time": "2026-03-17 23:59:59"}'按时间范围查询有消息的会话列表,支持分页。参见 [API 详情](references/get-msg-chat-list.md)。
get_message — 拉取会话消息
wecom-cli msg get_message '{"chat_type": 1, "chatid": "zhangsan", "begin_time": "2026-03-17 09:00:00", "end_time": "2026-03-17 18:00:00"}'根据会话类型和 ID 拉取指定时间范围内的消息记录,支持分页。支持 text/image/file/voice/video 消息类型,仅支持 7 天内。参见 [API 详情](references/get-message.md)。
get_msg_media — 获取消息文件内容
wecom-cli msg get_msg_media '{"media_id": "MEDIAID_xxxxxx"}'根据文件 ID 自动下载文件到本地,返回文件的本地路径(`local_path`)、名称、类型、大小及 MIME 类型。用于获取图片、文件、语音、视频等非文本消息的实际内容。参见 [API 详情](references/get-msg-media.md)。
send_message — 发送文本消息
wecom-cli msg send_message '{"chat_type": 1, "chatid": "zhangsan", "msgtype": "text", "text": {"content": "hello world"}}'向单聊或群聊发送文本消息。参见 [API 详情](references/send-message.md)。
---
核心规则
时间范围规则
- **格式**:所有时间参数使用 `YYYY-MM-DD HH:mm:ss` 格式
- **默认范围**:用户未指定时,默认使用最近7天(当前时间往前推7天)
- **限制**:开始时间不能早于当前时间的7天前,不能晚于当前时间
- **相对时间支持**:支持"昨天"、"最近三天"等自动推算
chatid查找规则
- 当用户提供人名或群名而非ID时:
1. 调用 `get_msg_chat_list` 获取会话列表(时间范围与目标查询一致) 2. 在 `chats` 中按 `chat_name` 匹配 3. **匹配策略**:
- 精确匹配唯一结果:直接使用
- 模糊匹配多个结果:展示候选列表让用户选择
- 无匹配结果:告知用户未找到
- **chat_type 判断**:`get_msg_chat_list` 返回中不含会话类型字段,需根据上下文推断:用户明确提到「群」时使用 `chat_type=2`,否则默认 `chat_type=1`(单聊)
userid 转 name
**流程**: 1. 调用 `wecomcli-contact` 技能的 `get_userlist` 获取用户列表 2. 建立 userid 到 name 的映射关系 3. **展示策略**:
- 精确匹配:显示 name
- 无匹配:保持显示 userid
强制交互步骤(不可跳过)
以下步骤在涉及非文本消息下载时**必须逐一执行**,不得合并、省略或跳过,即使用户未主动询问也必须执行: 1. **必须主动告知文件位置**:下载完成后必须立即向用户展示所有文件的完整路径和存放目录 2. **必须询问是否删除**:告知位置后必须立即询问用户是否需要清理临时文件
---
典型工作流
查看会话列表
**用户query示例**:
- "看看我最近一周有哪些聊天"
- "这几天谁给我发过消息"
**执行流程**: 1. 确定时间范围(用户指定或默认最近7天) 2. 调用 `get_msg_chat_list` 获取会话列表 3. 展示会话名称、最后消息时间、消息数量 4. 若 `has_more` 为 `true`,告知用户还有更多会话可继续查看
查看聊天记录
**用户query示例**:
- "帮我看看和张三最近的聊天记录"
- "看看项目群里最近的消息"
**执行流程**: 1. 确定时间范围(用户指定或默认最近7天) 2. 通过 **chatid查找规则** 确定目标会话的 `chatid` 和 `chat_type` 3. 调用 `get_message` 拉取消息列表 4. 调用 `wecomcli-contact` 技能的 `get_userlist` 获取通讯录,建立 userid→姓名 映射 5. **统计非文本消息**:遍历消息列表,统计 `msgtype` 非 `text` 的消息(image/file/voice/video)数量和类型 6. 展示消息时将 `userid` 替换为可读姓名,格式:
- 文本消息:`姓名 [时间]: 内容`
- 图片消息:`姓名 [时间]:[图片]`
- 文件消息:`姓名 [时间]:[文件] 文件名称`
- 语音消息:`姓名 [时间]:[语音] 语音内容`
- 视频消息:`姓名 [时间]:[视频]`
7. **非文本消息处理**:展示完消息后,如果存在非文本消息:
- **主动询问是否下载**:告知用户非文本消息数量和类型(如:"以上聊天中包含 2 张图片、1 个文件,是否需要下载到本地?")
- 用户确认后,逐个调用 `get_msg_media` 接口,接口会自动下载文件并返回 `local_path`
- **检查文件后缀**:每个文件下载完成后,检查 `local_path` 对应的文件是否具有正确的后缀名:
- 根据 `get_msg_media` 返回的 `content_type`(MIME 类型)和 `name` 字段判断:
- 如果文件名缺少后缀(如 `screenshot` 而非 `screenshot.png`),根据 `content_type` 自动补上正确后缀(如 `image/png` → `.png`,`application/pdf` → `.pdf`,`audio/amr` → `.amr`,`video/mp4` → `.mp4`)
- 如果文件名后缀与 `content_type` 不一致,以 `content_type` 为准进行修正
- 补全或修正后缀后,将文件重命名为正确的文件名
- 确认文件可正常读取(文件大小 > 0),若文件为空或损坏则告知用户该文件下载异常
- ⚠️ **不要对下载的文件使用 `MEDIA:` 指令**:这些文件是从聊天记录中下载的历史附件,仅需告知用户本地存放路径即可,**严禁**通过 `MEDIA:` 指令重新发送给用户
8. ⚠️ **必须主动告知文件位置**(此步骤不可跳过):所有文件下载并检查完成后,**必须立即、主动**以汇总形式向用户展示文件存放目录和每个文件的完整路径,不要等用户询问。示例: > 📁 文件已下载到以下位置: > - 图片:`xxx/yyy.png` > - 文件:`xxx/yyy.pdf` > > 你可以在 `xxx/yyy/` 目录下找到所有下载的文件。 9. ⚠️ **必须询问是否删除**(此步骤不可跳过):告知文件位置后,**必须立即、主动**询问用户是否需要删除已下载的临时文件(如:"如果不再需要这些文件,是否需要我帮你清理?")
- 用户确认删除后,删除 `local_path` 对应的文件
- 用户不需要删除则保留文件
10. 若 `next_cursor` 不为空,告知用户还有更多消息可继续查看
发送消息
**用户query示例**:
- "帮我给张三发一条消息:明天会议改到下午3点"
- "在项目群里发一条消息:今天下午3点开会"
**执行流程**: 1. 通过 **chatid查找规则** 确定目标会话的 `chatid` 和 `chat_type` 2. **发送前确认**:向用户确认发送对象和内容(如:"即将向 张三 发送:'明天会议改到下午3点',确认发送吗?"),用户确认后再执行 3. 调用 `send_message` 发送(`msgtype` 固定为 `text`) 4. 展示发送结果
查看消息并回复
**用户query示例**:
- "看看张三给我发了什么,然后帮我回复收到"
**执行流程**: 1. 先执行"查看聊天记录"流程(复用已获取的 `chatid` 和 `chat_type`) 2. 展示消息后,执行"发送消息"流程(需确认后再发送)
---
错误处理
- **时间范围超限**:告知用户7天限制并调整为有效范围
- **会话未找到**:明确告知用户未找到对应会话
- **API错误**:展示具体错误信息,必要时重试
- **网络问题**:HTTP错误时主动重试最多3次
Read more
name: wecomcli-msg
description: 企业微信消息技能。提供会话列表查询、消息记录拉取(支持文本/图片/文件/语音/视频)、多媒体文件获取和文本消息发送能力。当用户需要"查看消息"、"看聊天记录"、"发消息给某人"、"最近有什么消息"、"给群里发消息"、"看看发了什么图片/文件"时触发。
metadata:
requires:
bins: ["wecom-cli"]
cliHelp: "wecom-cli msg --help"企业微信消息技能
> `wecom-cli` 是企业微信提供的命令行程序,所有操作通过执行 `wecom-cli` 命令完成。
通过 `wecom-cli msg <接口名> '<json入参>'` 与企业微信消息系统交互。
---
接口列表
get_msg_chat_list — 获取会话列表
wecom-cli msg get_msg_chat_list '{"begin_time": "2026-03-11 00:00:00", "end_time": "2026-03-17 23:59:59"}'按时间范围查询有消息的会话列表,支持分页。参见 [API 详情](references/get-msg-chat-list.md)。
get_message — 拉取会话消息
wecom-cli msg get_message '{"chat_type": 1, "chatid": "zhangsan", "begin_time": "2026-03-17 09:00:00", "end_time": "2026-03-17 18:00:00"}'根据会话类型和 ID 拉取指定时间范围内的消息记录,支持分页。支持 text/image/file/voice/video 消息类型,仅支持 7 天内。参见 [API 详情](references/get-message.md)。
get_msg_media — 获取消息文件内容
wecom-cli msg get_msg_media '{"media_id": "MEDIAID_xxxxxx"}'根据文件 ID 自动下载文件到本地,返回文件的本地路径(`local_path`)、名称、类型、大小及 MIME 类型。用于获取图片、文件、语音、视频等非文本消息的实际内容。参见 [API 详情](references/get-msg-media.md)。
send_message — 发送文本消息
wecom-cli msg send_message '{"chat_type": 1, "chatid": "zhangsan", "msgtype": "text", "text": {"content": "hello world"}}'向单聊或群聊发送文本消息。参见 [API 详情](references/send-message.md)。
---
核心规则
时间范围规则
- **格式**:所有时间参数使用 `YYYY-MM-DD HH:mm:ss` 格式
- **默认范围**:用户未指定时,默认使用最近7天(当前时间往前推7天)
- **限制**:开始时间不能早于当前时间的7天前,不能晚于当前时间
- **相对时间支持**:支持"昨天"、"最近三天"等自动推算
chatid查找规则
- 当用户提供人名或群名而非ID时:
1. 调用 `get_msg_chat_list` 获取会话列表(时间范围与目标查询一致) 2. 在 `chats` 中按 `chat_name` 匹配 3. **匹配策略**:
- 精确匹配唯一结果:直接使用
- 模糊匹配多个结果:展示候选列表让用户选择
- 无匹配结果:告知用户未找到
- **chat_type 判断**:`get_msg_chat_list` 返回中不含会话类型字段,需根据上下文推断:用户明确提到「群」时使用 `chat_type=2`,否则默认 `chat_type=1`(单聊)
userid 转 name
**流程**: 1. 调用 `wecomcli-contact` 技能的 `get_userlist` 获取用户列表 2. 建立 userid 到 name 的映射关系 3. **展示策略**:
- 精确匹配:显示 name
- 无匹配:保持显示 userid
强制交互步骤(不可跳过)
以下步骤在涉及非文本消息下载时**必须逐一执行**,不得合并、省略或跳过,即使用户未主动询问也必须执行: 1. **必须主动告知文件位置**:下载完成后必须立即向用户展示所有文件的完整路径和存放目录 2. **必须询问是否删除**:告知位置后必须立即询问用户是否需要清理临时文件
---
典型工作流
查看会话列表
**用户query示例**:
- "看看我最近一周有哪些聊天"
- "这几天谁给我发过消息"
**执行流程**: 1. 确定时间范围(用户指定或默认最近7天) 2. 调用 `get_msg_chat_list` 获取会话列表 3. 展示会话名称、最后消息时间、消息数量 4. 若 `has_more` 为 `true`,告知用户还有更多会话可继续查看
查看聊天记录
**用户query示例**:
- "帮我看看和张三最近的聊天记录"
- "看看项目群里最近的消息"
**执行流程**: 1. 确定时间范围(用户指定或默认最近7天) 2. 通过 **chatid查找规则** 确定目标会话的 `chatid` 和 `chat_type` 3. 调用 `get_message` 拉取消息列表 4. 调用 `wecomcli-contact` 技能的 `get_userlist` 获取通讯录,建立 userid→姓名 映射 5. **统计非文本消息**:遍历消息列表,统计 `msgtype` 非 `text` 的消息(image/file/voice/video)数量和类型 6. 展示消息时将 `userid` 替换为可读姓名,格式:
- 文本消息:`姓名 [时间]: 内容`
- 图片消息:`姓名 [时间]:[图片]`
- 文件消息:`姓名 [时间]:[文件] 文件名称`
- 语音消息:`姓名 [时间]:[语音] 语音内容`
- 视频消息:`姓名 [时间]:[视频]`
7. **非文本消息处理**:展示完消息后,如果存在非文本消息:
- **主动询问是否下载**:告知用户非文本消息数量和类型(如:"以上聊天中包含 2 张图片、1 个文件,是否需要下载到本地?")
- 用户确认后,逐个调用 `get_msg_media` 接口,接口会自动下载文件并返回 `local_path`
- **检查文件后缀**:每个文件下载完成后,检查 `local_path` 对应的文件是否具有正确的后缀名:
- 根据 `get_msg_media` 返回的 `content_type`(MIME 类型)和 `name` 字段判断:
- 如果文件名缺少后缀(如 `screenshot` 而非 `screenshot.png`),根据 `content_type` 自动补上正确后缀(如 `image/png` → `.png`,`application/pdf` → `.pdf`,`audio/amr` → `.amr`,`video/mp4` → `.mp4`)
- 如果文件名后缀与 `content_type` 不一致,以 `content_type` 为准进行修正
- 补全或修正后缀后,将文件重命名为正确的文件名
- 确认文件可正常读取(文件大小 > 0),若文件为空或损坏则告知用户该文件下载异常
- ⚠️ **不要对下载的文件使用 `MEDIA:` 指令**:这些文件是从聊天记录中下载的历史附件,仅需告知用户本地存放路径即可,**严禁**通过 `MEDIA:` 指令重新发送给用户
8. ⚠️ **必须主动告知文件位置**(此步骤不可跳过):所有文件下载并检查完成后,**必须立即、主动**以汇总形式向用户展示文件存放目录和每个文件的完整路径,不要等用户询问。示例: > 📁 文件已下载到以下位置: > - 图片:`xxx/yyy.png` > - 文件:`xxx/yyy.pdf` > > 你可以在 `xxx/yyy/` 目录下找到所有下载的文件。 9. ⚠️ **必须询问是否删除**(此步骤不可跳过):告知文件位置后,**必须立即、主动**询问用户是否需要删除已下载的临时文件(如:"如果不再需要这些文件,是否需要我帮你清理?")
- 用户确认删除后,删除 `local_path` 对应的文件
- 用户不需要删除则保留文件
10. 若 `next_cursor` 不为空,告知用户还有更多消息可继续查看
发送消息
**用户query示例**:
- "帮我给张三发一条消息:明天会议改到下午3点"
- "在项目群里发一条消息:今天下午3点开会"
**执行流程**: 1. 通过 **chatid查找规则** 确定目标会话的 `chatid` 和 `chat_type` 2. **发送前确认**:向用户确认发送对象和内容(如:"即将向 张三 发送:'明天会议改到下午3点',确认发送吗?"),用户确认后再执行 3. 调用 `send_message` 发送(`msgtype` 固定为 `text`) 4. 展示发送结果
查看消息并回复
**用户query示例**:
- "看看张三给我发了什么,然后帮我回复收到"
**执行流程**: 1. 先执行"查看聊天记录"流程(复用已获取的 `chatid` 和 `chat_type`) 2. 展示消息后,执行"发送消息"流程(需确认后再发送)
---
错误处理
- **时间范围超限**:告知用户7天限制并调整为有效范围
- **会话未找到**:明确告知用户未找到对应会话
- **API错误**:展示具体错误信息,必要时重试
- **网络问题**:HTTP错误时主动重试最多3次
Repo: wecomteam/wecom-cli
Other skills on wecom-cli.
- /wecomcli-contact
通讯录成员查询技能,获取当前用户可见范围内的通讯录成员,支持按姓名/别名本地筛选匹配。返回 userid、姓名和别名。⚠️ 仅返回当前用户有权限查看的成员,非全量成员。
Open skill - /wecomcli-doc
企业微信文档(doc)管理技能。提供普通文档的新建、内容读取(Markdown)、内容覆写能力。适用场景:(1) 从零新建空白文档 (2) 以 Markdown 格式读取文档完整内容 (3) 用 Markdown 覆写文档正文。支持通过 docid 或文档 URL 定位文档。当用户提到「企业微信文档」「企微文档」「创建文档」「写个文档」,或链接形如 `https://doc.weixin.qq.com/doc/xxx` 时触发该技能。注意:在线表格(`/sheet/*`)请用
Open skill - /wecomcli-meeting
企业微信会议技能,支持创建预约会议、查询会议列表、获取会议详情、取消会议、更新会议成员。当用户需要"创建会议"、"预约会议"、"约会议"、"安排会议"、"查看会议"、"查询会议列表"、"会议详情"、"什么时候开会"、"有哪些会议"、"查找会议"、"取消会议"、"删除会议"、"修改会议成员"、"添加会议参与人"、"移除会议成员"时触发。
Open skill - /wecomcli-schedule
企业微信日程管理技能。适用于用户对企业微信日程的各类管理需求。当用户需要:(1) 查询指定时间范围内的日程列表或获取日程详细信息(标题、时间、地点、参与者等),(2) 创建新日程并设置提醒、参与人等,(3) 修改已有日程的标题、时间、地点等信息或取消日程,(4) 添加或移除日程参与人,(5) 查询多个成员的闲忙状态并分析共同空闲时段以安排会议时使用此技能。
Open skill - /wecomcli-sheet
企业微信在线表格(sheet)管理技能。提供在线表格的新建、内容读取、内容修改、追加行数据,以及子工作表的增删管理。适用场景:(1) 新建空白在线表格 (2) 读取表格完整内容(Markdown)(3) 读取基础信息与子表列表 (4) 读取表格子表数据 (5) 修改指定区域内容 (6) 末尾追加一行数据 (7) 添加/删除子工作表。当用户提到「企业微信表格」「企业微信在线表格」「企微 Excel 表格」,或链接形如 `https://doc.weixin.qq.com/sheet/xxx`
Open skill - /wecomcli-smartpage
企业微信智能文档(原名智能主页,smartpage)管理技能。提供智能文档的创建(将本地 Markdown 文件发布为智能文档)与内容导出(异步导出为 Markdown)能力。适用场景:(1) 将一个或多个本地 Markdown 文件创建为智能文档 (2) 异步导出智能文档内容为 Markdown。支持通过 docid 或文档 URL 定位文档。当用户明确提到「智能文档」「智能主页」,或链接形如 `https://doc.weixin.qq.com/smartpage/xxx` 时触发该技能。注意:普通文档(`/doc/*`)请用
Open skill

