ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Expo Skills 的 CI 如何自动校验技能质量?check-skill-limits 与版本管理脚本深度解析

Expo Skills 的 CI 如何自动校验技能质量?check-skill-limits 与版本管理脚本深度解析 Expo Skills 的 CI 如何自动校验技能质量check-skill-limits 与版本管理脚本深度解析【免费下载链接】skillsA collection of AI agent skills for working with Expo projects and Expo Application Services项目地址: https://gitcode.com/gh_mirrors/skills9/skillsExpo Skills 是面向 Expo 项目的 AI 代理技能Agent Skills合集它的 CI 流水线通过check-skill-limits、插件版本检查等脚本自动校验每一个技能的质量规范与四端插件版本同步。本文带你完整解析这套自动化质量门禁的设计思路与实现细节。为什么技能仓库也需要 CI 校验这个仓库里住着25 个技能plugins/expo/skills/下的expo-router、eas-hosting等和4 个插件清单Claude、Codex、Cursor、Grok 各一份plugin.json。技能一旦触发整个SKILL.md就会加载进 AI 的上下文窗口——所以质量不只是代码能跑还包括体量克制描述和正文不能无限膨胀️命名规范expo-*免费开源与eas-*付费 EAS 服务的边界必须清晰付费披露收费技能必须提前告知成本版本同步四端插件清单必须同步升级靠人工 Review 很难盯住这些细节于是项目把它们全部固化成了可重复执行的检查脚本。CI 流水线总览一个 Workflow 四道关卡核心工作流定义在 .github/workflows/check.yml它在每次提交到main分支的 PR 以及合并组触发时运行检查项执行命令作用技能需求体检bun scripts/check-skill-limits.ts校验体量、命名、前缀、付费披露与目录同步版本脚本自测bun test scripts/check-plugin-version-bump.test.ts确保版本检查脚本本身行为可靠插件版本同步bun scripts/check-plugin-version-bump.ts origin/main四端 manifest 必须同步升级且大于 main路由覆盖检查bun scripts/check-overview-routing.ts新技能必须登记进expo-overview路由表这里有一个巧妙的设计四道关卡都配置了continue-on-error: true让一次运行暴露所有失败而不是修一个错、重跑一次才看到下一个错。最后由专门的 Report check results 步骤汇总各关卡结果、生成表格报告并统一决定整个 Job 的成败见 check.yml#L60-L108。关卡一check-skill-limits 的七项体检scripts/check-skill-limits.ts 会递归扫描plugins/下的所有SKILL.md对每个技能做七项检查1. 体量上限CI 强制描述frontmatterdescription最多1024 字符正文body最多500 行常量直接定义在 check-skill-limits.ts#L6-L7。技能触发即全量加载进上下文是这套上限的由来——更短的技能 更省上下文、更省费用。2. 命名规范技能目录必须叫expo-*或eas-*且 frontmatter 里的name必须与目录名完全一致。前缀就是免费/付费的边界标识。3. 分类前缀每个技能的描述必须以分类标签开头开源技能用Framework (OSS).付费技能用EAS service (paid).跨领域的expo-skill-feedback技能豁免。4. 付费披露eas-*付费技能的正文必须包含 EAS service - costs apply. 提示和官方定价页链接——成本信息前置绝不藏着掖着。5. Codex 元数据每个技能必须携带 agents/openai.yamlCodex 触发元数据付费技能的short_description还必须以Paid EAS service.开头。6. 目录同步技能必须在 skills.sh.json 中登记到正确的分组Framework / Experimental / Services paid distribution脚本同时做双向校验技能没登记会报错目录里登记了但文件不存在也会报错。7. 统一反馈块每个SKILL.md结尾必须带有标准的 Submitting Feedback 反馈块且块内的技能名要与自身匹配。忘了加或写错了跑一下bun scripts/check-skill-limits.ts --fix-feedback即可自动修复全部技能。全部通过时脚本会打印一行确认✓ All skills pass limits, naming, feedback, category labels, paid callouts, Codex metadata, and catalog sync.关卡二check-plugin-version-bump 版本管理深度解析scripts/check-plugin-version-bump.ts 守护的是一条四端同步升级规则。什么是版本化路径脚本监控这些路径的变更见 check-plugin-version-bump.ts#L37-L45plugins/expo/skills/全部技能内容四个插件清单.claude-plugin/、.codex-plugin/、.cursor-plugin/、.grok-plugin/下的plugin.jsonmcp.json/.mcp.json只要其中任何文件变化CI 就要求✅ 四个清单的version必须全部改成同一个值不允许只升 Claude 不升 Codex✅ 新版本必须大于origin/main上的版本✅ 版本必须是合法 semver脚本内置完整的 semver 正则校验目前四个清单都锁定在1.13.8这正是该规则生效后的产物。贴心设计--set-version一键写回改四个 JSON 文件容易漏脚本提供了便利选项bun scripts/check-plugin-version-bump.ts --set-version 1.13.9它会自动校验 semver 合法性、确认大于 base 分支版本然后把四个清单一次性更新并对已是该版本的清单跳过Unchanged。Markdown 报告 PR 评论设置环境变量VERSION_CHECK_SUMMARY_PATH后检查结果会以 Markdown 表格形式写出对比每个插件在 main 与 PR 中的版本CI 会把报告附加到 Job Summary甚至直接在 PR 上留一条带标记的评论检查通过后之前失败留下的评论还会被自动删除——PR 讨论区始终保持干净。脚本也要被测试CI 里还专门有一步运行 check-plugin-version-bump.test.ts 测试套件覆盖--help、--set-version等所有用例。测试会先备份四个清单、逐条还原所以检查者本身也处于被检查状态。关卡三路由覆盖检查scripts/check-overview-routing.ts 守护expo-overview这个路由技能所有其他技能必须以行内代码如expo-router的形式出现在 expo-overview/SKILL.md 的 Skill Map 里否则 AI 路由就派单不到新技能。漏登记的技能会被逐一列出并提示修复位置。失败如何被报告工作流的 Report check results 步骤会在 Job Summary 里生成这样一张表CheckResultReproduce locallyskill requirementsfailbun scripts/check-skill-limits.ts每行失败项都附上了本地复现命令新手照着敲一遍就能在自己的机器上重现问题——这是CI 友好型报错的典型做法。本地先跑一遍提交 PR 前的 3 条命令按照 CONTRIBUTING.md 的建议打开 PR 之前先在本地执行claude plugin validate ./plugins/expo bun scripts/check-skill-limits.ts bun scripts/check-plugin-version-bump.ts origin/main改过 JSON 的话再用python3 -m json.tool验证一下格式就能确保 CI 一次通过。进阶一瞥技能评估 CI 与指纹缓存除了静态检查仓库还配套了面向技能实际效果的评估流水线脚本scripts/ci.shShell 侧的评估辅助函数拉取私有 eval-harness 子模块、执行生成应用 技能触发评估、缓存命中判断等scripts/ci.pyPython 侧的对应实现提供fingerprint、bundle write/verify、print-outputs三个子命令其中fingerprint的设计尤其值得新手学习它把技能内容哈希、eval-harness 的 commit SHA、PRD/场景配置、Agent 与模型名全部揉进一个 SHA-256 指纹——只要任何一项输入变化旧缓存立即失效保证评估结果永远可比。脚本注释里还藏着一段真实踩坑记录模型必须用 1M 上下文变体sonnet[1m]否则 200k 的模型会丢掉技能描述菜单导致所有触发得分都是 0。小结脚本守护对象一句话总结check-skill-limits.ts每个SKILL.md七项体检体量、命名、前缀、披露、元数据、目录、反馈块check-plugin-version-bump.ts四个插件清单内容一变版本必须四端同步升级check-overview-routing.tsexpo-overview路由表新技能必须能被路由看见ci.sh / ci.py评估流水线指纹缓存确保技能效果评估可比、可复现这套 CI 的核心思想对任何维护多 Agent 多格式分发的团队都有借鉴意义把 Review 清单变成可执行的脚本把一次暴露全部问题变成默认行为并给每个失败都附上本地复现命令——质量校验从此不再依赖人的记忆而是依赖流水线的确定性。【免费下载链接】skillsA collection of AI agent skills for working with Expo projects and Expo Application Services项目地址: https://gitcode.com/gh_mirrors/skills9/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表