SuperAPI AI 工具集

shunk031-github-cgd-identity

部署与运维

查看项目

更新于 10-16 02:41

技能介绍

用途

该技能用于在 creative-graphic-design 组织的仓库(例如 design-generators)中执行所有 GitHub 写操作。这些操作以机器用户 creative-graphic-design-dev(用户 ID 176740601)的身份进行,而不是个人账号。这样做的原因是:机器人提交的 PR 可以让人类账号正式审查并批准;而 GitHub 不允许用户批准自己的 PR,如果用个人账号创建 PR,审查流程就无法正常工作。

主要能力

技能覆盖的写操作包括:git 提交、推送、PR 创建与更新、PR 回复、issue 评论、标签、里程碑,以及用户请求的合并。所有针对 creative-graphic-design 组织仓库的编码代理写操作都应归属于该机器人账号。

使用方式

在开始写操作之前,需要在工作 shell 和 worktree 中执行一系列检查作为启动流程,而不是等到失败后再排查。

首先确认仓库写入目标:git remote get-url origin 应指向 github.com/creative-graphic-design。如果不是,则本技能不适用,应使用普通 git 身份和认证;新机器上的 setup-gh-cgd 引导是例外。

确保 GitHub CLI 的系统凭据存储中有该机器人账号。在新机器上,运行一次交互式设置命令并在浏览器中以 creative-graphic-design-dev 身份认证:

setup-gh-cgd

代理工作期间不要使用 gh auth switch,因为它会更改整个主机的活动账号,并可能与并发会话产生竞争。

按账号名获取存储的机器人令牌,并仅将其传递给每个使用 gh 或 git 凭据的写命令:

GH_TOKEN="$(gh auth token --hostname github.com --user creative-graphic-design-dev)" gh pr create ...
GH_TOKEN="$(gh auth token --hostname github.com --user creative-graphic-design-dev)" git push

不要将令牌导出到持久 shell 中,也不要打印它。逐命令前缀使账号选择保持显式,并避免更改 GitHub CLI 的全局活动账号。

验证 GitHub 身份和组织仓库的推送权限。gh api user 只能确认登录账号,无法验证对组织资源的访问:

GH_TOKEN="$(gh auth token --hostname github.com --user creative-graphic-design-dev)" gh api user --jq .login
GH_TOKEN="$(gh auth token --hostname github.com --user creative-graphic-design-dev)" gh api repos/creative-graphic-design/<repo> --jq .permissions.push

除非第一条命令返回 creative-graphic-design-dev 且第二条返回 true,否则不要开始写操作。

为每个提交命令设置提交作者为机器人:

git -c user.name=creative-graphic-design-dev \
    -c user.email=176740601+creative-graphic-design-dev@users.noreply.github.com \
    commit ...

不要在链接的 worktree 中使用 git config user.name/email:它会写入共享的 .git/config,并同时更改主检出和并发 worktree 的作者。

通过 HTTPS 推送,因为此环境中 SSH 不使用代理。设置显式推送 URL:

git remote set-url --push origin https://github.com/creative-graphic-design/<repo>

GH_TOKEN 在同一命令环境中同时适用于 gh 和 git 凭据助手。凭据助手返回令牌时用户名为 x-access-token。

适用场景

本技能仅适用于 github.com 上的 creative-graphic-design 组织仓库。不要将存储的机器人凭据或机器人提交身份用于其他主机、组织或个人仓库;在那里应使用普通认证和普通 git 身份。

人类(shunk031)仅保留在 GitHub UI 中批准 PR 以及决定是否合并的权限。不要以机器人身份批准 PR。

限制与故障排查

如果任何设置验证失败,应完全放弃机器人身份:不要部分应用它,例如在凭据检查失败时仍设置机器人提交作者,或通过其他账号推送。应停止并报告。

如果 gh auth token --user creative-graphic-design-dev 失败或存储的凭据被拒绝,使用 gh auth logout --hostname github.com --user creative-graphic-design-dev 移除该账号,然后重新运行 setup-gh-cgd。这会更改本地认证状态,必须由用户交互完成。

如果身份检查成功但仓库权限为 false,在重试前授予 creative-graphic-design-dev 对目标仓库的访问权限。仅当仓库成员关系变化时无需重新认证。