mcpField
S
sync-repos

sync-repos

github.com/thatrebeccarae开发18799 次安装24 周前更新
代码仓库

关于 sync-repos

sync-repos 是用于维护私有开发仓库及其公开副本的技能,可检查差异、执行并验证本地同步,并扫描意外泄露的个人信息或密钥。

主要功能

  1. 01比较文件列表与内容哈希
  2. 02分类预期排除项和仓库差异
  3. 03配置并运行本地同步脚本
  4. 04验证一致性并扫描敏感数据
  5. 05保留公开仓库独有文件且不自动推送

适用场景

  1. 01公开推送前检查仓库一致性
  2. 02开发完成后查找未同步更改
  3. 03配置新的公私仓库配对
  4. 04发布前检查同步状态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/thatrebeccarae/claude-marketing --skill sync-repos

安装后在 Claude Code 中输入/sync-repos确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

EXAMPLES.md
LICENSE
REFERENCE.md

详细介绍

同步仓库

管理公开/私有仓库对。验证开发(私有)仓库与其公开对应仓库是否一致,检测偏移,运行同步脚本,验证结果,并确保没有个人身份信息(PII)或密钥泄露到公开侧。

安装

claude install-skill https://github.com/thatrebeccarae/claude-skills/tree/main/sync-repos

适用场景

  • 推送公开仓库前——验证同步状态干净且为最新
  • 完成重大开发工作后——检查公开仓库是否已落后
  • 定期检查——每周或发布前,尽早发现未同步的更改
  • 首次设置新的公开/私有仓库对时

用法

  • /sync-repos check [dev-path] [public-path] — 比较仓库并报告偏移情况
  • /sync-repos sync [dev-path] [public-path] — 运行同步脚本并验证
  • /sync-repos setup [dev-path] [public-path] — 创建初始的 sync-public.sh 和配置

如果未提供路径,则提示用户输入。在开发仓库中查找 .syncignore 或 scripts/sync-public.conf,以自动检测仓库对。

流程

检查模式
  1. 验证路径。 确认两个路径都存在且包含 .git/ 目录。如果任一路径不是 Git 仓库,则中止并给出明确提示。

  2. 检测同步脚本。 在开发仓库中查找 scripts/sync-public.sh、scripts/sync-public.conf 或 .syncignore。报告是否存在同步机制。

  3. 比较文件列表。 为两个仓库生成排序后的文件列表(排除 .git/、node_modules/、dist/)。对差异进行分类:

    • 预期排除项 — 符合已知排除模式的文件(见下方的常见排除模式),或列在 .syncignore / sync-public.conf 中的文件
    • 意外偏移 — 存在于开发仓库但在公开仓库中缺失,且未列入任何排除列表的文件
    • 内容不一致的文件 — 两个仓库中都存在但内容不同的文件(通过 sha256sum 或 git hash-object 比较)
    • 仅公开仓库有的文件 — 存在于公开仓库但不在开发仓库中的文件(合理情况:README、CONTRIBUTING、LICENSE、.github/)
  4. 检查最近同步时间戳。 如果存在 scripts/sync-public.sh,则通过公开仓库中符合同步模式的最近一次提交,检查该脚本最近的执行时间。与开发仓库中的最新提交进行比较。

  5. 报告。 展示汇总表:

    • 同步脚本:已找到/未找到
    • 仅在开发仓库中的文件(预期):数量
    • 仅在开发仓库中的文件(意外):数量 + 列表
    • 内容不一致的文件:数量 + 列表
    • 仅在公开仓库中的文件:数量 + 列表
    • 预计偏移:自上次同步以来的开发仓库提交数
    • 建议:“同步一致”、“轻微偏移”或“需要同步”
同步模式
  1. 先运行检查。 执行上述完整检查流程。如果未检测到偏移,则报告“已同步一致”并停止。

  2. 定位同步脚本。 在开发仓库中查找 scripts/sync-public.sh。如果未找到,询问用户是否要运行设置模式来创建脚本。

  3. 预览同步。 展示同步脚本将执行的操作——要复制的文件、排除项、文本替换。继续前必须获得用户确认。

  4. 执行同步脚本。 从开发仓库根目录运行:

    bash scripts/sync-public.sh
    

    捕获标准输出和标准错误。如果脚本以非零状态退出,则报告错误并停止。

  5. 同步后验证。 脚本完成后:

    • 再次运行检查流程以确认一致性
    • 扫描公开仓库差异,检查是否包含个人身份信息(PII)或密钥(扫描模式见 REFERENCE.md)
    • 标记所有发现的问题,并在解决前阻止后续操作
  6. 报告结果。 总结:

    • 已同步文件:数量
    • 已应用的排除项:数量
    • PII/密钥扫描:未发现问题或存在发现
    • 下一步:“检查公开仓库中的更改,然后在准备就绪后运行 /safe-push”
设置模式
  1. 扫描开发仓库。 找出不应同步到公开仓库的文件和目录:

    • 环境文件:.env、.env.*(.env.example 除外)
    • 规划/内部文件:.planning/、.claude/、CLAUDE_CONTEXT.md、briefs/
    • 数据/构建产物:data/、dist/、node_modules/、.git/
    • 同步基础设施:scripts/sync-public.sh、scripts/sync-public.conf
    • 敏感配置:*.pem、*.key、*.plist、config/soul.md
    • 通过分析 .gitignore 检测到的项目专属模式
  2. 生成 sync-public.conf。 创建配置文件,包含:

    • SOURCE_DIR 和 TARGET_DIR 变量
    • 公开仓库的 PACKAGE_NAME
    • 包含所有已识别排除项的 EXCLUDE_PATHS 数组
    • 用于公开仓库专属文件(README、LICENSE、.github/)的 PRESERVE_PATHS 数组
  3. 生成 sync-public.sh。 使用 REFERENCE.md 中基于 rsync 的模板创建同步脚本。包括:

    • 加载配置文件
    • 路径验证
    • 清理目标目录(保留 .git/ 和 PRESERVE_PATHS)
    • 使用 --delete-excluded 和排除列表运行 rsync
    • 个人数据泄漏检查
    • 文件数量摘要
  4. 用户审核。 显示生成的配置和脚本。等待用户明确批准后再写入。

  5. 写入文件。 将 scripts/sync-public.sh(chmod +x)和 scripts/sync-public.conf 保存到开发仓库。

常见排除模式

默认情况下,这些模式会从同步中排除。根据需要追加项目专属模式。

模式原因
.git/Git 历史记录保持独立
.env、.env.*密钥和环境配置
.planning/内部规划文档
.claude/Claude Code 项目配置
CLAUDE_CONTEXT.md内部 Agent 上下文
data/本地数据/数据库
dist/、node_modules/构建产物
*.pem、*.key私钥材料
*.plistmacOS 服务配置
scripts/sync-public.*同步基础设施本身
briefs/内部内容简报
config/soul.md个人 Agent 配置

核心原则

  • 绝不自动推送。 同步只会在本地写入文件。推送到远程始终是单独的步骤,必须由用户通过 /safe-push 确认。
  • 同步后始终验证。 每次同步结束时,都要对公开仓库进行 PII/密钥扫描,不得例外。
  • 排除列表只能追加。 未经用户明确批准,绝不移除排除模式。多排除一些比少排除一些更安全。
  • 保留公开仓库专属文件。 公开仓库可能有自己的 README、LICENSE、CONTRIBUTING、.github/ 工作流。同步绝不能覆盖这些文件。
  • 配置文件与脚本分开。 将 sync-public.conf 单独保存,以便轻松审核和更新排除列表,而无需改动脚本逻辑。

评论

支持 Markdown