拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Garden Skills CI完整拆解:validate-skills与release-skill双工作流设计指南

Garden Skills CI完整拆解validate-skills与release-skill双工作流设计指南【免费下载链接】garden-skillsConardLis open-source Skills collection, featuring web design, knowledge retrieval, image generation, and more.项目地址: https://gitcode.com/GitHub_Trending/we/garden-skillsGarden Skills是 ConardLi 开源的 AI Agent 技能Skills精选合集内置 Web 设计、知识检索、AI 绘图、视频演示等 5 个可直接安装的技能。它的 CI 体系由 validate-skills.yml 和 release-skill.yml 两条工作流组成一套负责把守质量一套负责发布交付。本文将用通俗的方式完整拆解这套 GitHub Actions 双工作流的设计思路帮助新手理解一个多技能仓库是如何做到改一处、全库校验、一键发版的。项目概览一个技能一个独立版本Garden Skills 的目录结构非常清晰每个技能都是 skills/ 下的一个独立文件夹各自带有SKILL.md技能说明和manifest.json名称、版本号、适用 Agent 等元数据。例如skills/web-design-engineer/ — Web 设计工程师技能skills/gpt-image-2/ — AI 绘图提示词技能skills/kb-retriever/ — PDF/Excel 知识检索技能skills/beautiful-article/ — 精美长文生成技能skills/web-video-presentation/ — Web 视频演示技能关键点在于版本号不在仓库根部的 package.json 里而是分散在每个技能的manifest.json中。每个技能独立发版、独立打 tag互不干扰——这是整套 CI 设计的出发点。双工作流为什么这样拆工作流触发时机权限职责副作用validate-skills每个 PR / 推送到 maincontents: read只读校验 冒烟打包 README 同步检查无纯检查release-skill推送*-v*格式 tagcontents: write打包 zip、生成 Release、回写 README 链接创建 Release、向 main 推送提交拆分成两条工作流的好处一目了然高频的 PR 校验保持便宜、快速、无副作用源文件注释原话是 Cheap, fast, no side effects而低频的发布流程才拿到写权限遵循了 CI 安全设计中的最小权限原则。validate-skills 拆解PR 阶段的三道关卡validate-skills.yml 的触发条件限定在路径白名单只有改动skills/**、scripts/release/**或三个语言的 README 时才会运行避免无关 PR 浪费 CI 资源。核心只有一步npm run validate。查看根 package.json 可以发现它其实是三条检查的串联npm run validate # 等价于npm run list npm run pack:all npm run readme:check三道关卡分别是清单与结构校验list-skills.mjs遍历 skills/ 下所有技能检查manifest.json必填字段、名称是否为 kebab-case、版本号是否符合 SemVer、compat里的 Agent 是否在允许列表内以及SKILL.md等必备文件是否存在。校验逻辑集中在 lib/skills.mjs零运行时依赖跑起来飞快。冒烟打包pack-skill.mjs 的--all模式把每个技能真实打包一次成 zip 并计算 SHA-256确保能声明、就能打包把打包失败的问题拦在合并之前。README 同步检查update-readme.mjs 的--check模式README 中每个技能的下载 v1.x.x .zip链接是由机器维护的版本号来源于该技能最新的 git tag而不是 manifest因为 manifest 代表开发中版本tag 才是用户真正能下载到的版本。检查模式只做 diff不产生任何改动。一个容易被忽略的细节checkout 时显式设置了fetch-tags: true。如果忘记拉取 tagCI 会认为所有技能都从未发布过导致 README 检查误报——注释里把这个坑写得明明白白是新手读 CI 源码时很好的范例。release-skill 拆解tag 驱动的自动发版release-skill.yml 由推送 tag 触发约定格式为技能名-v语义化版本例如git tag web-design-engineer-v1.2.0 git push origin web-design-engineer-v1.2.0整个发布流水线共 6 步解析 tag用正则严格匹配skill-vsemver并拆出技能名和版本号格式不合法直接报错退出。工作流层面先用宽松的*-v*触发再由这一步做精确校验——这是 tag 过滤不可靠时的稳健做法。确认技能存在检查skills/skill/目录和manifest.json是否真的存在防止打错 tag 空转。打包调用npm run pack生成dist/release/skill-version.zip与.sha256。zip 的顶层目录固定为skill/用户解压到.claude/skills/等目录即可直接用。生成 Release Notes自动寻找该技能的上一个 tag用git log生成自上个版本以来的改动列表首次发布则回退到展示全部历史并附上安装命令和 SHA-256 校验值。创建 Release用gh release create把 zip 和校验文件挂到 Release 上用户获得一个版本被 pin 死、可复现的下载链接。回写 README 并推回 main先切回默认分支tag 触发时 HEAD 处于 detached 状态注释里特别解释了原因运行npm run readme:sync刷新三个语言 README 的下载链接有 diff 才提交推送保证幂等——连跑两次不会产生多余提交。维护者视角一键发版脚本对贡献者来说打 tag 这一步也被自动化了。cut-release.mjs 是维护者侧的一键发版入口npm run release # 交互式选择要发版的技能 npm run release:dry # 只预览计划不实际执行它先做安全检查在默认分支、工作区干净、与远端同步再列出各技能自上次发版以来的提交让你逐个选择 patch/minor/major 升级最后把版本号 bump README 同步合并为一个提交并与所有 tag一次性原子推送让 CI 看到的始终是自洽的状态。推送完成后打印 Actions 链接剩下的工作就交给 release-skill 工作流。这套设计最值得借鉴的 5 个点职责分离 最小权限检查工作流只读发布工作流可写权限按风险分级。路径触发只在相关文件变化时运行省钱省时。tag 即事实来源README 广告版本以 tag 为准开发版本与发布版本解耦杜绝 404 下载链接。幂等脚本README 同步脚本跑两次不产生 diff可安全地在 CI 和手工场景复用。零依赖工具链发布脚本是纯 Node ESM 脚本scripts/release/不装任何 npm 包CI 冷启动极快。新手快速上手如果你想本地复现这套校验流程克隆仓库如需克隆可使用镜像地址https://gitcode.com/GitHub_Trending/we/garden-skills安装依赖后运行npm run validate体验与 CI 完全相同的三道关卡运行npm run list查看全库技能的版本与健康状态阅读 CONTRIBUTING.md 了解完整的发版约定。小结Garden Skills 用两条轻量工作流就搭出了一条完整的技能发布流水线validate-skills 在 PR 阶段把关能不能合release-skill 在 tag 阶段自动完成怎么发出去。对管理多版本、多组件的开源仓库来说这套校验与发布分离、tag 驱动、脚本幂等的模式非常值得直接抄作业。【免费下载链接】garden-skillsConardLis open-source Skills collection, featuring web design, knowledge retrieval, image generation, and more.项目地址: https://gitcode.com/GitHub_Trending/we/garden-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门