关于 ln-911-github-triager
ln-911-github-triager 是供维护者检查 GitHub 未结 issue、拉取请求和讨论的独立技能。它按优先级分类并汇总社区互动指标,且可配置扫描范围和滞留阈值。
主要功能
- 01扫描未结 issue、拉取请求和讨论
- 02按优先级分类条目
- 03计算社区互动指标
- 04可配置范围和滞留阈值
- 05生成只读分流报告
适用场景
- 01检查 GitHub 中不同类型的待处理事项
- 02查找未回复的讨论和待审查拉取请求
- 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_REQUIRED | PR |
| 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.3 | 0 |
| 本月新增讨论 | 过去 30 天内创建的讨论数 | >2 | 0 |
| 零参与度条目 | 评论总数为 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