关于 cawplan-ux-tracking
用于通过 CawPlan 查询待 UX 跟进工单的技能,面向需要按产品、版本、团队或优先级整理工单的用户。它规定了筛选、分页及 UX 完成记录的核验方式。
主要功能
- 01按产品或版本查询待跟进工单
- 02按优先级或团队筛选
- 03使用统计接口汇总计数
- 04分页获取完整结果
- 05核验设计师的 UX 完成记录
适用场景
- 01查看某版本仍待 UX 跟进的工单
- 02统计不同优先级的待处理数量
- 03汇总团队范围内的 UX 待办
- 04按设计师整理 UX 完成情况
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cawcut/ skill-cawplan --skill cawplan-ux-tracking安装后在 Claude Code 中输入/cawplan-ux-tracking确认已加载。
附带文件references/QUERY_RESILIENCE.md
详细介绍
CawPlan UX 跟踪
初始化
cawplan skill check
背景
Ticket 的 ux 值包括 NOT_REQUIRED、PENDING 和 READY;只有 PENDING 需要跟进 UX。
请使用 cawplan tickets search,而不是 tickets poll,因为 poll 不会返回 ux。
每个工作流都要传入 --excluded_status_categories COMPLETE,CANCELED:Ticket 关闭后,UX 仍可能处于 PENDING。请使用类别过滤器,不要使用特定产品线的状态键。
UX 查询需要完整时间范围:
--start_date 2000-01-01 --end_date <today>
仅统计数量(“按优先级/版本统计仍需要 UX 的 Ticket 数量”):使用带有相同过滤条件的 cawplan tickets stats,并设置 --group_by priority(或 version、assignee),而不是分页后再计数。
后续查询与失败处理:请遵循 references/QUERY_RESILIENCE.md。对于“现在只看 CRITICAL+HIGH”这类后续查询,保留之前的产品/版本范围,只添加新的过滤条件。若 ID 在当前上下文中可见,请复用;否则,请根据之前的回答重新解析范围名称。绝不要丢弃范围,也绝不要将产品名称传给 --product_ids。如果命令被拒绝或某页查询失败,请报告已核实的部分结果,不要向用户展示命令或错误文本。
输入路由
| 输入 | 流程 |
|---|---|
| 指定产品 + 版本(“这个版本需要 UX 跟进的 ticket”) | A — 版本范围 |
| 指定产品,未指定版本,也未按优先级或团队限定 | A — 版本范围,但要询问用户指的是某个特定版本,还是该产品的所有版本——“所有版本”会执行工作流 A 第 2 步,并使用 --product_ids,不传 --version_ids,不添加优先级过滤条件(这是工作流 B 的过滤条件,不能仅因省略了版本就在此处应用) |
| 高优先级 + 未指定特定版本,或明确要求跨版本 | B — 优先级范围 |
| 某个团队/产品线(“某个 team 尚未提供 UX 的清单”) | C — 团队范围 |
| 某产品 UX 成员的设计完成情况(“汇总 CawCut Cloud UX Team 本周的 UX 完成情况”) | D — 产品 UX 完成情况 |
工作流 A — 版本范围
-
解析产品 + 版本(采用与
cawplan-plan-track第 1-2 步相同的模式):cawplan products list --search <product-name-word> cawplan versions list <product_id>将搜索文本作为一个不加引号的词传入(
--search CawPlan,绝不要写成--search "CawPlan"):托管 Agent 会拒绝带引号的值。名称包含空格时,请搜索一个有辨识度的词,并在结果中匹配完整名称。 提供的产品必须与可访问名称完全匹配(去除首尾空格后不区分大小写)、与唯一的简称/词首匹配,或是用户明确确认的候选项。如果没有唯一匹配项,请先展示候选项并询问用户指的是哪个产品,再列出版本或查询 Ticket;绝不要使用最接近的产品名称。 -
获取:
cawplan tickets search --version_ids <version_id> --ux PENDING --excluded_status_categories COMPLETE,CANCELED --start_date 2000-01-01 --end_date <today> --page_size 100 --page_num 1请完整遍历所有分页(见上文“分页”)。
对于“该产品的所有版本”(见“输入路由”),请移除
--version_ids,改用--product_ids <product_id>——此步骤中的其他内容均保持不变,且不能仅因未指定版本就添加优先级过滤条件。
工作流 B — 优先级范围
- 如果用户提供了产品/版本,请按工作流 A 的相同方式解析,并添加
--product_ids/--version_ids。如果用户没有提供,请询问要限定到某个产品,还是搜索其有权限访问的所有内容——不要擅自假定为“所有内容”。 - 获取:
请完整遍历所有分页(见上文“分页”),然后按cawplan tickets search --priority CRITICAL,HIGH --ux PENDING --excluded_status_categories COMPLETE,CANCELED --start_date 2000-01-01 --end_date <today> --page_size 100 --page_num 1 [--product_ids <id>] [--version_ids <id>]CRITICAL→HIGH排序。
工作流 C — 团队范围
- 将团队名称解析为
product_line_id— 采用cawplan-product-report团队工作流中的相同模式:cawplan product-lines list --page_size 100,在客户端按名称匹配。要求名称完全匹配(去除首尾空白后不区分大小写)、唯一的简称/令牌前缀匹配,或用户明确确认某个候选项。如果有多个匹配项,请用户消除歧义;如果没有唯一的名称匹配项,请列出候选项并询问用户指的是哪个团队,而不是猜测最接近的选项。 - 获取:
完整翻页(参见上文的分页说明),然后按cawplan tickets search --product_line_ids <product_line_id> --ux PENDING --excluded_status_categories COMPLETE,CANCELED --start_date 2000-01-01 --end_date <today> --page_size 100 --page_num 1CRITICAL→HIGH→MEDIUM→LOW排序。
工作流 D — 产品 UX 完成情况
此处的 UX 团队指产品已配置的 members.designers 名单,而非 CawPlan 产品线。如果未提供产品,请询问要报告哪个产品的 UX 成员。
-
解析产品并完成工作流 A 中使用的产品访问权限检查:
cawplan products list --search <product-name-word-or-product_id>读取匹配产品的
members.designers[]名单,并收集其中的user_id值和显示名称。如果没有设计师,请说明该产品未配置 UX 名单并停止。成员资格按产品范围确定;使用此处返回的名单,而不是在整个工作区内按关键词搜索。仅当用户未提供日期范围时,才将日期范围默认设为本周。 -
使用一次批量调用,获取名单成员在日期范围内进行的所有 UX 更改(日期范围最多为 90 天;更长的范围需拆分):
cawplan tickets changes --product_ids <product_id> --fields ux --actor_ids <designer_user_ids_csv> --start_date <window_start> --end_date <window_end>仅保留
new为READY的事件。每个事件的actor是历史记录中的操作者,at是更改时间;响应中的tickets映射包含输出所需的显示 ID、标题和版本。如果 Ticket 当前的ux为READY、已分配给设计师,或其 UX 字段由非设计师更改,都不得计入。如果结果为truncated,请使用--cursor继续,或在报告前拆分日期范围。备用方案(仅当
tickets changes不可用时使用,参见references/QUERY_RESILIENCE.md): 使用以下命令获取候选项cawplan tickets search --product_ids <product_id> --ux PENDING,READY --start_date 2000-01-01 --end_date <today> --updated_start_date <window_start> --updated_end_date <today> --page_size 100 --page_num 1并完整翻页(不排除终态:Ticket 可能曾被标记为
READY,之后又关闭或移回PENDING;updated_at仅用于筛选候选项)。随后,对每个候选项获取cawplan tickets history <product_id> <version_id> <ticket_id>,仅保留满足以下条件的UPDATED条目:changed_fields.ux将 UX 更改为READY(值为字符串READY或包含new: READY的对象);created_at在日期范围内;且user_id在名单中。说明使用了较慢的方案;如果未能检查所有候选项,则报告部分结果。 -
按 Ticket 去重,仅保留日期范围内最新的 UX-Ready 事件。按该事件的操作者分组保留的 Ticket(备用方案中使用
actor.user_id/actor.display_name,或历史条目的user_id/user_display_name):此操作者就是产品名单中的完成 UX 工作的设计师。绝不要根据 Ticket 的报告人或普通受派人来分组、计数或推断设计师。
输出
- 每个匹配的 Ticket 占一行:显示 ID、标题、类型、优先级、产品/版本、受派人。
- 工作流 B/C:按优先级降序排序,如上所述。
- 说明搜索日期范围,并说明已排除终态类别。
- 如果没有匹配项,请明确说明;不要只返回一个没有说明的空表格。
- 如果有任何页面、批次或检查未能完成,请在表格前说明已验证和未验证的内容(参见
references/QUERY_RESILIENCE.md)。按照references/QUERY_RESILIENCE.md§5 的规则撰写答复:不得包含 CLI 命令、内部字段名称或推理文字。 - 对于工作流 D,列出每位已配置设计师的 UX-Ready Ticket 数量及 Ticket 列表(显示 ID、标题、产品/版本、UX-Ready 时间戳)。说明用户指定的日期范围、用于获取 UX 名单的产品,以及计数基于经历史记录验证的
ux → READY事件。
References
references/CAWPLAN_OPEN_API.mdreferences/QUERY_RESILIENCE.md