--- name: cs-github-push description: "将已完成的本地改动安全提交并推送到 GitHub,或为已提交的改动创建 PR;适用于用户要求推送、同步仓库、发布 skill 或核验远端提交。需要部署网站或应用时使用 cs-ending-time。" --- # CS GitHub Push 把“本地做好了”变成可核验的 GitHub 结果。处理一次明确的仓库交付:确认来源和范围、完成必要检查、提交、推送,并用远端状态证明结果。 ## 适用边界 - 适用:推送已有改动、发布新增 skill、同步 README/文档、创建用户要求的 PR、核验某次推送是否真的到达 GitHub。 - 如果实现尚未完成,先完成实现与必要验证,再进入本流程。 - 如果还需要部署网站或应用,用 `$cs-ending-time` 管理完整交付;本 skill 的终点是 GitHub,不把推送等同于上线。 - 用户只是询问如何推送时,解释流程即可;不要因此修改远端。 ## 推送流程 1. **确定交付目标。** 找到仓库根目录、`AGENTS.md`、当前分支、远端与默认分支;查看 `git status --short --branch`、近期提交和待推送提交。明确本次要交付哪些文件,保留其他人的改动。 2. **核对真实来源。** 对来自另一个 Agent、工作区或补丁的内容,先找到原文件并核对完整性。对话摘要、生成日志和“已提交”的说法不能代替本地文件或 Git 对象;缺源文件时说明缺口,不凭描述重建后冒充原版。 3. **完成发布前检查。** 运行与改动相关的验证,检查文档链接、示例命令、生成物和敏感文件。新增或修改 CS Skills 时,同步 `README.md`、`cs-run/SKILL.md` 和必要的 `docs/` 清单;README 的入口、用途、安装方式与实际目录一致。不要为一次普通代码推送重写无关文档。 4. **精确提交。** 查看每个待提交文件的 diff;用明确路径暂存,检查 `git diff --cached --check`、`--stat` 和关键内容,再提交。不要用 `git add -A` 把无关文件带入,也不要提交密钥、私有配置、依赖目录或临时产物。 5. **检查远端变化并推送。** 先 `git fetch`,确认目标分支相对远端的状态。远端已前进时,先整合并验证,不能用强制推送覆盖。按用户指定或仓库约定选择分支;需要 PR 时推送工作分支并创建 PR。直接更新默认分支时,确认它是本次明确的目标且没有分支保护阻挡。 6. **核验交付。** 比对本地提交 SHA 与远端分支 SHA;如果创建 PR,记录并打开 PR 地址,核对目标分支和包含的文件。推送命令成功但未完成远端比对时,只报告“推送命令成功,远端未核验”。 ## 决策规则 - 用户已明确要求推送本次成果,按该授权执行,不为同一动作重复求确认;新发现的其他仓库或其他任务不自动并入。 - 当前分支、目标分支或 PR 方式不明确时,先按仓库约定与用户此前选择判断;只有不同选择会改变公开结果时才提问。 - 禁止默认使用 `reset --hard`、`push --force`、删除分支或改写历史。遇到冲突、权限不足或远端拒绝,保留现场,给出具体原因与可恢复的下一步。 - 如果 GitHub 推送会触发生产部署,按项目的部署规则处理并验证生产状态;必要时转入 `$cs-ending-time`。 ## 交付报告 简洁列出:仓库、目标分支或 PR、提交 SHA、推送到的远端地址、完成的验证,以及尚未交付的文件或阻塞。区分“本地提交”“分支已推送”“PR 已创建”“默认分支已更新”和“部署已验证”。