How this skill is triggered — by the user, by Claude, or both
Slash command
/unipus-qa-plugin:unipus-qa-test-reportThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
统一入口,支持三类 QA 报告的生成:
统一入口,支持三类 QA 报告的生成:
| 模式 | 触发词 | 数据来源 | 输出文件 |
|---|---|---|---|
| A:缺陷分析报告 | 生成缺陷分析报告、缺陷报告、bug分析报告、质量分析报告 | 飞书项目 MQL / 本地文件 / 手动粘贴 | docs/{项目名}-缺陷分析报告.md |
| B:测试执行记录 | 生成测试执行报告、测试执行记录、执行分析报告 | 飞书项目 URL + MQL / 手动粘贴 | docs/{项目名}-测试执行记录.md |
| C:综合测试报告 | 综合测试报告、出测试报告、测试总结 | 上述两类报告文件 / 飞书项目直查 | docs/{项目名}-测试报告.md |
根据用户触发词判断执行哪个模式:
若无法判断,询问用户:「请问您要:(A) 缺陷分析报告、(B) 测试执行记录,还是 (C) 综合测试报告?」
数据来源优先级:飞书项目 MQL 查询 > 本地文件 > 手动粘贴
前置信息收集:
jsgx2023)issue / 缺陷)查询步骤:
获取字段元数据:
工具:get_workitem_field_meta
参数:project_key={空间key}, work_item_type=issue
⚠️
list_workitem_field_config可能因权限问题报错,优先使用get_workitem_field_meta。
MQL 查询缺陷数据:
工具:search_by_mql
mql: SELECT `name`, `work_item_id`, `priority`, `severity`, `bug_classification`, `issue_stage`
FROM `{空间名}`.`缺陷`
WHERE `name` LIKE '%{关键词}%'
分页获取全量数据(每页最多 50 条):
参数:session_id: {上次返回的session_id}
group_pagination_list: [{"group_id": "{group_id}", "page_num": 2}]
补充单条详情(如需):
工具:get_workitem_brief
参数:project_key={空间key}, work_item_id={缺陷ID}
常用字段映射:
| 字段用途 | 字段 key | 说明 |
|---|---|---|
| 缺陷名称 | name | 缺陷标题 |
| 工作项ID | work_item_id | 唯一标识 |
| 优先级 | priority | 核心/高/中/低 |
| 严重程度 | severity | 严重/重要/一般/次要/微小 |
| Bug分类 | bug_classification | Web前端/Server后端等 |
严重程度映射规则:
| 原始值 | 映射结果 |
|---|---|
| 严重 | S1(严重) |
| 重要 | S2(重要) |
| 一般 | S3(一般) |
| 次要 | S4(次要) |
| 微小 | S5(微小) |
报告中统一使用
S级(中文)格式展示,如S1(严重)。
在 docs/ 目录下查找 *缺陷* 相关文件,直接读取。
询问用户提供:项目名称、缺陷列表(ID/标题/状态/严重程度/优先级/模块/创建日期/关闭日期)、统计截止日期。
总览指标:
模块分布: 按缺陷标题中的模块标签分组,每模块统计总数/已修复/未修复/占比
严重程度分布: 按严重程度、优先级、端分类(Web前端/Server后端/移动端)分组统计
缺陷趋势: 按创建日期统计每日新增数及对应修复数
遗留缺陷清单: 列出所有 OPEN 缺陷,分析遗留原因和风险等级
按 references/bug-report-template.md 格式输出到 docs/{项目名}-缺陷分析报告.md。
生成规则:
当用户提供飞书项目 URL 时,不要询问用户确认,直接执行全流程。
支持的 URL 格式:
https://project.feishu.cn/{simple_name}/test_plans/detail/{work_item_id}https://project.feishu.cn/{simple_name}/workObjectView/using_test_case/{view_id}从 URL 提取 simple_name,调用 search_project_info 获取 project_key 和空间名称。
若 URL 含测试计划 ID,调用 get_workitem_brief 获取:名称、状态、创建人、执行人、时间。
SELECT `work_item_id`, `name`, `更新时间`
FROM `{simple_name}`.`执行用例`
WHERE `关联测试计划` = '{测试计划名称}'
重要:
关联测试计划的值必须使用测试计划名称(字符串),不能用 ID。每页最多 50 条,使用session_id+group_pagination_list翻页。
MQL 已验证不可用字段(会报 attr label not found,不要尝试):
status、执行状态、执行结果、priority、created_at、connection_test_plan_id、工作项ID
执行用例状态(通过/不通过/阻塞/未执行)只能通过 get_workitem_brief 逐条获取。
高效策略:
work_item_id使用 get_workitem_brief 批量查询执行用例状态。
对每条用例提取:work_item_id、工作项名称、工作项状态、角色成员(执行人)、更新时间。
将结果保存到 docs/{临时文件名}.md
SELECT `work_item_id`, `name`, `priority`, `severity`, `status`, `更新时间`
FROM `{simple_name}`.`缺陷`
WHERE `name` LIKE '%{关键词}%'
若查询缺陷失败,检查
docs/下是否有已生成的缺陷分析报告,直接引用其数据。
询问用户提供:产品/版本、测试环境、执行日期、执行人、用例列表(ID/名称/用例分级/执行状态/更新时间)、发现缺陷(可选)。
用例汇总(按模块): 从用例名称中提取模块标签(如 [模块名] 中的内容),每模块统计总数/通过/失败/阻塞/未执行/通过率。
用例分级提取: 从用例名称末尾的 [P0]/[P1]/[P2] 提取,无标记则为"未分级"。
风险评级:
需求覆盖率分析(自动检测): 检查 docs/ 下是否有需求拆分文档,如存在则从用例名称 [FR-xxx,AC-xxx] 中提取编号与需求文档比对,统计 FR/AC/NFR 覆盖率。
按 references/execution-report-template.md 格式输出到 docs/{项目名}-测试执行记录.md。
生成规则:
飞书 MCP 常见错误处理:
| 错误 | 原因 | 解决方案 |
|---|---|---|
Check Token Perm Failed | Token 无权限 | 跳过该接口,使用替代方案 |
attr label not found | MQL 字段名不存在 | 参考上方已验证字段列表 |
attrValueLabel not found | 条件值格式错误 | 关联测试计划 使用名称字符串 |
优先级:飞书项目 URL + MQL > 本地文件 > 手动粘贴
工具:search_project_info
参数:project_key={simpleName}
记录空间全名(如"A 技术共享中心-产研项目空间(正式)"),后续 MQL FROM 子句需要。
工具:get_view_detail
参数:url: {飞书视图URL}, view_id: {视图ID}
fields: ["name","priority","severity","work_item_status","owner","created_at"]
⚠️ 视图可能包含全空间数据,必须通过 MQL 按关键词筛选,不能直接用视图总数。
总量查询 + 按状态分别查询(建议并行调用):
-- 总量
SELECT `name`, `work_item_status`, `severity` FROM `{空间全名}`.`缺陷`
WHERE `name` LIKE '%{项目关键词}%'
-- 分状态(OPEN / CLOSED / RESOLVED / IN PROGRESS / REOPENED)
SELECT `work_item_status`, `severity` FROM `{空间全名}`.`缺陷`
WHERE `name` LIKE '%{关键词}%' AND `work_item_status` = 'OPEN'
返回的
list[0].count即为该条件的匹配数量。MQL 不支持count(*)聚合。
MQL 查询要点:
| 要点 | 说明 |
|---|---|
| 空间名 | FROM 子句使用空间全名(含括号),通过 search_project_info 获取 |
| 项目筛选 | 必须用 name LIKE '%关键词%' 筛选,避免全空间数据污染 |
| 状态字段 | 使用 work_item_status,值:OPEN/CLOSED/RESOLVED/IN PROGRESS/REOPENED |
| 严重程度 | 使用 severity,值为中文:严重/重要/一般/微小 |
| 并行调用 | 多状态/多严重程度查询可并行,显著提升效率 |
工具:get_view_detail
参数:project_key: {真实project_key} # 注意:测试用例视图需用真实key,非simpleName
view_id: {测试执行视图ID}
fields: ["name","priority","work_item_status","owner"]
在 docs/ 下查找:
docs/*缺陷分析报告*.md → 提取缺陷统计数据docs/*测试执行记录*.md → 提取用例执行数据询问用户提供飞书项目空间 ID、项目名称筛选关键词、缺陷列表和测试用例执行记录数据。
基本信息: 项目名称、测试版本、测试周期、测试人员
执行结果汇总:
遗留缺陷: 提取 OPEN 缺陷,评估遗留原因与风险等级
质量风险矩阵: 结合未修复缺陷、低修复率模块、未覆盖测试项,构建风险矩阵(高/中/低)
测试结论(综合判断):
按 references/test-report-template.md 格式输出到 docs/{项目名}-测试报告.md。
生成规则:
模式 A(缺陷分析报告)
docs/{项目名}-缺陷分析报告.md模式 B(测试执行记录)
get_workitem_brief 逐条获取(非 MQL 查询)docs/{项目名}-测试执行记录.md模式 C(综合测试报告)
search_project_info 获取,用于 MQL FROM 子句docs/{项目名}-测试报告.mdnpx claudepluginhub glepooek/unipus-plugins-official --plugin unipus-qa-pluginScans the codebase for `ponytail:` comments and compiles a debt ledger of deliberate shortcuts and deferrals, flagging entries with no upgrade path.