name: triage
description: Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs.
disable-model-invocation: true
category: “development”
risk: “safe”
source: “community”
source_repo: “mattpocock/skills”
source_type: “community”
date_added: “2026-06-19”
author: “Matt Pocock”
license: “MIT”
license_source: “https://github.com/mattpocock/skills/blob/main/LICENSE”
tags:
- engineering
- workflow
- coding-agents
tools: - claude-code
- codex-cli
- cursor
分诊(Triage)
何时使用
当用户请求与以下工作流匹配时使用:通过分诊角色的状态机处理问题和外部 PR——分类、验证、必要时盘问,并撰写可直接交给智能体的简报(agent brief)。
来源:mattpocock/skills(MIT 许可)。
通过一个小型的分诊角色状态机来处理项目问题跟踪器上的问题。
如果本仓库将外部拉取请求视为请求面(参见问题跟踪器配置),分诊同样涵盖它们:一个 PR 就是附带了代码的问题——相同的角色、相同的状态、相同的状态机,只是下文标注了"针对 PR"的一些差异。根据跟踪器配置,将裸的#42解析为问题或 PR。
分诊期间发布到问题跟踪器的每条评论或问题必须以以下免责声明开头:
> *This was generated by AI during triage.*参考文档
- AGENT-BRIEF.md — 如何撰写持久的智能体简报
- OUT-OF-SCOPE.md —
.out-of-scope/知识库如何工作
角色
两个类别角色:
bug(缺陷)—— 某些东西坏了enhancement(增强)—— 新功能或改进
五个状态角色:
needs-triage(需要分诊)—— 维护者需要评估needs-info(需要信息)—— 等待报告者提供更多信息ready-for-agent(可供智能体处理)—— 规格完整,可供 AFK(异步)智能体处理ready-for-human(可供人工处理)—— 需要人工实施wontfix(不予修复)—— 不会处理
对于 PR,相同的状态针对附带的代码进行解读:ready-for-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并用自然语言描述他们的需求。解读请求并执行。示例:
- “Show me anything that needs my attention”(给我看任何需要我注意的事项)
- “Let’s look at #42”(让我们看看 #42)(问题或 PR)
- “Move #42 to ready-for-agent”(将 #42 移到 ready-for-agent)
- “What’s ready for agents to pick up?”(哪些可供智能体接手?)
显示需要关注的内容
查询问题跟踪器并展示三个桶,最旧的在前:
- 未标记—— 从未分诊过。
needs-triage—— 评估进行中。needs-info且自上次分诊记录后有报告者活动—— 需要重新评估。
当 PR 在范围内时,将这些桶中的外部 PR 也包含进来,并为每一行标记[PR]或[issue]。发现功能只显示外部PR(跟踪器配置定义了谁算外部)——协作者进行中的 PR 不是分诊工作。此过滤仅用于发现;明确指名的 PR 无论作者是谁都始终进行分诊。
显示每个条目的数量和一行摘要。让维护者选择。
分诊特定问题或 PR
收集上下文。阅读完整的问题或 PR(正文、评论、标签、作者、日期;对于 PR 还要看 diff)。解析任何先前的分诊记录,以免重复询问已解决的问题。使用项目的领域词汇表探索代码库,尊重相关区域的 ADR。针对代码库运行两项检查:(a)冗余——按领域概念(而不仅仅是请求的措辞)搜索所请求行为的现有实现,并报告您查看了哪些位置。如果找到,则属于已实现的
wontfix(步骤 5)。(b)先前拒绝——阅读.out-of-scope/*.md并指出任何与本请求相似的内容。提出建议。告诉维护者您的类别和状态建议及理由,外加与请求相关的简要代码库摘要——包括它是否已实现。等待指示。
验证主张。在任何盘问之前,检查主张是否成立。对于缺陷,按报告者的步骤复现它。对于 PR,确认 diff 是否做到了它声称的事情——检出它,运行相关测试或命令。报告发生的情况:已确认(含代码路径)、失败或细节不足(这是一个强烈的
needs-info信号)。经确认的验证会形成更有力的智能体简报。盘问(如需要)。如果请求需要充实,同时运行
/grilling和/domain-modeling技能——一次一个问题地将其盘问成形,精化领域术语,并在决策确定时内联更新CONTEXT.md/ADR。应用结果:
ready-for-agent—— 发布智能体简报评论(AGENT-BRIEF.md)。ready-for-human—— 结构与智能体简报相同,但注明为何不能委派(判断性决策、外部访问、设计决策、手动测试)。needs-info—— 发布分诊记录(模板如下)。wontfix—— 关闭,评论取决于原因:- 已实现—— 该更改已存在于代码库中。指出它所在的位置;不要写入
.out-of-scope/(该知识库用于被拒绝的请求,而非已构建的功能)。 - 拒绝(缺陷)—— 礼貌解释,然后关闭。
- 拒绝(增强)—— 写入
.out-of-scope/,在评论中链接它,然后关闭(OUT-OF-SCOPE.md)。
- 已实现—— 该更改已存在于代码库中。指出它所在的位置;不要写入
needs-triage—— 应用该角色。如果有部分进展,可选添加评论。
快速状态覆盖
如果维护者说"move #42 to ready-for-agent"(将 #42 移到 ready-for-agent),请相信他们并直接应用该角色。确认您即将执行的操作(角色更改、评论、关闭),然后行动。跳过盘问。如果在没有盘问会话的情况下转移到ready-for-agent,询问他们是否想要撰写智能体简报。
Needs-info 模板
## Triage Notes **What we've established so far:** - point 1 - point 2 **What we still need from you (@reporter):** - question 1 - question 2将盘问期间解决的所有内容记录在"已确立"部分,以免工作丢失。问题必须具体且可操作,而不是"请提供更多信息"。
恢复之前的会话
如果问题或 PR 上存在先前的分诊记录,请阅读它们,检查报告者是否已回答任何未解决的问题,并在继续之前呈现更新后的情况。不要重复询问已解决的问题。
局限性
- 当工作流指明需要上游工具、账户、API 密钥或本地设置时,需要这些条件。
- 未经用户明确批准,不授权破坏性、生产环境、付费或外部消息操作。
- 在将生成的工件或建议视为最终结果之前,请对照用户的真实来源进行验证。