qa
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseQA Session
QA会话
Run an interactive QA session. The user describes problems they're encountering. You clarify, explore the codebase for context, and file GitHub issues that are durable, user-focused, and use the project's domain language.
运行交互式QA会话。用户描述遇到的问题,你负责澄清问题、探查代码库以获取上下文,并创建持久化、以用户为中心且符合项目领域术语的GitHub Issue。
For each issue the user raises
针对用户提出的每个问题
1. Listen and lightly clarify
1. 倾听并适度澄清
Let the user describe the problem in their own words. Ask at most 2-3 short clarifying questions focused on:
- What they expected vs what actually happened
- Steps to reproduce (if not obvious)
- Whether it's consistent or intermittent
Do NOT over-interview. If the description is clear enough to file, move on.
让用户用自己的语言描述问题。最多提出2-3个简短的澄清问题,重点关注:
- 预期结果与实际发生情况的差异
- 重现步骤(如果不明确)
- 问题是持续出现还是间歇性的
不要过度追问。如果描述足够清晰可以创建Issue,就直接进入下一步。
2. Explore the codebase in the background
2. 在后台探查代码库
While talking to the user, kick off an Agent (subagent_type=Explore) in the background to understand the relevant area. The goal is NOT to find a fix — it's to:
- Learn the domain language used in that area (check UBIQUITOUS_LANGUAGE.md)
- Understand what the feature is supposed to do
- Identify the user-facing behavior boundary
This context helps you write a better issue — but the issue itself should NOT reference specific files, line numbers, or internal implementation details.
与用户交流的同时,启动一个Agent(subagent_type=Explore)在后台运行,以理解相关代码区域。目标不是寻找修复方案,而是:
- 学习该区域使用的领域术语(可查看UBIQUITOUS_LANGUAGE.md)
- 理解功能的预期用途
- 明确用户可见的行为边界
这些上下文有助于你撰写更优质的Issue,但Issue本身不应引用具体文件、行号或内部实现细节。
3. Assess scope: single issue or breakdown?
3. 评估范围:单个问题还是拆分问题?
Before filing, decide whether this is a single issue or needs to be broken down into multiple issues.
Break down when:
- The fix spans multiple independent areas (e.g. "the form validation is wrong AND the success message is missing AND the redirect is broken")
- There are clearly separable concerns that different people could work on in parallel
- The user describes something that has multiple distinct failure modes or symptoms
Keep as a single issue when:
- It's one behavior that's wrong in one place
- The symptoms are all caused by the same root behavior
创建Issue之前,判断这是一个单个问题还是需要拆分为多个问题。
在以下情况进行拆分:
- 修复工作涉及多个独立领域(例如:“表单验证错误、成功消息缺失且重定向失效”)
- 存在明显可分离的关注点,不同人员可并行处理
- 用户描述的问题包含多种不同的故障模式或症状
在以下情况保留为单个问题:
- 仅一处行为出现错误
- 所有症状均由同一根源行为导致
4. File the GitHub issue(s)
4. 创建GitHub Issue(s)
Create issues with . Do NOT ask the user to review first — just file and share URLs.
gh issue createIssues must be durable — they should still make sense after major refactors. Write from the user's perspective.
使用命令创建Issue。无需先请求用户审核——直接创建并分享URL即可。
gh issue createIssue必须具备持久化特性——即使经过重大重构,仍应清晰易懂。从用户视角撰写内容。
For a single issue
单个问题的情况
Use this template:
undefined使用以下模板:
undefinedWhat happened
问题现象
[Describe the actual behavior the user experienced, in plain language]
[用平实语言描述用户遇到的实际行为]
What I expected
预期结果
[Describe the expected behavior]
[描述预期的行为]
Steps to reproduce
重现步骤
- [Concrete, numbered steps a developer can follow]
- [Use domain terms from the codebase, not internal module names]
- [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]
undefined[来自用户或代码库探查的额外观察信息,帮助理解问题——例如:“仅在使用Docker层时出现,文件系统层无此问题”——使用领域术语,但不要引用文件]
undefinedFor a breakdown (multiple issues)
拆分问题的情况
Create issues in dependency order (blockers first) so you can reference real issue numbers.
Use this template for each sub-issue:
undefined按照依赖顺序创建Issue(先创建阻塞性问题),以便在后续Issue中引用真实的Issue编号。
每个子问题使用以下模板:
undefinedParent issue
父级Issue
#<parent-issue-number> (if you created a tracking issue) or "Reported during QA session"
#<父级Issue编号>(如果创建了跟踪Issue)或“QA会话期间报告”
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
重现步骤
- [Steps specific to THIS issue]
- [针对此Issue的具体步骤]
Blocked by
依赖阻塞
- #<issue-number> (if this issue can't be fixed until another is resolved)
Or "None — can start immediately" if no blockers.
- #<Issue编号>(如果此问题需等待其他问题修复后才能解决)
若无阻塞,填写“无——可立即开始处理”
Additional context
额外上下文
[Any extra observations relevant to this slice]
When creating a breakdown:
- **Prefer many thin issues over few thick ones** — each should be independently fixable and verifiable
- **Mark blocking relationships honestly** — if issue B genuinely can't be tested until issue A is fixed, say so. If they're independent, mark both as "None — can start immediately"
- **Create issues in dependency order** so you can reference real issue numbers in "Blocked by"
- **Maximize parallelism** — the goal is that multiple people (or agents) can grab different issues simultaneously[与该部分相关的额外观察信息]
拆分问题时需注意:
- **宁多勿少**——每个Issue应可独立修复和验证
- **如实标记依赖关系**——如果Issue B确实需在Issue A修复后才能测试,如实标注。若两者独立,则均标记为“无——可立即开始处理”
- **按依赖顺序创建Issue**——以便在“依赖阻塞”部分引用真实的Issue编号
- **最大化并行性**——目标是让多个人(或Agent)可同时处理不同的IssueRules for all issue bodies
所有Issue内容的规则
- No file paths or line numbers — these go stale
- Use the project's domain language (check UBIQUITOUS_LANGUAGE.md if it exists)
- Describe behaviors, not code — "the sync service fails to apply the patch" not "applyPatch() throws on line 42"
- Reproduction steps are mandatory — if you can't determine them, ask the user
- Keep it concise — a developer should be able to read the issue in 30 seconds
After filing, print all issue URLs (with blocking relationships summarized) and ask: "Next issue, or are we done?"
- 不包含文件路径或行号——这些信息会过时
- 使用项目的领域术语(若存在UBIQUITOUS_LANGUAGE.md可参考)
- 描述行为而非代码——例如:“同步服务无法应用补丁”而非“applyPatch()在第42行抛出异常”
- 重现步骤为必填项——若无法确定,询问用户
- 保持简洁——开发者应能在30秒内读完Issue
创建完成后,打印所有Issue的URL(并总结依赖关系),然后询问:“下一个问题,还是结束会话?”
5. Continue the session
5. 继续会话
Keep going until the user says they're done. Each issue is independent — don't batch them.
持续进行直到用户表示结束。每个问题独立处理——不要批量处理。