Skip to content

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 02 Sep 10:27
· 2 commits to main since this release

版本语义判断(每次发版重做一遍,不照抄上次):本轮未改任何 skill 的指令正文,namedescription 一字未动.progress.json 格式与落盘布局不变,存量教材项目照常续写 → 不是 MAJOR。含 SkillHub 第四个分发渠道接入,按 [0.2.0](plugin 化分发)、[0.3.0](新增 Codex 与 WorkBuddy 两宿主)的先例本可定 MINOR;定 PATCH 是明确选择,记下依据备查:那两轮改的是仓库如何被装载(新增六份清单、装法与目录对照全变),本轮 skills/ 主体只多了四个在三宿主处被静默忽略的 frontmatter 字段,skill 能力零增量、用户侧行为完全不变;且十处版本号已随 displayName 修复升至 0.6.1 并在平台上架生效,改判 MINOR 需重发一轮审核。

Added

  • SkillHub(skillhub.cn)作为第四个分发渠道——决策与被否决的替代方案见 ADR 0011。它与前三个宿主的机制不同:元数据只从 SKILL.md frontmatter 读(slug/version/displayName 缺一个就拒绝发布),且一次只发一个 skill 文件夹、平台侧没有"整体安装"概念。5 个 skills/*/SKILL.md 各加 slug/displayName/version/summary 四个字段;skillhub publish 对 5 个 skill 的 --dry-run 本地预检全部通过(textbook@0.6.0 等),2026-09-02 5 个全部上架并过审生效@user_6733bad6 命名空间;发布依赖账号实名认证与 API Token,这两步只能由人在浏览器完成,无法纳入 CI)
  • slug 必须逐字等于目录名,这是本轮唯一不可逆的约定。CLI 安装落盘为 <install_root>/<slug>/(同级目录),只有 slug 与目录名一致,仓库里 45 条 ../<skill-name>/references/xxx.md 跨 skill 引用才解析得到;5 个 slug 上架前经查询全部未被占用,不需要加 handle 后缀。ADR 0008 的"整体安装不可拆分"在该平台无法由机制保证,降级为 5 份 summary 里的一句"需与其余 skill 同级安装"——这是接受该渠道的已知代价
  • validate_skills.py 新增 validate_skill_versions:把 5 个 SKILL.md 的 version 钉在 .claude-plugin/plugin.json 上。版本真相的副本因此从 5 处涨到 10 处(SkillHub 从 SKILL.md 读、其余三宿主从清单读),不锁住就会出现"清单升了、SkillHub 上还是旧版且无人报错"。配套 4 个单测(版本一致 / 单个漂移 / 缺 version / 无 skills 目录不报错),单测总数 52 → 56

Changed

  • frontmatter 白名单从"Claude Code 会读的字段"扩为四宿主并集,加入 slugdisplayNamesummary。这三个字段对其余三宿主无副作用(被静默忽略);白名单的原意是"防手误写入无效字段",而它们不是手误,是第四个渠道的必填项

  • 发版流程的升版口径从"五处"改为"十处"(CONTRIBUTING.md 发版流程、CLAUDE.md 分发与硬约束两节同步)。README 的 version badge 仍是唯一没有脚本守着的那一处

  • 5 个 skill 全部过审后补上 README 的 SkillHub 安装入口,并把首次上架的端到端实测结论写进 ADR 0011 与 CLAUDE.md。实测(CLI 2026.8.5)确认了两件此前只从源码推断的事:5 个装进同一个 --dir18 条唯一跨 skill 引用全部解析成功;装回来的内容与仓库 skills/ 逐字一致(平台只多塞一个记录 slug/version/ownerId 的 _meta.json),ADR 0011 拒绝"临时注入"那条路的理由由此成立。只装 2 个时 ../textbook-chapter/references/chapter-template.md 当场解析失败——断链是实测可复现的默认结果,不是理论风险

  • 记下两个官方文档没写的坑:skillhub install --namespace 会多套一层 @<handle>/ 目录,而宿主只扫 skills/*/SKILL.md 这一层,多一层就一个都发现不到且无任何报错(与 README 早先记下的 WorkBuddy「别把 skills/ 整体套进去」同类);重复安装报 Target exists,更新需 --forceskillhub upgrade

  • 4 个子 skill 的 displayName 统一改为「教材写作·」前缀教材大纲设计教材写作·大纲设计,单章正文 / 习题生成 / 项目初始化同理;主 skill 保持 教材写作流水线)。上架后发现搜「教材写作」只搜得到主 skill 一个,其余 4 个连 top-100 都不进——直接探测 api.skillhub.cn/api/v1/search 测出了机制:只有 slugdisplayName 参与召回summary/description/tags 全部不参与,实测搜只写在 summary 里的「四段式」「UbD」「独立习题」「目录骨架」一律 0 命中,搜别人 tags 里的 k12 同样 0 命中),中文不分词、按整串子串匹配教材 写作 带空格 0 命中,教材写作技能 也 0 命中),前缀匹配得分远高于中间子串写作流水线 命中 textbook 但 score 0.038 排 #56,教材写作 前缀命中得 0.0486 排 #3)。所以能动的杠杆只有 displayName 一个——slug 按 ADR 0011 已发布不可改,改了所有已装用户的跨 skill 引用当场断链

  • 排序 score 主要吃下载量,召回不足时平台用热门 skill 填充列表(搜「教材写作」的 #1 是与教材无关、下载 115 万的 self-improving-agent)。按实测分数分布预测:改名后 5 个落在 #3 与 #7–#10,默认 20 条一屏可见。两件做不到的写在这里免得下次重试:那几个热度填充项挤不掉;搜「教材」仍进不了前 20(我们 dl=2~4,纯热度压制,只能靠真实使用量涨)。搜「写教材」也放弃了——要同时含「写教材」和「教材写作」两个连续串,名字会变得没法看

  • 由此新增一条命名规矩:新增 skill 的 displayName 必须以「教材写作」开头,且这四个字连续不被分隔符打断(用 ·,写成「教材·写作大纲」即前功尽弃)。校验脚本没有守这条,靠 CLAUDE.md 与 ADR 0011 记着

  • tags 虽在 skillhub publish 的 payload 里(读 frontmatter 的 tags 列表),但实测不参与检索,故未加——为零收益给 frontmatter 白名单开第 11 个字段不划算。顺带记一笔:平台把主 skill 自动归到 category: ai-agent(其余 4 个是 education),分类浏览里找不到它,暂未处理

Notes

  • 本轮未改任何 skill 的指令正文,descriptionname 一字未动,新增字段在三宿主处均被静默忽略——无行为变更,故未重跑 evals(按 CLAUDE.md 影响半径表,改动落在 scripts/docs/ 与元数据层,CI 绿即可)
  • displayName 改动同理未重跑 evals:该字段只被 SkillHub 读取用于展示与检索,三宿主静默忽略,既不参与 skill 行为也不参与宿主触发(宿主读的是 name/description,二者一字未动)