mcpField
Q
qa

qa

github.com/timschoch测试与质量1689 次安装今天更新
代码仓库

关于 qa

qa 是一项交互式 QA 技能,可将用户报告的问题整理为简洁、面向用户的 GitHub 议题。它会澄清症状、了解相关产品行为,并将复杂报告拆成可独立处理的议题。

主要功能

  1. 01简要澄清预期与实际行为
  2. 02了解领域术语和产品行为
  3. 03判断报告是否需要拆分
  4. 04创建简洁且持久的 GitHub 议题
  5. 05汇总议题链接和阻塞关系

适用场景

  1. 01将报告的缺陷转为 GitHub 议题
  2. 02把多种故障模式拆成任务
  3. 03记录可复现的用户体验问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/timschoch/skilly --skill qa

安装后在 Claude Code 中输入/qa确认已加载。

详细介绍

QA 会话

运行交互式 QA 会话。用户描述他们遇到的问题。你负责澄清问题、探索代码库以了解背景,并提交持久、以用户为中心且使用项目领域术语的 GitHub issue。

针对用户提出的每个问题

1. 倾听并适度澄清

让用户用自己的话描述问题。最多提出 2-3 个简短的澄清问题,重点了解:

  • 用户预期的结果与实际发生的情况
  • 复现步骤(如果不明显)
  • 问题是稳定出现还是间歇性出现

不要过度询问。如果描述足够清楚,可以提交 issue,就继续下一步。

2. 在后台探索代码库

与用户交流时,在后台启动一个 Agent(subagent_type=Explore),了解相关领域。目标不是寻找修复方案,而是:

  • 了解该领域使用的术语(查看 GLOSSARY.md)
  • 理解该功能应该如何工作
  • 确定面向用户的行为边界

这些背景信息有助于你写出更好的 issue,但 issue 本身不应提及具体文件、行号或内部实现细节。

3. 评估范围:单个 issue 还是拆分?

提交前,判断这是一个单个 issue,还是需要拆分为多个 issue。

以下情况应拆分:

  • 修复涉及多个独立领域(例如:“表单验证有误,而且缺少成功消息,重定向也失效”)
  • 存在明显可分离的问题,可以由不同人员并行处理
  • 用户描述的问题有多种明显不同的故障模式或症状

以下情况应保留为单个 issue:

  • 同一处的某个行为有误
  • 所有症状都由同一个根本行为导致
4. 提交 GitHub issue

使用 gh issue create 创建 issue。不要先让用户审核,直接提交并分享 URL。

Issue 必须持久有效,即使经过重大重构,仍然有意义。请从用户的角度撰写。

单个 issue

使用此模板:

## What happened

[Describe the actual behavior the user experienced, in plain language]

## What I expected

[Describe the expected behavior]

## Steps to reproduce

1. [Concrete, numbered steps a developer can follow]
2. [Use domain terms from the codebase, not internal module names]
3. [Include relevant inputs, flags, or configuration]

## Additional context

[Any extra observations from the user or from codebase exploration that help frame the issue — e.g. "this only happens when using the Docker layer, not the filesystem layer" — use domain language but don't cite files]
拆分(多个 issue)

按依赖顺序创建 issue(先处理阻塞项),以便引用真实的 issue 编号。

每个子 issue 使用此模板:

## Parent issue

#<parent-issue-number> (if you created a tracking issue) or "Reported during QA session"

## What's wrong

[Describe this specific behavior problem — just this slice, not the whole report]

## What I expected

[Expected behavior for this specific slice]

## Steps to reproduce

1. [Steps specific to THIS issue]

## Blocked by

- #<issue-number> (if this issue can't be fixed until another is resolved)

Or "None — can start immediately" if no blockers.

## Additional context

[Any extra observations relevant to this slice]

拆分时:

  • 优先创建多个精简 issue,而不是少数内容庞杂的 issue——每个 issue 都应能独立修复和验证
  • 如实标明阻塞关系——如果修复 issue A 之前确实无法测试 issue B,请说明。如果两者相互独立,则都标注为“None — can start immediately”
  • 按依赖顺序创建 issue,以便在“Blocked by”中引用真实的 issue 编号
  • 最大限度提高并行性——目标是让多个人员(或 Agent)可以同时处理不同的 issue
所有 issue 内容均须遵守的规则
  • 不得包含文件路径或行号——这些内容会过时
  • 使用项目领域术语(如果存在 GLOSSARY.md,请查看)
  • 描述行为,而不是代码——写“同步服务未能应用补丁”,而不是“applyPatch() 在第 42 行抛出错误”
  • 必须提供复现步骤——如果无法确定复现步骤,请询问用户
  • 保持简洁——开发者应能在 30 秒内读完 issue

提交后,打印所有 issue URL(并概述阻塞关系),然后询问:“下一个问题,还是我们就到此为止?”

5. 继续会话

持续进行,直到用户表示结束。每个问题都是独立的,不要将它们批量处理。

评论

支持 Markdown