mcpField
G
github

github

github.com/openclaw开发393.3k6.1k 次安装今天更新
代码仓库

关于 github

面向 GitHub 操作的技能,使用 `gh` 管理拉取请求、议题、CI 运行和 API 数据,并用 `git` 处理本地仓库操作。重点是核实合并结果,并谨慎处理授权、异步合并和会话链接。

主要功能

  1. 01查看和管理拉取请求
  2. 02创建和管理议题
  3. 03检查 CI 运行与日志
  4. 04查询 GitHub API 数据
  5. 05核实异步合并结果

适用场景

  1. 01审查拉取请求及其检查项
  2. 02创建仓库议题或发表评论
  3. 03检查失败的 CI 运行
  4. 04跟踪获准的异步合并

安装

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

$npx skills add https://github.com/openclaw/openclaw --skill github

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

详细介绍

GitHub

使用 gh 操作 GitHub。使用 git 进行本地提交、分支操作、推送和拉取。深入审查时使用代码阅读工具。

身份验证

gh auth status
gh auth login

Gateway 的 HOME 可能与操作者的 HOME 不同。如果 gh 的身份验证信息位于其他位置,请在 gateway 服务环境中设置 GH_CONFIG_DIR 并重启。

PR

gh pr list --repo owner/repo --json number,title,state,author,url
gh pr view 55 --repo owner/repo --json title,body,author,files,commits,reviews,reviewDecision
gh pr checks 55 --repo owner/repo
gh pr diff 55 --repo owner/repo
gh pr create --repo owner/repo --title "feat: title" --body-file /tmp/pr.md

创建或更新 PR 正文时,仅当 Runtime 行提供了 sessionUrl=<exact-url>,才在末尾追加以下页脚。将 <sessionUrl> 替换为该 URL,保持原样;不要自行构造或修改它。只有明确公开的会话才会提供 sessionUrl。如果未提供,请省略页脚;切勿用私有聊天 URL 替代,也不要启用分享来获取 URL。保留任何发布标记,并确保其后仅有一个页脚,且页脚位于正文末尾:

---
[View the OpenClaw team session](<sessionUrl>)

URL 可直接使用:gh pr view https://github.com/owner/repo/pull/55。

异步合并

如果仓库提供原生落地工作流,请使用该工作流。对于其他已获授权的程序化合并,请通过 gh api 使用 GitHub 的异步合并 API;gh pr merge 不会选择此 API。提供经过审查的 head SHA,保留所需的审查和检查,并先检查堆叠关系:提交堆叠 PR 也会合并或排队处理其尚未关闭的下游 PR,这些 PR 需要单独审查和授权。

gh api -H 'X-Octopool-Require: merge-async-v1' \
  --method PUT repos/owner/repo/pulls/55/merge-async \
  -H 'X-GitHub-Api-Version: 2026-03-10' \
  -f sha=REVIEWED_HEAD_SHA -f merge_method=squash -f merge_action=direct_merge
gh api -H 'X-Octopool-Require: merge-async-v1' \
  repos/owner/repo/pulls/55/merge-async/REQUEST_UUID \
  -H 'X-GitHub-Api-Version: 2026-03-10' -H 'Cache-Control: max-age=0'

api 后必须首先保留 Octopool guard header。受保护的旧版包装器会在重写合并权限前拒绝该请求;如果请求被拒绝,请使用包含异步 guard 的 Octopool 构建。受支持的包装器会保留 SHA、方法、操作和绕过设置,只重写提交文本。原生 gh 可以传递该 header。不要移除它、禁用策略或选择原始二进制文件来绕过拒绝。

收到 202 响应后,保留 details.uuid,再进行轮询。pending 表示等待;merged 包含 details.sha,但仍需对 PR/head 进行最终验证。enqueued 表示已排队,并非已合并:请监控 PR 本身。若要遵循已配置的队列,请使用 merge_action=default(或使用 merge_queue 明确排队),并省略仅适用于直接合并的方法、标题和消息字段。未经授权,绝不要启用 bypass_rules。

遇到 failed 时,报告 details.message。409 表示已有请求;请检查其 UUID 和选项,不要重新提交。回复丢失、轮询错误以及 24 小时后结果过期,都需要进行核查,绝不能盲目重试或回退到同步方式。轮询时应使用有界等待并重新读取最新状态。异步处理不会为未满足的检查启用自动合并;只有获得授权时,才使用原生工作流或 gh pr merge --auto 实现该行为。

落地责任

当用户要求落地或合并 PR 时,最终结果以经验证的 PR GitHub 状态为准,而不是审查、工作进程轮次或 CI 观察的结束。

  • 继续保持任务活跃,直到 gh pr view ... --json state,mergedAt,mergeCommit 证明 state 为 MERGED。
  • 如果审查发现问题、存在合并冲突、检查失败或收到修改请求,且这些事项属于当前工作范围,就应继续处理。修补问题、重新运行所需的门禁,并针对更新后的确切 head 重新评估。
  • 待处理的检查表示需要等待,不代表任务已完成。使用仓库支持的等待或合并工作流;不要仅凭部分检查通过就宣称成功。
  • 如果工作委派给了持久会话,而该会话在合并前停止,请继续使用同一会话,不要将其报告视为最终结果。
  • 只有在继续操作需要新的授权、凭据不可用,或无法安全推断产品决策时,才停止并报告受阻。准确说明阻碍,并保持 PR 未合并。

Issue

gh issue list --repo owner/repo --state open --json number,title,labels,url
gh issue view 42 --repo owner/repo --json title,body,comments,labels,state
gh issue create --repo owner/repo --title "Bug: ..." --body-file /tmp/issue.md
gh issue comment 42 --repo owner/repo --body-file /tmp/comment.md
gh issue close 42 --repo owner/repo --comment "Fixed in ..."

CI/运行

gh run list --repo owner/repo --limit 10
gh run view <run-id> --repo owner/repo --json status,conclusion,headSha,url
gh run view <run-id> --repo owner/repo --log-failed
gh run rerun <run-id> --repo owner/repo --failed

API

gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'
gh api repos/owner/repo/labels --jq '.[].name'
gh api --cache 1h repos/owner/repo --jq '{stars: .stargazers_count, forks: .forks_count}'

对于结构化输出,使用 --json + --jq。对于包含反引号、shell 片段、环境变量名称或用户文本的评论/正文,使用 --body-file。

评论

支持 Markdown