con un clic
check-upstream-updates
检查 mattpocock/skills 上游更新,找出需要重译的技能与新增可翻译技能。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
检查 mattpocock/skills 上游更新,找出需要重译的技能与新增可翻译技能。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
| name | check-upstream-updates |
| description | 检查 mattpocock/skills 上游更新,找出需要重译的技能与新增可翻译技能。 |
| disable-model-invocation | true |
对比 mattpocock-skills submodule 锁定的上游版本与每个已翻译技能的翻译基准,找出哪些技能需要重译、哪些新技能可翻译。脚本只读,推进 submodule 指针与更新清单都需人工确认。
这个技能依赖两个版本锚的区分:
mattpocock-skills 检出 commit。代表"上游代码的物理副本当前停在哪个版本"。AI 翻译时读的就是这个副本。source_commit:docs/translated-skills.json 里每个技能记录的 commit。代表"这个技能的 HTML 实际翻译时所基于的上游版本"。两者不同步是常态:推进 submodule 指针拿到最新代码后,清单 source_commit 仍指向旧版本,直到该技能被重译。
main HEAD 而非 release tag上游用 changesets 发版,但发版不频繁——v1.0.1 之后 main 已合并十几个 wayfinder 系列 PR(含 grilling 确认门)未发版。钉 tag 会长期落后于已合并的改进。这是学习/翻译站,及时性优先;每次推进显式确认,可回退。
翻译是创造性工作,自动生成会产出未校对的中文,污染站点。本技能的边界止于"报告 + 经确认推进指针",重新生成 HTML 是 bilingual-html 技能 + 人工翻译的职责。
uv run --script scripts/check-updates.py # 人类可读
uv run --script scripts/check-updates.py --json # 机器可读(给下游处理)
uv run --script scripts/check-updates.py --ref origin/v1.0.1 # 对比特定 ref
脚本只做计算:fetch origin → 取 origin/main HEAD → 对每个已翻译技能对比 source_commit..origin/main 该技能当前上游目录 → 报告变更文件 + commit range;另扫描 engineering + productivity 桶找出清单里没有的新技能。
完成标志:脚本退出码 0 或 2,报告已完整输出到 stdout(退出码 2 表示有 source_commit 不在上游历史,见步骤 2 的 Unknown baseline)。
source_commit..origin/main 之间有文件变化 → 需要重新翻译并重新生成 HTML。
M/A/D 前缀)指明上游改了什么,重译时重点对照。source_path 与当前不符)。即使内容未变也需刷新清单的 source_path,并视情况重译。source_commit 不在上游 git 历史中(可能被 force-push 抹掉)。脚本对此退出码 2。需人工重新校准该技能的 source_commit。engineering/productivity 桶里有清单未收录的新技能 → 可选择翻译。source_commit 统一填 main HEAD,故首次检查无差异。这是已知行为——若怀疑 HTML 实际基于更早版本,可手动校准该技能的 source_commit 到更早的 commit 后重跑。完成标志:每个 Changed/Moved 技能已明确是否重译,每个 Missing 已明确处置,每个 Unknown-baseline 已明确如何重新校准,每个 New 技能已明确是否翻译。
若决定跟进上游更新,先征得用户明确确认,再推进:
git -C mattpocock-skills fetch origin
git -C mattpocock-skills checkout main
git -C mattpocock-skills merge --ff-only origin/main
git add mattpocock-skills # 父仓库记录新指针
推进后 submodule 副本停在最新 main HEAD,AI 可读最新 SKILL.md 做翻译。但清单 source_commit 此刻尚未更新(更新规则见参考)。
完成标志:git submodule status 显示新 commit,父仓库 git diff --cached 含 mattpocock-skills 指针变更。
重新翻译某技能并用 bilingual-html 重新生成 HTML 后,更新 docs/translated-skills.json 里仅该技能的条目:
"<skill-name>": {
"source_commit": "<当前 submodule HEAD,git -C mattpocock-skills rev-parse HEAD>",
"translated_at": "<今天日期 YYYY-MM-DD>",
"source_path": "<skills/<bucket>/<name>,若上游改了桶则刷新>"
}
source_commit = 当前 submodule HEAD。translated_at = 重译日期。source_path 是派生元数据,脚本会验证;若上游把技能换了桶,此处同步刷新。完成标志:清单里被重译技能的三字段已更新,其它技能条目不动。
scripts/check-updates.py(PEP723,uv run --script 运行,仅依赖 stdlib):
| 参数 | 作用 |
|---|---|
| (无) | 人类可读报告输出到 stdout,进度信息到 stderr |
--json | 输出结构化 JSON |
--ref <ref> | 对比指定 ref(默认 origin/<manifest ref>,通常 origin/main) |
退出码:0 = 干净;1 = submodule 或 manifest 缺失(环境错误);2 = 有 source_commit 不在上游历史(数据错误,报告仍完整输出)。
docs/translated-skills.json{
"upstream": {"url": "https://github.com/mattpocock/skills.git", "ref": "main"},
"skills": {
"<name>": {
"source_commit": "<40 字符 commit hash>",
"translated_at": "YYYY-MM-DD",
"source_path": "skills/<bucket>/<name>"
}
}
}
source_commit:该技能 HTML 实际翻译时所基于的上游 commit。唯一更新时机:重新翻译并重新生成 HTML 后,设为当前 submodule HEAD(见步骤 4)。推进 submodule 指针不更新它。source_path:派生字段,脚本搜索 mattpocock-skills/skills/*/<name> 验证;非真值源。上游换桶时脚本标记 Moved。新增可翻译技能只扫描 engineering + productivity 两个桶(已翻译范围的桶)。in-progress(wayfinder 等)、misc、personal、deprecated 不主动报告——技能进入 engineering/productivity 后自然被检测到。
本项目曾用 /home/cnife/github/mattpocock-skills 作为独立 clone,改用 submodule 后已冗余。确认无其他项目引用后可删除:
rm -rf /home/cnife/github/mattpocock-skills