用途
inbox-triage 用于每日整理 GitHub 通知收件箱,把需要处理的通知筛选出来并分类,避免维护者回复漏洞 PR 或安全公告开启后长时间无人查看。它读取的是 GitHub 通知收件箱这一层,覆盖入站回复、审阅请求、安全告警和提及。
主要能力
- 通过
gh api /notifications --paginate拉取 GitHub 通知,解析 JSON 数组,最多处理前 100 条。 - 筛选条件:
unread: true且updated_at在最近 14 天内。 - 将每条通知归入唯一类别(首个匹配生效):SECURITY、VULN_REPLY、REVIEW_NEEDED、MENTION、GENERAL。
- 对 VULN_REPLY 计算滞留天数
age_days,并标记紧急程度:CRITICAL(>7 天)、AGING(3–7 天)、FRESH(<3 天)。 - 可交叉引用
memory/topics/vuln-followup.md,查找 PR 标题对应的跟踪备注。 - 为 SECURITY、VULN_REPLY(CRITICAL 或 AGING)、REVIEW_NEEDED、MENTION 类别的条目解析 HTML URL。
- 生成整理摘要并覆盖写入
memory/topics/inbox-triage.md。 - 更新
memory/MEMORY.md的 Known Follow-ups 部分。 - 满足阈值时发送通知,并追加日志到
memory/logs/${today}.md。
使用方式
技能按步骤执行:
- 读取
memory/MEMORY.md后再开始。 - 运行
gh api /notifications --paginate 2>&1获取通知;若报错或返回空数组,记录INBOX_TRIAGE_SKIP: no notifications并停止。 - 过滤出未读且 14 天内的通知;若为零,记录
INBOX_TRIAGE_SKIP: no actionable notifications within 14 days并停止。 - 分类。
- 对 VULN_REPLY 计算滞留天数并标记紧急程度。
- 为行动项解析 HTML URL:先尝试
gh api {subject.url} --jq '.html_url' 2>/dev/null,失败则手动构造 PR 或 issue 的 URL。 - 写入整理摘要到
memory/topics/inbox-triage.md。 - 更新
memory/MEMORY.md的 Known Follow-ups:新增未跟踪的 VULN_REPLY CRITICAL 项,并把已变为 FRESH 的 NEEDS-ANSWER 项更新为 RESPONDED。不把 GENERAL、REVIEW_NEEDED、MENTION、SECURITY 加入该部分。 - 仅在满足以下任一条件时发送通知:存在 SECURITY 项、存在 CRITICAL 的 VULN_REPLY、存在 REVIEW_NEEDED 项、MENTION 达到 3 条及以上。写入
.pending-notify-temp/inbox-triage-${today}.md后执行./notify -f .pending-notify-temp/inbox-triage-${today}.md。 - 追加日志到
memory/logs/${today}.md,成功记录INBOX_TRIAGE_OK,跳过记录INBOX_TRIAGE_SKIP: {reason}。
环境变量与网络
除 GITHUB_TOKEN 外无需其他环境变量;GITHUB_TOKEN 由 GitHub Actions 自动设置,gh 内部使用。所有 GitHub 调用使用 gh api,它内部处理认证,因此命令行中不会出现 $SECRET。若 gh api /notifications 失败(限流、认证错误),记录错误并以 INBOX_TRIAGE_SKIP: api error 退出。仅在 gh 不可用时考虑 WebFetch 作为回退,端点为 https://api.github.com/notifications,但 WebFetch 无法携带认证头,因此优先使用 gh。
适用场景
- 需要每日检查 GitHub 通知收件箱,找出安全告警、漏洞 PR 回复、审阅请求和提及。
- 需要按滞留时间对漏洞 PR 回复排序并标记紧急程度。
- 需要把关键跟进项同步到 MEMORY.md 并触发通知。
限制
- 不替代 MEMORY.md 中手工跟踪的跟进项,它读取的是原始 GitHub 收件箱。
- 不与 vuln-tracker 重复:vuln-tracker 按分支名跟踪生命周期,本技能通过通知捕获入站维护者回复。
- 不与 vuln-tracker 的披露队列老化重复:后者管理
memory/pending-disclosures/公告草稿,本技能读取 GitHub 安全告警和 PR 回复。 - 通知最多处理前 100 条(GitHub 每页上限 50,两页足够)。
- 仅处理未读且 14 天内的通知。
- 其他功能、收费、价格、平台、效果或使用步骤暂未提供。