名称: 使用gh-cli 描述: “指导如何使用GitHub CLI (gh) 来与GitHub仓库、拉取请求、问题和API交互。在操作GitHub资源时使用,而不是WebFetch或curl。” 允许的工具:
- Bash
- Read
- Glob
- Grep
使用GitHub CLI (gh)
何时使用
- 浏览或阅读代码 从GitHub仓库 — 克隆它并使用Read/Glob/Grep
- 查看或创建拉取请求、问题、发布或gist
- 获取仓库元数据或任何GitHub API数据
- 与GitHub Actions交互(运行、工作流)
- 任何涉及GitHub的任务,否则可能会使用
curl、wget或WebFetch
何时不使用
- 非GitHub URL(使用
WebFetch或curl处理那些) - 托管在GitHub Pages(
*.github.io)上的公共网页内容 — 那些是常规网站 - 本地git操作(
git commit、git push) — 直接使用git
关键原则
始终使用gh而不是curl、wget或WebFetch处理GitHub URL。 gh CLI自动使用用户的认证令牌,因此它:
- 适用于私有仓库
- 避免GitHub API速率限制(未认证:60次请求/小时;认证:5,000次请求/小时)
- 正确处理分页
- 提供结构化输出和过滤
浏览仓库代码
要读取或浏览GitHub仓库中的文件,将其克隆到本地并使用常规文件工具(Read、Glob、Grep)。这比通过API逐个获取文件快得多且更自然。
# 克隆到会话范围内的临时目录(会话结束时自动清理)
clonedir="$TMPDIR/gh-clones-${CLAUDE_SESSION_ID}"
mkdir -p "$clonedir"
gh repo clone owner/repo "$clonedir/repo" -- --depth 1
克隆后,使用探索代理(通过Task工具设置subagent_type=Explore)来调查克隆的仓库。探索代理可以高效地在克隆上使用Read、Glob和Grep — 比逐一调用它们好得多:
Task(subagent_type="Explore", prompt="在$clonedir/repo/中,查找身份验证是如何实现的")
对于已理解的克隆上的针对性查找,直接使用Read/Glob/Grep。
gh repo clone使用用户的认证令牌 — 适用于私有仓库--depth 1保持克隆快速(仅最新提交)- 无需清理 — SessionEnd钩子自动移除克隆目录
- 仅在需要快速单文件查找而不克隆时使用
gh api
快速开始
# 查看仓库
gh repo view owner/repo
# 列出和查看拉取请求
gh pr list --repo owner/repo
gh pr view 123 --repo owner/repo
# 列出和查看问题
gh issue list --repo owner/repo
gh issue view 456 --repo owner/repo
# 调用任何REST API端点
gh api repos/owner/repo/contents/README.md
# 调用分页并使用jq过滤
gh api repos/owner/repo/pulls --paginate --jq '.[].title'
常见模式
| 替代方案 | 使用 |
|---|---|
WebFetch 在 github.com/owner/repo |
gh repo view owner/repo |
WebFetch 在blob/tree URL |
使用gh repo clone克隆并使用Read/Glob/Grep |
WebFetch 在 raw.githubusercontent.com/... |
使用gh repo clone克隆并使用Read |
WebFetch 在 api.github.com/... |
gh api <端点> |
curl https://api.github.com/... |
gh api <端点> |
curl 带 -H "Authorization: token ..." |
gh api <端点>(认证自动) |
wget 下载发布资源 |
gh release download --repo owner/repo |