Skip to content

十份 SKILL.md 的 compatibility 仍写「Requires @objectstack/spec 16.x」—— 而它们教的已经是 17 的能力 #5245

Description

@os-zhuang

发现于 #5238(#5040 E9 文档追平)。观察类:今天没有用户会因此撞墙,也没有门在看它 —— 记下来交分诊,不在 E9 单里顺手改(那会把一个跨十份文件的措辞决定塞进一个只该动一份 skill 的 PR)。

事实

skills/ 下十份 SKILL.md 的 frontmatter,九份写着同一句:

compatibility: Requires @objectstack/spec 16.x (Zod v4 schemas)

(objectstack-formula@objectstack/spec 16.x and @objectstack/formula 16.x;objectstack-platform16.x and @objectstack/core 16.x … Node 22+;objectstack-pm-dispatch 是唯一一份不按此格式写的。)

仓库当前是 @objectstack/spec@17.0.0-rc.2,而 17 是一次大量移除的大版本:七个 App 键、DriverCapabilities 的 31 个位、restServer.openApi31、plugin-runtime 家族…… 都在 17 里成为墓碑或 TS2305。

为什么是一句真的假话,而不只是过期

compatibility 是一份 skill 唯一的自述适用范围。目前这句同时错在两头:

无人看守

没有任何门校验这一行。check:skill-docs / check:skill-refs 只管生成物同步,check:skill-examples 只 typecheck 打了 os:check 的代码块 —— 三道门对着一句错的版本声明全部绿。这正是它能整版停在 16.x 的原因。

可能的修法(留给分诊定,不预设)

  1. 一次性改写为 17.x —— 最小,但下一个大版本会原样重演;
  2. 改成范围/不写死小版本(如 Requires @objectstack/spec >= 17),把「每次大版本手改十处」这件事从流程里去掉;
  3. 加一道门:让 compatibility 的版本与 packages/spec/package.json 的 major 对账(与 check:skill-docs 同一条 CI 线),这样它不能再无声漂移 —— 代价是要先定 (1)/(2) 的写法。

方案 3 才是「声明=强制」的那一头,但它依赖先定下写法,所以我不替维护者选。

边界

零运行时、零词表;只是 frontmatter 文本 + 可能的一道新门。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions