其他
需要更新本地 groove…
适用于已安装 groove 技能,需要把本地 .groove 状态迁移到最新发布版本并同步平台链接的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要更新本地 groove 技能并按版本特定
解决思路
- 维护者注意:在发布新的 GitHub Release 后,从 groove 仓库根目录运行此更新流程,使 checked-in 的 `.agents/skills/groove*` 与 `npx skills add andreadellacorte/groove` 安装的内容一致;参考 `CONTRIBUTING.md` 的 “Publish release”;不要为此手动从 `skills/` 执行 `rsync`。
- 确认目标结果:将所有待处理迁移按版本顺序应用到用户的本地 groove 状态;更新后 `.groove/index.md` 应反映当前已安装的 groove 版本。
- 验收检查:更新后 `.groove/index.md` 中的 `groove-version:` 必须匹配 `skills/groove/SKILL.md` 中的 `version:`。
- 验收检查:每个待处理迁移都按顺序应用。
- 验收检查:每个迁移成功后就更新 `groove-version:`,让部分进度可恢复。
- 验收检查:如果已是最新,清晰报告并退出。
- 来源可信检查:只有当已安装技能版本等于最新 GitHub release 时才报告已是最新;如果 add 步骤在磁盘上留下旧版本(例如缓存或默认分支),警告用户并告知修复方法。
- 从 `https://api.github.com/repos/andreadellacorte/groove/releases/latest` 获取最新 release tag(`tag_name`,去掉开头的 `v`),作为目标版本;如果 API 调用失败,跳过版本检查并继续(不设置目标)。
- 带重试安装:运行 `npx skills add andreadellacorte/groove --yes`(不要加 `@tag`,CLI 不支持 tag 语法)。
- 安装完成后,从 `skills/groove/SKILL.md` 读取 `version:` 并与目标版本比较。
- 如果已安装版本仍低于目标版本,等待 10 秒并重试 `npx skills add andreadellacorte/groove --yes`;总尝试次数最多 3 次。
- 如果所有尝试都未能安装目标版本,报告:'Installed v<installed> but latest release is v<target> — `npx skills add` may be caching an older version. Try again later.' 并退出。
- 成功安装后,在继续之前从磁盘重新读取此 `skills/groove-admin-update/SKILL.md`;技能刷新可能已更新 update 命令本身,后续步骤必须反映最新版本。
- 从 `.groove/index.md` 读取 `groove-version:`;如果该键不存在,假定为 `0.1.0` 并写入。
- 从 `skills/groove/SKILL.md` 的 `version:` 读取已安装版本(第 2 步已确认其匹配目标版本)。
- 如果本地版本与已安装版本匹配,报告 'groove is up to date (v<version>)' 并退出。
- 读取 `skills/groove/migrations/index.md`,解析迁移表。
- 筛选出 `To` > 本地版本且 `To` <= 已安装版本的行,按表顺序排列;`From` 字段仅供参考,不用于限制执行。
- 如果没有找到迁移但版本不同,直接把 `.groove/index.md` 中的 `groove-version:` 更新为已安装版本,并报告 'no state migrations needed — version bumped to v<version>'。
- 对每个待处理迁移:报告 'Applying <from> → <to>: <description>'。
- 对每个待处理迁移:读取并执行迁移文件。
- 对每个待处理迁移:把 `.groove/index.md` 中的 `groove-version:` 更新为 `To` 版本。
- 对每个待处理迁移:报告 '✓ <from> → <to> applied'。
- 报告总结:N migrations applied, now at v<version>。
- 更新后重新同步平台符号链接:对 `.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`(no-dereference)以避免在现有目录符号链接内部创建嵌套符号链接。
- 报告 '✓ platform symlinks refreshed'。
- 约束:'latest' 的 source of truth 是 GitHub releases —— `npx skills add` 可能缓存旧版本;第 1-2 步会获取最新 release tag 并最多重试安装 3 次以确保安装正确版本。
- 约束:绝不要跳过迁移 —— 按表顺序应用每个匹配的迁移,即使 `From` 与本地版本不完全匹配。
- 约束:在每次单个迁移后更新 `groove-version:`,而不是只在最后更新。
- 约束:如果某个迁移失败,停止,报告失败和当前版本,不要继续。
- 约束:不要修改技能文件 —— `npx skills update` 会处理;此命令只迁移本地状态。
- 约束:本地状态包括:`.groove/index.md` 配置键、memory 目录结构、AGENTS.md 部分。
- 约束:每个迁移文件都是幂等的 —— 如果部分失败后重新运行,应当安全。
适用边界 · 注意事项
- 未安装 groove 或没有 `.groove/index.md` 本地状态时,不能执行状态迁移。
- 只想更新或修改技能文件本身时,不要用此流程改技能文件;应由 `npx skills update` 处理。
- 无法访问 GitHub API 且严格要求确认最新 release 时,本流程会跳过版本检查,不适合保证与最新版本对齐。