gh-repo-bootstrap
GH Repo Bootstrap
本技能用于“本地已有代码,准备发布到 GitHub”的场景。
gh 负责 GitHub 平台动作,例如认证和创建仓库;git 负责本地版本历史和推送。不要把 gh 当成 AI 专用工具,它只是 GitHub CLI;只有当 Agent 能执行终端命令时,这条路径才成立。
Preconditions
- Agent 能运行 shell 命令。
git与gh已安装。- 目标环境已登录 GitHub,或允许执行
gh auth login。 - 若后续要直接
git push,优先执行gh auth setup-git让 Git 复用 GitHub CLI 凭据。
Workflow
-
先做预检,不要直接建远程仓库。
- 运行
git --version、gh --version、gh auth status。 - 运行
git rev-parse --is-inside-work-tree、git status --short、git remote -v。 - 如果当前目录已经绑定 GitHub 远程仓库,优先转成“补充 commit / push”流程,而不是重复建仓。
- 如果工作区里有密钥、
.env、大体积构建产物或无关改动,先收敛范围再继续。
- 运行
-
只收集最少但关键的决策。
- 仓库名。
- Owner,使用
<user>/<repo>或<org>/<repo>。 - 可见性。默认
--private;只有用户明确要求时才用--public或--internal。 - 是否允许立即推送当前分支。
- 仅在用户要求时再处理附加项:description、README、
.gitignore、license、disable issues/wiki、team、template。
-
准备认证。
- 本地交互式使用:
gh auth login。 - 无头自动化:优先使用
GH_TOKEN;只有必须从标准输入读取令牌时才考虑gh auth login --with-token。 - 如果后续要让
git push直接复用 GitHub CLI 凭据,执行gh auth setup-git。 - 依赖
gh auth setup-git时优先使用 HTTPS;只有环境本来就配好了 SSH,或用户明确要求 SSH 时才切到 SSH。
- 本地交互式使用:
-
规范本地 Git 状态。
- 如果当前目录还不是 Git 仓库,执行
git init。 - 只 stage 本次要发布的文件。
- 使用
--push前先确保已经有本地 commit。 - 除非仓库策略明确要求固定分支名,否则优先使用
git push -u origin HEAD,不要硬编码main。
- 如果当前目录还不是 Git 仓库,执行
-
用
gh创建远程仓库。- 当前目录作为源目录:
gh repo create <repo-or-owner/repo> --private --source . --remote origin
- 当前目录已有 commit,创建后立即推送:
gh repo create <repo-or-owner/repo> --private --source . --remote origin --push
- 远程优先,再 clone 到本地:
gh repo create <repo-or-owner/repo> --private --clone
--clone只适合空工作区或“先建再拉”的流程,不要对已有本地项目误用。- 不要静默覆盖或替换现有
origin。
- 推送并验证。
- 如果没有使用
--push,执行git push -u origin HEAD。 - 用
git remote -v和gh repo view验证远程仓库是否正确创建。 - 向用户回报最终仓库 URL、remote 名称和已推送的分支。
- 如果没有使用
Safe Defaults
- 默认创建私有仓库。
- 默认 remote 名称为
origin。 - 默认首次提交信息可以使用
chore: initialize repository,除非项目已有更明确的提交规范。 - 未指定 owner 时,优先使用当前认证用户。
Command Templates
发布当前目录中的现有项目
git init
git add .
git commit -m "chore: initialize repository"
gh auth setup-git
gh repo create my-demo-repo --private --source . --remote origin --push
先建远程仓库,再单独 push
gh repo create my-demo-repo --private --source . --remote origin
git push -u origin HEAD
Guardrails
- 除非用户明确要求,否则不要创建公开仓库。
- 不要把 secrets、
.env、本地凭据文件或无关改动推上去。 - 不要在未经确认的情况下删除、重命名或覆盖现有 remote。
- 不要在首次发布时做
git push --force,除非用户明确要求。 - 组织仓库创建失败时,优先把权限问题说明白,不要私自切回个人账号重试。
- 如果用户只要求“建 GitHub 仓库”,不要顺手加 README、license、模板文件或 workflow。
Escape Hatch
当 gh 的现成子命令不够用时,可以使用 gh api 发 GitHub REST 或 GraphQL 请求;但认证检查、可见性默认值和推送安全规则保持不变。
More from why8023/agent-skills
python-use
定义 Python 环境管理和依赖管理的强制规范。当 Agent 需要使用 Python、创建虚拟环境、安装依赖、管理 Python 版本时必须应用此技能。强制使用 uv 工具,禁止 pip/conda,确保项目级环境隔离。
11nodejs-use
定义 Node.js 环境管理和版本管理的强制规范。当 Agent 需要使用 Node.js、管理 Node 版本、安装 JavaScript 依赖、处理 packageManager 或 Corepack、编写或读取 mise.toml / .mise.toml / .tool-versions,或将旧项目从 volta、fnm、.node-version、.nvmrc 迁移到 mise 时必须应用此技能。强制使用 mise 管理 Node.js 运行时,禁止手动安装 Node.js,确保项目级环境隔离。
10git-repo-normalize
Standardize Git repository line-ending handling before any Git-related work. Use whenever Codex is about to operate on a Git repo, including version bumps, releases, commits, tags, diffs, CI workflow edits, or investigation of LF/CRLF warnings. On the first handling of a repo, add or reconcile the root .gitattributes rule `* text=auto eol=lf`, renormalize tracked files, review the diff, and complete this normalization before continuing with other repo work.
8skill-authoring-sync
在 `why8023/agent-skills` 中央 skills 仓库中新增、更新或重命名一个 skill,并在完成后把该 skill 安装到某个业务项目根目录时使用。适用于“新建一个 skill”“把 skill 沉淀到中央仓库”“把中央 skill 安装到当前项目”“更新项目里已安装的某个中央 skill”等请求。覆盖 `skills/skill-name/` 目录创建、`SKILL.md` 与 `agents/openai.yaml` 编写、最小验证、按目标 skill 单独提交并 push,以及在目标项目中通过 `npx skills add why8023/agent-skills --skill skill-name` 做项目级安装或刷新。
4dependency-reuse-first
在代码功能开发场景中,先评估是否可复用流行、成熟、维护良好的第三方依赖、官方 SDK、平台能力或现成服务,再决定是否自行实现。当 Agent 收到新功能、新模块、协议或文件格式支持、基础设施集成、数据处理、认证授权、图表表格、抓取解析、缓存队列、测试辅助等开发需求,且存在“从零写一套”的风险时必须使用此技能。先做候选依赖调研与取舍,再开始编码。
3docling-word
使用 Docling CLI 解析 `.docx` Word 文件并导出 Markdown,同时把提取出的图片等附件统一整理到 Markdown 同级的 `attachments/` 目录。用于用户要求用 Docling 转 Word、要求通过 `uv tool install` 安装 Docling、或要求修正 Docling 附件路径与目录结构时。
2