用途
该技能用于在 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 对目标仓库的访问权限。仅当仓库成员关系变化时无需重新认证。