groove-admin-update 是 andreadellacorte/groove 提供的一个维护类技能,用于将用户本地的 groove 状态更新到最新发布的 groove 技能版本,并应用待处理的迁移。
用途 该技能有两个核心用途:一是拉取最新的 groove 技能,二是将尚未应用的迁移按版本顺序应用到用户本地的 groove 状态。它主要供 groove 仓库维护者使用:在发布新的 GitHub Release 后,从 groove 仓库根目录运行此命令,以保证已检入的 .agents/skills/groove* 与通过 npx skills add andreadellacorte/groove 安装的内容一致。资料中明确指出,不要为此手动从 skills/ 目录做 rsync。
预期结果 所有待处理的迁移都会按版本顺序应用到用户本地 groove 状态。更新后,.groove/index.md 会反映当前已安装的 groove 版本。
验收标准
- 更新后,.groove/index.md 中的 groove-version 与 skills/groove/SKILL.md 中的 version 一致。
- 每一个待处理的迁移都按顺序被应用。
- 每一次成功迁移后都会更新 groove-version,从而保证部分进度可恢复。
- 如果已经是最新版本,会清晰报告并退出。
- 事实来源检查:只有当已安装技能版本等于最新 GitHub release 版本时才会报告“up to date”;如果 add 步骤在磁盘上留下了较旧版本(例如缓存或默认分支),会向用户发出警告并告知修复方式。
主要流程
- 从 https://api.github.com/repos/andreadellacorte/groove/releases/latest 获取最新 release 标签(tag_name,去掉开头的 v),作为目标版本。如果 API 调用失败,跳过版本检查并在没有目标版本的情况下继续。
- 带重试地安装:运行 npx skills add andreadellacorte/groove --yes(不带 @tag,因为 CLI 不支持 tag 语法)。完成后读取 skills/groove/SKILL.md 中的 version 并与目标比较。若仍低于目标,等待 10 秒后重试,最多共 3 次。若所有尝试都未能安装目标版本,则报告安装版本与最新 release 版本不一致,提示 npx skills add 可能缓存了旧版本,建议稍后重试并退出。
- 安装成功后,在继续之前从磁盘重新读取本 SKILL.md(skills/groove-admin-update/SKILL.md),因为技能刷新可能已更新 update 命令本身。
- 读取 .groove/index.md 中的 groove-version;若无该键,则假定为 0.1.0 并写入。
- 读取 skills/groove/SKILL.md 中已安装的版本。
- 若本地版本与已安装版本一致,报告已是最新并退出。
- 读取 skills/groove/migrations/index.md,解析迁移表。
- 筛选出 To 大于本地版本且 To 小于等于已安装版本的行,按表格顺序排列;From 字段仅作参考,不作为执行门槛。
- 若版本不同但未找到迁移,则直接把 .groove/index.md 中的 groove-version 更新为已安装版本并报告无需状态迁移。
- 对每个待处理迁移:报告正在应用、读取并执行迁移文件、将 groove-version 更新为 To 版本、报告已应用。
- 报告汇总:应用了 N 个迁移,当前版本为 v。
更新后重新同步平台符号链接 对 .agents/skills/ 中每个以 groove 开头的目录:确保 .claude/skills/<name> 是指向 ../../.agents/skills/<name> 的符号链接(创建或更新过期链接);若 .cursor/skills/ 存在,确保 .cursor/skills/<name> 同样是指向 ../../.agents/skills/<name> 的符号链接;移除 .claude/skills/groove-* 或 .cursor/skills/groove-* 中在 .agents/skills/ 里已不存在的过期条目。示例命令为:for skill in .agents/skills/groove*; do name=$(basename "$skill"); ln -sfn "../../.agents/skills/$name" ".claude/skills/$name"; done。使用 ln -sfn(不解引用)以避免在已有目录符号链接内部创建嵌套符号链接。完成后报告平台符号链接已刷新。
约束
- “最新”的事实来源是 GitHub releases;npx skills add 可能缓存较旧版本,因此步骤 1-2 会获取最新 release 标签并最多重试 3 次。
- 绝不跳过迁移:即使 From 与本地版本不完全匹配,也要按表格顺序应用每个匹配的迁移。
- 在每次单独迁移后更新 groove-version,而不只在最后更新。
- 若某个迁移失败:停止,报告失败和当前版本,不要继续。
- 不要修改技能文件——这由 npx skills update 处理;本命令只迁移本地状态。
- 本地状态包括:.groove/index.md 配置键、memory 目录结构、AGENTS.md 各部分。
- 每个迁移文件都是幂等的:在部分失败后重新运行应当是安全的。
适用场景与限制 适用于维护 groove 仓库、发布新 Release 后同步已检入技能,以及更新用户本地 groove 状态并应用迁移的场景。其主要限制是:依赖 GitHub releases 与 npx skills add,可能受缓存影响;迁移失败会中止流程;命令只处理本地状态迁移,不修改技能文件。资料未提供收费、价格或平台支持范围等信息。