Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions skills/lark-approval/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,19 @@ metadata:

## 选哪个命令

| 想做什么 | 命令 |
|---|---|
| 查待办/已办 | `tasks query`(`topic`:1待办 2已办 17未读 18已读)|
| 看表单/进度/当前节点 | `instances get` |
| 同意/拒绝 | `tasks approve` / `tasks reject` |
| 转交/加签/退回 | `tasks transfer` / `tasks add_sign` / `tasks rollback` |
| 催办 | `tasks remind` |
| 撤回/抄送/按定义查已发起 | `instances cancel` / `instances cc` / `instances initiated` |
| 想做什么 | 命令 | 按需读取 reference |
|---|---|---|
| 查待办/已办 | `tasks query`(`topic`:1待办 2已办 17未读 18已读) | [`lark-approval-tasks-query.md`](references/lark-approval-tasks-query.md) |
| 看表单/进度/当前节点 | `instances get` | [`lark-approval-instance-get.md`](references/lark-approval-instance-get.md) |
| 同意审批 | `tasks approve` | [`lark-approval-tasks-approve.md`](references/lark-approval-tasks-approve.md) |
| 拒绝审批 | `tasks reject` | [`lark-approval-tasks-reject.md`](references/lark-approval-tasks-reject.md) |
| 转交审批 | `tasks transfer` | [`lark-approval-tasks-transfer.md`](references/lark-approval-tasks-transfer.md) |
| 加签审批 | `tasks add_sign` | [`lark-approval-tasks-add-sign.md`](references/lark-approval-tasks-add-sign.md) |
| 退回审批 | `tasks rollback` | [`lark-approval-tasks-rollback.md`](references/lark-approval-tasks-rollback.md) |
| 催办审批 | `tasks remind` | [`lark-approval-tasks-remind.md`](references/lark-approval-tasks-remind.md) |
| 撤回已发起审批 | `instances cancel` | [`lark-approval-instance-cancel.md`](references/lark-approval-instance-cancel.md) |
| 给审批实例追加抄送 | `instances cc` | [`lark-approval-instance-cc.md`](references/lark-approval-instance-cc.md) |
| 按定义查已发起审批 | `instances initiated` | [`lark-approval-instance-initiated.md`](references/lark-approval-instance-initiated.md) |

处理链:`tasks query` 拿 `instance_code` + `task_id`(操作必须成对带上)→ 需要细节再 `instances get` → 执行操作。

Expand Down
106 changes: 106 additions & 0 deletions skills/lark-approval/references/lark-approval-instance-cancel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@

# approval instances cancel

> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。

撤回一个已发起的审批实例(用户级写操作)。通常先通过 `instances initiated`、`tasks query` 或 `instances get` 确认目标审批实例,拿到 `instance_code` 后再执行撤回。

> [!CAUTION]
> 这是 **high-risk-write** 写操作。建议先用 `--dry-run` 预览;真正执行时,如果用户已明确要撤回该审批实例且目标实例无误,再带 `--yes` 运行。不要在未获用户明确同意时静默追加 `--yes`。

需要的 scopes: ["approval:instance:write"]

## 命令

```bash
# 先预览请求,不实际执行
lark-cli approval instances cancel \
--data '{"instance_code":"<INSTANCE_CODE>"}' \
--as user \
--dry-run

# 撤回一个审批实例
lark-cli approval instances cancel \
--data '{"instance_code":"<INSTANCE_CODE>"}' \
--as user \
--yes

# 通过文件传入请求体
lark-cli approval instances cancel \
--data @./cancel-body.json \
--as user \
--yes
```

## 参数

| 参数 | 必填 | 说明 |
|------|------|------|
| `--data '{...}'` | 是 | 请求体 JSON,使用 JSON 传入 |
| `instance_code` | 是 | 审批实例 Code;通常先通过 `instances initiated`、`tasks query` 或 `instances get` 获取 |
| `--as user` | 否 | 建议显式指定用户身份;审批实例撤回通常必须以用户身份执行 |
| `--yes` | 否 | 确认执行高风险写操作;未带时可能返回 `confirmation_required` / exit 10 |
| `--format` | 否 | 输出格式:`json`(默认)\| `ndjson` \| `table` \| `csv` |
| `--dry-run` | 否 | 预览 API 调用,不执行 |

## 典型前置步骤

如果你要找“我发起的审批实例”,可先查询已发起列表:

```bash
lark-cli approval instances initiated --params '{"page_size":20}' --as user
```

如果你已经在任务列表中定位到某个审批,也可以从任务里拿到实例 Code:

```bash
lark-cli approval tasks query --params '{"topic":"1"}' --as user
```

常用到的字段:

| 字段 | 说明 |
|------|------|
| `instances[].instance_code` | 审批实例 Code;撤回时必须提供 |
| `tasks[].instance_code` | 审批任务关联的审批实例 Code;也可作为撤回输入 |
| `tasks[].instance_status` | 审批实例状态;可用于判断是否仍处于可撤回阶段 |

如需先确认审批表单、当前节点、流转状态,可继续查看实例详情:

```bash
lark-cli approval instances get --params '{"instance_code":"<INSTANCE_CODE>"}' --as user
```

## 使用建议

- **撤回的是审批实例,不是单个任务**:`instances cancel` 只需要 `instance_code`,不需要 `task_id`。
- **优先确认实例是否仍可撤回**:已经通过、已拒绝、已撤销或已终止的实例通常不适合继续撤回。
- **优先从 `instances initiated` 获取目标实例**:因为撤回通常针对“我发起的审批”,这个入口最直接。
- **也可从 `tasks query` 反查 `instance_code`**:当你是从某个待办/已办上下文进入时,这样更方便。
- **先 `--dry-run` 再执行**:尤其在实例来源不明确、用户只给了标题关键字,或一次要核对多个实例时,先预览更安全。

## 输出与后续验证

- 该命令的成功响应重点在于“调用成功”,实际业务上通常还应继续验证审批实例状态是否已变为撤销。
- 推荐在执行后再次调用以下命令确认结果:

```bash
# 查看审批实例当前状态
lark-cli approval instances get --params '{"instance_code":"<INSTANCE_CODE>"}' --as user

# 或重新查看我发起的审批列表
lark-cli approval instances initiated --params '{"page_size":20}' --as user
```

## 相关 API 信息

基于当前 CLI schema:

- HTTP Method: `POST`
- Path: `instances/recall`
- 资源 ID: `instances.cancel`

## 参考

- [lark-approval](../SKILL.md) -- 审批技能说明
- [lark-shared](../../lark-shared/SKILL.md) -- 认证、权限和高风险写操作协议
130 changes: 130 additions & 0 deletions skills/lark-approval/references/lark-approval-instance-cc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@

# approval instances cc

> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。

给一个审批实例追加抄送人(用户级写操作)。通常先通过 `instances initiated`、`tasks query` 或 `instances get` 确认目标审批实例,拿到 `instance_code` 后,再提供抄送人的用户 ID 执行抄送。

> [!CAUTION]
> 这是 **high-risk-write** 写操作。建议先用 `--dry-run` 预览;真正执行时,如果用户已明确要抄送该审批实例且目标实例、抄送对象都无误,再带 `--yes` 运行。不要在未获用户明确同意时静默追加 `--yes`。

需要的 scopes: ["approval:instance:write"]

## 命令

```bash
# 先预览请求,不实际执行
lark-cli approval instances cc \
--data '{"instance_code":"<INSTANCE_CODE>","cc_user_ids":["ou_xxx"],"comment":"抄送给项目 owner 了解进展"}' \
--params '{"user_id_type":"open_id"}' \
--as user \
--dry-run

# 按 open_id 抄送一个人
lark-cli approval instances cc \
--data '{"instance_code":"<INSTANCE_CODE>","cc_user_ids":["ou_xxx"],"comment":"抄送给你知悉"}' \
--params '{"user_id_type":"open_id"}' \
--as user \
--yes

# 一次抄送多个人
lark-cli approval instances cc \
--data '{"instance_code":"<INSTANCE_CODE>","cc_user_ids":["ou_xxx","ou_yyy"],"comment":"请相关同学同步关注"}' \
--params '{"user_id_type":"open_id"}' \
--as user \
--yes

# 按 user_id 抄送
lark-cli approval instances cc \
--data '{"instance_code":"<INSTANCE_CODE>","cc_user_ids":["123456789"],"comment":"抄送给财务负责人"}' \
--params '{"user_id_type":"user_id"}' \
--as user \
--yes

# 通过文件传入请求体
lark-cli approval instances cc \
--data @./cc-body.json \
--params '{"user_id_type":"open_id"}' \
--as user \
--yes
```

## 参数

| 参数 | 必填 | 说明 |
|------|------|------|
| `--data '{...}'` | 是 | 请求体 JSON,使用 JSON 传入 |
| `instance_code` | 是 | 审批实例 Code;通常先通过 `instances initiated`、`tasks query` 或 `instances get` 获取 |
| `cc_user_ids` | 是 | 抄送人的用户 ID 数组;需要和 `user_id_type` 保持一致 |
| `comment` | 否 | 抄送留言,例如 `抄送给你知悉`、`请同步关注该审批进展` |
| `--params '{"user_id_type":"..."}'` | 否 | 查询参数 JSON;用于声明 `cc_user_ids` 内用户 ID 的类型 |
| `user_id_type` | 否 | 用户 ID 类型:`user_id` \| `union_id` \| `open_id`;未显式指定时要特别确认抄送人的 ID 类型 |
| `--as user` | 否 | 建议显式指定用户身份;审批实例抄送通常必须以用户身份执行 |
| `--yes` | 否 | 确认执行高风险写操作;未带时可能返回 `confirmation_required` / exit 10 |
| `--format` | 否 | 输出格式:`json`(默认)\| `ndjson` \| `table` \| `csv` |
| `--dry-run` | 否 | 预览 API 调用,不执行 |

## 典型前置步骤

如果你要找“我发起的审批实例”,可先查询已发起列表:

```bash
lark-cli approval instances initiated --params '{"page_size":20}' --as user
```

如果你已经在任务列表中定位到某个审批,也可以从任务里拿到实例 Code:

```bash
lark-cli approval tasks query --params '{"topic":"1"}' --as user
```

常用到的字段:

| 字段 | 说明 |
|------|------|
| `instances[].instance_code` | 审批实例 Code;抄送时必须提供 |
| `tasks[].instance_code` | 审批任务关联的审批实例 Code;也可作为抄送输入 |
| `tasks[].title` | 任务标题,可用于确认是否是要操作的那个审批 |
| `tasks[].instance_status` | 审批实例状态;可用于判断当前审批是否仍处于进行中 |

如果你手里只有姓名或邮箱,建议先通过联系人能力解析出正确的用户 ID,再执行抄送。

如需先确认审批表单、当前节点、流转状态,可继续查看实例详情:

```bash
lark-cli approval instances get --params '{"instance_code":"<INSTANCE_CODE>"}' --as user
```

## 使用建议

- **抄送的是审批实例,不是单个任务**:`instances cc` 只需要 `instance_code`,不需要 `task_id`。
- **`cc_user_ids` 与 `user_id_type` 必须匹配**:例如传 open_id 就把 `user_id_type` 设为 `open_id`;不要混用。
- **`cc_user_ids` 是数组**:即使只抄送一个人,也要按数组形式传入。
- **优先显式传 `user_id_type`**:这样 agent 更容易判断参数含义,也能减少 ID 类型不匹配带来的失败。
- **优先从 `instances initiated` 获取目标实例**:因为抄送常见于“我发起的审批”场景,这个入口最直接。
- **也可从 `tasks query` 反查 `instance_code`**:当你是从某个审批上下文进入时,这样更方便。
- **`comment` 建议简洁明确**:例如 `抄送给你知悉`、`请同步关注审批进展`。避免过长或模糊描述。
- **先 `--dry-run` 再执行**:尤其在抄送对象较多、抄送人来源不明确,或需要让用户先核对实例标题时,先预览更安全。

## 输出与后续验证

- 该命令的成功响应重点在于“调用成功”,实际业务上通常还应继续确认抄送是否生效。
- 推荐在执行后再次调用以下命令确认结果:

```bash
# 查看审批实例当前状态
lark-cli approval instances get --params '{"instance_code":"<INSTANCE_CODE>"}' --as user
```

## 相关 API 信息

基于当前 CLI schema:

- HTTP Method: `POST`
- Path: `instances/add_cc`
- 资源 ID: `instances.cc`

## 参考

- [lark-approval](../SKILL.md) -- 审批技能说明
- [lark-shared](../../lark-shared/SKILL.md) -- 认证、权限和高风险写操作协议
Loading
Loading