triage
让 issue 和外部 PR 走过一个由分诊角色构成的状态机——分类、验证、必要时刨根问底地追问,并撰写可供 agent 使用的简报(brief)。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
让 issue 和外部 PR 走过一个由分诊角色构成的状态机——分类、验证、必要时刨根问底地追问,并撰写可供 agent 使用的简报(brief)。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
从两个维度审查自某个固定基点(提交、分支、标签或 merge-base)以来的改动 —— 规范(代码是否遵循本仓库有文档记录的编码规范?)与 需求(代码是否符合最初发起的 issue/PRD 的要求?)。以并行子代理运行两项审查并并排汇报。当用户想要审查某个分支、PR、进行中的改动,或要求“审查自 X 以来的改动”时使用。
基于一份规格或一组工单来实现一部分工作。
设计深模块的共享术语体系。当用户想要设计或改进某个模块的接口、寻找加深(deepening)的机会、决定接缝(seam)放在哪里、让代码更易测试或更利于 AI 导航时,或当其他技能需要用到深模块术语时使用。
构建并打磨项目的领域模型。当用户想要确定领域术语或统一语言(ubiquitous language)、记录架构决策,或当其他技能需要维护领域模型时使用。
通过一场刨根问底的访谈来打磨一份计划或设计。
通过一场刨根问底的访谈来打磨一份计划或设计,并在过程中同时产出文档(ADR 和词汇表)。
| name | triage |
| description | 让 issue 和外部 PR 走过一个由分诊角色构成的状态机——分类、验证、必要时刨根问底地追问,并撰写可供 agent 使用的简报(brief)。 |
| disable-model-invocation | true |
让项目 issue tracker 上的 issue 走过一个由分诊角色构成的小型状态机。
如果本仓库把外部 pull request 也当作一个请求来源(见 issue-tracker 配置),分诊也覆盖它们:一个 PR 就是一个附带了代码的 issue——相同的角色、相同的状态、相同的状态机,只有少数几处标注了"对 PR 而言"的差异(见下文)。按 tracker 配置把一个裸的 #42 解析为 issue 还是 PR。
分诊期间发布到 issue tracker 的每一条评论或 issue 都必须 以这条免责声明开头:
> *This was generated by AI during triage.*
.out-of-scope/ 知识库如何运作两个 分类(category) 角色:
bug — 有东西坏了enhancement — 新功能或改进五个 状态(state) 角色:
needs-triage — 维护者需要评估needs-info — 等待报告者提供更多信息ready-for-agent — 已完全明确,可交给一个离线(AFK)agentready-for-human — 需要人来实现wontfix — 不会处理对 PR 而言,这些相同的状态是对照附带的代码来理解的:ready-for-agent 表示已附上一份简报、应由一个 agent 对该 diff 走下一步;ready-for-human 表示已准备好供人来合并。
每个经过分诊的 issue 都应恰好带有一个分类角色和一个状态角色。如果状态角色之间相互冲突,就把它标出来,并在做任何其他事情之前询问维护者。
这些是规范角色名——issue tracker 中实际使用的标签字符串可能不同。这个映射应当已经提供给你——如果没有,运行 /setup-matt-pocock-skills。
状态转换:一个未打标签的 issue 通常先进入 needs-triage;从那里它转向 needs-info、ready-for-agent、ready-for-human 或 wontfix。一旦报告者回复,needs-info 就回到 needs-triage。维护者可以随时覆盖——把看起来不寻常的转换标出来,并在继续之前询问。
维护者调用 /triage 并用自然语言描述他们想要什么。解读这个请求并采取行动。例如:
查询 issue tracker,并呈现三个桶,最旧的在前:
needs-triage——评估进行中。needs-info 且自上次分诊笔记以来报告者有活动——需要重新评估。当 PR 在范围内时,把外部 PR 也纳入这些桶,并给每一行标记 [PR] 或 [issue]。发现(discovery)只浮现 外部 PR(tracker 配置定义了谁算外部)——一位协作者进行中的 PR 不是分诊工作。这个过滤只用于发现;一个被明确点名的 PR 无论作者是谁都始终会被分诊。
展示计数以及每一项的一行摘要。让维护者来挑。
收集上下文。 阅读完整的 issue 或 PR(正文、评论、标签、作者、日期;对 PR 还要看 diff)。解析任何先前的分诊笔记,以免重复追问已解决的问题。使用项目的领域词汇表探索代码库,并尊重该区域内的 ADR。对代码库跑两项检查:(a) 冗余——按领域概念(不只是请求的字面措辞)搜索所请求行为是否已有实现,并报告你查过哪些地方。如果找到了,那就是一个已实现的 wontfix(第 5 步)。(b) 先前否决——阅读 .out-of-scope/*.md,浮现任何与此请求相似的记录。
给出建议。 把你的分类与状态建议连同理由告诉维护者,外加一段与该请求相关的简短代码库摘要——包括它是否已被实现。等待指示。
验证声称。 在任何追问之前,先核实声称是否站得住脚。对 bug,按报告者的步骤复现它。对 PR,确认 diff 确实做了它声称的事——检出它、运行相关测试或命令。报告发生了什么:已确认(附代码路径)、失败,或细节不足(一个强烈的 needs-info 信号)。一次经过确认的验证能让 agent 简报强得多。
追问(如有需要)。 如果请求需要充实,就同时运行 /grilling 和 /domain-modeling 技能——一次一个问题地把它追问成形,打磨领域术语,并在决策落地时就地更新 CONTEXT.md/ADR。
应用结果:
ready-for-agent — 发布一条 agent 简报评论(AGENT-BRIEF.md)。ready-for-human — 结构与 agent 简报相同,但注明为什么不能委派(需要判断、需要外部访问、设计决策、手动测试)。needs-info — 发布分诊笔记(模板见下)。wontfix — 关闭,评论内容取决于 为什么:
.out-of-scope/(那个知识库是给 被否决 的请求的,不是给已构建的)。.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
把追问过程中已解决的一切都记在 "established so far" 之下,这样工作就不会丢失。问题必须是具体且可操作的,而不是"请提供更多信息"。
如果 issue 或 PR 上存在先前的分诊笔记,就阅读它们,检查报告者是否已回答任何遗留问题,并在继续之前呈现一幅更新后的图景。不要重复追问已解决的问题。