关于 sync-upstream
用于将本仓库中的 skills 按上游项目的正式版本逐次同步的维护流程。它要求先检查变更并提交适配方案供维护者审批,再执行修改和验证,同时保留仓库自身的命名与专属内容。
主要功能
- 01按 release 逐次同步
- 02先查看 changelog 与差异
- 03审批后再应用变更
- 04保留本仓库专属 skills
- 05校验插件清单与引用
适用场景
- 01检查上游版本间的 skill 变化
- 02处理上游 skill 重命名或删除
- 03准备同步报告并等待维护者批准
- 04更新版本记录并完成 release
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ leandrocfe/ skills --skill sync-upstream安装后在 Claude Code 中输入/sync-upstream确认已加载。
详细介绍
与上游同步
本仓库是 mattpocock/skills 的巴西葡萄牙语改编版。目标不是逐字翻译:每项 skill 都保留原版的用途、行为、流程和意图,同时采用适合巴西受众的语言、示例和背景。
上游使用 semver 发布版本,并通过 CHANGELOG.md 记录每项变更。同步按每个发布版本进行,绝不持续跟踪分支。
真相来源
本仓库根目录下的 UPSTREAM.md:
upstream-version:— 最近一次完全同步的上游标签;- 本项目身份相关的有意重命名映射;
- 本仓库独有的 skills(绝不移除——上游没有对应项);
- 已知待处理事项。
remote upstream 指向 Matt 的仓库。如果不存在:git remote add upstream https://github.com/mattpocock/skills.git。
标签命名空间
上游标签位于 upstream/* 下(例如:upstream/v1.1.0);干净的 vX.Y.Z 命名空间属于本仓库的发布版本。这样就可以为同步打标签,而不会与 Matt 同名的标签冲突。
remote 已配置为使用此命名空间。如果新克隆的仓库尚未配置:
git config remote.upstream.tagOpt --no-tags
git config --add remote.upstream.fetch "+refs/tags/*:refs/tags/upstream/*"
绝不要运行 git fetch upstream --tags——这会将 Matt 的标签放入干净的命名空间,重新引入冲突。
流程
1. 找出差异
git fetch upstream
BASE=UPSTREAM.md中upstream-version:的值(例如:v1.1.0),读取为upstream/$BASE。ALVO= 上游最新标签:git tag -l 'upstream/v*' | sort -V | tail -1。BASE == ALVO→ 无需处理,结束。
2. 理解变更——先看 CHANGELOG,再看 diff
-
阅读上游
CHANGELOG.md中BASE到ALVO之间的章节(git show upstream/$ALVO:CHANGELOG.md)。它会说明发生了什么以及为什么——以此作为报告框架,不要从头重新整理。 -
生成实际差异,并检测重命名:
git diff -M upstream/$BASE..upstream/$ALVO -- skills/ .claude-plugin/plugin.jsondocs/有意排除在外——请参阅UPSTREAM.md中有意保留的差异。 -
将 diff 与
UPSTREAM.md中的名称映射对照(例如:对setup-matt-pocock-skills的变更应应用于setup-leandrocfe-skills)。
3. 报告与提案——修改任何文件之前
向维护者说明:
- 按类别归纳变更(新增 skills、重命名、修改、移除);
- 对每项变更说明:改了什么、为何重要(引用 CHANGELOG)以及对本版本的影响;
- 提出适配方案,并遵守以下规则;
- 明确标出需要人工决定的事项。
**在此处停止并等待批准。**如果存在歧义、版本冲突或多种有效的适配方案,请先询问再继续。
4. 应用变更——仅在获批后
- 逐项适配 skill;绝不要复制粘贴。
- 使用
git mv镜像上游的重命名,但UPSTREAM.md映射中列出的项目除外。 - 更新
.claude-plugin/plugin.json:skills 列表必须与实际目录一致,version字段必须与同步的标签一致。“ARS scope guard” hook 会阻止 agents 写入此文件——将内容交给维护者手动保存,或请维护者关闭该 hook。 - 检查本仓库独有的 skills(
personal/)是否引用了上游 skills:重命名会导致这些引用无提示地失效。 - 最后验证:
plugin.json中的每个条目都存在于skills/中;frontmatter 中的name:均与目录名一致;没有遗留对已失效 skill 名称的引用(使用grep搜索旧名称);根据CLAUDE.md更新 bucket 和顶层 README。
5. 完成同步
- 将
UPSTREAM.md中的upstream-version:更新为ALVO,并清理已解决的待办事项。 - 提交:
sync: upstream ALVO。 - 为此仓库的发布创建标签,版本号与上游保持一致:
git tag -a $ALVO -m "sync: upstream $ALVO"。由于 Matt 的标签位于upstream/*下,因此干净的命名空间可用。 - 运行
git push origin $ALVO前,先与维护者确认推送事宜。 - 如果工作流创建了同步 issue,请将其关闭。
- 可选:翻译 CHANGELOG 中的发布说明,并将其发布为此仓库的发布说明。
适配规则
- 切勿自动复制上游内容。
- 保留此项目的身份特征(
UPSTREAM.md中映射的名称)。 - 使用巴西葡萄牙语;保留约定俗成的英文技术术语。
- 使用专业、精炼的文风。 不使用俚语、口语或刻意随意的表达(例如:“UX gostosa”“sacada”“dá pra”“maneiro”)。请将内容译为结构清晰、适合技术文档的葡萄牙语,优先选用准确术语。原文中的营销形容词(“delightful”“beautiful”)应译为稳重的对应表达(“精致”“做工精良”),而非俚语。如有疑问,请大声读一遍:如果听起来不像技术手册中的表达,请改写。
- 优先保留技能的行为和意图,而非沿用相同措辞。
- 对 Matt 现实中非常具体的示例,在适当时请提出符合巴西语境的替代方案。
- 保留此仓库现有的定制内容,除非它们与上游的重要改进冲突——此时请在第 3 步的报告中指出冲突。
- 切勿移除
UPSTREAM.md中列出的专属技能。
与其自动同步,不如谨慎更新并充分说明理由。应用每项建议前,请先解释原因。