# Sync Codex Repos

> 同步、检查、提交并推送用户的两个全局 Codex Git 仓库：`C:\Users\Wes\.codex` 中的全局配置仓库和 `C:\Users\Wes\.codex\skills` 中的全局技能仓库。用户说“提交推送更新全局配置和全局技能”“同步 Codex 配置和技能”“更新并推送两个 Codex 仓库”或明确调用 `$sync-codex-repos` 时使用。先更新两个仓库，再审查和验证本地改动，最后分别提交并推送；任一仓库更新冲突时不得开始推送。

- Skill: `wesperez/sync-codex-repos` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add wesperez/sync-codex-repos`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wesperez/sync-codex-repos/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: WesPerez (https://skillmd.com/u/wesperez)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/wesperez/sync-codex-repos

---


# 同步 Codex 仓库

将以下两个独立仓库作为一个发布批次处理：

- 配置仓库：`C:\Users\Wes\.codex`，预期远端 `https://github.com/WesPerez/codex-profile.git`
- 技能仓库：`C:\Users\Wes\.codex\skills`，预期远端 `https://github.com/WesPerez/codex-skills.git`

用户使用触发语即授权在这两个仓库范围内执行常规拉取、提交和推送，不需要再次询问是否推送。不得扩大到其他仓库、子模块或外部状态。

触发语表示同步并提交这两个仓库中当前所有经过审查的非忽略改动，包括触发前已经存在的修改和未跟踪文件，而不只限于当前对话产生的文件。无法判断某项改动是否应进入全局仓库时，在提交前列出该文件并询问，不得猜测。

使用以下状态交接结果：`已同步并推送`、`已更新-无需提交`、`阻塞-仓库身份不符`、`阻塞-更新冲突`、`阻塞-敏感文件`、`阻塞-验证失败`、`部分成功-单仓库推送失败`。

## 工作流

1. 在两个目录分别确认 Git 根目录、当前分支、`origin` URL、上游分支和 `git status --short --branch`，并记录更新前基线。预期使用 `main`。远端可接受上述 HTTPS URL，或指向同一 GitHub owner/repository 的等价 SSH URL；路径、仓库身份或分支不符合预期时停止，不自行改写远端或切换分支。
2. 只输出状态、文件名和必要的差异摘要，不输出凭据、令牌、认证 JSON 内容或大段个人数据。检查未跟踪文件、忽略文件风险和异常大文件。
3. 对两个仓库都执行 `git fetch origin --prune`。比较本地与上游的 ahead/behind 状态。
4. 先完成两个仓库的远端更新，再进行任何推送：
   - 需要更新时使用 `git pull --rebase --autostash`，保留已有工作区改动。
   - 不使用 `reset --hard`、`checkout --`、宽泛清理或强制推送。
   - 如果出现冲突、autostash 恢复失败、未跟踪文件阻挡更新或上游历史异常，停止整个发布批次并报告具体仓库和冲突文件；不得推送任一仓库。
5. 更新成功后分别审查两个仓库的最终改动。使用 `git diff --check`，查看 `git diff --stat`、文件列表和必要的具体差异。不得仅凭文件名盲目提交。
6. 检查敏感或运行时产物，尤其关注认证文件、令牌、私钥、数据库、日志、缓存、构建产物和包含真实个人数据的文件。发现疑似敏感内容时停止提交并说明，不自动修改或删除用户文件。
   - 敏感扫描使用固定、可审查的文件名和内容规则，只输出命中文件与规则名，不打印匹配正文或秘密。
   - 至少覆盖常见认证 JSON、`.env`、私钥、token/secret/password 字段、数据库文件和异常大文件；命中后人工判断，不自动删除或脱敏用户文件。
7. 对技能仓库中每个新增或修改的 Skill 运行 `skill-creator/scripts/quick_validate.py`，并按 `skill-improver` 的风险到证据模型选择最低充分验证。复用同一版本、依赖和环境下仍有效的近期证据，不因发布动作默认增加 E3/E4；新增或修改脚本至少运行低风险的代表性 E1 成功/失败测试，外部契约变化按需增加 E2。验证失败则停止推送。
8. 为每个存在改动的仓库分别暂存全部已经审查通过的非忽略文件并创建提交，不使用 `git add -f`。配置仓库中的 `skills` 目录是独立嵌套仓库，必须继续被配置仓库忽略；提交前用 `git check-ignore` 或等价证据确认配置仓库不会暂存 `skills` 内容。提交信息应根据实际差异生成；无法提炼时使用：
   - 配置仓库：`chore: sync global Codex configuration`
   - 技能仓库：`chore: sync Codex skills`
9. 提交后再次确认两个仓库工作区、提交记录和相对上游状态，并检查是否残留 rebase、merge、cherry-pick、autostash 或普通 stash。`git stash list` 非空不自动判错，但必须区分本次 pull 产生的残留与用户既有 stash；本次 autostash 未恢复、工作区仍冲突或 Git 操作状态未结束时禁止推送。只有两个仓库都已成功更新、审查、验证并完成所需提交后，才开始推送。
10. 依次使用普通 `git push origin main` 推送两个仓库，不使用 `--force` 或 `--force-with-lease`。优先先推送技能仓库，再推送配置仓库。若第一个推送成功而第二个失败，保留已成功结果并重试或报告；不得通过改写远端历史模拟回滚。

## 结果报告

简洁报告每个仓库的拉取结果、提交哈希和标题、推送结果、验证结果，以及任何需要用户处理的冲突或敏感文件。某个仓库没有本地改动时说明已更新且无需提交，不创建空提交。

两个仓库的推送不是原子事务。必须通过“先更新并验证两边，再开始推送”降低部分成功风险，但不得声称可以保证同时成功或自动回滚远端。

