skill-family-engineering-kit 0.24.1 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.26.0 locale=en baseline=sha256:f92651ad31301672d84ced913199520f2f7868c15881a51766064a9a2b11922c -->
4
+ ## [0.26.0] - 2026-10-17
5
+
6
+ Version 0.26.0 extends shared read-only static loading checks to seven hosts through the existing runHostLoadingCheck function and skill-family-kit check host-loading CLI action. The four top-level commands scaffold, adopt-plan, projection, and check remain unchanged; no new top-level command or public API is added. Checks do not start hosts, models, hooks, or scripts, access the network, or write files.
7
+
8
+ ### Changed
9
+
10
+ - Add shared static loading checks for seven hosts. The exact host versions, categories, and project directories are listed in the authoritative [NATIVE_HOSTS table](src/host-loading-native.mjs); this internal table is not a package-root public export.
11
+ - Retain Codex CLI 0.154.0 project .agents/skills support and its existing activationRules mechanism.
12
+ - Apply each host’s own discovery, parsing, ignore, name-competition, and local-file flag rules. Report Cursor menu, completion, and model metadata separately.
13
+ - Only modelMetadata.* for Cursor CLI 2026.09.10-fd3934a may use source-reviewed-unexecuted, labeled “源码核实、未作原生运行校准” (source reviewed; not calibrated through native execution). This is not native runtime calibration and does not mean the check starts the host.
14
+ - Other native-observed markers mean the check uses previously calibrated native rules; they do not mean this check starts the host.
15
+ - The API project root must be an absolute working directory; the CLI resolves relative input to an absolute path first. A missing or unbindable project root returns 2. A missing, non-directory, or empty skill container within an existing project returns 1. Proven local loading blockers return 1; specific uncovered behavior or unknown competition returns 2 and takes precedence over 1. A fully covered static scope without blockers returns 0; normal skills cannot mask blockers or uncovered behavior. Only Codex supports activationRules; the seven other hosts accept only omission or null, and any other value, including an empty array, returns 2.
16
+ - Retain link-containment and read boundaries. Uncalibrated actual competition, uncalibrated WorkBuddy optional metadata or version-source forms and icon resolution, Cursor completion string false, and CodeBuddy block scalars without proven equivalence remain specifically uncovered. Do not guess success or return 2 permanently for all ordinary input.
17
+ - Exit 0 proves only static-check success. It does not prove final activation, installation, update, session selection, real triggering, or business execution. Codex evidence cannot establish calibration for other hosts.
18
+
19
+ ### Upgrade Notes
20
+
21
+ Pin skill-family-engineering-kit, skill-family-contracts, skill-family-harness-node, and the independent Plugin to exactly 0.26.0 in lockstep. Contracts specification 1.20.0 remains separate from package versions and does not advance with Kit. Consume actual published public interfaces for the exact host version and category. Release notes do not replace post-publish verification or formal consumer acceptance. Exit 0 is not an upgrade-safety guarantee or evidence of production validation.
22
+ <!-- release-skill:changelog:end version=0.26.0 locale=en -->
23
+
24
+
25
+ <!-- release-skill:changelog:start version=0.25.0 locale=en baseline=sha256:94f4c9be64b930538ffaccf847dadf49baad796b513c142205a18f631d50e66c -->
26
+ ## [0.25.0] - 2026-10-15
27
+
28
+ Engineering Kit 0.25.0 adds the public function `runHostLoadingCheck` and the CLI sub-action `skill-family-kit check host-loading` under the existing `check` command. The four top-level commands remain `scaffold`, `adopt-plan`, `projection`, and `check`. The check covers only Codex CLI 0.154.0 project `.agents/skills`. Unknown coverage returns exit code 2. A static result does not prove install, session selection, or business execution.
29
+
30
+ ### Changed
31
+
32
+ - Add the public function `runHostLoadingCheck` and the CLI `skill-family-kit check host-loading`. The API `root` must be an absolute project working directory; the CLI resolves the current directory or a relative path to an absolute path first.
33
+ - Only `hostId=codex`, `hostVersion=0.154.0`, and `pathCategory=codex-project-skills` are calibrated, and that category's relative path must remain `.agents/skills`. The check statically reads `SKILL.md` and the optional Codex 0.154.0 skill metadata YAML under `agents/` beside `SKILL.md`. It does not start a host, model, hook, or script, and writes nothing.
34
+ - Other hosts or versions, or an unknown path category, return exit code 2. A missing skill entry, or a scope that contains only product-filtered targets, returns 1. A static pass does not prove real install, session selection, or business execution.
35
+ - The package moves to 0.25.0 with the other three units. Contracts specification remains 1.20.0. Published 0.24.1 capabilities are unchanged and are not redone.
36
+
37
+ ### Upgrade Notes
38
+
39
+ Pin the three Foundation npm packages to exactly 0.25.0 and keep the independent Plugin at that release version. Contracts specification 1.20.0 remains a separate coordinate from npm package versions. Consume the actual published version's public interfaces and sources. A static check pass does not prove real install, session selection, or business execution. This note does not replace post-publish verification.
40
+ <!-- release-skill:changelog:end version=0.25.0 locale=en -->
41
+
42
+
3
43
  <!-- release-skill:changelog:start version=0.24.1 locale=en baseline=sha256:60780ae0d34a8e8fcc016ebb188586876b9c31ceafb0c02a826db8e449e43729 -->
4
44
  ## [0.24.1] - 2026-10-12
5
45
 
@@ -1,5 +1,45 @@
1
1
  # 变更日志
2
2
 
3
+ <!-- release-skill:changelog:start version=0.26.0 locale=zh-CN baseline=sha256:3437859b22ecdad6bc0766dccf3d8b3ed7f1eb9240a9b898f1a2628a092f7143 -->
4
+ ## [0.26.0] - 2026-10-17
5
+
6
+ 0.26.0 版本通过既有公共函数 `runHostLoadingCheck` 与 CLI 子动作 `skill-family-kit check host-loading`,扩展对七宿主的共享只读静态加载检查能力。四顶层命令 `scaffold`、`adopt-plan`、`projection`、`check` 保持不变,未新增顶层命令或公共 API。检查不启动宿主、模型、hook 或脚本,不联网、不写文件。
7
+
8
+ ### 变更
9
+
10
+ - 新增七宿主共享静态加载检查;精确宿主版本、类别与项目目录见权威 [NATIVE_HOSTS 表](src/host-loading-native.mjs)。该内部表不是包根公共导出。
11
+ - **兼容性保留**:Codex CLI 0.154.0 的 `.agents/skills` 项目结构继续支持,其 `activationRules` 机制保持可用。
12
+ - **检查逻辑**:各宿主独立执行发现、解析、忽略、名称竞争与局部文件标志判断。Cursor 的菜单、补全与模型元数据三类行为分别报告。
13
+ - **证据例外**:仅当 `modelMetadata.*` 字段来自 Cursor CLI 2026.09.10-fd3934a 版本时,允许标注 `source-reviewed-unexecuted`,文字为“源码核实、未作原生运行校准”。该标记不表示原生运行已校准,也不代表本次检查启动宿主。
14
+ - **标记语义**:其余 `native-observed` 标记仅表示采用已有原生校准规则,不表示本次检查启动宿主。
15
+ - **边界与退出码**: 项目 root 必须为绝对工作目录,CLI 先将相对输入解析为绝对路径。 项目根不存在或不可绑定 → 退出码 2。 项目存在但技能容器缺失、非目录或为空 → 退出码 1。 已证明本地加载阻断 → 退出码 1。 具体未覆盖或未知竞争 → 退出码 2,且优先于 1。 普通完整静态范围无阻断 → 退出码 0;已有正常技能不能掩盖阻断或未覆盖。 Codex 支持原有 `activationRules`;其余七宿主仅接受省略或 `null`,其他值(包括空数组)返回 2。
16
+ - **数据边界**:保留链接收容与读取边界。未校准的实际竞争、WorkBuddy 尚未校准的可选元信息或版本来源形态及图标解析、Cursor 补全字符串 `false`、CodeBuddy 未证明等价的块标量等,均按具体未覆盖处理,不猜测成功,也不将所有普通输入永久返回 2。
17
+ - **静态通过不等于业务成功**:退出码 0 仅表示静态检查通过,不证明最终启用、安装、更新、会话选择、真实触发或业务执行成功。不得复用 Codex 证据宣称其他宿主已校准。
18
+
19
+ ### 升级说明
20
+
21
+ 三个 Foundation npm 包(`skill-family-engineering-kit`、`skill-family-contracts`、`skill-family-harness-node`)及独立 Plugin 均需精确锁定至 0.26.0 版本,实现四单元锁步。 Contracts 规格保持 1.20.0,与包版本为独立坐标,不随 Kit 升级。 消费方应按精确宿主版本与类别,使用实际已发布的公共接口。 发布说明不替代发布后验证或正式消费者验收。 退出码 0 不构成升级安全保证,不等同于可安全升级或已通过生产验证。
22
+ <!-- release-skill:changelog:end version=0.26.0 locale=zh-CN -->
23
+
24
+
25
+ <!-- release-skill:changelog:start version=0.25.0 locale=zh-CN baseline=sha256:0112af28c40f4ac8dd77173f681345039eb2c55d714315b267827693c5f78e37 -->
26
+ ## [0.25.0] - 2026-10-15
27
+
28
+ Engineering Kit 0.25.0 在既有 `check` 下新增公共函数 `runHostLoadingCheck` 与 CLI 子动作 `skill-family-kit check host-loading`。四个顶层命令仍为 `scaffold`、`adopt-plan`、`projection`、`check`。检查只覆盖 Codex CLI 0.154.0 的项目 `.agents/skills`。未知覆盖返回退出码 2。静态结果不证明安装、会话选择或业务执行。
29
+
30
+ ### 变更
31
+
32
+ - 新增公共函数 `runHostLoadingCheck` 与 CLI `skill-family-kit check host-loading`。API 的 `root` 必须是绝对项目工作目录;CLI 会把当前目录或相对路径先解析成绝对路径。
33
+ - 只校准 `hostId=codex`、`hostVersion=0.154.0`、`pathCategory=codex-project-skills`,且该类别相对路径必须仍是 `.agents/skills`。检查静态读取所选项目根下 `.agents/skills` 的 `SKILL.md`,以及 `SKILL.md` 旁 `agents/` 下 Codex 0.154.0 的可选技能元信息 YAML。不启动宿主、模型、hook 或脚本,不写文件。
34
+ - 其他宿主或版本、未知路径类别返回退出码 2。缺技能入口,或范围内仅有被产品过滤的目标,返回 1。静态通过不证明真实安装、会话选择或业务执行。
35
+ - 包版本与其他三单元锁步到 0.25.0。Contracts 规格仍为 1.20.0。已发布的 0.24.1 能力保持原样,本版本不重做。
36
+
37
+ ### 升级说明
38
+
39
+ 三个 Foundation npm 包须精确锁定 0.25.0,独立插件与三包保持相同发布版本。Contracts 规格仍为 1.20.0,与 npm 包版本分别处理。消费以实际发布版本的公开接口和源码为准。静态检查通过不证明真实安装、会话选择或业务执行。本说明不替代发布后验证。
40
+ <!-- release-skill:changelog:end version=0.25.0 locale=zh-CN -->
41
+
42
+
3
43
  <!-- release-skill:changelog:start version=0.24.1 locale=zh-CN baseline=sha256:0d0b6cccd46c69014e89efa21677ef015ccd3085f0fd07e8021b364b1c1f47e6 -->
4
44
  ## [0.24.1] - 2026-10-12
5
45
 
package/README.md CHANGED
@@ -4,22 +4,29 @@
4
4
 
5
5
  # skill-family-engineering-kit
6
6
 
7
- <!-- release-skill:release-version: 0.24.1 -->
7
+ <!-- release-skill:release-version: 0.26.0 -->
8
8
 
9
9
  An engineering toolkit used in development and CI. There are **exactly four** top-level commands, and no fifth:
10
10
 
11
11
  <!-- release-skill:managed:start id=latest-release -->
12
- **0.24.1** (2026-10-12)
12
+ **0.26.0** (2026-10-17)
13
13
 
14
- Engineering Kit 0.24.1 advances only to keep the existing four-unit lockstep contract for the Foundation documentation patch. It adds no capability, API, Schema, protocol, or mechanism.
14
+ Version 0.26.0 extends shared read-only static loading checks to seven hosts through the existing runHostLoadingCheck function and skill-family-kit check host-loading CLI action. The four top-level commands scaffold, adopt-plan, projection, and check remain unchanged; no new top-level command or public API is added. Checks do not start hosts, models, hooks, or scripts, access the network, or write files.
15
15
 
16
16
  **Changed**
17
17
 
18
- - Update only the package coordinate and its managed version projections; existing capabilities, parameters, and failure boundaries remain unchanged.
18
+ - Add shared static loading checks for seven hosts. The exact host versions, categories, and project directories are listed in the authoritative [NATIVE_HOSTS table](src/host-loading-native.mjs); this internal table is not a package-root public export.
19
+ - Retain Codex CLI 0.154.0 project .agents/skills support and its existing activationRules mechanism.
20
+ - Apply each host’s own discovery, parsing, ignore, name-competition, and local-file flag rules. Report Cursor menu, completion, and model metadata separately.
21
+ - Only modelMetadata.* for Cursor CLI 2026.09.10-fd3934a may use source-reviewed-unexecuted, labeled “源码核实、未作原生运行校准” (source reviewed; not calibrated through native execution). This is not native runtime calibration and does not mean the check starts the host.
22
+ - Other native-observed markers mean the check uses previously calibrated native rules; they do not mean this check starts the host.
23
+ - The API project root must be an absolute working directory; the CLI resolves relative input to an absolute path first. A missing or unbindable project root returns 2. A missing, non-directory, or empty skill container within an existing project returns 1. Proven local loading blockers return 1; specific uncovered behavior or unknown competition returns 2 and takes precedence over 1. A fully covered static scope without blockers returns 0; normal skills cannot mask blockers or uncovered behavior. Only Codex supports activationRules; the seven other hosts accept only omission or null, and any other value, including an empty array, returns 2.
24
+ - Retain link-containment and read boundaries. Uncalibrated actual competition, uncalibrated WorkBuddy optional metadata or version-source forms and icon resolution, Cursor completion string false, and CodeBuddy block scalars without proven equivalence remain specifically uncovered. Do not guess success or return 2 permanently for all ordinary input.
25
+ - Exit 0 proves only static-check success. It does not prove final activation, installation, update, session selection, real triggering, or business execution. Codex evidence cannot establish calibration for other hosts.
19
26
 
20
27
  **Upgrade Notes**
21
28
 
22
- Pin the three Foundation npm packages to the exact same version and keep the independent Plugin at that release version. Contracts specification 1.20.0 remains a separate coordinate from npm package versions. Use the actual published version's public interfaces and sources; this note does not replace post-publish verification.
29
+ Pin skill-family-engineering-kit, skill-family-contracts, skill-family-harness-node, and the independent Plugin to exactly 0.26.0 in lockstep. Contracts specification 1.20.0 remains separate from package versions and does not advance with Kit. Consume actual published public interfaces for the exact host version and category. Release notes do not replace post-publish verification or formal consumer acceptance. Exit 0 is not an upgrade-safety guarantee or evidence of production validation.
23
30
  <!-- release-skill:managed:end id=latest-release -->
24
31
 
25
32
  ## Governance Check (0.22.0)
@@ -62,7 +69,7 @@ Kit is the "engineering stage" layer, depending on the Harness and Contracts. It
62
69
 
63
70
  ## Installation and Minimal Example
64
71
 
65
- This package version is 0.24.1; version 0.24.0 has been formally published. To verify a working tree before formal publication, build all three tarballs into one temporary directory and install those exact files:
72
+ This package version is 0.26.0; version 0.24.1 has been formally published. To verify a working tree before formal publication, build all three tarballs into one temporary directory and install those exact files:
66
73
 
67
74
  ```sh
68
75
  pack_dir="$(mktemp -d)"
@@ -70,21 +77,21 @@ pack_dir="$(mktemp -d)"
70
77
  (cd packages/skill-family-harness-node && pnpm pack --pack-destination "$pack_dir")
71
78
  (cd packages/skill-family-engineering-kit && pnpm pack --pack-destination "$pack_dir")
72
79
  mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
73
- (cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.24.1.tgz" "$pack_dir/skill-family-harness-node-0.24.1.tgz" "$pack_dir/skill-family-engineering-kit-0.24.1.tgz")
80
+ (cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.26.0.tgz" "$pack_dir/skill-family-harness-node-0.26.0.tgz" "$pack_dir/skill-family-engineering-kit-0.26.0.tgz")
74
81
  ```
75
82
 
76
- The registry installation below requires exact version 0.24.1 to be formally available:
83
+ The registry installation below requires exact version 0.26.0 to be formally available:
77
84
 
78
85
  ```sh
79
- npm install --save-dev skill-family-engineering-kit@0.24.1
80
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit --help
81
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
82
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale en --uses ./uses.json
83
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit projection --root <repo>
84
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit check --root <repo>
86
+ npm install --save-dev skill-family-engineering-kit@0.26.0
87
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit --help
88
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
89
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale en --uses ./uses.json
90
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit projection --root <repo>
91
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit check --root <repo>
85
92
  ```
86
93
 
87
- The four commands above cover skeleton generation, read-only inventory, managed projection, and diagnostics respectively; a zero-install form is available via `npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit --help`.
94
+ The four commands above cover skeleton generation, read-only inventory, managed projection, and diagnostics respectively; a zero-install form is available via `npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit --help`.
88
95
 
89
96
  ### Engineering declarations (available since 0.24.0)
90
97
 
@@ -176,6 +183,53 @@ npm exec -- skill-family-kit check report --root <repo> --report <report.md> --m
176
183
 
177
184
  The caller must first construct a valid report model; Kit does not derive facts from open business `outputs`. All fact text is escaped literally, and the full errors of a failed result must appear in both the model and the neutral report.
178
185
 
186
+ ### Host-loading check sub-action
187
+
188
+ #### Version and scope
189
+
190
+ Version 0.25.0 provides the Codex CLI 0.154.0 check. The 0.26.0 source candidate extends the same entry to seven additional hosts; formal availability depends on that version's release verification. The 0.25.0 published package does not support the added hosts.
191
+
192
+ #### Calling the check
193
+
194
+ The public function is `runHostLoadingCheck({ root, hostId, hostVersion, pathCategory, activationRules, hostsRoot })`. These are the corresponding CLI calls; the third requires a version containing the seven-host extension:
195
+
196
+ ```sh
197
+ npm exec -- skill-family-kit check host-loading --root <project> --host codex --host-version 0.154.0 --path-category codex-project-skills
198
+ npm exec -- skill-family-kit check host-loading --root <project> --host codex --host-version 0.154.0 --path-category codex-project-skills --activation-rules <relpath.json> --hosts-root <dir>
199
+ npm exec -- skill-family-kit check host-loading --root <project> --host kimi-code --host-version 2.2.0 --path-category kimi-code-project-skills
200
+ ```
201
+
202
+ The API `root` must be an absolute project directory. The CLI first resolves the current directory or a relative path. `--host`, `--host-version`, and `--path-category` select an exact supported combination. Omitting `hostsRoot` uses the bundled Profile data; a custom root cannot change the calibrated version, category, or relative directory combination.
203
+
204
+ For Codex, `--activation-rules` takes a project-relative JSON file containing ordered rules. Each rule selects either `name` or `path`, and includes a boolean `enabled`. For the seven added hosts, the API accepts only an omitted or `null` `activationRules`; every non-null value, including `[]`, returns `2`. Omit this CLI option for those hosts.
205
+
206
+ The internal `NATIVE_HOSTS` table in [src/host-loading-native.mjs](src/host-loading-native.mjs) lists the added hosts' exact versions, categories, and relative directories. It is not a package-root public export. The Kimi example uses `.kimi-code/skills`. Codex keeps its existing constants in [src/host-loading-check.mjs](src/host-loading-check.mjs) and the `.agents/skills` container.
207
+
208
+ #### Reading the report
209
+
210
+ The check starts no host, model, hook, or script, makes no network requests, and writes nothing. It covers one explicit project skill container, not the user's global skills, ancestor projects, or the entire plugin environment. Directory and file symlinks in the seven-host extension remain uncovered and return `2`; the check does not read through them.
211
+
212
+ Codex keeps its existing behavior:
213
+
214
+ - Same-name skills at different paths are all retained.
215
+ - Invalid optional standard skill metadata YAML under `agents/` beside `SKILL.md` is ignored as a whole document, not reported as a skill load failure.
216
+ - A nonempty `policy.products` containing only products other than Codex is filtered. A list containing `codex` is kept; an empty list does not trigger this filter.
217
+ - `allow_implicit_invocation=false` records implicit invocation being disabled, independently of `enabled`. Without explicit activation rules, `enabled` remains unknown.
218
+
219
+ For the seven added hosts, each skill's base `enabled`, `disabled`, `implicitInvocation`, `interface`, and `shortDescription` fields remain `null`. Host-specific observations appear in `skills[].observations`, with `field`, `value`, `basis`, and `sourceId`. A `native-observed` basis means that native evidence was used to calibrate the rule; it does not mean this check ran the native host. `sourceId` refers to `coverage.ruleSources`, whose entries contain `id`, `version`, `source`, and `sha256`.
220
+
221
+ Only Cursor CLI `2026.09.10-fd3934a`'s `modelMetadata.*` observations use `source-reviewed-unexecuted`, meaning source-reviewed but not calibrated by a native run. Its menu and completion surfaces have native calibration evidence. Codex continues to use `officialTag` and `officialCommit`; these fields are not invented for other hosts.
222
+
223
+ | Exit code | Meaning |
224
+ | --- | --- |
225
+ | `0` | The requested scope is covered and has no established blocker. |
226
+ | `1` | An established blocker, or an existing project with a missing skill container or no discoverable entry. A Codex scope containing only product-filtered targets also returns `1`. |
227
+ | `2` | An unknown version or shape, non-equivalent coverage, invalid selector, or a missing/non-directory project root. |
228
+
229
+ Uncovered items take precedence and produce `2`, while known `findings` remain in the report. Read `findings`, `uncovered`, and `limitations` together. Name-collision handling follows each host's rules; an uncovered competition does not imply a winner.
230
+
231
+ A static `0` does not prove enablement, installation, update, session selection, actual invocation, or business success. The published package's source and public closure are separate from the scope of this check. Use the actual published version's interfaces and sources.
232
+
179
233
  ### Candidate Quickstart projection bundle
180
234
 
181
235
  Use the candidate subpath to build a deterministic Quickstart Profile v2 projection from explicit consumer schemas and frozen source identity:
package/README.zh-CN.md CHANGED
@@ -5,22 +5,29 @@
5
5
 
6
6
  # skill-family-engineering-kit
7
7
 
8
- <!-- release-skill:release-version: 0.24.1 -->
8
+ <!-- release-skill:release-version: 0.26.0 -->
9
9
 
10
10
  开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
11
11
 
12
12
  <!-- release-skill:managed:start id=latest-release -->
13
- **0.24.1** (2026-10-12)
13
+ **0.26.0** (2026-10-17)
14
14
 
15
- Engineering Kit 0.24.1 仅随 Foundation 文档补丁按既有四单元合同锁步前移,没有新增能力、API、Schema、协议或机制。
15
+ 0.26.0 版本通过既有公共函数 `runHostLoadingCheck` 与 CLI 子动作 `skill-family-kit check host-loading`,扩展对七宿主的共享只读静态加载检查能力。四顶层命令 `scaffold`、`adopt-plan`、`projection`、`check` 保持不变,未新增顶层命令或公共 API。检查不启动宿主、模型、hook 或脚本,不联网、不写文件。
16
16
 
17
17
  **变更**
18
18
 
19
- - 仅更新包版本和相应受管版本派生;现有能力、参数与失败边界保持不变。
19
+ - 新增七宿主共享静态加载检查;精确宿主版本、类别与项目目录见权威 [NATIVE_HOSTS 表](src/host-loading-native.mjs)。该内部表不是包根公共导出。
20
+ - **兼容性保留**:Codex CLI 0.154.0 的 `.agents/skills` 项目结构继续支持,其 `activationRules` 机制保持可用。
21
+ - **检查逻辑**:各宿主独立执行发现、解析、忽略、名称竞争与局部文件标志判断。Cursor 的菜单、补全与模型元数据三类行为分别报告。
22
+ - **证据例外**:仅当 `modelMetadata.*` 字段来自 Cursor CLI 2026.09.10-fd3934a 版本时,允许标注 `source-reviewed-unexecuted`,文字为“源码核实、未作原生运行校准”。该标记不表示原生运行已校准,也不代表本次检查启动宿主。
23
+ - **标记语义**:其余 `native-observed` 标记仅表示采用已有原生校准规则,不表示本次检查启动宿主。
24
+ - **边界与退出码**: 项目 root 必须为绝对工作目录,CLI 先将相对输入解析为绝对路径。 项目根不存在或不可绑定 → 退出码 2。 项目存在但技能容器缺失、非目录或为空 → 退出码 1。 已证明本地加载阻断 → 退出码 1。 具体未覆盖或未知竞争 → 退出码 2,且优先于 1。 普通完整静态范围无阻断 → 退出码 0;已有正常技能不能掩盖阻断或未覆盖。 Codex 支持原有 `activationRules`;其余七宿主仅接受省略或 `null`,其他值(包括空数组)返回 2。
25
+ - **数据边界**:保留链接收容与读取边界。未校准的实际竞争、WorkBuddy 尚未校准的可选元信息或版本来源形态及图标解析、Cursor 补全字符串 `false`、CodeBuddy 未证明等价的块标量等,均按具体未覆盖处理,不猜测成功,也不将所有普通输入永久返回 2。
26
+ - **静态通过不等于业务成功**:退出码 0 仅表示静态检查通过,不证明最终启用、安装、更新、会话选择、真实触发或业务执行成功。不得复用 Codex 证据宣称其他宿主已校准。
20
27
 
21
28
  **升级说明**
22
29
 
23
- 三个 Foundation npm 包须精确锁定同版,独立插件与三包保持相同发布版本。Contracts 规格仍为 1.20.0,与 npm 包版本分别处理;消费以实际发布版本的公开接口和来源为准,本说明不替代发布后验证。
30
+ 三个 Foundation npm 包(`skill-family-engineering-kit`、`skill-family-contracts`、`skill-family-harness-node`)及独立 Plugin 均需精确锁定至 0.26.0 版本,实现四单元锁步。 Contracts 规格保持 1.20.0,与包版本为独立坐标,不随 Kit 升级。 消费方应按精确宿主版本与类别,使用实际已发布的公共接口。 发布说明不替代发布后验证或正式消费者验收。 退出码 0 不构成升级安全保证,不等同于可安全升级或已通过生产验证。
24
31
  <!-- release-skill:managed:end id=latest-release -->
25
32
 
26
33
  ## 治理检查(0.22.0)
@@ -61,7 +68,7 @@ Kit 是「工程阶段」层,依赖 Harness 与 Contracts。它只做四件事
61
68
 
62
69
  ## 安装和最小示例
63
70
 
64
- 本包版本为 0.24.1;0.24.0 已正式发布。验证尚未正式发布的工作树时,先把三个包分别打入同一个临时目录,再安装这三个精确 tarball:
71
+ 本包版本为 0.26.0;0.24.1 已正式发布。验证尚未正式发布的工作树时,先把三个包分别打入同一个临时目录,再安装这三个精确 tarball:
65
72
 
66
73
  ```sh
67
74
  pack_dir="$(mktemp -d)"
@@ -69,21 +76,21 @@ pack_dir="$(mktemp -d)"
69
76
  (cd packages/skill-family-harness-node && pnpm pack --pack-destination "$pack_dir")
70
77
  (cd packages/skill-family-engineering-kit && pnpm pack --pack-destination "$pack_dir")
71
78
  mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
72
- (cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.24.1.tgz" "$pack_dir/skill-family-harness-node-0.24.1.tgz" "$pack_dir/skill-family-engineering-kit-0.24.1.tgz")
79
+ (cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.26.0.tgz" "$pack_dir/skill-family-harness-node-0.26.0.tgz" "$pack_dir/skill-family-engineering-kit-0.26.0.tgz")
73
80
  ```
74
81
 
75
- 以下 registry 安装方式以精确版本 0.24.1 已正式可用为前提:
82
+ 以下 registry 安装方式以精确版本 0.26.0 已正式可用为前提:
76
83
 
77
84
  ```sh
78
- npm install --save-dev skill-family-engineering-kit@0.24.1
79
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit --help
80
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
81
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale zh-CN --uses ./uses.json
82
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit projection --root <repo>
83
- npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit check --root <repo>
85
+ npm install --save-dev skill-family-engineering-kit@0.26.0
86
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit --help
87
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
88
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale zh-CN --uses ./uses.json
89
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit projection --root <repo>
90
+ npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit check --root <repo>
84
91
  ```
85
92
 
86
- 以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.24.1 -- skill-family-kit --help`。
93
+ 以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.26.0 -- skill-family-kit --help`。
87
94
 
88
95
  ### 工程声明调用(自 0.24.0 提供)
89
96
 
@@ -175,6 +182,92 @@ npm exec -- skill-family-kit check report --root <repo> --report <report.md> --m
175
182
 
176
183
  调用方必须先构造合法 report model;Kit 不从开放的业务 `outputs` 推导事实。所有事实文本按字面转义,失败结果的完整 errors 必须出现在 model 和中性报告中。
177
184
 
185
+ ### 宿主加载检查子动作
186
+
187
+ #### 版本边界与能力范围
188
+
189
+ - **0.25.0** 版本已支持对 Codex 0.154.0 的宿主加载检查。
190
+ - **0.26.0** 源码候选版本在相同入口中新增对七宿主的检查能力,但该功能**仍处于候选状态**,正式可用性需以该版本的实际发布验证为准。**请勿使用 0.25.0 发布包运行新增宿主检查**。
191
+
192
+ #### CLI 命令与参数说明
193
+
194
+ 公共函数为 `runHostLoadingCheck({ root, hostId, hostVersion, pathCategory, activationRules, hostsRoot })`。以下是对应 CLI 调用;第三条需要包含七宿主增量的版本:
195
+
196
+ ```sh
197
+ npm exec -- skill-family-kit check host-loading --root <project> --host codex --host-version 0.154.0 --path-category codex-project-skills
198
+ npm exec -- skill-family-kit check host-loading --root <project> --host codex --host-version 0.154.0 --path-category codex-project-skills --activation-rules <relpath.json> --hosts-root <dir>
199
+ npm exec -- skill-family-kit check host-loading --root <project> --host kimi-code --host-version 2.2.0 --path-category kimi-code-project-skills
200
+ ```
201
+
202
+ - `root`:必须为绝对项目目录路径;CLI 会先解析当前目录或相对路径。
203
+ - `host`:宿主标识符,如 `codex` 或 `kimi-code`。
204
+ - `host-version`:对应宿主版本号,如 `0.154.0` 或 `2.2.0`。
205
+ - `path-category`:宿主技能容器的相对目录类别,例如 `codex-project-skills` 或 `kimi-code-project-skills`。
206
+ - `--activation-rules`:CLI 接收项目根内相对 JSON 文件路径,其内容为有序规则数组,每项选择 `name` 或 `path` 之一,并带 `enabled` 布尔值。只有 Codex 支持这些规则。新增七宿主的 API 参数 `activationRules` 仅允许省略或 `null`,包括 `[]` 在内的任何非 `null` 值都返回 `2`;CLI 应省略该选项。
207
+ - `hosts-root`:可选,指定自定义宿主配置根目录;省略时使用包内默认 Profile。**指定后不得修改已校准的精确版本、类别与相对目录组合**。
208
+
209
+ #### 宿主选择器与实现依据
210
+
211
+ 新增七宿主的精确选择器定义于公开源码中:
212
+
213
+ [src/host-loading-native.mjs](src/host-loading-native.mjs) 中的 `NATIVE_HOSTS` 内部表。
214
+
215
+ 该表为内部实现结构,不是包根公共导出;它列出新增七宿主支持的精确版本、类别与相对目录组合。Kimi 示例使用 `.kimi-code/skills`。
216
+
217
+ Codex 的选择器仍沿用 [src/host-loading-check.mjs](src/host-loading-check.mjs) 中的常量合同,容器为 `.agents/skills`。
218
+
219
+ #### 检查行为与限制
220
+
221
+ - **不启动宿主、模型、hook 或脚本**。
222
+ - **不联网、不写入文件、不修改任何状态**。
223
+ - **仅静态分析项目容器内指定路径下的技能结构**。
224
+ - **检查范围不涵盖用户全局技能、祖先项目或插件全环境**。
225
+ - **新增七宿主的目录或文件符号链接保留为未覆盖,返回退出码 2,不越界读取**。
226
+ - **仅检查一个显式指定的项目容器**,不推断启用、安装、更新、会话选择或真实业务触发的成功性。
227
+
228
+ #### Codex 保留行为
229
+
230
+ - 同名不同路径的技能全部保留,不合并或覆盖。
231
+ - `SKILL.md` 旁 `agents/` 目录下的标准可选技能元信息 YAML,若存在错误则整份忽略,不导致加载失败。
232
+ - `policy.products` 非空且只列出 Codex 以外产品时才过滤;包含 `codex` 时保留,空列表不触发产品过滤。
233
+ - `allow_implicit_invocation=false` 记录隐式调用关闭,不代表 `enabled=false`;缺少显式启用规则时,`enabled` 仍未知。
234
+ - `activationRules` 仅 Codex 支持传入有序数组,每项为 `name` 或 `path` 二选一,加 `enabled` 布尔值。
235
+
236
+ #### 新增七宿主行为
237
+
238
+ - 所有技能的基础字段 `enabled`、`disabled`、`implicitInvocation`、`interface`、`shortDescription` 均为 `null`。
239
+ - 原生行为差异通过 `skills[].observations` 数组表达,每项包含:
240
+ - `field`:被观察的字段名
241
+ - `value`:观察到的值
242
+ - `basis`:观察依据,`native-observed` 表示该规则曾用原生事实校准,不表示本次检查启动过宿主
243
+ - `sourceId`:来源标识,对应 `coverage.ruleSources` 中的记录
244
+ - `coverage.ruleSources` 记录每条规则的:
245
+ - `id`
246
+ - `version`
247
+ - `source`
248
+ - `sha256`
249
+ - **仅 Cursor CLI 版本 `2026.09.10-fd3934a` 的 `modelMetadata.*` 字段标记为 `source-reviewed-unexecuted`**,表示“源码核实、未作原生运行校准”。
250
+ - Cursor 的菜单与补全面已有原生校准,**不能将此例外推广为整个宿主无原生证据**。
251
+ - Codex 继续使用 `officialTag` 和 `officialCommit`,**不虚构给其他宿主**。
252
+
253
+ #### 退出码与结果解读
254
+
255
+ | 退出码 | 含义 |
256
+ |--------|------|
257
+ | `0` | 请求范围完整,且无已证实阻断 |
258
+ | `1` | 存在已证实阻断,或项目存在但缺技能容器、没有可发现入口;Codex 只有被产品过滤的目标也返回 `1` |
259
+ | `2` | 未知版本/形态、非等价覆盖、非法选择器,或项目根不存在/非目录 |
260
+
261
+ - **有未覆盖项时优先返回 2,但不丢弃已知的 `findings`**。
262
+ - **报告需综合 `findings`、`uncovered`、`limitations` 三部分,不可仅依赖退出码判断**。
263
+ - **同名规则按宿主独立处理,未覆盖时不猜胜者**。
264
+
265
+ #### 重要说明
266
+
267
+ - 本检查为静态分析,**不证明宿主已启用、已安装、已更新、会话中被选择或业务流程成功**。
268
+ - 发布包来源与检查范围是两个独立判断,消费正式包时需依据实际接口与来源。
269
+
270
+
178
271
  ### Candidate Quickstart 投影包
179
272
 
180
273
  需要从显式消费者 Schema 与冻结来源身份生成确定性的 Quickstart Profile v2 投影时,使用 candidate 子路径:
@@ -1459,6 +1459,54 @@
1459
1459
  "Auto-remediation: the caller"
1460
1460
  ]
1461
1461
  },
1462
+ {
1463
+ "id": "foundation.kit.host-loading-check",
1464
+ "intent": "Statically check whether Skill files under a project .agents/skills tree would load under calibrated Codex CLI 0.154.0 rules",
1465
+ "useWhen": [
1466
+ "Need to inspect project .agents/skills load format, ignored optional metadata, product filtering, implicit invocation, disablement, and uncovered cases before handing Skills to Codex",
1467
+ "Need to reuse Foundation's central calibration instead of launching a real host per family"
1468
+ ],
1469
+ "doNotUseWhen": [
1470
+ "Need to inspect user, system, admin, or ancestor plugin skill roots",
1471
+ "Need to prove real install, session selection, or business execution",
1472
+ "Need to run a target Skill, hook, script, model, or network call"
1473
+ ],
1474
+ "prerequisites": [
1475
+ "Caller supplies an absolute project working directory",
1476
+ "hostId resolves to codex, hostVersion is 0.154.0, and pathCategory is codex-project-skills"
1477
+ ],
1478
+ "inputs": [
1479
+ "Absolute project working directory root",
1480
+ "hostId, hostVersion, and pathCategory",
1481
+ "Optional ordered activationRules (name XOR path plus enabled)"
1482
+ ],
1483
+ "outputs": [
1484
+ "host-loading-check report (kind skill-family.host-loading-check-report)",
1485
+ "Exit 0 means the requested scope completed with no blocking findings; 1 means proven blocking or missing entries; 2 means input, mechanism, or coverage is incomplete"
1486
+ ],
1487
+ "sideEffects": [
1488
+ "None (read-only: no file or temp writes, no process spawn, no network)"
1489
+ ],
1490
+ "failureSemantics": [
1491
+ "Missing discovery root or no SKILL.md returns 1",
1492
+ "Unknown version, unknown pathCategory, illegal selectors, rewritten .agents/skills mapping, directory-symlink mechanism limits, and uncovered interface asset paths return 2",
1493
+ "Bad optional agents/openai.yaml is recorded as ignored for the whole document and does not fail skill loading",
1494
+ "policy.products [chatgpt] is filtered from the Codex discoverable set; [codex] is kept; allow_implicit_invocation=false may still be enabled"
1495
+ ],
1496
+ "invariants": [
1497
+ "Adds no fifth top-level command; it runs as the check host-loading sub-action",
1498
+ "Same-name different paths are all retained",
1499
+ "enabled is unknown when the caller omits activationRules"
1500
+ ],
1501
+ "ownedByCaller": [
1502
+ "Remediation of blocking findings",
1503
+ "Consumer verification on a published package"
1504
+ ],
1505
+ "routeElsewhere": [
1506
+ "Real-host qualification: check qualification",
1507
+ "Foundation entry contract: check entries"
1508
+ ]
1509
+ },
1462
1510
  {
1463
1511
  "id": "foundation.kit.relock",
1464
1512
  "intent": "Run the controlled relock transaction: register new handwritten files by default, or persistent tool-lock paths with explicit trackedToolLocks selection; update the registry and managed-file lock in the existing transaction without hashing tool-lock contents.",
@@ -968,6 +968,34 @@
968
968
  "packages/skill-family-engineering-kit/test/entry-check.test.mjs"
969
969
  ]
970
970
  },
971
+ {
972
+ "id": "foundation.kit.host-loading-check",
973
+ "package": "skill-family-engineering-kit",
974
+ "layer": "engineering-kit",
975
+ "since": "0.25.0",
976
+ "stability": "candidate",
977
+ "migration": "none",
978
+ "promotionPolicy": "consumer-transparent",
979
+ "adoptionScopes": ["engineering-kit"],
980
+ "entrypoints": [
981
+ "runHostLoadingCheck (packages/skill-family-engineering-kit/src/host-loading-check.mjs)",
982
+ "checkHostLoadingAction (packages/skill-family-engineering-kit/src/host-loading-check.mjs)",
983
+ "HOST_LOADING_CHECK_REPORT_KIND (packages/skill-family-engineering-kit/src/host-loading-check.mjs)"
984
+ ],
985
+ "sourceRefs": [
986
+ "packages/skill-family-engineering-kit/src/host-loading-check.mjs",
987
+ "packages/skill-family-engineering-kit/src/cli.mjs",
988
+ "packages/skill-family-engineering-kit/src/index.mjs"
989
+ ],
990
+ "positiveTestRefs": [
991
+ "packages/skill-family-engineering-kit/test/host-loading-check.test.mjs",
992
+ "packages/skill-family-engineering-kit/test/cli.test.mjs"
993
+ ],
994
+ "negativeTestRefs": [
995
+ "packages/skill-family-engineering-kit/test/host-loading-check.test.mjs",
996
+ "packages/skill-family-engineering-kit/test/cli.test.mjs"
997
+ ]
998
+ },
971
999
  {
972
1000
  "id": "foundation.kit.relock",
973
1001
  "package": "skill-family-engineering-kit",
@@ -1458,6 +1458,54 @@
1458
1458
  "自动整改:调用方"
1459
1459
  ]
1460
1460
  },
1461
+ {
1462
+ "id": "foundation.kit.host-loading-check",
1463
+ "intent": "按 Codex CLI 0.154.0 已校准规则,只读检查项目根 .agents/skills 内 Skill 是否会被宿主当作可加载条目",
1464
+ "useWhen": [
1465
+ "需要在把 Skill 交给 Codex 之前核对项目 .agents/skills 的加载格式、忽略、过滤、隐式调用、禁用和未覆盖项",
1466
+ "需要复用 Foundation 集中校准,而不是每个技能族各自启动真实宿主"
1467
+ ],
1468
+ "doNotUseWhen": [
1469
+ "需要检查用户全局、系统、管理员或祖先插件技能根",
1470
+ "需要证明真实安装、会话选择或业务执行已经成功",
1471
+ "需要运行目标 Skill、hook、脚本、模型或联网"
1472
+ ],
1473
+ "prerequisites": [
1474
+ "调用方给出绝对项目工作目录",
1475
+ "hostId 可解析为 codex,hostVersion 为 0.154.0,pathCategory 为 codex-project-skills"
1476
+ ],
1477
+ "inputs": [
1478
+ "绝对项目工作目录 root",
1479
+ "hostId、hostVersion、pathCategory",
1480
+ "可选有序 activationRules(name 或 path 与 enabled)"
1481
+ ],
1482
+ "outputs": [
1483
+ "host-loading-check 报告(kind skill-family.host-loading-check-report)",
1484
+ "退出码 0 表示请求范围完整且无阻断发现;1 表示已证实阻断或缺少入口;2 表示输入、机制或覆盖未完成"
1485
+ ],
1486
+ "sideEffects": [
1487
+ "无(只读:不写文件或临时文件,不启动进程,不联网)"
1488
+ ],
1489
+ "failureSemantics": [
1490
+ "缺发现根或没有 SKILL.md 返回 1",
1491
+ "未知版本、未知 pathCategory、非法选择器、.agents/skills 映射被改写、目录符号链接机制边界、界面资产路径未覆盖返回 2",
1492
+ "坏的可选 agents/openai.yaml 记为 ignored,整份元信息忽略,不作为技能加载失败",
1493
+ "policy.products [chatgpt] 从 Codex 可发现集合过滤;[codex] 保留;allow_implicit_invocation=false 仍可 enabled"
1494
+ ],
1495
+ "invariants": [
1496
+ "不新增第五个顶层命令,落在 check host-loading 子动作",
1497
+ "同名不同路径全部保留",
1498
+ "缺省启用规则时 enabled 未知"
1499
+ ],
1500
+ "ownedByCaller": [
1501
+ "对阻断发现的整改",
1502
+ "正式发布包上的消费者验收"
1503
+ ],
1504
+ "routeElsewhere": [
1505
+ "真实宿主资格:check qualification",
1506
+ "Foundation 入口契约:check entries"
1507
+ ]
1508
+ },
1461
1509
  {
1462
1510
  "id": "foundation.kit.relock",
1463
1511
  "intent": "运行受控 relock 事务:默认登记新增手写文件;显式选择 trackedToolLocks 时登记持久工具锁路径,并在原事务中同步 registry 与受管文件锁。工具锁内容不纳入受管摘要。",
@@ -11,7 +11,15 @@
11
11
  "credentialMutation": "host-managed"
12
12
  },
13
13
  "sourceAliases": [],
14
- "pathCategories": [],
14
+ "pathCategories": [
15
+ {
16
+ "id": "codebuddy-project-skills",
17
+ "role": "skill-root",
18
+ "scope": "project",
19
+ "anchor": "project-root",
20
+ "relPath": ".codebuddy/skills"
21
+ }
22
+ ],
15
23
  "probeCapabilities": [
16
24
  "cli",
17
25
  "version",
@@ -8,7 +8,15 @@
8
8
  "sourceAliases": [
9
9
  "dsh"
10
10
  ],
11
- "pathCategories": [],
11
+ "pathCategories": [
12
+ {
13
+ "id": "deepseek-harness-project-skills",
14
+ "role": "skill-root",
15
+ "scope": "project",
16
+ "anchor": "project-root",
17
+ "relPath": ".dsh/skills"
18
+ }
19
+ ],
12
20
  "probeCapabilities": [
13
21
  "cli",
14
22
  "version",
@@ -20,6 +20,13 @@
20
20
  "scope": "project",
21
21
  "anchor": "project-root",
22
22
  "relPath": "skills"
23
+ },
24
+ {
25
+ "id": "kimi-code-project-skills",
26
+ "role": "skill-root",
27
+ "scope": "project",
28
+ "anchor": "project-root",
29
+ "relPath": ".kimi-code/skills"
23
30
  }
24
31
  ],
25
32
  "probeCapabilities": [
@@ -11,7 +11,15 @@
11
11
  "authStrategy": "existing-user-state",
12
12
  "credentialMutation": "host-managed"
13
13
  },
14
- "pathCategories": [],
14
+ "pathCategories": [
15
+ {
16
+ "id": "qoder-project-skills",
17
+ "role": "skill-root",
18
+ "scope": "project",
19
+ "anchor": "project-root",
20
+ "relPath": ".qoder/skills"
21
+ }
22
+ ],
15
23
  "probeCapabilities": [
16
24
  "cli",
17
25
  "version",