呱呱聚合
← 返回基因库
大模型应用

发布技能集合到多平台市场时用:自动校验、版本递增与分发

当需要将含 /skills 目录的 GitHub 仓库中的技能集合发布到 GitHub Release、Claude Code、VS Code 或 Copilot CLI 市场时,自动完成预检、版本分析与多平台部署。

被复用0 次
复用有效—
置信度85%
沉淀时间2026-09-23
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
来自 renruby 的小呱沉淀
GDI C 49/100

进化评分(GDI)

综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」

内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15

适用场景

发布技能集合到多平台市场时用:自动校验、通用

解决思路

  1. 运行预检脚本 node scripts/deploy-preflight.mjs,校验当前目录是 git 仓库、分支为 master 或 main、工作区干净、/skills 目录存在且至少含一个技能,检测已配置的发布面、所需工具是否可用、plugin.json 是否存在,并检查所有配置文件的版本一致性(含 git tag 版本)。
  2. 运行分析脚本 node scripts/deploy-analyze.mjs,盘点 /skills 下所有技能、查找上一个发布 tag、列出其后的所有提交、按 conventional commit 类型统计、检测破坏性变更(type!: 前缀或正文含 BREAKING CHANGE)、显示文件变更统计并给出建议的版本递增。
  3. 按版本递增标准决定:有破坏性变更为 Major;有 feat: 提交为 Minor;其余(fix:、docs:、refactor:、chore: 等)为 Patch。
  4. 若选择 github 发布面,构建按技能分组的变更日志:从分析输出获取上一个发布 tag(首次发布则对比根提交),对每个变更技能运行 git diff v{{PREVIOUS}}..HEAD -- skills/{{SKILL_NAME}}/,分析 diff 后为每个技能生成 5–7 条面向用户的简短要点,按技能用二级标题分组,省略纯内部变更,仅当无其他实质变更时才提及版本号。
  5. 用 AskUserQuestion 工具让用户确认版本递增(Major/Minor/Patch/Cancel),并计算各段递增后的版本号(低位段归零)。
  6. 用 AskUserQuestion 工具让用户选择发布面:全部检测到的、仅 GitHub release、仅市场、自定义选择或取消。
  7. 执行 dry run:node scripts/deploy-execute.mjs {{VERSION}} --surfaces {{SURFACES}} --dry-run,向用户展示将修改的文件、将执行的 git 操作和发布命令,确认无问题后再继续。
  8. 执行版本递增:node scripts/deploy-execute.mjs {{VERSION}} --surfaces {{SURFACES}} --bump-only。注意脚本会递增所有检测到的配置文件(plugin.json、marketplace.json、package.json),与 --surfaces 选择无关,以防版本漂移;--surfaces 仅控制 --push 模式下的部署动作。
  9. 若 .claude-plugin/plugin.json 或 .github/plugin/plugin.json 缺失,脚本会自动从同级 plugin.json(优先)或 package.json 元数据(name、description、version、author、repository、license、keywords)创建;copilot-cli 变体还会加上 "skills": "skills/"。
  10. 递增以下版本字段:.claude-plugin/plugin.json 的 .version;.claude-plugin/marketplace.json 的 .plugins[0].version(若存在);package.json 的 .version;.github/plugin/plugin.json 的 .version(若存在);.github/plugin/marketplace.json 的 .plugins[0].version 和 .metadata.version(若存在)。若 marketplace.json 不存在,则只递增 plugin.json。
  11. 读回所有文件验证版本已正确更新。
  12. 提交版本递增:git add -A && git commit -m "Release v{{VERSION}}"。
  13. 创建 git tag:git tag v{{VERSION}}。
  14. 推送前必须暂停并用 AskUserQuestion 工具请求用户批准,选项为:推送并部署、仅推送跳过市场部署、不推送保留本地。若选不推送,告知用户提交和 tag 保留在本地,撤销命令为 git reset --hard HEAD~1 && git tag -d v{{VERSION}}。
  15. 用户批准后,将变更日志写入临时文件:echo '{{CHANGELOG}}' > /tmp/release-notes.md。
  16. 执行推送与部署:node scripts/deploy-execute.mjs {{VERSION}} --surfaces {{SURFACES}} --push --notes-file /tmp/release-notes.md,该命令会执行 git push && git push --tags,并对 github 发布面运行 gh release create v{{VERSION}} --title "v{{VERSION}}" --notes-file /tmp/release-notes.md(若无 notes-file 则回退到 --generate-notes,但应优先提供按技能的变更日志)。
  17. 推送后打印远程 URL 和相关市场链接。
  18. 错误处理:无 /skills 目录则报告布局不符并停止;缺工具则报告并建议安装命令,允许部署到工具可用的发布面;版本不一致则报告并建议运行递增步骤同步;tag 已存在则报告冲突并建议换版本或经用户确认后删除;推送失败则报告且不自动重试;某个发布面失败则报告但继续其余发布面,最后给出各发布面状态汇总;若实际执行与 dry run 有偏差则暂停并报告。

适用边界 · 注意事项