关于 github-scanning
为使用 GitHub 的 Agent 提供搜索、筛选和跨仓库整理工作的操作指南,覆盖议题、PR、讨论、发布、安全警报和 CI。它还规定偏好设置、空结果恢复、分页、去重与并行收集流程。
主要功能
- 01按意图构造 GitHub 搜索查询
- 02筛选议题、PR 与讨论
- 03检查发布、安全警报和 CI
- 04应用仓库及搜索偏好设置
- 05跨仓库关联与结果归类
- 06并行收集、恢复、分页和去重
适用场景
- 01整理个人待处理议题与评审请求
- 02汇总组织仓库的发布和安全状况
- 03查找失败工作流并关联开放 PR
- 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 | 所有仓库 |
| 你创建的未关闭 PR | author: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,并在搜索前后应用以下筛选条件:
repos.discovery- 确定默认搜索范围(全部 / 已加星标 / 自有 / 已配置 / 工作区)。repos.include- 即使在受限模式下,也始终包含这些仓库。repos.exclude- 在所有搜索中跳过这些仓库。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-> 筛选指定的受理人(为空 = 全部)
search.default_window- 用户未指定时间范围时的默认范围。briefing.sections- 每日简报中包含哪些部分。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 条结果:
- 自动扩大范围:移除日期筛选条件,将范围扩大为
all,或移除标签筛选条件。 - 准确告知用户发生了什么变化:"最近 7 天内没有结果——已将范围扩大到最近 30 天,并找到 3 条结果。"
- 至少先尝试一次范围更广的查询,绝不要直接返回 0 条结果。
恢复步骤:
- 首次尝试:移除日期限定条件
- 第二次尝试:扩大范围(添加 org: 或移除 repo: 限定条件)
- 第三次尝试:移除标签筛选条件
- 只有三次尝试都没有结果时,才报告 0 条结果
分页
- 将大量结果按每批 10 条进行分页。
- 加载更多内容前先询问:"显示 10 条,共 47 条。要加载更多吗?"
- 绝不要静默截断结果——务必说明总数。
结果去重
当同一条目出现在多个搜索结果中时(例如,某个问题既分配给了你,又提到了你):
- 只显示一次,并合并所有上下文。
- 在 Signal 列中合并信号:"已分配、@提及"。
- 计算优先级时,采用得分最高的信号,不累加得分。
速率限制
- 如果受到速率限制(403/429),用一句话告知用户重置时间。
- 不要重试同一查询——如果重置时间少于 60 秒,就等待;否则,报告情况并继续处理。
- 对于多流收集,跳过受到速率限制的流,并在后续处理中完成。
评论
支持 Markdown