关于 triage
用于在问题跟踪器上处理 issue 与 PR 分诊的 skill。它通过一组类别和状态角色推进分诊流程,并在操作前检查代码库中是否已存在对应实现。面向维护者使用,适合需要统一管理请求队列的项目。
主要功能
- 01类别角色 bug 与 enhancement 的分配
- 02状态角色的转换与冲突检测
- 03检查代码库中是否已实现相应功能
- 04将已拒绝的需求记录到 .out-of-scope/
- 05为 PR 复用同一状态机并验证差异
适用场景
- 01列出需要维护者关注的未分诊 issue
- 02将已明确的 issue 标记为 ready-for-agent 并生成 agent brief
- 03关闭重复或已实现的请求并附上说明
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mattpocock/ skills --skill triage安装后在 Claude Code 中输入/triage确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENT-BRIEF.mdOUT-OF-SCOPE.mdagents/openai.yaml详细介绍
分诊(Triage)
通过一个由分诊角色组成的小型状态机,推进问题追踪器上议题的流转。
如果本仓库将外部 PR 视为请求入口(参见问题追踪器配置),分诊同样覆盖这些 PR:PR 就是附带代码的议题,使用相同的角色、相同的状态和相同的状态机,区别之处见下文标注“针对 PR”的条目。对于裸的 #42,按追踪器配置将其解析为议题或 PR。
在分诊期间发布到问题追踪器的每条评论或议题,必须以下面的免责声明开头:
> *This was generated by AI during triage.*
参考文档
- AGENT-BRIEF.md:如何编写可长期复用的 Agent 简报
- OUT-OF-SCOPE.md:
.out-of-scope/知识库的工作方式
角色
两个类别角色:
bug:功能出现故障enhancement:新功能或改进
五个状态角色:
needs-triage:维护者需要评估needs-info:等待报告者提供更多信息ready-for-agent:规格完整,可交由无人值守(AFK)的 Agent 处理ready-for-human:需要人工实现wontfix:不予处理
对于 PR,这些状态针对所附代码来理解:ready-for-agent 表示已附带简报,Agent 应对 diff 执行下一步;ready-for-human 表示已准备好由人工合并。
每个经过分诊的议题应恰好带有一个类别角色和一个状态角色。若状态角色相互冲突,需标记出来,并先询问维护者,再进行任何其他操作。
以上为标准角色名称。问题追踪器中实际使用的标签字符串可能不同,映射关系应已提供给你。若未提供,请告知用户运行 /setup-matt-pocock-skills。
状态流转:未打标签的议题通常先进入 needs-triage;之后可转为 needs-info、ready-for-agent、ready-for-human 或 wontfix。报告者回复后,needs-info 会回到 needs-triage。维护者可随时覆盖任何流转;对看起来异常的流转需标记出来,并在继续前询问。
调用方式
维护者调用 /triage,并用自然语言描述需求。理解该请求后执行。示例:
- “给我看所有需要我关注的内容”
- “看看 #42”(议题或 PR)
- “把 #42 移到 ready-for-agent”
- “哪些内容已准备好让 Agent 领取?”
展示需要关注的内容
查询问题追踪器,按从旧到新的顺序展示三类内容:
- 未打标签:从未分诊。
needs-triage:评估进行中。- 带有
needs-info,且报告者自上次分诊记录后有新动态:需要重新评估。
若 PR 也在范围内,则将外部 PR 纳入以上类别,并在每行标注 [PR] 或 [issue]。发现机制只会筛选外部 PR(由追踪器配置定义谁属于外部),因此协作者正在进行中的 PR 不属于分诊工作。该筛选仅作用于发现阶段;明确指定的 PR 无论作者是谁,都会参与分诊。
展示各类别的数量,以及每项一行的摘要。由维护者选择要处理的项目。
对特定 Issue 或 PR 进行分诊
-
收集上下文。 阅读完整的 Issue 或 PR(正文、评论、标签、作者、日期;若为 PR,还需阅读 diff)。解析已有的分诊笔记,避免重复询问已解决的问题。借助项目的领域术语表探索代码库,并遵守该领域的 ADR。对代码库执行两项检查:(a) 冗余检查:按领域概念(而非请求的措辞)搜索是否已存在该请求行为的实现,并报告你搜索过的位置。若已存在,则按第 5 步将其作为已实现的
wontfix处理。(b) 既往拒绝检查:阅读.out-of-scope/*.md,找出与本请求相似的条目并告知维护者。 -
给出建议。 告知维护者你判定的类别和建议结论,并说明理由,同时简要概述代码库中与请求相关的情况(包括是否已实现)。等待维护者指示。
-
验证声明。 在进行任何拷问式追问(grilling)之前,先确认声明成立。对于 bug,按照报告者的步骤复现。对于 PR,确认 diff 确实实现了其声称的功能:检出代码,运行相关测试或命令。报告结果:已确认(附代码路径)、失败,或信息不足(这是强烈的
needs-info信号)。经过确认的验证会让 Agent 任务简报更有说服力。 -
拷问式追问(如有需要)。 若请求需要进一步细化,请两次调用 Skill 工具,分别用于 "grilling" 和 "domain-modeling"。每次只提出一轮问题,逐步打磨请求;在决策确定时,就地厘清领域术语并更新
GLOSSARY.md/ADR。 -
执行结果处理:
ready-for-agent:发布 Agent 任务简报评论(AGENT-BRIEF.md)。ready-for-human:结构与 Agent 任务简报相同,但需说明为何无法交由 Agent 执行(判断性决策、外部访问、设计决策、人工测试)。needs-info:发布分诊笔记(模板见下文)。- 对于
wontfix,关闭 Issue,评论内容取决于原因:- 已实现:代码库中已存在该变更。指明其位置;不要写入
.out-of-scope/(该知识库仅用于被拒绝的请求,而非已实现的功能)。 - 被拒绝(bug):给出礼貌的解释,然后关闭。
- 被拒绝(功能增强):写入
.out-of-scope/,在评论中链接到该记录,然后关闭(OUT-OF-SCOPE.md)。
- 已实现:代码库中已存在该变更。指明其位置;不要写入
needs-triage:应用对应角色标签。若有部分进展,可选择添加评论。
快速状态覆盖
若维护者说"将 #42 移至 ready-for-agent",应相信其判断并直接应用对应角色。在执行前确认即将进行的操作(角色变更、评论、关闭),然后再执行。跳过拷问式追问。若要在未经过拷问的情况下移至 ready-for-agent,应询问维护者是否要编写 Agent 任务简报。
需要更多信息的模板
## Triage Notes
**What we've established so far:**
- point 1
- point 2
**What we still need from you (@reporter):**
- question 1
- question 2
在"目前已确定的内容"下记录拷问过程中已解决的所有问题,避免成果丢失。问题必须具体且可执行,而不能是"请提供更多信息"这类笼统要求。
恢复先前的会话
若 Issue 或 PR 上已有先前的分诊笔记,请阅读这些笔记,检查报告者是否已回答任何未决问题,并在继续之前呈现更新后的情况。不要重复询问已解决的问题。