mcpField
G
github-pr-query

github-pr-query

github.com/github开发5.5k64 次安装今天更新
代码仓库

关于 github-pr-query

用于查询当前或指定 GitHub 仓库中的拉取请求。它支持 GitHub CLI 选项和可选的 jq 筛选,也可先返回结构与数据大小信息,再获取完整数据。

主要功能

  1. 01查询当前或指定仓库
  2. 02按状态、作者、应用或搜索筛选
  3. 03使用 jq 转换 JSON
  4. 04先查看结构和数据大小

适用场景

  1. 01列出开放的拉取请求
  2. 02查找等待审查的 PR
  3. 03检查 PR 标签或作者
  4. 04筛选指定的审查反馈

安装

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

$npx skills add https://github.com/github/gh-aw --skill github-pr-query

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

附带文件query-prs.sh

详细介绍

GitHub 拉取请求查询技能

借助内置的 jq 过滤功能,高效查询 GitHub 拉取请求。

重要:jq 参数是可选的

--jq 参数是可选的。如果不使用 --jq,此技能会返回架构和数据大小信息,而不是完整数据。 使用此功能可避免响应过大,并在进行定向查询前检查数据结构。

使用 --jq '.' 获取全部数据,或使用更具体的筛选条件获取定向结果。

用法

使用此技能查询当前仓库或指定仓库中的拉取请求。

基本查询(仅返回架构)

列出当前仓库中的拉取请求:

./query-prs.sh
# Returns schema and data size, not full data
获取全部数据

获取所有 PR 数据:

./query-prs.sh --jq '.'
指定仓库

查询特定仓库:

./query-prs.sh --repo owner/repo
使用 jq 过滤

使用 --jq 参数过滤并转换输出:

# Get only open PRs
./query-prs.sh --jq '.[] | select(.state == "open")'

# Get PR numbers and titles
./query-prs.sh --jq '.[] | {number, title}'

# Get PRs by a specific author
./query-prs.sh --jq '.[] | select(.author.login == "username")'

# Get merged PRs from last week
./query-prs.sh --jq '.[] | select(.mergedAt != null)'

# Count PRs by state
./query-prs.sh --jq 'group_by(.state) | map({state: .[0].state, count: length})'
常用选项
  • --state:按状态筛选(open、closed、merged、all)。默认值:open
  • --limit:要获取的 PR 最大数量。默认值:30
  • --repo:采用 owner/repo 格式的仓库。默认值:当前仓库
  • --author:按作者登录名筛选 PR
  • --app:按 GitHub App 作者筛选 PR
  • --search:应用 GitHub issue/PR 搜索语法
  • --jq:(可选)用于过滤或转换输出的 jq 表达式。省略时返回架构信息
常见查询示例

查找规模较大的 PR(更改文件较多):

./query-prs.sh --jq '.[] | select(.changedFiles > 10) | {number, title, changedFiles}'

获取等待审核的 PR:

./query-prs.sh --jq '.[] | select(.reviewDecision == "REVIEW_REQUIRED") | {number, title, author: .author.login}'

获取由 GitHub Actions 应用活动上下文创建的 PR:

./query-prs.sh --app github-actions --jq '.[] | {number, title, author: .author.login}'

查找范围内的审核反馈(团队/协作者 + 可信自动化):

# Trusted automation is matched by login; humans are matched by association.
./query-prs.sh --jq \
  '.[] | {number, title, reviews: [.reviews[]? | select(.author.login == "github-actions[bot]" or .author.login == "app/github-copilot" or .authorAssociation == "MEMBER" or .authorAssociation == "OWNER" or .authorAssociation == "COLLABORATOR")] }'

忽略外部审核反馈:

./query-prs.sh --jq \
  '.[] | {number, title, external_reviews: [.reviews[]? | select(.authorAssociation == "CONTRIBUTOR" or .authorAssociation == "FIRST_TIME_CONTRIBUTOR" or .authorAssociation == "FIRST_TIMER" or .authorAssociation == "NONE")] }'

列出 PR 及其标签:

./query-prs.sh --jq '.[] | {number, title, labels: [.labels[].name]}'

输出格式

脚本默认输出 JSON,便于通过管道传递给 jq 进行进一步处理。

要求

  • 已通过身份验证的 GitHub CLI(gh)
  • 用于筛选的 jq(大多数系统默认已安装)

评论

支持 Markdown