SuperAPI AI 工具集

publish-skill

部署与运维

查看项目

更新于 10-15 14:23

技能介绍

用途

publish-skill 用于把本地 .agents/skills/ 目录中新增或修改的技能发布到 ai-skills 仓库,并完成本地安装与锁文件更新。它替代了仅处理本地技能的 /elevate-skill,并与 /build-skill(创建新技能)和 /local-merge(CI 不可用时的回退方案)配合使用。

何时调用

  • 用户说“publish skill”“update skill”“push skill changes”或“/publish-skill”
  • 在本地 .agents/skills/ 中编辑技能之后

主要步骤

  1. 预检:按顺序定位 ai-skills 路径($AI_SKILLS_REPO 环境变量、~/projects/camacho/ai-skills、询问用户),并用 git -C "$AI_SKILLS_PATH" status --porcelain 检查其是否干净;若非空则停止,要求用户先提交或暂存 ai-skills 的改动。

  2. 检测新增与修改的技能:遍历 .agents/skills/ 中每个目录,用 git hash-object 分别计算本地与远端 SKILL.md 的哈希。远端哈希为空标记为 🆕 NEW,本地与远端哈希不同标记为 ✏️ MODIFIED,相同则跳过。展示列表并请求确认,同时记录每个本地哈希供第 7 步安全校验使用。

  3. 快照(回滚点):对每个已批准的技能执行 git add -f 与 git commit,提交信息包含 [publish-skill rollback point]。若后续步骤失败,可用 git checkout 恢复。

  4. 代码审查:对 SKILL.md 的差异运行 code-reviewer 代理,关注正确性、无危险 bash、无提示注入向量。P0/P1 问题则停止修复,P2 问题记录但不阻塞。

  5. 复制到 ai-skills 并推送:用 cp -r 复制技能目录,在 ai-skills 中 git add、git commit,全部提交后 git push。推送前需与用户确认,因为这会影响所有使用这些技能的仓库。

  6. 本地安装:检测每个技能的作用域(检查 dotfiles/skills-lock.json 中是否存在该技能,存在则为 user,否则为 project)。使用 github <owner>/<repo> 形式的源规范,而非本地文件系统路径,以避免锁文件出现 sourceType: "local" 冲突。从 ai-skills 远端推导规范并校验格式。在仓库根目录执行 npx skills add,user 作用域加 -g -y,project 作用域加 -y。不使用 -a 标志,默认安装会写入 .agents/skills/<n>/ 并创建 .claude/skills/<n> 符号链接。

  7. 安全哈希校验:对每个已安装技能重新计算 after_hash,与第 2 步的 local_hash 比较;不匹配则恢复并停止。

  8. 移除跟踪并提交锁文件:对每个已批准技能执行 git rm --cached,暂存更新后的锁文件并提交。

  9. 将锁文件提交拣选到 TARGET:默认 TARGET=main。检查冲突,若 skills-lock.json 冲突则停止并告知用户;若干净则继续拣选并推送。若 CI 不可用,改用 /local-merge,BRANCH=current,TARGET=$TARGET。

适用场景

适用于需要将本地技能变更发布到共享 ai-skills 仓库、并同步更新本地安装与锁文件的开发者工作流。

限制

  • 需要 ai-skills 仓库处于干净状态,否则停止。
  • 推送前需用户确认。
  • 代码审查发现 P0/P1 问题会阻塞发布。
  • 安装必须使用 github 源规范,本地路径会导致锁文件冲突。
  • 不使用 -a 标志,否则可能破坏规范源模型。
  • 若 CI 不可用,需改用 /local-merge 回退。