提供【工作协同】全流程执行能力。用户一旦表达“写汇报/发汇报/发周报/提交汇报/查看收件箱/查待办/任务协作/业务单元”等执行意图,必须进入本 Skill 的脚本调用流程;仅当用户明确是纯咨询(如问规则、问怎么做)时,才允许先文字说明并二次确认是否执行。本 Skill 通过依赖 `cms-auth-skills`...
---
name: cms-cwork-workflow
description: 提供【工作协同】全流程执行能力。用户一旦表达“写汇报/发汇报/发周报/提交汇报/查看收件箱/查待办/任务协作/业务单元”等执行意图,必须进入本 Skill 的脚本调用流程;仅当用户明确是纯咨询(如问规则、问怎么做)时,才允许先文字说明并二次确认是否执行。本 Skill 通过依赖 `cms-auth-skills` 获取 `AppKey` 并完成鉴权后,才允许进入脚本调用链路。
skillcode: cms-cwork-workflow
github: https://github.com/xgjk/cwork-skills
dependencies:
- cms-auth-skills
# bump 时须同步修改同目录下 version.json 的 version 字段
version: 1.0.14
tools_provided:
- name: cwork_client
category: exec
risk_level: medium
permission: exec
description: CWork API共享客户端,封装HTTP请求、认证和所有业务API方法
status: active
- name: cwork-search-emp
category: exec
risk_level: low
permission: read
description: 搜索员工信息(支持模糊查询)
status: active
- name: cwork-send-report
category: exec
risk_level: medium
permission: write
description: 发送工作协同汇报(🚨限制:当你明确知道确切的人员姓名时才可使用;如果你不知道发给谁,绝对不要猜,立即停止使用此工具!)
status: active
- name: cwork-query-report
category: exec
risk_level: low
permission: read
description: 查询汇报(收件箱/发件箱/详情/历史/按汇报ID查正文与附件等)
status: active
- name: cwork-create-task
category: exec
risk_level: medium
permission: write
description: 创建工作计划/任务
status: active
- name: cwork-review-report
category: exec
risk_level: medium
permission: write
description: 审阅汇报(回复/标记已读)
status: active
- name: cwork-query-tasks
category: exec
risk_level: low
permission: read
description: 查询任务(我的/创建的/团队/详情)
status: active
- name: cwork-nudge-report
category: exec
risk_level: medium
permission: write
description: 催办闭环(识别未闭环/生成催办/发送)
status: active
- name: cwork-todo
category: exec
risk_level: medium
permission: write
description: 待办管理(查询/完成决策/建议/反馈)
status: active
- name: cwork-templates
category: exec
risk_level: low
permission: read
description: 查询汇报模板列表
status: active
- name: cwork-draft-box
category: exec
risk_level: high
permission: write
description: 草稿箱列表(5.24)与批量删除草稿(5.28)
status: active
- name: cwork-business-unit
category: exec
risk_level: medium
permission: write
description: 业务单元管理(创建/更新/查询/删除)
status: active
- name: cms-match-businessunit
category: exec
risk_level: medium
permission: write
description: 自动根据正文智能选择业务单元去发送(🚨前置要求:如果不清楚具体该发给谁,必须优先执行这个工具!哪怕报错未匹配,也要先调!)
status: active
- name: cwork-virtual-employee
category: exec
risk_level: medium
permission: write
description: 虚拟员工管理(创建/列表/修改/删除),并在汇报/回复/任务中透传 virtualEmpId
status: active
---
# cms-cwork-workflow
## 核心定位
本 Skill 只做一件事:根据用户执行意图,读取对应 `references/*.md`,再执行 `scripts/*.py`。
参数、边界、分支逻辑都以 `references` 为准,`SKILL.md` 只负责入口和流程约束。
## 强制前置(保持不变)
调用任何脚本前,必须先通过依赖 Skill `cms-auth-skills` 获取有效 `AppKey`。
未鉴权时,不允许执行本 Skill 的任何 Python 脚本。
本 Skill 发起的所有 CWork API 请求均基于该 `AppKey` 鉴权。
AppKey 的获取与传递方式必须为:由上游 `cms-auth-skills` 注入/传递到本 Skill 执行命令中(`--app-key`)。
## 标准执行流程(必须遵循)
1. 识别用户是“执行动作”还是“纯咨询”。
2. 若是执行动作:先定位目标脚本。
3. 先读取 `references/auth.md`,确保 AppKey 获取与注入规则满足(未读不得进入鉴权相关链路)。
4. 再读取该脚本对应的 `references/*.md`(未读不得执行)。
5. 按文档组装参数并执行 `python3 scripts/<name>.py`。
6. 如一轮调用多个脚本,每个脚本的 reference 都要先读再执行。
7. 查询汇报/任务时,若结果可识别业务 ID,应优先返回可点击 `shareLink`;如补链失败,不得阻断主查询结果。
8. 查询汇报时,只要用户给出了疑似汇报唯一编码(例如 `2603ABFRZ`、`D2606473` 这类字母数字混合编码),**必须优先按编码精确检索**,不得先路由到 `inbox/outbox` 这类“按收件箱/发件箱翻页找标题”的流程;优先使用 `cwork-query-report.py --mode search-list --report-code <编码>`,命中后再根据需要取详情 / `record-simple-info`。
- 识别规则:如果用户原话里出现“汇报/搜汇报/查汇报/找汇报/搜索汇报”等动作词,并且后面跟着一段疑似编码(通常为 6~20 位、包含字母和数字,允许以单个字母开头),一律视为 `report-code`,**不要**把它当普通关键词。
- 典型例子:`帮我搜索汇报2603ABFRZ`、`查一下 D2606473 这条汇报`、`搜汇报 2605ABICZ 并看回复`。
9. 用户表达“发汇报/写汇报/提交汇报”且提到“建议人/决策人/节点/流程/reportLevelList”时,必须走汇报链路(`cwork-send-report.py` 或 `cms-match-businessunit.py`),禁止误路由到 `cwork-create-task.py`。
## 常用命令与必读文档
| 脚本 | 必读 reference | 用途 |
|------|----------------|------|
| `cwork-search-emp.py` | `references/cwork-search-emp.md` | 搜索员工 |
| `cwork-send-report.py` | `references/cwork-send-report.md` | 发送汇报(草稿 -> 确认) |
| `cms-match-businessunit.py` | `references/cms-match-businessunit.md` | 正文匹配业务单元并发送 |
| `cwork-query-report.py` | `references/cwork-query-report.md` | 查询汇报 / 分页搜索汇报列表 |
| `cwork-create-task.py` | `references/cwork-create-task.md` | 创建任务 |
| `cwork-review-report.py` | `references/cwork-review-report.md` | 审阅汇报 |
| `cwork-query-tasks.py` | `references/cwork-query-tasks.md` | 查询任务 |
| `cwork-nudge-report.py` | `references/cwork-nudge-report.md` | 催办闭环 |
| `cwork-todo.py` | `references/cwork-todo.md` | 待办管理 |
| `cwork-templates.py` | `references/cwork-templates.md` | 模板查询 |
| `cwork-draft-box.py` | `references/cwork-draft-box.md` | 草稿箱 |
| `cwork-business-unit.py` | `references/cwork-business-unit.md` | 业务单元管理 |
| `cwork-virtual-employee.py` | `references/cwork-virtual-employee.md` | 虚拟员工管理 |
补充:写/发汇报场景,还需先读 `references/report-virtual-identity.md`。
## 测试示例(推荐)
### 示例 1:查未读汇报
```bash
# 第一步:先读 references/cwork-query-report.md
# 第二步:执行脚本
python3 scripts/cwork-query-report.py --app-key "<AppKey>" --mode unread --page-size 10
```
### 示例 2:分页搜索汇报列表
```bash
# 第一步:先读 references/cwork-query-report.md
python3 scripts/cwork-query-report.py \
--app-key "<AppKey>" \
--mode search-list \
--page-index 1 \
--page-size 20 \
--start-date 2026-01-01 \
--end-date 2026-01-31 \
--keyword "公章" \
--classification-id 31121223 \
--from-emp-id <senderEmpId> \
--to-emp-id <receiverEmpId>
```
> 提醒:`search-list` 对应开放接口 `/open-api/work-report/report/record/searchPage`。当用户给出汇报唯一编码时,优先使用 `--report-code` 做精确搜索;若没有明确编码,再使用 `--keyword` 进行模糊搜索。关键词可匹配汇报主题、唯一编码、发/收件人和正文内容;`pageIndex` 从 0 开始,而脚本参数 `--page-index` 仍按常见习惯从 1 开始,脚本会自动转换。
### 示例 3:按汇报唯一编码精确搜索
```bash
# 第一步:先读 references/cwork-query-report.md
python3 scripts/cwork-query-report.py \
--app-key "<AppKey>" \
--mode search-list \
--page-index 1 \
--page-size 20 \
--report-code <ReportCode>
```
> 这里的 `<ReportCode>` 只是占位符,不要填真实编号到文档示例里。
### 示例 4:标准发送汇报(两步)
```bash
# 第一步:先读 references/cwork-send-report.md
python3 scripts/cwork-send-report.py \
--app-key "<AppKey>" \
--title "周报" \
--content "<p>本周完成联调</p>" \
--receivers "张三" \
--confirm-save-draft
# 第二步:用户明确确认后再发出
python3 scripts/cwork-send-report.py --app-key "<AppKey>" --draft-id "<reportId>" --confirm-send
```
> 字段说明:上述 `--title` / `--content` 是脚本参数名;脚本调用开放接口时会自动映射为请求体字段 `main` / `contentHtml`。
### 示例 3:收件人不明确时先匹配业务单元
```bash
# 第一步:先读 references/cms-match-businessunit.md
python3 scripts/cms-match-businessunit.py \
--app-key "<AppKey>" \
--title "周报" \
--content "<p>本周完成 API 联调</p>" \
--content-type html \
--dry-run
```
## 反向示例(不要这样做)
- 未获取 `AppKey` 就直接执行 `scripts/*.py`。
- 没读对应 `references/*.md` 就起调脚本。
- 发送汇报时一次性带 `--confirm-send` 直接发出(缺少草稿确认步骤)。
- 保存/更新草稿时不带 `--confirm-save-draft`(未获用户确认即落草稿)。
- `cms-match-businessunit.py` 返回未匹配后,擅自猜测接收人继续发送。
- 测试/调试汇报默认发给无关同事(应优先 `--test-mode` + 当前用户本人或测试账号)。
- 用户明确在配置汇报节点(如建议/决策)却调用 `cwork-create-task.py` 创建任务。
## 错误处理与通用参数
通用错误格式、特殊字符处理、`--params-file` 用法请查看 `references/common-params.md`。
---
## 目录结构
```
cms-cwork-workflow/
├── SKILL.md ← 本文件(意图级接口文档)
├── scripts/
│ ├── cwork_client.py ← 共享 API 客户端(HTTP 封装 + 所有 API 方法)
│ ├── cwork-search-emp.py ← 0. 搜索员工
│ ├── cwork-send-report.py ← 1. 发送汇报
│ ├── cwork-query-report.py ← 2. 查询汇报
│ ├── cwork-create-task.py ← 3. 创建任务
│ ├── cwork-review-report.py ← 4. 审阅汇报
│ ├── cwork-query-tasks.py ← 5. 查询任务
│ ├── cwork-nudge-report.py ← 6. 催办闭环
│ ├── cwork-todo.py ← 7. 待办管理
│ ├── cwork-templates.py ← 8. 模板管理
│ ├── cwork-draft-box.py ← 9. 草稿箱列表 / 批量删除(API 5.24 / 5.28)
│ ├── cwork-business-unit.py ← 10. 业务单元管理
│ ├── cms-match-businessunit.py ← 11. 正文匹配业务单元并发汇报
│ └── cwork-virtual-employee.py ← 12. 虚拟员工管理
└── references/
├── auth.md
├── cwork-search-emp.md
├── cwork-send-report.md
├── cwork-query-report.md
├── cwork-create-task.md
├── cwork-review-report.md
├── cwork-query-tasks.md
├── cwork-nudge-report.md
├── cwork-todo.md
├── cwork-templates.md
├── cwork-draft-box.md
├── cwork-business-unit.md
├── cms-match-businessunit.md
├── cwork-virtual-employee.md
├── report-virtual-identity.md
├── edge-cases.md
├── agent-patterns.md
├── common-params.md
└── maintenance.md ← Skill 维护/发布参考(非 Cursor 规则)
```
don't have the plugin yet? install it then click "run inline in claude" again.