Issue 分类与优先级

让 Agent 根据现象、影响面与复现步骤建议类型标签、优先级与负责队列,并列出需补充的信息。

区分 bug、增强、文档、支持问题与安全披露通道;对缺少版本、环境、日志的工单生成追问清单而非猜测结论。

优先级矩阵在 SKILL 中固化:例如 P0 全站不可用、P1 核心路径降级、P2 有变通、P3 锦上添花,并对应响应目标。

重复 issue 应建议合并或关联主单;过时版本问题引导升级路径与 EOL 政策引用。

  • 组件标签:与代码所有者或 on-call 轮值表对齐。
  • 回归:标记是否阻断发布或仅主分支。
  • 机器人:区分自动关闭条件与「需要作者反馈」停滞规则。

简要摘要

本技能把「读工单 → 打标签 → 定优先级 → 指队列 → 列缺口」拆成可执行步骤;Agent 输出应是可粘贴到跟踪系统的结构化建议,而不是替维护者做未经证实的根因结论。

  • 先分类:类型与领域标签决定路由与模板,再谈排期。
  • 再定级:按影响面 × 紧急度映射到 P0–P3,并挂上团队约定的首次响应 SLA。
  • 最后追问:信息不足时列出最小复现集(版本、环境、日志、期望/实际),避免空泛「无法复现」。

Agent 输出示例——可直接粘贴到 issue 评论:

## 分类建议(issue-triage)

type: bug
priority: P1
area: checkout
sla_first_response: ≤ 1h(7×24)

### 缺失信息,请补充:
1. 版本号与部署环境(prod / staging / commit SHA)
2. 复现步骤及期望与实际行为
3. 相关错误日志或 request_id / trace_id

### 相似 issue(查重):
- #1234 支付页 500 错误(2024-11)— 建议核对是否同源

标签体系

类型(type):bug、enhancement、documentation、support、security。优先级(priority):P0–P3。状态(status):needs-info、in-progress、blocked。组件(area):与 CODEOWNERS 对齐。

用 GitHub CLI 批量创建标签体系:

# 批量创建类型标签
gh label create "type:bug"          --color "d73a4a" --repo org/repo
gh label create "type:enhancement"  --color "a2eeef" --repo org/repo
gh label create "type:documentation"--color "0075ca" --repo org/repo
gh label create "type:security"     --color "e4e669" --repo org/repo

# 批量创建优先级标签
gh label create "priority:P0" --color "b60205" --repo org/repo
gh label create "priority:P1" --color "d93f0b" --repo org/repo
gh label create "priority:P2" --color "fbca04" --repo org/repo
gh label create "priority:P3" --color "0e8a16" --repo org/repo

# 批量打标签(对已有 issue)
gh issue edit 1234 --add-label "type:bug,priority:P1,area:checkout" --repo org/repo

# 批量查找并打标签(需要 jq)
gh issue list --label "needs-triage" --json number \
  | jq '.[].number' \
  | xargs -I{} gh issue edit {} --add-label "priority:P2"

分类决策树——严重度判断条件(可嵌入 issue 模板):

# 严重度判断伪代码(在 SKILL 中固化为规则)
def classify_severity(issue):
    if issue.affects_payment or issue.affects_auth:
        if issue.no_workaround and issue.affects_all_users:
            return "P0"  # 核心交易全量不可用
        elif issue.affects_majority:
            return "P1"  # 核心路径严重降级 > 20% 用户
    if issue.has_workaround:
        return "P2"      # 有变通方案或非主路径
    if issue.is_enhancement or issue.affects_edge_case:
        return "P3"      # 改进项/边缘场景
    return "P2"          # 默认兜底
  • 平台/环境标签:os:windowsbrowser:safariregion:cn 等与复现相关的维度单独成标签,便于筛选。
  • 客户/租户级问题:若有合同分级,用标签或自定义字段反映,以便 SLA 规则引擎匹配。

SLA 与响应目标

下表为示例矩阵,请在 SKILL 中替换为你们组织的真实数值(工作日/7×24、时区与节假日规则写清楚)。

优先级 典型含义 首次响应(示例) 修复/缓解目标(示例)
P0 生产全站或核心交易不可用,无可靠变通 ≤ 15 分钟 持续工作直至恢复或明确降级方案
P1 核心路径严重降级,大部分用户受影响 ≤ 1 小时 当日缓解 + 跟进根因修复
P2 有变通或非主路径缺陷 ≤ 1 个工作日 按迭代排期,标注回归风险
P3 改进项、边缘情况、纯优化 按需 Backlog 可见即可

周期性分类会议 Agenda 模板(建议每周一次,30 分钟):

# Issue Triage 周会 Agenda(每周二 10:00,30min)

## 1. 新建工单扫描(10min)
- 查看上周新增未分类 issue:
  gh issue list --label "needs-triage" --limit 20
- 每单确认:type / priority / area / 信息完整性

## 2. P0/P1 状态更新(5min)
- 确认所有 P0/P1 issue 有 assignee 且本周有更新
- 超 SLA 未响应的升级或关闭

## 3. Stale issue 处理(5min)
- 查看 "needs-info" 超 14 天无回复的工单
  gh issue list --label "status:needs-info" --state open
- 决定:追问 / 关闭 / 降级

## 4. 回归 & 阻塞发布清单(5min)
- 确认带 "regression" 标签的 issue 是否影响当前 release
- 与 release captain 同步

## 5. Action items(5min)
- 记录跟进人与截止日期

SLA 针对的是「有人认领并更新状态」,不是「已完全修复」;修复截止可与里程碑字段单独约定,避免把响应 SLA 与交付承诺混为一谈。

分流主路径

  [ 新建 Issue / 同步外部工单 ]
        │
        ▼
  ┌─────────────┐     读标题与描述:是否安全类 → 转私密渠道
  │  类型与安全   │──── 否则:bug / enhancement / docs / support
  └─────────────┘
        │
        ▼
  ┌─────────────┐     影响面:用户比例、数据风险、收入/合规
  │  优先级 P0–P3 │──── 对照 SKILL 矩阵与当前事件(如正在发布)
  └─────────────┘
        │
        ▼
  ┌─────────────┐     area 标签 + 队列 / CODEOWNERS / on-call 表
  │  路由与指派   │──── 跨团队:拆子任务或标明依赖方
  └─────────────┘
        │
        ▼
  ┌─────────────┐     缺复现、版本、日志 → 生成追问清单
  │  信息完整性   │──── 足够则:可开发 / 待复现验证
  └─────────────┘

Agent 在任一步发现「可能重复」时,应先列出相似 issue 链接与合并建议,再补充独有信息,避免队列里堆叠同源单。

合并、回归与机器人

  • 组件标签与代码所有者或 on-call 轮值表对齐;更名时批量迁移旧标签以免报表断裂。
  • 回归:用标签或里程碑标明是否阻断发布、是否仅主分支;与 CI 失败单区分,避免同一红构建开多单。
  • 机器人:写明自动关闭(如 stale)的前置条件、豁免标签,以及「需要作者反馈」超过 N 天未回复时的升级或关闭策略。

Stale Bot 配置示例(.github/stale.yml):

# .github/stale.yml
daysUntilStale: 30        # 30 天无活动 → 打 stale 标签
daysUntilClose: 14        # stale 后 14 天无回复 → 关闭
staleLabel: "stale"
exemptLabels:             # 以下标签永不 stale
  - "priority:P0"
  - "priority:P1"
  - "pinned"
  - "security"
staleIssueMessage: |
  此 issue 已超过 30 天无活动。
  若仍相关,请回复并附上最新环境信息,否则将在 14 天后自动关闭。
closeIssueMessage: |
  因长时间无活动,此 issue 已自动关闭。
  若问题依然存在,欢迎重新提交并附上完整复现步骤。
# PR 单独配置(更宽松)
daysUntilStalePr: 60
daysUntilClosePr: 30
stalePrMessage: "此 PR 已超过 60 天无活动,请更新或关闭。"

分类草稿生成

选择类型、优先级与待补信息,生成本页专用的 YAML 草稿,可粘贴到 issue 描述或内部工单模板(字段名请按你们系统调整)。

待补充信息 missing

脚本仅拼接结构化片段;security 类型请勿在公开仓库粘贴漏洞细节。生成内容前缀 # issue-triage 便于全文搜索。

---
name: issue-triage
description: 分类 issue 并建议标签、优先级与跟进问题
model: claude-sonnet-4-5
---

# 分类规则
type_labels: [bug, enhancement, documentation, support, security]
priority_labels: [P0, P1, P2, P3]

# 优先级矩阵
P0: 生产核心路径全量不可用,无变通,≤15min 响应
P1: 核心路径降级 >20% 用户,≤1h 响应
P2: 有变通或非主路径,≤1工作日响应
P3: 改进 / 边缘 / 优化,按需

# 输出格式
output:
  - 建议标签:type / priority / area
  - 缺失信息:复现步骤、版本、日志
  - 是否疑似重复:主单链接
  - SLA 首次响应目标

# 安全类 issue 处理
security_channel: security@example.com(不在公开 issue 贴漏洞细节)

# 追问模板(信息不足时使用)
info_request_template: |
  请补充以下信息以便我们复现:
  1. 版本号与部署环境
  2. 完整复现步骤
  3. 期望与实际行为
  4. 相关错误日志或 trace_id

返回技能库 更多技能入口