SuperAPI AI 工具集

github

编程与开发

查看项目

更新于 10-15 09:56

技能介绍

用途

该技能用于通过 gh CLI 完成 GitHub 上的日常操作,包括 issue、pull request、仓库、代码搜索、release、gist、star、watch、fork 以及 Actions 工作流等。当用户提到 GitHub 相关任务时使用。

认证与权限

用户令牌以环境变量导出,gh 会自动读取。沙箱内 gh 不保留配置文件,因此 gh auth status 会显示“not logged in”,但每个已认证子命令仍可正常工作。两种模式命令相同,仅权限范围不同,遇到 403 前应先判断所处模式:

if [ -n "$GITHUB_TOKEN" ]; then echo "mode: pat (user-created token)"; \
elif [ -n "$GH_TOKEN" ]; then echo "mode: oauth"; \
else echo "no GitHub connection — connect at https://studio.acedata.cloud/console/connectors"; fi

两者均为机密,在其范围内拥有完整账号访问权,切勿回显或打印。

PAT 模式($GITHUB_TOKEN)的 scope 由用户创建令牌时选择,细粒度令牌可能仅限少数仓库,无法可靠内省,应把每个 403/404 视为可能的权限限制并如实说明,而非反复重试。

OAuth 模式($GH_TOKEN)的连接恰好请求五个 scope:read:user、user:email、repo、read:org、gist。以下操作不在范围内,无论怎样措辞都会失败:关注/取消关注用户(需 user:follow)、屏蔽/取消屏蔽用户(需 user)、读写 Projects V2(需 read:project/project,返回 INSUFFICIENT_SCOPES)、管理 SSH/GPG 密钥(需 admin:public_key/admin:gpg_key)、管理组织成员与团队(需 write:org/admin:org,read:org 仅只读)、管理仓库 webhook(需 admin:repo_hook)。用户安装时每个选项都可选,因此即使上述五个 scope 也可能只被部分授予。对已知存在的资源返回 404 或 403,通常意味着缺少 scope 而非 URL 错误,应明确告知用户前往 studio.acedata.cloud/console/connectors 重新连接并勾选相应选项(OAuth)或粘贴权限更广的令牌(PAT)。

两种调用方式

优先使用一等子命令:gh issue、gh pr、gh repo、gh search、gh release、gh workflow、gh run、gh status、gh label、gh secret、gh variable、gh gist、gh org、gh ruleset。它们默认输出格式化文本,并可通过 --json <fields> [--jq <expr>] 输出结构化 JSON。注意没有 gh star / gh watch 子命令,需走 gh api;gh repo fork 存在。

无对应子命令时使用 gh api 走 REST 或 GraphQL。常用参数:-X POST|PATCH|PUT|DELETE 覆盖方法(默认 GET,设置 -f/-F 时自动变为 POST);-f key=value 为字符串字段,-F key=value 为 JSON 类型字段(true/123/@file.json),GET 时 URL 编码,body 方法时 JSON 编码;-q '<jq>' 等同 --jq,顶层为原始值时直接输出不带引号;-H 'Accept: application/vnd.github.raw' 获取文件原始字节而非 JSON 包装;--paginate 自动跟随 Link: rel="next"。

主要能力与示例

  • 待办总览:gh status
  • issue:gh issue list/view/create/comment/close/reopen/edit/lock/transfer;--add-project/--remove-project 因缺少 project scope 会失败
  • PR:gh search prs、gh pr view/diff/checks/create/edit/ready/comment/review/merge/update-branch/close;merge、close、review --approve 不可逆或公开可见,除非用户明确要求,否则先确认
  • star:gh api -X PUT/DELETE user/starred/OWNER/REPO,204 表示成功,GET 返回 204 表示已 star、404 表示未 star
  • watch:gh api -X PUT repos/OWNER/REPO/subscription -F subscribed=true / -F ignored=true,DELETE 取消;watch 与 star 不同,仅影响通知
  • fork:gh repo fork OWNER/REPO --clone=false 等;star 与 fork 会公开显示在用户资料上,对他人仓库操作前应确认
  • 通知:gh api notifications、PATCH notifications 标记已读
  • 仓库:gh repo create/view/edit/list/archive;gh repo delete 需 delete_repo,未授予,会失败,切勿使用
  • release:gh release list/view/create/upload/download
  • gist:gh gist list/create/view/edit/delete
  • 标签与里程碑:gh label list/create/edit/clone;里程碑无子命令,用 gh api repos/OWNER/REPO/milestones
  • 分支、提交与比较:gh api repos/OWNER/REPO/branches、commits、compare、git/refs
  • 读写仓库文件:读取用 -H 'Accept: application/vnd.github.raw';写入需 base64 内容与当前 blob sha
  • 搜索:gh search code/repos/commits/issues
  • Actions:gh workflow list/run、gh run list/view/rerun/cancel/watch
  • Actions 密钥与变量:gh secret list/set、gh variable list/set;密钥值只写不可读,切勿把用户提供的密钥回显到评论、issue 或提交中
  • 组织(read:org 下只读):gh org list、gh api user/orgs、orgs/ORG/members、orgs/ORG/repos
  • GraphQL:用于 REST 无法完成的操作,例如 issue 时间线中的交叉引用事件;Projects V2 仅存在于 GraphQL 且需 read:project,未授予,会返回 INSUFFICIENT_SCOPES,不应基于它构建方案

适用场景

适合在已连接 GitHub 的环境中执行 issue 与 PR 的分诊、创建、评审与合并,仓库与 release 管理,代码与提交搜索,Actions 触发与日志查看,以及 gist、标签、通知等日常操作。

限制与注意事项

私有仓库要求用户在授权连接时授予 repo scope;对已知存在的仓库返回 404 通常意味着缺少 scope。--json 拒绝字段名时 gh 会打印全部有效字段,应据此重选。gh issue list --search 与 gh search issues 使用 GitHub 搜索语法(is:open、assignee:@me、repo:owner/name 等);跨仓库查询用 gh search issues/prs,单仓库用 gh issue list。gh api --paginate 仅适用于会发出 Link 头的端点,游标分页需自行跟随 pagination.next。无 body 的写端点(star、follow、watch-delete)成功时返回 204 No Content,空响应即成功。该连接可在计划任务中无人值守运行,但公开操作(star、fork、issue/PR 评论、评审、合并)会在用户账号留下永久且可公开归属的痕迹,无人值守时应严格只做任务授权之事。