GitHub 默认启用
GitHub gh CLI — 议题、拉取请求、CI、代码审查、发布
此技能默认启用,会在每个会话中自动注入。它涵盖了通过
gh CLI 进行的所有 GitHub 交互,包括先前 gh-address-comments、gh-fix-ci、gh-issues 和 yeet 技能的合并功能。快速参考
| 命令 | 说明 | 示例 |
|---|---|---|
gh pr list | 列出拉取请求 | gh pr list --repo owner/repo |
gh pr view | 查看 PR 详情 | gh pr view 55 --repo owner/repo |
gh pr checks | 检查 PR 的 CI 状态 | gh pr checks 55 --repo owner/repo |
gh pr create | 创建拉取请求 | gh pr create --title "feat: X" --body "..." |
gh pr merge | 合并拉取请求 | gh pr merge 55 --squash |
gh issue list | 列出议题 | gh issue list --state open |
gh issue create | 创建议题 | gh issue create --title "Bug: X" |
gh issue close | 关闭议题 | gh issue close 42 |
gh run list | 列出 CI 工作流运行 | gh run list --limit 10 |
gh run view | 查看特定 CI 运行 | gh run view <id> --log-failed |
gh run rerun | 重新运行失败的作业 | gh run rerun <id> --failed |
gh api | 查询 GitHub REST/GraphQL API | gh api repos/o/r/pulls/55 --jq '.title' |
何时使用 / 何时不使用
适用场景
- 检查 PR 状态、审查结果或合并就绪状态
- 查看 CI/工作流运行状态和日志
- 创建、关闭或评论议题
- 创建或合并拉取请求
- 通过 GitHub API 查询仓库数据
- 列出仓库、发布版本或协作者
- 处理 PR 审查评论
- 调试和修复失败的 CI 检查
- 自动修复议题并创建 PR
- 一键暂存、提交、推送并创建 PR(yeet)
不适用场景
- 本地 git 操作(commit、push、pull、branch)— 请直接使用
git - 非 GitHub 仓库(GitLab、Bitbucket、自托管)— 需使用不同的 CLI
- 克隆仓库 — 请使用
git clone - 审查实际代码变更 — 请使用
coding-agent技能 - 复杂的多文件差异 — 请使用
coding-agent或直接读取文件
安装与配置
github 技能需要 gh CLI 可执行文件。CLI-JAW 可以为您自动安装,也可以手动安装:
# macOS (Homebrew)
brew install gh
# Linux (apt)
sudo apt install gh
安装完成后,进行一次性身份验证:
# 一次性身份验证
gh auth login
# 验证身份验证状态
gh auth status
令牌权限范围:请确保您的
gh 令牌拥有 repo、read:org 和 workflow 权限范围。如果 CI 操作失败,请使用 gh auth login 重新进行身份验证并选择所需的权限范围。拉取请求
列出 PR
# 列出仓库中的开放 PR
gh pr list --repo owner/repo
# 按状态筛选
gh pr list --repo owner/repo --state merged --limit 20
# JSON 输出配合 jq 过滤
gh pr list --json number,title,state,mergeable \
--jq '.[] | select(.mergeable == "MERGEABLE")'
查看 PR 详情
# 按编号查看 PR
gh pr view 55 --repo owner/repo
# 通过 URL 直接查看
gh pr view https://github.com/owner/repo/pull/55
# 结构化 JSON 输出
gh pr view 55 --repo owner/repo \
--json title,body,author,additions,deletions,changedFiles \
--jq '"**\(.title)** by @\(.author.login)\n+\(.additions) -\(.deletions) across \(.changedFiles) files"'
检查 CI 状态
# 检查 PR 上的所有 CI 检查
gh pr checks 55 --repo owner/repo
创建 PR
# 基本 PR 创建
gh pr create --title "feat: add feature" --body "Description"
# 指定审查者和标签
gh pr create --title "fix: resolve timeout" \
--body "Fixes #42" \
--reviewer alice,bob \
--label bug,urgent
# 草稿 PR
gh pr create --title "wip: new dashboard" --body "WIP" --draft
合并 PR
# 压缩合并
gh pr merge 55 --squash --repo owner/repo
# 合并提交
gh pr merge 55 --merge --repo owner/repo
# 变基合并
gh pr merge 55 --rebase --repo owner/repo
# 检查通过后自动合并
gh pr merge 55 --auto --squash
议题
列出议题
# 开放的议题
gh issue list --repo owner/repo --state open
# 按标签筛选
gh issue list --repo owner/repo --label bug --limit 10
# JSON 格式化输出
gh issue list --repo owner/repo --state open \
--json number,title,labels,createdAt \
--jq '.[] | "[\(.number)] \(.title) - \([.labels[].name] | join(", ")) (\(.createdAt[:10]))"'
创建议题
# 基本议题
gh issue create --title "Bug: something broken" --body "Details..."
# 带标签和指派人
gh issue create --title "Feature: dark mode" \
--body "Add dark mode toggle" \
--label enhancement \
--assignee @me
关闭议题
# 按编号关闭
gh issue close 42 --repo owner/repo
# 关闭并附带评论
gh issue close 42 --comment "Fixed in PR #55"
CI / 工作流运行
列出运行记录
# 最近的运行记录
gh run list --repo owner/repo --limit 10
# 按工作流筛选
gh run list --workflow build.yml --limit 5
# 按状态筛选
gh run list --status failure --limit 10
查看运行详情
# 查看特定运行
gh run view <run-id> --repo owner/repo
# 仅查看失败步骤的日志(调试时最有用)
gh run view <run-id> --repo owner/repo --log-failed
重新运行失败的作业
# 仅重新运行失败的作业
gh run rerun <run-id> --failed --repo owner/repo
# 重新运行所有作业
gh run rerun <run-id> --repo owner/repo
API 查询
gh api 命令提供对 GitHub REST 和 GraphQL API 的直接访问。使用 --jq 来过滤 JSON 结果。
# 获取指定字段的 PR 信息
gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'
# 列出所有标签
gh api repos/owner/repo/labels --jq '.[].name'
# 获取仓库统计信息
gh api repos/owner/repo --jq '{stars: .stargazers_count, forks: .forks_count}'
# 列出 PR 审查评论
gh api repos/{owner}/{repo}/pulls/{pr}/comments \
--jq '.[] | "\(.id): \(.body[:80])"'
# 缓存重复查询(1 小时)
gh api --cache 1h repos/owner/repo
JSON 输出模式
大多数 gh 命令支持 --json 进行结构化输出,并可配合 --jq 过滤:
# 格式化的议题列表
gh issue list --repo owner/repo --json number,title \
--jq '.[] | "\(.number): \(.title)"'
# 可合并的 PR
gh pr list --json number,title,state,mergeable \
--jq '.[] | select(.mergeable == "MERGEABLE")'
集成工作流
github 技能将多个先前独立的技能整合为统一的工作流。这些工作流作为多步骤流程,通过自然语言触发。
PR 评论处理
处理当前分支对应的开放 PR 上的审查评论和议题评论。
- 检查身份验证:
gh auth status - 查找当前 PR:
gh pr view --json number,url - 列出审查评论:
gh api repos/{owner}/{repo}/pulls/{pr}/comments --jq '.[] | "\(.id): \(.body[:80])"' - 逐一处理评论、实施修复并提交变更
- 推送代码并向原始审查者重新请求审查
修复失败的 CI
自动调试和修复失败的 GitHub Actions 检查。
- 查找失败的检查:
gh pr checks <PR> --repo owner/repo - 获取失败运行的日志:
gh run view <run-id> --log-failed - 总结失败片段并确定根本原因
- 制定修复方案,获得批准后实施修复
- 推送修复并验证 CI 是否通过
自动修复议题
从仓库获取议题,实施修复,并为每个议题创建 PR。
- 列出目标议题:
gh issue list --label bug --limit 5 - 对每个议题:创建分支、实施修复、创建 PR
- 监控 PR 审查并处理评论
- 使用 GitHub REST API 和
$GH_TOKEN进行自动化操作
Yeet:暂存、提交、推送、创建 PR
一键式流程,将工作目录中的变更通过单条命令发布为 PR。
- 如果在
main/master分支上,创建新分支:git checkout -b codex/{description} - 暂存所有变更:
git add -A - 提交并附带描述:
git commit -m "{description}" - 推送到远程:
git push -u origin HEAD - 创建 PR:
gh pr create --title "[codex] {description}" --body "..."
模板
PR 审查摘要
PR=55 REPO=owner/repo
echo "## PR #$PR Summary"
gh pr view $PR --repo $REPO \
--json title,body,author,additions,deletions,changedFiles \
--jq '"**\(.title)** by @\(.author.login)\n\n\(.body)\n\n+\(.additions) -\(.deletions) across \(.changedFiles) files"'
gh pr checks $PR --repo $REPO
议题分类报告
gh issue list --repo owner/repo --state open \
--json number,title,labels,createdAt \
--jq '.[] | "[\(.number)] \(.title) - \([.labels[].name] | join(", ")) (\(.createdAt[:10]))"'
规则与最佳实践
| 规则 | 详情 |
|---|---|
始终指定 --repo | 当不在 git 目录内时,始终传递 --repo owner/repo 以避免歧义。 |
| 直接使用 URL | gh pr view https://github.com/owner/repo/pull/55 可以直接使用且无歧义。 |
| 缓存重复的 API 调用 | 对频繁运行的查询使用 gh api --cache 1h,以避免达到速率限制。 |
优先使用 --log-failed | 调试 CI 时,使用 gh run view <id> --log-failed 而非 --log,以避免输出过多。 |
使用 --json + --jq | 提取结构化数据时,始终优先使用 JSON 输出配合 jq 过滤,而非解析文本。 |
| 本地 git 保持本地 | 不要使用此技能执行 git commit、git push、git pull 或 git branch。请直接使用 git。 |
| 速率限制 | GitHub API 有速率限制(已认证用户每小时 5,000 次请求)。请积极使用缓存并批量处理查询。 |
使用示例(~haejwo)
以下示例展示了如何通过自然语言调用 github 技能。韩语和英语可以互换使用。
示例 1
"PR 55번 상태 확인해줘 -- CI 다 통과했는지 봐줘"
使用
gh pr checks 55 检查 PR #55 的 CI 状态并汇总通过/失败结果。示例 2
"이 변경사항 PR로 올려줘 -- 리뷰어 alice 지정하고 bug 라벨 붙여줘"
运行 yeet 流程:暂存所有变更、提交、推送,并使用
--reviewer alice --label bug 创建 PR。示例 3
"CI 실패한 거 고쳐줘 -- 로그 보고 원인 분석해줘"
触发修复失败 CI 工作流:查找失败的检查,拉取
--log-failed 日志,诊断根本原因,并提出修复方案。示例 4
"이 리포에 bug 라벨 이슈 목록 보여주고 정리해줘"
列出带有
bug 标签的开放议题,并按创建日期和标签格式化为分类报告。示例 5
"PR 리뷰 코멘트 다 처리하고 다시 리뷰 요청해줘"
运行 PR 评论处理流程:读取所有审查评论,逐一处理,提交修复,推送代码,并重新请求审查。
相关技能
| 技能 | 关系 |
|---|---|
dev-code-reviewer | 审查代码内容;github 处理 PR 机制(创建、合并、评论)。 |
dev 编排器 | 当开发任务需要创建 PR 或检查 CI 时,可能会委托给 github。 |
code-review | 深度代码审查技能;与 github 配合使用 --comment 发布内联 PR 反馈。 |
security-review | 安全审计技能;使用 github 检查依赖警报和安全公告。 |