mcpField
L
ln-911-github-triager

ln-911-github-triager

github.com/levnikolaevich开发584187 次安装2 天前更新
代码仓库

关于 ln-911-github-triager

ln-911-github-triager 是供维护者检查 GitHub 未结 issue、拉取请求和讨论的独立技能。它按优先级分类并汇总社区互动指标,且可配置扫描范围和滞留阈值。

主要功能

  1. 01扫描未结 issue、拉取请求和讨论
  2. 02按优先级分类条目
  3. 03计算社区互动指标
  4. 04可配置范围和滞留阈值
  5. 05生成只读分流报告

适用场景

  1. 01检查 GitHub 中不同类型的待处理事项
  2. 02查找未回复的讨论和待审查拉取请求
  3. 03跟踪响应时间与社区互动

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-911-github-triager

安装后在 Claude Code 中输入/ln-911-github-triager确认已加载。

附带文件references/community_github_discovery.mdreferences/community_strategy_template.md

详细介绍

路径: 文件路径(references/、../ln-*)均相对于此技能目录。

ln-911-github-triager

类型: L3 Worker(独立) 类别: 9XX 社区参与 调用方式: 独立调用,或作为更广泛社区分类工作流的一部分

扫描当前仓库中所有未关闭的问题、PR 和讨论。按紧急程度分类,并生成可执行的分类报告。


参数

$ARGUMENTS 控制范围和过时阈值:

标记效果默认值
issues仅扫描问题全部三类
prs仅扫描 PR全部三类
discussions仅扫描讨论全部三类
数字(例如,14)过时阈值,单位为天7
issues 30组合设置:范围 + 阈值--
summary为协调器提供精简输出:跳过第 4 阶段预览,仅返回危险信号、优先级计数和指标完整交互式报告

解析 $ARGUMENTS:提取范围标记(issues、prs、discussions)、数字阈值和 summary 标志。如果没有范围标记,则扫描全部三类。如果没有数字,则默认使用 7 天。


第 0 阶段:GitHub 发现

必须读取: 加载 references/community_github_discovery.md

执行发现流程。提取:

  • 用于 --repo 标志和 URL 的 {owner}/{repo}
  • 用于维护者检测的 maintainer 登录名(已认证用户)
  • 验证 gh 已完成身份验证

加载策略:检查目标项目中的 docs/community_engagement_strategy.md;如果不存在,则使用 references/community_strategy_template.md。提取第 5 节(参与度指标)中的目标和危险信号。


第 1 阶段:获取数据

根据范围运行以下 gh 命令。并行执行所有适用的数据获取操作。

1a. 问题
gh issue list --repo {owner}/{repo} --state open --limit 100 --json number,title,labels,createdAt,updatedAt,author,comments,assignees
1b. Pull Request
gh pr list --repo {owner}/{repo} --state open --limit 100 --json number,title,labels,createdAt,updatedAt,author,reviewDecision,reviewRequests,isDraft,comments,assignees
1c. 讨论(GraphQL)
gh api graphql -f query='
  query($owner: String!, $name: String!) {
    repository(owner: $owner, name: $name) {
      discussions(first: 100, states: OPEN) {
        nodes {
          number
          title
          category { name }
          createdAt
          updatedAt
          author { login }
          answerChosenAt
          labels(first: 5) { nodes { name } }
          comments(first: 20) {
            totalCount
            nodes {
              author { login }
              createdAt
            }
          }
        }
      }
    }
  }
' -f owner="{owner}" -f name="{repo}"

门槛: 如果所有来源均未返回任何条目,则报告“没有未关闭条目。分类完成。”并停止。


第 2 阶段:对每个条目进行分类

对获取到的每个条目,评估以下条件。一个条目可以匹配多个条件——采用最高优先级。

优先级矩阵
优先级条件适用对象
P0 严重标签包含 bug,且没有指派人问题
P0 严重标签包含 breaking问题、PR
P1 紧急作者 != 维护者,且维护者评论数为零问题、讨论
P1 紧急问答讨论的 answerChosenAt 为 null,且作者 != 维护者讨论
P1 紧急reviewDecision 为 null 或 REVIEW_REQUIREDPR
P2 过时超过阈值天数没有活动(updatedAt 早于阈值)全部
P3 关注PR 标记为草稿(isDraft 为 true)PR
P3 关注作者 == 维护者,且社区回复数为 0讨论
P4 信息不符合上述任何条件的条目全部
维护者检测

维护者登录名来自第 0 阶段的发现结果(viewer.login)。如果任何评论的 author.login 等于维护者登录名,则该条目“有维护者回复”。

对于问题:检查 comments 数组中的作者。对于讨论:检查 comments.nodes[].author.login。

过时程度计算

距上次活动的天数:(today - updatedAt),以天为单位。与阈值比较(默认为 7 天,或取自 $ARGUMENTS)。

标签紧急程度信号

会提升优先级的标签:bug、breaking、security、urgent。

表示有参与机会(而非紧急程度)的标签:help wanted、good first issue。

阶段 3:参与度指标

根据策略第 5 节,计算每项策略的汇总指标:

指标计算方法目标红色警报
首次回复时间有回复的条目中,(首条维护者评论时间 - 条目创建时间)的平均值<24h>72h
无人回复的讨论作者 != 维护者、没有维护者评论且年龄 > 阈值的条目数0任意条目 >7 天
社区与维护者评论比所有条目中非维护者评论数 / 维护者评论数>0.30
本月新增讨论过去 30 天内创建的讨论数>20
零参与度条目评论总数为 0 的条目----

阶段 4:预览表格

如果 $ARGUMENTS 包含 summary → 完全跳过此阶段。输出精简摘要(红色警报、各类别优先级数量、健康度指标表),然后停止。不要编写完整的阶段 5 报告。

否则(独立模式): 提供包含所有已分类条目的精简摘要表,供用户审核。等待用户批准后再进入阶段 5。

### Triage Preview -- {total count} items found

| # | Type | Title | Priority | Age | Key Signal |
|---|------|-------|----------|-----|------------|
| {number} | {Issue/PR/Discussion} | {title (truncated to 50 chars)} | {P0/P1/P2/P3/P4} | {days}d | {short reason} |

先按优先级排序(P0 在前),再在每个优先级组内按条目年龄排序(最早的在前)。

展示后,询问用户:

  • 确认优先级是否正确
  • 是否要从完整报告中排除任何条目
  • 是否要调整过时阈值

只有在用户确认后才能进入阶段 5。


阶段 5:编写报告

按以下格式提供完整的分类报告:

## GitHub Triage Report -- {YYYY-MM-DD}

**Scope:** {issues/PRs/discussions or "all"} | **Threshold:** {N} days | **Open items:** {total count}
红色警报

如果触发了阶段 3 中的任何红色警报,请在健康度指标之前添加:

> [!WARNING]
> **Red flags detected:**
> - {description, e.g., "2 unanswered discussions older than 7 days"}
健康度指标表
| Metric | Value | Target | Status |
|--------|-------|--------|--------|
| Unanswered (>{N}d) | {count} | 0 | {OK / RED FLAG} |
| Avg first response | {hours}h | <24h | {OK / RED FLAG} |
| Community:maintainer ratio | {ratio} | >0.3 | {OK / RED FLAG} |
| New discussions (30d) | {count} | >2 | {OK / RED FLAG} |
| Zero-engagement items | {count} | -- | {count} |
优先级表格

对于每个优先级 P0..P3,显示带数量的标题。如果数量为 0,则显示标题 (0) 并跳过表格。

P0 严重:

#类型标题标签年龄需要采取的行动

P1 紧急:

#类型标题作者年龄原因

P2 过时:

#类型标题最近活动过时天数

P3 监控:

#类型标题备注

P4 信息: 不要逐条列出——仅计入总数。

建议的行动
### Recommended Actions

1. **Respond:** {items needing maintainer reply, with GitHub URLs}
2. **Review:** {PRs needing review, with GitHub URLs}
3. **Close or bump:** {stale items -- suggest close if resolved, bump if relevant}
4. **Engage:** {items that could benefit from community call-to-action}
格式规则
  • 每个优先级组内按条目年龄排序(最早的在前)
  • URL 格式:https://github.com/{owner}/{repo}/{issues|discussions|pull}/{number}
  • 日期采用 YYYY-MM-DD 格式,年龄以天为单位
  • 建议的行动中的所有条目都必须包含直接 GitHub URL

规则

  • 只读: 此技能仅获取并报告数据——绝不创建、修改或关闭任何 GitHub 条目
  • 不发布: 不创建 issue、评论、标签或任何其他会改变 GitHub 状态的内容
  • 维护者登录名: 来自阶段 0 的发现结果(已认证用户)
  • 默认阈值: 7 天(依据策略第 5 节)
  • 速率限制: 如果达到 GraphQL 速率限制,则报告部分结果并发出警告

完成定义

  • 已获取所有范围内条目类型(issues/PRs/discussions)的 GitHub 数据
  • 每个条目都已按优先级分类(P0-P4)
  • 已根据策略目标计算参与度指标
  • 已编写报告(完整交互式报告,或供协调者使用的精简摘要)

版本: 1.0.0 最后更新: 2026-03-13

评论

支持 Markdown