用途
update-ai-dev-kit 用于把某个项目的 ai-dev-kit 更新到最新状态。ai-dev-kit 由单一仓库(SatanLittleHelper/ai-dev-kit)发布,并以三种方式进入项目:
- rules — git 子模块 .claude/ai-dev-kit,通过 @import 接入 CLAUDE.md;
- skills — 用 npx skills add 安装,并在 skills-lock.json 中锁定;
- mods — 来自 ai-dev-kit 市场的 Claude Code 插件,在 .claude/settings.json 中启用。
源仓库的变更本身不会到达这三者中的任何一个。而且 npx skills update 只刷新已安装的技能——项目建立之后才发布的技能永远不会被添加。该技能会把这三部分全部更新,并安装新增内容。套件的组成从刚更新的子模块(skills/*、.claude-plugin/marketplace.json)读取,绝不从 setup.sh 的硬编码列表读取,因为后者可能滞后。
任何触发词(如「обнови скиллы」「обнови правила」「обнови кит」)都会运行整个序列:三部分来自同一仓库,理应保持同步。
主要能力与使用方式
从项目根目录运行。缺少前置条件的部分会被跳过,并在报告中说明。
范围检查。 rules 和 mods 部分需要子模块 .claude/ai-dev-kit([ -d .claude/ai-dev-kit ]);skills 部分需要 skills-lock.json。若两者都不存在,告知用户该项目未使用 ai-dev-kit 并停止。
Rules — 先更新子模块(后续每一步都读取新内容):
git submodule update --init --remote .claude/ai-dev-kit
CLAUDE.md 对 rules/RULES.md 的 @import 会在下次加载时获取新内容。
AGENTS.md 仅在项目选择启用 Codex 时处理。如果 AGENTS.md 包含标记 <!-- ai-dev-kit:rules:start,则运行 bash .claude/ai-dev-kit/rules/build-agents-md.sh。无标记 → 静默跳过;是否启用的问题属于 setup.sh,只问一次。
该脚本会以未格式化方式重写该块(例如 markdown 表格会丢失列对齐),因此几十行的 diff 可能纯粹是空白差异。如果项目用 Prettier 格式化 markdown(存在 .prettierrc* 文件或 package.json 中有 prettier),在脚本之后立即运行 npx prettier --write AGENTS.md,使 diff 只显示真实内容变更。项目中没有 Prettier → 保持脚本输出原样。
Skills(需要 skills-lock.json):
刷新已安装的,项目范围且非交互:
npx skills update -p -y
-p 绝不触碰全局 ~/.claude/skills;-y 跳过范围提示,避免卡住。
查找新增的:.claude/ai-dev-kit/skills/ 中的文件夹名减去 skills-lock.json 中 "source" 为 SatanLittleHelper/ai-dev-kit 的键。其他来源的技能绝不触碰。一次调用安装所有缺失项,不询问:
npx skills add SatanLittleHelper/ai-dev-kit --skill <name>... --yes
如果 skills-lock.json 列出了 update-project-skills 或 update-project-rules(本技能所取代的两个技能),在报告中提及 npx skills remove update-project-skills update-project-rules 可清理它们。不要自行移除。
Mods(需要子模块):
mods 是 .claude/ai-dev-kit/.claude-plugin/marketplace.json 中的 plugins[].name。全部启用并安装——幂等,添加新增项并保持已有项不变:
bash .claude/ai-dev-kit/mods/install-mods.sh <mod>...
刷新已安装的:
claude plugin marketplace update ai-dev-kit claude plugin update <mod>@ai-dev-kit
更新后的 mod 只有在 Claude Code 会话重启后才生效——在报告中说明这一点。
报告。 运行 git status --short 和 git diff --stat。报告刷新了什么,并单独列出新增了什么(技能、mods)。没有任何变更 → 直接说明并跳过提交询问。
提交前询问。 根据 rules/base/git-and-commits.md,git commit 仅在用户明确要求时运行。展示 diff(通常是子模块指针、skills-lock.json、同步的技能文件、.claude/settings.json、AGENTS.md)并询问。若用户同意,按 rules/base/git-and-commits.md 处理消息格式及其提交前分支检查。
失败情况。 若任何命令出错(网络、注册表、未初始化的子模块),向用户展示其实际输出;不要吞掉或静默重试。
常见错误
- 只运行 npx skills update 就认为完成:它从不添加新技能——还要从更新后子模块的 skills/ 安装缺失项。
- 从 setup.sh 的 OUR_SKILLS 取技能列表:该列表是硬编码的,可能滞后;应在更新子模块后读取 .claude/ai-dev-kit/skills/。
- 在更新子模块之前查找新技能:先更新子模块,否则全新技能还不在 skills/ 中。
- 运行不带参数的 npx skills update:使用 -p -y——项目范围,无交互提示。
- 安装或移除其他来源的技能:只触碰 source 为 SatanLittleHelper/ai-dev-kit 的技能。
- 在项目从未选择启用 Codex 时重新生成 AGENTS.md:仅当 ai-dev-kit:rules:start 标记已存在时才做。
- 在 Prettier 项目中保留 build-agents-md.sh 写出的 AGENTS.md:脚本会丢失格式(表格对齐);运行 npx prettier --write AGENTS.md,使 diff 不是噪声。
- 自动提交变更:先询问,依据 rules/base/git-and-commits.md。
- 忘记 mod 更新后的重启提示:mod 只在新会话中重新加载——告知用户。
- 在 CLI 出错时静默重试:暴露实际错误。
适用场景与限制
适用于使用 ai-dev-kit 的项目,需要同步 rules、skills、mods 三部分时。限制:需要项目根目录、子模块或 skills-lock.json 等前置条件;不处理其他来源的技能;不自动提交;mod 更新需重启会话才生效。