forked from AxTps/Starlight_Lancher
feat:移除了弹窗,服务器添加sls
This commit is contained in:
175
.agents/skills/lark-task/SKILL.md
Normal file
175
.agents/skills/lark-task/SKILL.md
Normal file
@ -0,0 +1,175 @@
|
||||
---
|
||||
name: lark-task
|
||||
version: 1.0.0
|
||||
description: "飞书任务:管理任务、清单和任务智能体。创建待办任务、查看和更新任务状态、拆分子任务、组织任务清单、分配协作成员、上传任务附件、注册或注销任务智能体、更新任务智能体的主页数据、写入智能体任务记录。当用户需要创建待办事项、查看任务列表、跟踪任务进度、管理项目清单或给他人分配任务、为任务上传附件文件、注册注销任务智能体、更新智能体主页数据、写入任务记录时使用。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["lark-cli"]
|
||||
cliHelp: "lark-cli task --help"
|
||||
---
|
||||
|
||||
# task (v2)
|
||||
|
||||
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理**
|
||||
|
||||
> **任务搜索技巧**:先区分用户是否**特地指定使用搜索 skill**,以及是否真的提供了**查询关键字**(例如任务名称、关键词、片段描述)。如果用户特地指定使用搜索 skill,或明确给出了任务查询关键字,则目标是**任务**时优先使用 `+search`。如果用户没有特地指定使用搜索 skill,且意图里没有查询关键字,只有范围条件(例如“今年以来”“已完成”“由我创建”“我关注的”),并且使用 `+search` 与 `+get-related-tasks` / `+get-my-tasks` 都能达到目的时,应优先使用列表型能力,而不是搜索型能力。其中,“与我相关 / 我关注的 / 由我创建”等优先考虑 `+get-related-tasks`;“我负责的 / 分配给我”的列表优先考虑 `+get-my-tasks`。不要把时间范围词(例如“今年以来”)本身误当成 `query` 去走搜索。
|
||||
> **任务搜索相关性提示**:`+search` 当前不会自动判断搜索结果与搜索发起人的相关性。如果用户明确要求搜索“与我相关”的任务,必须先识别具体关系,获取当前用户的 `open_id`,并显式传入对应的 `--assignee`(负责人)、`--creator`(创建人)或 `--follower`(关注人)过滤条件;不能只依赖 `query` 期待自动返回与当前用户相关的任务。
|
||||
> **任务清单搜索技巧**:任务清单也遵循同样的判断逻辑。先区分用户是否**特地指定使用搜索 skill**,以及是否真的提供了**清单查询关键字**(例如清单名称、关键词、片段描述)。如果用户特地指定使用搜索 skill,或明确给出了清单查询关键字,则优先使用 `+tasklist-search`。如果用户没有特地指定使用搜索 skill,且意图里没有查询关键字,只有范围条件(例如“由我创建的任务清单”“今年以来创建的清单”),并且使用搜索或原生列取清单都能达到目的时,应优先使用原生 `tasklists.list` 接口列取清单(先 `schema task.tasklists.list`,再 `lark-cli task tasklists list --as user ...`),再按 `creator`、`created_at` 等字段做本地筛选和分页控制。
|
||||
> **意图区分补充**:像“搜索飞书中今年以来我关注的任务”这类表达,虽然字面带有“搜索”,但如果没有真正的查询关键字,且本质是在限定“与我相关 + 时间范围”,则应优先走 `+get-related-tasks`;像“搜索飞书中由我创建的任务清单”这类表达,如果没有清单关键字,且本质是在限定“清单范围 + 创建者”,则应优先走原生 `tasklists.list` 后筛选,而不是直接走搜索型 shortcut。
|
||||
> **用户身份识别**:在用户身份(user identity)场景下,如果用户提到了“我”(例如“分配给我”、“由我创建”),请默认获取当前登录用户的 `open_id` 作为对应的参数值。
|
||||
> **术语理解 — 待办 disambiguation(必读)**:
|
||||
> - 用户提到「待办 / todo / 任务」时,**先判断归属**,不要默认走本 skill。
|
||||
> - **走 [lark-minutes](../lark-minutes/SKILL.md) 的 `minutes +todo`**(禁止本 skill):上下文含 **妙记 / 会议纪要 / minute_token / 妙记 URL**(`/minutes/`);或「在某某妙记里新建/修改待办」「妙记 AI 待办」「会议录制里的待办」。
|
||||
> - **走本 skill(lark-task)**:任务清单、分配给我、项目待办、截止日期/提醒、子任务、任务清单成员;或 applink 含 `client/todo/task?guid=`;或明确说「飞书任务」「任务中心」「我的任务清单」。
|
||||
> - **禁止**:用户要在妙记里加待办时,**不要**调用 `task tasklists list`、`task +create` 或任何 task 命令去「找清单再放任务」。
|
||||
> **友好输出**:在输出任务(或清单)的执行结果给用户时,建议同时提取并输出命令返回结果中的 `url` 字段(任务链接),以便用户可以直接点击跳转查看详情。
|
||||
|
||||
> **创建/更新注意**:
|
||||
> 1. 只有在设置了 `due`(截止时间)的情况下,才能设置 `repeat_rule`(重复规则)和 `reminder`(提醒时间)。
|
||||
> 2. 若同时设置了 `start`(开始时间)和 `due`(截止时间),开始时间必须小于或等于截止时间。
|
||||
> 3. 使用 tenant_access_token(应用身份)时,无法跨租户添加任务成员。
|
||||
|
||||
> **查询注意**:
|
||||
> 1. 在输出任务详情时,如果需要渲染负责人、创建人等人员字段,除了展示 `id` (例如 open_id) 外,还必须通过其他方式(例如调用通讯录技能)尝试获取并展示这个人的真实名字,以便用户更容易识别。
|
||||
> 2. 在输出清单详情时,如果需要渲染 owner、member、角色成员等人员字段,也必须像任务成员展示一样,除了展示 `id` 外,尽量解析并展示对应人员的真实名字。
|
||||
> 3. 在输出任务或清单详情时,如果需要渲染创建时间、截止时间等字段,需要使用本地时区来渲染(格式为2006-01-02 15:04:05)。
|
||||
|
||||
> **Task GUID 定义**:
|
||||
> Task OpenAPI 中用于更新/操作任务的 `guid` 是任务的全局唯一标识(GUID),不是客户端展示的任务编号(例如 `t104121` / `suite_entity_num`)。
|
||||
> 对于 Feishu 的任务 applink(例如 `.../client/todo/task?guid=...`),必须使用 URL query 里的 `guid` 参数作为 task guid。
|
||||
|
||||
> **从任务清单定位并修改任务的最短路径**:
|
||||
> 1. 已知任务清单 GUID 时直接使用,不要先搜索;已知任务清单 applink 时,取 URL query 中的 `guid` 作为 `tasklist_guid`。
|
||||
> 2. 只有清单名称或关键词、没有 GUID/applink 时,才调用一次 `+tasklist-search` 解析目标清单。
|
||||
> 3. 按原生 API 规则先执行 `lark-cli schema task.tasklists.tasks`,再执行 `lark-cli task tasklists tasks --params '{"tasklist_guid":"<tasklist_guid>"}' --as user`。
|
||||
> 4. 从清单任务结果中取任务的 `guid`,直接传给 `+update` 或 `+complete`;禁止传客户端展示编号(例如 `t104121`)。这两个 shortcut 也可直接接收包含 `guid=` 的任务 applink。
|
||||
> 5. `+update` 返回 `updated_fields` 和每个任务的服务端 `confirmed` 字段;`+complete` 返回 `status`、`completed_at`、`already_completed`。这些字段已确认目标状态时,不要例行追加 `tasks get`;仅在服务端未返回所需字段或用户明确要求完整复核时再查询详情。
|
||||
|
||||
| Shortcut | 说明 |
|
||||
|----------|------|
|
||||
| [`+create`](references/lark-task-create.md) | create a task |
|
||||
| [`+update`](references/lark-task-update.md) | update task attributes |
|
||||
| [`+set-ancestor`](references/lark-task-set-ancestor.md) | set or clear a task ancestor |
|
||||
| [`+comment`](references/lark-task-comment.md) | add a comment to a task |
|
||||
| [`+complete`](references/lark-task-complete.md) | mark a task as complete |
|
||||
| [`+reopen`](references/lark-task-reopen.md) | reopen a completed task |
|
||||
| [`+assign`](references/lark-task-assign.md) | assign or remove task members |
|
||||
| [`+followers`](references/lark-task-followers.md) | manage task followers |
|
||||
| [`+reminder`](references/lark-task-reminder.md) | manage task reminders |
|
||||
| [`+get-my-tasks`](references/lark-task-get-my-tasks.md) | List tasks assigned to me |
|
||||
| [`+get-related-tasks`](references/lark-task-get-related-tasks.md) | list tasks related to me |
|
||||
| [`+search`](references/lark-task-search.md) | search tasks |
|
||||
| [`+upload-attachment`](references/lark-task-upload-attachment.md) | upload a local file as an attachment to a task |
|
||||
| [`+tasklist-create`](references/lark-task-tasklist-create.md) | create a tasklist and optionally add tasks |
|
||||
| [`+tasklist-search`](references/lark-task-tasklist-search.md) | search tasklists |
|
||||
| [`+tasklist-task-add`](references/lark-task-tasklist-task-add.md) | add tasks to a tasklist |
|
||||
| [`+tasklist-members`](references/lark-task-tasklist-members.md) | manage tasklist members |
|
||||
|
||||
## API Resources
|
||||
|
||||
```bash
|
||||
lark-cli schema task.<resource>.<method> # 调用 API 前必须先查看参数结构
|
||||
lark-cli task <resource> <method> [flags] # 调用 API
|
||||
```
|
||||
|
||||
> **重要**:使用原生 API 时,必须先运行 `schema` 查看 `--data` / `--params` 参数结构,不要猜测字段格式。
|
||||
|
||||
### tasks
|
||||
|
||||
- `create` — 创建任务
|
||||
- `delete` — 删除任务
|
||||
- `get` — 获取任务详情
|
||||
- `list` — 列取任务列表
|
||||
- `patch` — 更新任务
|
||||
|
||||
### tasklists
|
||||
|
||||
- `add_members` — 添加清单成员
|
||||
- `create` — 创建清单
|
||||
- `delete` — 删除清单
|
||||
- `get` — 获取清单详情
|
||||
- `list` — 获取清单列表
|
||||
- `patch` — 更新清单
|
||||
- `remove_members` — 移除清单成员
|
||||
- `tasks` — 获取清单任务列表
|
||||
|
||||
### subtasks
|
||||
|
||||
- `create` — 创建子任务
|
||||
- `list` — 获取任务的子任务列表
|
||||
|
||||
### members
|
||||
|
||||
- `add` — 添加任务成员
|
||||
- `remove` — 移除任务成员
|
||||
|
||||
### sections
|
||||
|
||||
- `create` — 创建自定义分组
|
||||
- `delete` — 删除自定义分组
|
||||
- `get` — 获取自定义分组详情
|
||||
- `list` — 获取自定义分组列表
|
||||
- `patch` — 更新自定义分组
|
||||
- `tasks` — 获取自定义分组任务列表
|
||||
|
||||
### custom_fields
|
||||
|
||||
- `create` — 创建自定义字段
|
||||
- `get` — 获取自定义字段详情
|
||||
- `patch` — 更新自定义字段
|
||||
- `list` — 获取自定义字段列表
|
||||
- `add` — 将自定义字段加入资源
|
||||
- `remove` — 将自定义字段移出资源
|
||||
|
||||
### custom_field_options
|
||||
|
||||
- `create` — 创建自定义字段选项
|
||||
- `patch` — 更新自定义字段选项
|
||||
|
||||
### agent
|
||||
|
||||
- `update_agent_profile` — 更新任务代理的主页内容数据。
|
||||
- `register_agent` — 注册AI 智能体
|
||||
|
||||
### agent_task_step_info
|
||||
|
||||
- `append_task_steps` — 写入任务记录。
|
||||
|
||||
## 权限表
|
||||
|
||||
| 方法 | 所需 scope |
|
||||
|------|-----------|
|
||||
| `tasks.create` | `task:task:write` |
|
||||
| `tasks.delete` | `task:task:write` |
|
||||
| `tasks.get` | `task:task:read` |
|
||||
| `tasks.list` | `task:task:read` |
|
||||
| `tasks.patch` | `task:task:write` |
|
||||
| `tasklists.add_members` | `task:tasklist:write` |
|
||||
| `tasklists.create` | `task:tasklist:write` |
|
||||
| `tasklists.delete` | `task:tasklist:write` |
|
||||
| `tasklists.get` | `task:tasklist:read` |
|
||||
| `tasklists.list` | `task:tasklist:read` |
|
||||
| `tasklists.patch` | `task:tasklist:write` |
|
||||
| `tasklists.remove_members` | `task:tasklist:write` |
|
||||
| `tasklists.tasks` | `task:tasklist:read` |
|
||||
| `subtasks.create` | `task:task:write` |
|
||||
| `subtasks.list` | `task:task:read` |
|
||||
| `members.add` | `task:task:write` |
|
||||
| `members.remove` | `task:task:write` |
|
||||
| `sections.create` | `task:section:write` |
|
||||
| `sections.delete` | `task:section:write` |
|
||||
| `sections.get` | `task:section:read` |
|
||||
| `sections.list` | `task:section:read` |
|
||||
| `sections.patch` | `task:section:write` |
|
||||
| `sections.tasks` | `task:section:read` |
|
||||
| `custom_fields.create` | `task:custom_field:write` |
|
||||
| `custom_fields.get` | `task:custom_field:read` |
|
||||
| `custom_fields.patch` | `task:custom_field:write` |
|
||||
| `custom_fields.list` | `task:custom_field:read` |
|
||||
| `custom_fields.add` | `task:custom_field:write` |
|
||||
| `custom_fields.remove` | `task:custom_field:write` |
|
||||
| `custom_field_options.create` | `task:custom_field:write` |
|
||||
| `custom_field_options.patch` | `task:custom_field:write` |
|
||||
| `agent.update_agent_profile` | `task:task:write` |
|
||||
| `agent.register_agent` | `task:task:write` |
|
||||
| `agent_task_step_info.append_task_steps` | `task:task:write` |
|
||||
38
.agents/skills/lark-task/references/lark-task-assign.md
Normal file
38
.agents/skills/lark-task/references/lark-task-assign.md
Normal file
@ -0,0 +1,38 @@
|
||||
# task +assign
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Assign or remove members (assignees) from a task.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Add an assignee
|
||||
lark-cli task +assign --task-id "<task_guid>" --add "ou_aaa"
|
||||
|
||||
# Add an app assignee
|
||||
lark-cli task +assign --task-id "<task_guid>" --add "cli_xxx"
|
||||
|
||||
# Transfer an assignee (remove old, add new)
|
||||
lark-cli task +assign --task-id "<task_guid>" --remove "ou_old" --add "ou_new"
|
||||
|
||||
# Add multiple assignees
|
||||
lark-cli task +assign --task-id "<task_guid>" --add "ou_aaa,ou_bbb"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--task-id <guid>` | Yes | The task GUID to modify. For Feishu task applinks, use the `guid` query parameter, not the `suite_entity_num` / display task ID like `t104121`. |
|
||||
| `--add <ids>` | No | Comma-separated assignee IDs. Use user `open_id`s like `ou_xxx` for people, or app IDs like `cli_xxx` for apps. |
|
||||
| `--remove <ids>` | No | Comma-separated assignee IDs. Use user `open_id`s like `ou_xxx` for people, or app IDs like `cli_xxx` for apps. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the task and members to add/remove.
|
||||
2. Execute the command.
|
||||
3. Report success and the new count of assignees.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
28
.agents/skills/lark-task/references/lark-task-comment.md
Normal file
28
.agents/skills/lark-task/references/lark-task-comment.md
Normal file
@ -0,0 +1,28 @@
|
||||
# task +comment
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Add a comment to an existing task.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Add a comment
|
||||
lark-cli task +comment --task-id "<task_guid>" --content "Looks good!"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--task-id <guid>` | Yes | The task GUID to comment on. For Feishu task applinks, use the `guid` query parameter, not the `suite_entity_num` / display task ID like `t104121`. |
|
||||
| `--content <text>` | Yes | The text content of the comment. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the task and comment content.
|
||||
2. Execute `lark-cli task +comment --task-id "..." --content "..."`
|
||||
3. Report success and comment ID.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
31
.agents/skills/lark-task/references/lark-task-complete.md
Normal file
31
.agents/skills/lark-task/references/lark-task-complete.md
Normal file
@ -0,0 +1,31 @@
|
||||
# task +complete
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Mark a task as completed.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Complete a task
|
||||
lark-cli task +complete --task-id "<task_guid>"
|
||||
|
||||
# A task applink is accepted directly; the CLI extracts its guid query value
|
||||
lark-cli task +complete --task-id "https://applink.larksuite.com/client/todo/task?guid=<task_guid>"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--task-id <guid-or-applink>` | Yes | Task OpenAPI GUID or a task applink containing `guid=`. Display task IDs such as `t104121` / `suite_entity_num` are rejected. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the task to complete.
|
||||
2. Execute the command.
|
||||
3. Read `data.status`, `data.completed_at`, and `data.already_completed` from the result. `already_completed: true` means the shortcut observed an already-completed task and skipped the PATCH.
|
||||
4. Do not routinely call `task tasks get` when the result already reports `status: done` and a non-zero `completed_at`. Query details only if confirmation fields are absent or the user explicitly asks for a full verification.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
79
.agents/skills/lark-task/references/lark-task-create.md
Normal file
79
.agents/skills/lark-task/references/lark-task-create.md
Normal file
@ -0,0 +1,79 @@
|
||||
# task +create
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Create a new task in Lark.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Create a task with all details
|
||||
lark-cli task +create \
|
||||
--summary "Quarterly Sales Review" \
|
||||
--description "Review the sales performance for the last quarter." \
|
||||
--assignee "ou_xxx" \
|
||||
--due "2026-03-25" \
|
||||
--tasklist-id "https://applink.larkoffice.com/client/todo/task_list?guid=a4b00000-000-000-000-00000000036c"
|
||||
|
||||
# Create a task assigned to an app
|
||||
lark-cli task +create \
|
||||
--summary "Nightly Sync" \
|
||||
--assignee "cli_xxx"
|
||||
|
||||
# Create a simple task
|
||||
lark-cli task +create \
|
||||
--summary "Buy milk"
|
||||
|
||||
# Create a milestone by passing an API field without a named flag
|
||||
lark-cli task +create \
|
||||
--summary "Release v2.0" \
|
||||
--due "2026-08-15" \
|
||||
--data '{"is_milestone":true}'
|
||||
|
||||
# Preview the API call without executing
|
||||
lark-cli task +create --summary "Test Task" --dry-run
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--summary <text>` | Yes | The title or summary of the task |
|
||||
| `--description <text>` | No | Detailed description of the task |
|
||||
| `--assignee <id>` | No | Assignee ID. Use user `open_id` like `ou_xxx` for people, or app ID like `cli_xxx` for apps. |
|
||||
| `--follower <id>` | No | Follower ID. Use user `open_id` like `ou_xxx` for people, or app ID like `cli_xxx` for apps. |
|
||||
| `--due <time>` | No | Due date. Supports ISO 8601, `YYYY-MM-DD`, relative time (e.g., `+2d`), or ms timestamp. `YYYY-MM-DD` and relative time will automatically set it as an all-day task. |
|
||||
| `--tasklist-id <id>` | No | The GUID of the tasklist, or a full AppLink URL (the CLI will automatically extract the `guid` parameter from the URL). |
|
||||
| `--idempotency-key <key>` | No | Client token to ensure idempotency of the request. |
|
||||
| `--data <json>` | No | JSON object merged into the task create request for API fields without dedicated flags, such as `{"is_milestone":true}`. Explicit named flags override same-named fields in this object. |
|
||||
| `--dry-run` | No | Preview the API call (JSON payload) without actually creating the task. |
|
||||
|
||||
Use `lark-cli schema task.tasks.create` to confirm that an extra field is supported before passing it through `--data`. Prefer this shortcut over the raw `tasks create` command when `--data` can express the request. Do not assume that other shortcuts support `--data`; check each shortcut's `--help` output first.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm with the user: task summary, due date, assignee, and tasklist if necessary.
|
||||
- **Crucial Rule for Assignee**: If the user explicitly or implicitly says "create a task for me" (给我创建一个任务), or "help me create a task" (帮我新建/创建一个任务), you MUST assign the task to the current logged-in user. You can get the current user's `open_id` by executing `lark-cli auth status` (it already outputs JSON by default, so do not add `--json`) or `lark-cli contact +get-user` first, extracting `.identities.user.openId` (from `auth status`) or `.data.user.open_id` (from `contact +get-user`), and then passing it to the `--assignee` parameter.
|
||||
2. Execute `lark-cli task +create --summary "..." ...`
|
||||
3. Judge success by `ok == true` in the stdout JSON (the success envelope has no `code` field — do not test `code == 0`), then report the result: task ID (`data.guid`) and summary.
|
||||
|
||||
Example success response:
|
||||
|
||||
```json
|
||||
{
|
||||
"ok": true,
|
||||
"identity": "user",
|
||||
"data": {
|
||||
"guid": "e297d3d0-4b60-4a5f-a4d4-xxxxxxxxxxxx",
|
||||
"url": "https://applink.larkoffice.com/client/todo/detail?guid=e297d3d0-4b60-4a5f-a4d4-xxxxxxxxxxxx"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
|
||||
## References
|
||||
|
||||
- [lark-task](../SKILL.md) -- All task commands
|
||||
- [lark-shared](../../lark-shared/SKILL.md) -- Authentication and global parameters
|
||||
35
.agents/skills/lark-task/references/lark-task-followers.md
Normal file
35
.agents/skills/lark-task/references/lark-task-followers.md
Normal file
@ -0,0 +1,35 @@
|
||||
# task +followers
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Manage task followers. Add or remove followers from an existing task.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Add a follower
|
||||
lark-cli task +followers --task-id "<task_guid>" --add "ou_aaa"
|
||||
|
||||
# Add an app follower
|
||||
lark-cli task +followers --task-id "<task_guid>" --add "cli_xxx"
|
||||
|
||||
# Remove a follower
|
||||
lark-cli task +followers --task-id "<task_guid>" --remove "ou_aaa"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--task-id <guid>` | Yes | The task GUID to modify. For Feishu task applinks, use the `guid` query parameter, not the `suite_entity_num` / display task ID like `t104121`. |
|
||||
| `--add <ids>` | No | Comma-separated follower IDs. Use user `open_id`s like `ou_xxx` for people, or app IDs like `cli_xxx` for apps. |
|
||||
| `--remove <ids>` | No | Comma-separated follower IDs. Use user `open_id`s like `ou_xxx` for people, or app IDs like `cli_xxx` for apps. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the task and followers to add/remove.
|
||||
2. Execute the command.
|
||||
3. Report success.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
@ -0,0 +1,61 @@
|
||||
# task +get-my-tasks
|
||||
|
||||
If the user query only specifies a task name (e.g., "Complete task Lobster No. 1"), use this command to list and search for the task by its summary.
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
>
|
||||
> **⚠️ Note:** This API must be called with a user identity. **Do NOT use an app identity, otherwise the call will fail.**
|
||||
>
|
||||
> **Output rendering note:**
|
||||
> 1. If you need to present user fields (assignee, creator, etc.), do not only output the raw `id` (e.g. open_id). Also try to resolve and display the user's real name (e.g. via the contact skill) for readability.
|
||||
> 2. When rendering timestamps (e.g. created time, due time), use the local timezone. Format is 2006-01-02 15:04:05
|
||||
|
||||
List tasks assigned to the current user, with support for filtering by completion status, creation time, and due date.
|
||||
By default, the command will automatically paginate up to 20 times. Use `--page-all` to fetch more (up to 40 pages).
|
||||
|
||||
> **Pending vs all tasks:** When `--complete` is not provided, the result contains **both completed and incomplete tasks**.
|
||||
> For standup / daily-summary / pending-todo scenarios, you **must** pass `--complete=false`; otherwise completed tasks will be surfaced as if they were still pending.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Search for a specific task by name
|
||||
lark-cli task +get-my-tasks --query "Lobster No. 1"
|
||||
|
||||
# Get all my tasks, both completed and incomplete (fetches up to 20 pages by default)
|
||||
lark-cli task +get-my-tasks
|
||||
|
||||
# Pending-only: my incomplete tasks (use this for standup/daily-summary)
|
||||
lark-cli task +get-my-tasks --complete=false
|
||||
|
||||
# Pending-only with a due-date upper bound (e.g. end of today / this week)
|
||||
lark-cli task +get-my-tasks --complete=false --due-end "2026-03-27T23:59:59+08:00"
|
||||
|
||||
# Fetch all my tasks (up to 40 pages)
|
||||
lark-cli task +get-my-tasks --page-all
|
||||
|
||||
# Fetch up to 10 pages
|
||||
lark-cli task +get-my-tasks --page-limit 10
|
||||
|
||||
# Resume from a known page token
|
||||
lark-cli task +get-my-tasks --page-token "pt_xxx"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--query <string>` | No | Search for tasks by summary. Returns exact matches if any; otherwise returns partial matches. |
|
||||
| `--complete=<bool>` | No | Optional. If not provided, it fetches all tasks (both incomplete and completed). Set to `true` to fetch only completed tasks, or `false` for incomplete tasks. |
|
||||
| `--created_at <string>` | No | Query tasks created after this time. Supports date: `YYYY-MM-DD`, relative: `-2d`, or ms timestamp. |
|
||||
| `--due-start <string>` | No | Query tasks with a due date after this time. Supports date: `YYYY-MM-DD`, relative: `-2d`, or ms timestamp. |
|
||||
| `--due-end <string>` | No | Query tasks with a due date before this time. Supports date: `YYYY-MM-DD`, relative: `-2d`, or ms timestamp. |
|
||||
| `--page-all` | No | Automatically paginate through all pages (max 40). |
|
||||
| `--page-limit <int>` | No | Max page limit (default 20). |
|
||||
| `--page-token <string>` | No | Start from the specified page token (useful for resuming a previous query). |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Determine the filters based on the user's request.
|
||||
2. Execute the command. The CLI will automatically loop up to the specified limit (default 20, or 40 with `--page-all`) to fetch records.
|
||||
3. Show the results (ID, summary, due time, and created date).
|
||||
@ -0,0 +1,53 @@
|
||||
# task +get-related-tasks
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
>
|
||||
> **⚠️ Note:** This API must be called with a user identity. **Do NOT use an app identity, otherwise the call will fail.**
|
||||
>
|
||||
> **Pagination / Time Cursor Rule:**
|
||||
> In `+get-related-tasks`, `page_token` is the task `updated_at` cursor in microseconds.
|
||||
>
|
||||
> **Execution Priority:**
|
||||
> 1. If the request contains a start/end time boundary (for example, "今年以来", "最近一个月", "从 3 月 1 日开始"), first convert the **start time** boundary to a microsecond `page_token` and query from that token.
|
||||
> 2. Continue pagination using returned `page_token` until `has_more=false`, but never exceed 40 total page fetches.
|
||||
> 3. Do NOT default to `--page-all` for time-bounded queries.
|
||||
>
|
||||
> Only use `--page-all` from the beginning when:
|
||||
> 1. the user explicitly asks for a full scan of all related tasks, or
|
||||
> 2. no time boundary can be inferred from the request.
|
||||
|
||||
List tasks related to the current user.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# List all related tasks
|
||||
lark-cli task +get-related-tasks
|
||||
|
||||
# List incomplete related tasks starting from a page token
|
||||
lark-cli task +get-related-tasks --include-complete=false --page-token "1752730590582902"
|
||||
|
||||
# Show only tasks created by me
|
||||
lark-cli task +get-related-tasks --created-by-me
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--include-complete=<bool>` | No | Default behavior includes completed tasks. Set to `false` to keep only incomplete tasks. |
|
||||
| `--page-all` | No | Automatically paginate through all pages (max 40). |
|
||||
| `--page-limit <int>` | No | Max page limit (default 20). |
|
||||
| `--page-token <string>` | No | Start from the specified page token. This token is the task's last update time cursor in microseconds. |
|
||||
| `--created-by-me` | No | Keep only tasks whose creator is the current user. This is a client-side filter applied after fetching related-task pages. |
|
||||
| `--followed-by-me` | No | Keep only tasks followed by the current user. This is a client-side filter applied after fetching related-task pages. |
|
||||
|
||||
> **Page Token Note:** In `+get-related-tasks`, the `page_token` is a microsecond-level cursor representing the task's last update time. For example, `1752730590582902` should be treated as an updated-at cursor, not a task ID.
|
||||
>
|
||||
> **Pagination Note for Client-side Filters:** When `--created-by-me` or `--followed-by-me` is used, filtering happens locally after each upstream related-task page is fetched. The returned `has_more` and `page_token` still describe the upstream cursor, so later pages may contain more matching tasks, or may contain none.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Determine whether the user needs all related tasks or a filtered subset.
|
||||
2. Execute `lark-cli task +get-related-tasks ...`
|
||||
3. Report the matching tasks and, if present, the next `page_token`.
|
||||
36
.agents/skills/lark-task/references/lark-task-reminder.md
Normal file
36
.agents/skills/lark-task/references/lark-task-reminder.md
Normal file
@ -0,0 +1,36 @@
|
||||
# task +reminder
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
> **Priority:** For creating or modifying task reminder times, prioritize using this `+reminder` shortcut over other task update methods. It provides a more reliable and direct way to manage reminders.
|
||||
|
||||
Manage task reminders. Set new reminders or remove existing ones. Note that setting a task reminder requires a due date.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Set a reminder (e.g., 30 minutes before due)
|
||||
lark-cli task +reminder --task-id "<task_guid>" --set "30"
|
||||
|
||||
# Set a reminder (e.g., 1 hour before due)
|
||||
lark-cli task +reminder --task-id "<task_guid>" --set "1h"
|
||||
|
||||
# Remove all reminders
|
||||
lark-cli task +reminder --task-id "<task_guid>" --remove "true"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--task-id <guid>` | Yes | The task GUID to modify. For Feishu task applinks, use the `guid` query parameter, not the `suite_entity_num` / display task ID like `t104121`. |
|
||||
| `--set <val>` | No | Relative fire minutes before the due time. Supports numbers (e.g., `30`) or units (e.g., `15m`, `1h`, `1d`). |
|
||||
| `--remove <bool>` | No | If set to `true`, removes all existing reminders from the task. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the task and reminder action.
|
||||
2. Execute the command.
|
||||
3. Report success.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
27
.agents/skills/lark-task/references/lark-task-reopen.md
Normal file
27
.agents/skills/lark-task/references/lark-task-reopen.md
Normal file
@ -0,0 +1,27 @@
|
||||
# task +reopen
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Reopen a previously completed task.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Reopen a task
|
||||
lark-cli task +reopen --task-id "<task_guid>"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--task-id <guid>` | Yes | The task GUID to reopen. For Feishu task applinks, use the `guid` query parameter, not the `suite_entity_num` / display task ID like `t104121`. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the task to reopen.
|
||||
2. Execute the command.
|
||||
3. Report success.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
41
.agents/skills/lark-task/references/lark-task-search.md
Normal file
41
.agents/skills/lark-task/references/lark-task-search.md
Normal file
@ -0,0 +1,41 @@
|
||||
# task +search
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
>
|
||||
> **⚠️ Note:** This API must be called with a user identity. **Do NOT use an app identity, otherwise the call will fail.**
|
||||
|
||||
Search tasks by keyword and optional filters.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Search by keyword
|
||||
lark-cli task +search --query "test"
|
||||
|
||||
# Search incomplete tasks assigned to specific users
|
||||
lark-cli task +search --assignee "ou_xxx,ou_yyy" --completed=false
|
||||
|
||||
# Search by due time range
|
||||
lark-cli task +search --query "release" --due "-1d,+7d"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--query <string>` | No | Search keyword. If omitted, at least one filter must be provided. |
|
||||
| `--creator <ids>` | No | Creator open_ids, comma-separated. |
|
||||
| `--assignee <ids>` | No | Assignee open_ids, comma-separated. |
|
||||
| `--follower <ids>` | No | Follower open_ids, comma-separated. |
|
||||
| `--completed=<bool>` | No | Filter by completion state. |
|
||||
| `--due <range>` | No | Due time range in `start,end` form. Each side supports ISO/date/relative/ms input. |
|
||||
| `--page-token <string>` | No | Page token for pagination. |
|
||||
| `--page-all` | No | Automatically paginate through all pages (max 40). |
|
||||
| `--page-limit <int>` | No | Max page limit (default 20). |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Build the keyword and filters from the user's request.
|
||||
2. Execute `lark-cli task +search ...`
|
||||
3. Report the matched tasks and include the next `page_token` if more results exist.
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
# task +set-ancestor
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Set a parent task for a task, or clear the parent to make it independent.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Set a parent task
|
||||
lark-cli task +set-ancestor --task-id "guid_1" --ancestor-id "guid_2"
|
||||
|
||||
# Clear the parent task
|
||||
lark-cli task +set-ancestor --task-id "guid_1"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--task-id <guid>` | Yes | The task GUID to update. |
|
||||
| `--ancestor-id <guid>` | No | The parent task GUID. Omit it to clear the ancestor. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the child task and, if applicable, the ancestor task.
|
||||
2. Execute `lark-cli task +set-ancestor ...`
|
||||
3. Report the updated task GUID and whether the ancestor was set or cleared.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
|
||||
@ -0,0 +1,35 @@
|
||||
# task +tasklist-create
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Create a new tasklist, and optionally batch create tasks within it.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Create an empty tasklist
|
||||
lark-cli task +tasklist-create --name "Q1 Goals"
|
||||
|
||||
# Create a tasklist and add members
|
||||
lark-cli task +tasklist-create --name "Project A" --member "ou_xxx,ou_yyy"
|
||||
|
||||
# Create a tasklist and batch create tasks within it
|
||||
lark-cli task +tasklist-create --name "Launch Checklist" --data '[{"summary": "Code Review", "assignee": "ou_aaa"}, {"summary": "Deploy", "assignee": "ou_bbb"}]'
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--name <text>` | Yes | The name of the tasklist. |
|
||||
| `--member <ids>` | No | Comma-separated list of user `open_id`s to add as editors. |
|
||||
| `--data <json>` | No | JSON array of task definitions to create and add to the tasklist automatically. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the tasklist name, members, and tasks (if any).
|
||||
2. Execute the command `lark-cli task +tasklist-create ...`.
|
||||
3. Report success, including the new tasklist ID and the result of the batch task creation.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
@ -0,0 +1,36 @@
|
||||
# task +tasklist-members
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Manage tasklist members (editors/owners).
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Add a member
|
||||
lark-cli task +tasklist-members --tasklist-id "tl_xxx" --add "ou_aaa"
|
||||
|
||||
# Remove a member
|
||||
lark-cli task +tasklist-members --tasklist-id "tl_xxx" --remove "ou_aaa"
|
||||
|
||||
# Replace all members exactly
|
||||
lark-cli task +tasklist-members --tasklist-id "tl_xxx" --set "ou_aaa,ou_bbb"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--tasklist-id <id>` | Yes | The GUID of the tasklist, or a full AppLink URL. |
|
||||
| `--add <ids>` | No | Comma-separated list of user `open_id`s to add as members. |
|
||||
| `--remove <ids>` | No | Comma-separated list of user `open_id`s to remove from members. |
|
||||
| `--set <ids>` | No | Comma-separated list of user `open_id`s to exactly set as members (replaces all existing). |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the tasklist and members to add/remove/set.
|
||||
2. Execute the command.
|
||||
3. Report success.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
@ -0,0 +1,38 @@
|
||||
# task +tasklist-search
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
>
|
||||
> **⚠️ Note:** This shortcut uses tasklist search followed by tasklist detail queries to render the final output.
|
||||
|
||||
Search tasklists by keyword and optional filters.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Search by keyword
|
||||
lark-cli task +tasklist-search --query "测试"
|
||||
|
||||
# Search tasklists created by specific users
|
||||
lark-cli task +tasklist-search --creator "ou_xxx,ou_yyy"
|
||||
|
||||
# Search by creation time range
|
||||
lark-cli task +tasklist-search --query "Q2" --create-time "-30d,+0d"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--query <string>` | No | Search keyword. If omitted, at least one filter must be provided. |
|
||||
| `--creator <ids>` | No | Creator open_ids, comma-separated. |
|
||||
| `--create-time <range>` | No | Creation time range in `start,end` form. Each side supports ISO/date/relative/ms input. |
|
||||
| `--page-token <string>` | No | Page token for pagination. |
|
||||
| `--page-all` | No | Automatically paginate through all pages (max 40). |
|
||||
| `--page-limit <int>` | No | Max page limit (default 20). |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Build the search keyword and filters from the user's request.
|
||||
2. Execute `lark-cli task +tasklist-search ...`
|
||||
3. Report the matched tasklists and the next `page_token` if more results exist.
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
# task +tasklist-task-add
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Add existing tasks to a tasklist.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Add a single task to a tasklist
|
||||
lark-cli task +tasklist-task-add --tasklist-id "<tasklist_guid>" --task-id "<task_guid>"
|
||||
|
||||
# Add multiple tasks to a tasklist
|
||||
lark-cli task +tasklist-task-add --tasklist-id "<tasklist_guid>" --task-id "<task_guid>,<another_task_guid>,<third_task_guid>"
|
||||
|
||||
# Add a task to a specific section in the tasklist
|
||||
lark-cli task +tasklist-task-add \
|
||||
--tasklist-id "<tasklist_guid>" \
|
||||
--task-id "<task_guid>" \
|
||||
--section-guid "<section_guid>"
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--tasklist-id <guid>` | Yes | The GUID of the tasklist, or a full AppLink URL. |
|
||||
| `--task-id <guids>` | Yes | Comma-separated list of task GUIDs to add to the tasklist. For Feishu task applinks, use each task's `guid` query parameter, not the `suite_entity_num` / display task ID like `t104121`. |
|
||||
| `--section-guid <guid>` | No | The GUID of the custom section to add the tasks to. If omitted, tasks will be added to the default section. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the tasklist and the tasks to add.
|
||||
2. Execute the command `lark-cli task +tasklist-task-add ...`.
|
||||
3. Report the result (successful vs failed tasks).
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
41
.agents/skills/lark-task/references/lark-task-update.md
Normal file
41
.agents/skills/lark-task/references/lark-task-update.md
Normal file
@ -0,0 +1,41 @@
|
||||
# task +update
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Update an existing task in Lark.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Update task summary
|
||||
lark-cli task +update --task-id "<task_guid>" --summary "New Summary"
|
||||
|
||||
# Update multiple tasks' due dates
|
||||
lark-cli task +update --task-id "<task_guid>,<another_task_guid>" --due "+2d"
|
||||
|
||||
# A task applink is accepted directly; the CLI extracts its guid query value
|
||||
lark-cli task +update --task-id "https://applink.larksuite.com/client/todo/task?guid=<task_guid>" --summary "New Summary"
|
||||
|
||||
# Update with JSON data
|
||||
lark-cli task +update --task-id "<task_guid>" --data '{"description": "New description"}'
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--task-id <guid-or-applink>` | Yes | Task OpenAPI GUID or a task applink containing `guid=`. Comma-separated GUIDs/applinks are supported for multiple tasks. Display task IDs such as `t104121` / `suite_entity_num` are rejected. |
|
||||
| `--summary <text>` | No | New summary/title for the task. |
|
||||
| `--description <text>` | No | New description for the task. |
|
||||
| `--due <time>` | No | New due date (supports relative time). |
|
||||
| `--data <json>` | No | JSON payload for fields to update. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm with the user the tasks to update and the fields.
|
||||
2. Execute `lark-cli task +update --task-id "..." ...`
|
||||
3. Read `data.updated_fields` and `data.tasks[].confirmed` from the result and report only the fields confirmed by the server.
|
||||
4. Do not routinely call `task tasks get` after the update when `confirmed` already contains the required state. Query details only if a required field is absent or the user explicitly asks for a full verification.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
@ -0,0 +1,59 @@
|
||||
# task +upload-attachment
|
||||
|
||||
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
|
||||
|
||||
Upload a single local file as an attachment to a task (or any resource type accepted by the Task attachment endpoint). Max file size per upload is **50 MB**. For task agents, use `--resource-type=task_delivery`.
|
||||
|
||||
## Recommended Commands
|
||||
|
||||
```bash
|
||||
# Upload a local file as a task attachment (relative path required)
|
||||
lark-cli task +upload-attachment \
|
||||
--resource-id "<task_guid>" \
|
||||
--file "./report.pdf"
|
||||
|
||||
# Pass a Feishu task applink instead of a raw guid — the guid is extracted automatically
|
||||
lark-cli task +upload-attachment \
|
||||
--resource-id "https://applink.feishu.cn/client/todo/task?guid=<task_guid>" \
|
||||
--file "./note.md"
|
||||
|
||||
# Explicit resource type / user id type
|
||||
lark-cli task +upload-attachment \
|
||||
--resource-id "<task_guid>" \
|
||||
--resource-type task \
|
||||
--user-id-type open_id \
|
||||
--file "./design.png"
|
||||
|
||||
# Upload a local file to a task agent
|
||||
lark-cli task +upload-attachment \
|
||||
--resource-id "4b113c53-a68b-419f-8bd0-c9c532a3285a" \
|
||||
--file "./飞书.zip" \
|
||||
--resource-type task_delivery
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| `--resource-id <guid_or_applink>` | Yes | Target resource GUID. Accepts a raw task GUID or a Feishu task applink URL (`.../client/todo/task?guid=...`); the `guid` query parameter is extracted automatically. Do not use `suite_entity_num` / display IDs like `t104121`. |
|
||||
| `--file <path>` | Yes | Local file path to upload. Must be a relative path within the current working directory; absolute paths and paths escaping the cwd are rejected. Single file only, ≤ 50 MB. |
|
||||
| `--resource-type <type>` | No | Owning resource type. Defaults to `task`. Use `task_delivery` when uploading to task agents. |
|
||||
| `--user-id-type <type>` | No | User ID type for the request. Defaults to `open_id`. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Confirm the target task GUID (or applink) and the local file path with the user.
|
||||
2. Ensure the file is within the current working directory and its size is ≤ 50 MB; otherwise ask the user to move/split the file.
|
||||
3. Determine if this is a task agent: if yes, add `--resource-type task_delivery`.
|
||||
4. Execute `lark-cli task +upload-attachment --resource-id "..." --file "..."`.
|
||||
5. Report the returned attachment record. The output exposes all fields returned by the API (e.g. `guid`, `name`, `size`, `url`, `uploader`, ...); always surface the attachment `guid` and, if present, the `url` so the user can jump to the attachment directly.
|
||||
|
||||
## Output
|
||||
|
||||
The command returns the single created attachment record as a flat JSON object — every field returned by the API (`guid`, `name`, `size`, `url`, `resource_type`, `resource_id`, `uploader`, ...) is preserved verbatim. Pretty mode also prints a human-readable summary with the resource, file name, size, and attachment GUID.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a **Write Operation** -- You must confirm the user's intent before executing.
|
||||
|
||||
> [!NOTE]
|
||||
> The Task attachment upload endpoint accepts exactly one file per call. To upload multiple files, invoke the shortcut once per file.
|
||||
Reference in New Issue
Block a user