GitHub 默认启用

GitHub gh CLI — 议题、拉取请求、CI、代码审查、发布

技能名称
github
分类
开发工作流
依赖
gh CLI 可执行文件
源文件
~/.cli-jaw/skills/github/SKILL.md
此技能默认启用,会在每个会话中自动注入。它涵盖了通过 gh CLI 进行的所有 GitHub 交互,包括先前 gh-address-commentsgh-fix-cigh-issuesyeet 技能的合并功能。

快速参考

命令说明示例
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 APIgh 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 令牌拥有 reporead:orgworkflow 权限范围。如果 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 上的审查评论和议题评论。

  1. 检查身份验证:gh auth status
  2. 查找当前 PR:gh pr view --json number,url
  3. 列出审查评论:gh api repos/{owner}/{repo}/pulls/{pr}/comments --jq '.[] | "\(.id): \(.body[:80])"'
  4. 逐一处理评论、实施修复并提交变更
  5. 推送代码并向原始审查者重新请求审查

修复失败的 CI

自动调试和修复失败的 GitHub Actions 检查。

  1. 查找失败的检查:gh pr checks <PR> --repo owner/repo
  2. 获取失败运行的日志:gh run view <run-id> --log-failed
  3. 总结失败片段并确定根本原因
  4. 制定修复方案,获得批准后实施修复
  5. 推送修复并验证 CI 是否通过

自动修复议题

从仓库获取议题,实施修复,并为每个议题创建 PR。

  1. 列出目标议题:gh issue list --label bug --limit 5
  2. 对每个议题:创建分支、实施修复、创建 PR
  3. 监控 PR 审查并处理评论
  4. 使用 GitHub REST API 和 $GH_TOKEN 进行自动化操作

Yeet:暂存、提交、推送、创建 PR

一键式流程,将工作目录中的变更通过单条命令发布为 PR。

  1. 如果在 main/master 分支上,创建新分支:git checkout -b codex/{description}
  2. 暂存所有变更:git add -A
  3. 提交并附带描述:git commit -m "{description}"
  4. 推送到远程:git push -u origin HEAD
  5. 创建 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 以避免歧义。
直接使用 URLgh 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 commitgit pushgit pullgit 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 检查依赖警报和安全公告。