mcpField
G
github-scanning

github-scanning

github.com/community-access开发429223 次安装今天更新
代码仓库

关于 github-scanning

为使用 GitHub 的 Agent 提供搜索、筛选和跨仓库整理工作的操作指南,覆盖议题、PR、讨论、发布、安全警报和 CI。它还规定偏好设置、空结果恢复、分页、去重与并行收集流程。

主要功能

  1. 01按意图构造 GitHub 搜索查询
  2. 02筛选议题、PR 与讨论
  3. 03检查发布、安全警报和 CI
  4. 04应用仓库及搜索偏好设置
  5. 05跨仓库关联与结果归类
  6. 06并行收集、恢复、分页和去重

适用场景

  1. 01整理个人待处理议题与评审请求
  2. 02汇总组织仓库的发布和安全状况
  3. 03查找失败工作流并关联开放 PR
  4. 04生成跨仓库工作简报

安装

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

$npx skills add https://github.com/community-access/accessibility-agents --skill github-scanning

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

详细介绍

GitHub 扫描

按意图划分的搜索查询模式

问题
意图查询模式范围
分配给你is:open assignee:USERNAME所有仓库
提及了你(@)is:open mentions:USERNAME所有仓库
由你创建is:open author:USERNAME所有仓库
指定仓库repo:owner/repo is:open单个仓库
按关键词{keyword} is:open所有仓库
整个组织org:ORGNAME is:open组织仓库
已关闭(用于回顾)is:closed author:USERNAME所有仓库
拉取请求
意图查询模式范围
等待你审核review-requested:USERNAME state:open所有仓库
你创建的未关闭 PRauthor:USERNAME state:open所有仓库
分配给你assignee:USERNAME state:open所有仓库
你审核过,检查是否有更新reviewed-by:USERNAME state:open所有仓库
指定 PR使用所有者、仓库和编号直接获取单个仓库
整个组织org:ORGNAME state:open组织仓库
讨论
意图操作
提及了你使用 mentions:USERNAME 搜索
你正在参与搜索你评论过的讨论
活跃度高筛选过去 24 小时内有 10 条以上评论的讨论
与你的问题关联扫描描述/评论中的问题引用
发布版本
  • 对每个仓库使用 github_list_releases,检查近期发布、草稿发布和预发布版本。
  • 将已合并的 PR 与发布说明交叉对照,以找出尚未发布的工作。
  • 将问题里程碑与发布计划进行比较,标记即将到期的事项。
安全
  • Dependabot 警报:受监控仓库中严重和高危级别的警报。
  • 影响依赖项的安全公告。
  • 来自 dependabot[bot] 或 renovate[bot] 的待处理依赖项更新 PR。
CI/CD
  • 获取近期工作流运行记录,找出失败的工作流、耗时较长的作业和不稳定的测试。
  • 对于失败的工作流:记录仓库、工作流名称、分支、失败原因以及运行记录链接。
  • 将用户未关闭的 PR 与 CI 结果交叉对照。

日期范围处理

将自然语言转换为 GitHub 查询限定符:

用户说法GitHub 限定符
"上周"created:>YYYY-MM-DD(7 天前)
"本月"created:>YYYY-MM-01
"今天"closed:YYYY-MM-DD
"本周"closed:>YYYY-MM-DD(7 天前)
"X 到 Y 之间"created:X..Y
未指定使用偏好设置中的 search.default_window(默认:updated:>YYYY-MM-DD,30 天)——说明这一假设
"本月"(a11y tracker)milestone:"{Month} {Year}"

缩小范围

用户指定范围时,添加限定符以缩小范围:

范围限定符
单个仓库repo:owner/name
组织中的所有仓库org:orgname
用户创建的所有仓库user:username
所有内容(默认)不添加限定符——搜索所有可访问的仓库

偏好文件集成

读取 .github/agents/preferences.md,并在搜索前后应用以下筛选条件:

  1. repos.discovery - 确定默认搜索范围(全部 / 已加星标 / 自有 / 已配置 / 工作区)。
  2. repos.include - 即使在受限模式下,也始终包含这些仓库。
  3. repos.exclude - 在所有搜索中跳过这些仓库。
  4. repos.overrides - 每个仓库的设置:
    • track.issues: false -> 跳过此仓库的问题搜索
    • track.pull_requests: false -> 跳过此仓库的 PR 搜索
    • track.discussions: false -> 跳过此仓库的讨论搜索
    • track.releases: false -> 跳过此仓库的发布检查
    • track.security: false -> 跳过此仓库的安全警报
    • track.ci: false -> 跳过此仓库的 CI 状态
    • labels.include / labels.exclude -> 按标签筛选结果
    • paths -> 仅在更改涉及这些文件路径时触发(针对 PR/CI)
    • assignees -> 筛选指定的受理人(为空 = 全部)
  5. search.default_window - 用户未指定时间范围时的默认范围。
  6. briefing.sections - 每日简报中包含哪些部分。
  7. accessibility_tracking - a11y 跟踪器的配置(仓库、标签、频道)。

跨仓库情报

当结果来自不同仓库时,留意并呈现以下模式:

模式操作
跨仓库引用当问题 A 包含 owner/repo#N 时,获取并呈现条目 N
共享标签模式在分诊中将不同仓库中标记为 P0 的条目归为一组
不同仓库中的相关 PR标记:"此问题依赖于 repo-B 中仍处于开放状态的 PR #N"
已合并但尚未发布的 PR注明:"你的 PR #N 已合并,但尚未包含在任何版本中"
已有合并修复 PR 的问题标记:"此问题可能已解决——关闭该问题的 PR #N 已于 {date} 合并"
分支命名模式将不同仓库中采用相同分支命名约定的 PR 归为一组

并行数据流收集模型

对于从多个数据流收集信息的 Agent,应同时运行相互独立的数据流。不要按顺序执行没有依赖关系的操作。

示例:每日简报 - 3 个并行批次

批次 1 - 完全独立,同时运行:

  • 问题(已分配、被提及、由本人创建)
  • Pull request(请求审查、由本人创建)
  • 发布与部署
  • 无障碍功能更新

批次 2 - 在批次 1 之后运行(CI 需要批次 1 提供 PR 列表):

  • GitHub 讨论
  • CI/CD 健康状况(交叉引用 PR 列表)
  • 安全警报

批次 3 - 可与批次 2 重叠运行:

  • 项目看板状态
  • 最近关闭/合并的工作
示例:分析 - 2 个并行批次

批次 1 - 收集(全部相互独立):

  • 时间段内已关闭/合并的 PR
  • 时间段内已创建的问题
  • 时间段内的 CI 工作流运行
  • 时间段内的安全警报

批次 2 - 分析(依赖批次 1 的数据):

  • 健康评分计算
  • 速度指标计算
  • 瓶颈检测
并行工作的播报模板
 Running {N} searches in parallel... ({scope})
 Batch 1 complete - {X} items found

 Running {N} additional searches...
 Batch 2 complete - {Y} items found

 Scoring and prioritizing...
 Done - {Z} items need action, {W} to monitor

空结果自动恢复

如果搜索返回 0 条结果:

  1. 自动扩大范围:移除日期筛选条件,将范围扩大为 all,或移除标签筛选条件。
  2. 准确告知用户发生了什么变化:"最近 7 天内没有结果——已将范围扩大到最近 30 天,并找到 3 条结果。"
  3. 至少先尝试一次范围更广的查询,绝不要直接返回 0 条结果。

恢复步骤:

  1. 首次尝试:移除日期限定条件
  2. 第二次尝试:扩大范围(添加 org: 或移除 repo: 限定条件)
  3. 第三次尝试:移除标签筛选条件
  4. 只有三次尝试都没有结果时,才报告 0 条结果

分页

  • 将大量结果按每批 10 条进行分页。
  • 加载更多内容前先询问:"显示 10 条,共 47 条。要加载更多吗?"
  • 绝不要静默截断结果——务必说明总数。

结果去重

当同一条目出现在多个搜索结果中时(例如,某个问题既分配给了你,又提到了你):

  • 只显示一次,并合并所有上下文。
  • 在 Signal 列中合并信号:"已分配、@提及"。
  • 计算优先级时,采用得分最高的信号,不累加得分。

速率限制

  • 如果受到速率限制(403/429),用一句话告知用户重置时间。
  • 不要重试同一查询——如果重置时间少于 60 秒,就等待;否则,报告情况并继续处理。
  • 对于多流收集,跳过受到速率限制的流,并在后续处理中完成。

评论

支持 Markdown