skill-family-engineering-kit 0.25.0 → 0.27.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 +40 -0
- package/CHANGELOG.zh-CN.md +40 -0
- package/README.md +55 -21
- package/README.zh-CN.md +94 -21
- package/data/capability-catalog/capability-catalog.en.json +51 -0
- package/data/capability-catalog/capability-catalog.json +26 -0
- package/data/capability-catalog/capability-catalog.zh-CN.json +51 -0
- package/data/hosts/codebuddy/host-descriptor.json +9 -1
- package/data/hosts/deepseek-harness/host-descriptor.json +9 -1
- package/data/hosts/kimi-code/host-descriptor.json +7 -0
- package/data/hosts/qoder/host-descriptor.json +9 -1
- package/data/hosts/workbuddy/host-descriptor.json +7 -0
- package/docs/agents/capability-catalog.en.json +51 -0
- package/docs/agents/capability-catalog.json +26 -0
- package/docs/agents/capability-catalog.zh-CN.json +51 -0
- package/docs/public/status/index.html +4 -4
- package/docs/search/search_index.json +1 -1
- package/package.json +3 -3
- package/release-notes/0.26.0.yaml +29 -0
- package/release-notes/0.27.0.yaml +21 -0
- package/src/adopt-plan.mjs +1 -1
- package/src/check.mjs +21 -35
- package/src/cli.mjs +62 -7
- package/src/errors.mjs +2 -0
- package/src/host-loading-check.mjs +179 -53
- package/src/host-loading-native.mjs +1937 -0
- package/src/index.mjs +9 -1
- package/src/register-existing.mjs +466 -0
- package/src/skeleton.mjs +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.27.0 locale=en baseline=sha256:788200e7009ed97f33b3b4d407854f84ca89240b9a9ee02043413898ba95a66c -->
|
|
4
|
+
## [0.27.0] - 2026-10-21
|
|
5
|
+
|
|
6
|
+
Engineering Kit 0.27.0 adds the public function `runRegisterExisting` and the CLI sub-action `skill-family-kit check register-existing` under the existing `check` command. The four top-level commands remain `scaffold`, `adopt-plan`, `projection`, and `check`. The sub-action is the only legal first write of `.foundation/file-registry.json`, `skill-family.project-manifest.json`, and `skill-family.managed-file-lock.json` into a nonempty root that already has a valid `profile.json`. Relock never seeds. Scaffold still refuses nonempty directories. Adopt-plan remains read-only. Projection still requires an existing legal registry.
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
|
|
10
|
+
- Add the public function `runRegisterExisting` and the CLI `skill-family-kit check register-existing`. 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. `--handwritten` is required and non-empty.
|
|
11
|
+
- Missing all three closed-world documents yields exclusive create. All three present and byte-identical yields idempotent success with zero write. Any other combination, class overlap, or drifted bytes refuses with zero overwrite.
|
|
12
|
+
- Relock still never seeds a missing registry. Scaffold still refuses nonempty directories. Adopt-plan remains strictly read-only. Projection and later relock still require an existing legal registry.
|
|
13
|
+
- The package moves to 0.27.0 with the other three units. Contracts specification remains 1.20.0. Published 0.26.0 capabilities are unchanged and are not redone.
|
|
14
|
+
|
|
15
|
+
### Upgrade Notes
|
|
16
|
+
|
|
17
|
+
Pin the three Foundation npm packages to exactly 0.27.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. First nonempty registration does not prove business qualification or completed initialization. This note does not replace post-publish verification.
|
|
18
|
+
<!-- release-skill:changelog:end version=0.27.0 locale=en -->
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
<!-- release-skill:changelog:start version=0.26.0 locale=en baseline=sha256:f92651ad31301672d84ced913199520f2f7868c15881a51766064a9a2b11922c -->
|
|
22
|
+
## [0.26.0] - 2026-10-17
|
|
23
|
+
|
|
24
|
+
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.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- 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.
|
|
29
|
+
- Retain Codex CLI 0.154.0 project .agents/skills support and its existing activationRules mechanism.
|
|
30
|
+
- Apply each host’s own discovery, parsing, ignore, name-competition, and local-file flag rules. Report Cursor menu, completion, and model metadata separately.
|
|
31
|
+
- 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.
|
|
32
|
+
- Other native-observed markers mean the check uses previously calibrated native rules; they do not mean this check starts the host.
|
|
33
|
+
- 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.
|
|
34
|
+
- 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.
|
|
35
|
+
- 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.
|
|
36
|
+
|
|
37
|
+
### Upgrade Notes
|
|
38
|
+
|
|
39
|
+
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.
|
|
40
|
+
<!-- release-skill:changelog:end version=0.26.0 locale=en -->
|
|
41
|
+
|
|
42
|
+
|
|
3
43
|
<!-- release-skill:changelog:start version=0.25.0 locale=en baseline=sha256:94f4c9be64b930538ffaccf847dadf49baad796b513c142205a18f631d50e66c -->
|
|
4
44
|
## [0.25.0] - 2026-10-15
|
|
5
45
|
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# 变更日志
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.27.0 locale=zh-CN baseline=sha256:1a04833defa7c8007013debe70f397bb051a7cfc4d22a1eac0a11cfe0fe4fe63 -->
|
|
4
|
+
## [0.27.0] - 2026-10-21
|
|
5
|
+
|
|
6
|
+
Engineering Kit 0.27.0 在既有 `check` 下新增公共函数 `runRegisterExisting` 与 CLI 子动作 `skill-family-kit check register-existing`。四个顶层命令仍为 `scaffold`、`adopt-plan`、`projection`、`check`。该子动作是已有有效 `profile.json` 的非空根首次写入 `.foundation/file-registry.json`、`skill-family.project-manifest.json`、`skill-family.managed-file-lock.json` 的唯一合法入口。`relock` 不为缺锁工程播种。`scaffold` 仍拒绝非空目录。`adopt-plan` 仍只读。`projection` 仍要求已有合法登记。
|
|
7
|
+
|
|
8
|
+
### 变更
|
|
9
|
+
|
|
10
|
+
- 新增公共函数 `runRegisterExisting` 与 CLI `skill-family-kit check register-existing`。API 的 `root` 必须是绝对项目工作目录;CLI 会把当前目录或相对路径先解析成绝对路径。`--handwritten` 必填且非空。
|
|
11
|
+
- 三份闭域文件均不存在时排他创建;三份均在且字节一致时幂等成功且零写入;任一其他组合、分类重叠或字节漂移均拒绝且零覆盖。
|
|
12
|
+
- `relock` 仍不为缺锁工程播种。`scaffold` 仍拒绝非空目录。`adopt-plan` 仍严格只读。`projection` 与后续 `relock` 仍要求已有合法登记。
|
|
13
|
+
- 包版本与其他三单元锁步到 0.27.0。Contracts 规格仍为 1.20.0。已发布的 0.26.0 能力保持原样,本版本不重做。
|
|
14
|
+
|
|
15
|
+
### 升级说明
|
|
16
|
+
|
|
17
|
+
三个 Foundation npm 包须精确锁定 0.27.0,独立插件与三包保持相同发布版本。Contracts 规格仍为 1.20.0,与 npm 包版本分别处理。消费以实际发布版本的公开接口和源码为准。首次非空登记不证明业务资格或初始化完成。本说明不替代发布后验证。
|
|
18
|
+
<!-- release-skill:changelog:end version=0.27.0 locale=zh-CN -->
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
<!-- release-skill:changelog:start version=0.26.0 locale=zh-CN baseline=sha256:3437859b22ecdad6bc0766dccf3d8b3ed7f1eb9240a9b898f1a2628a092f7143 -->
|
|
22
|
+
## [0.26.0] - 2026-10-17
|
|
23
|
+
|
|
24
|
+
0.26.0 版本通过既有公共函数 `runHostLoadingCheck` 与 CLI 子动作 `skill-family-kit check host-loading`,扩展对七宿主的共享只读静态加载检查能力。四顶层命令 `scaffold`、`adopt-plan`、`projection`、`check` 保持不变,未新增顶层命令或公共 API。检查不启动宿主、模型、hook 或脚本,不联网、不写文件。
|
|
25
|
+
|
|
26
|
+
### 变更
|
|
27
|
+
|
|
28
|
+
- 新增七宿主共享静态加载检查;精确宿主版本、类别与项目目录见权威 [NATIVE_HOSTS 表](src/host-loading-native.mjs)。该内部表不是包根公共导出。
|
|
29
|
+
- **兼容性保留**:Codex CLI 0.154.0 的 `.agents/skills` 项目结构继续支持,其 `activationRules` 机制保持可用。
|
|
30
|
+
- **检查逻辑**:各宿主独立执行发现、解析、忽略、名称竞争与局部文件标志判断。Cursor 的菜单、补全与模型元数据三类行为分别报告。
|
|
31
|
+
- **证据例外**:仅当 `modelMetadata.*` 字段来自 Cursor CLI 2026.09.10-fd3934a 版本时,允许标注 `source-reviewed-unexecuted`,文字为“源码核实、未作原生运行校准”。该标记不表示原生运行已校准,也不代表本次检查启动宿主。
|
|
32
|
+
- **标记语义**:其余 `native-observed` 标记仅表示采用已有原生校准规则,不表示本次检查启动宿主。
|
|
33
|
+
- **边界与退出码**: 项目 root 必须为绝对工作目录,CLI 先将相对输入解析为绝对路径。 项目根不存在或不可绑定 → 退出码 2。 项目存在但技能容器缺失、非目录或为空 → 退出码 1。 已证明本地加载阻断 → 退出码 1。 具体未覆盖或未知竞争 → 退出码 2,且优先于 1。 普通完整静态范围无阻断 → 退出码 0;已有正常技能不能掩盖阻断或未覆盖。 Codex 支持原有 `activationRules`;其余七宿主仅接受省略或 `null`,其他值(包括空数组)返回 2。
|
|
34
|
+
- **数据边界**:保留链接收容与读取边界。未校准的实际竞争、WorkBuddy 尚未校准的可选元信息或版本来源形态及图标解析、Cursor 补全字符串 `false`、CodeBuddy 未证明等价的块标量等,均按具体未覆盖处理,不猜测成功,也不将所有普通输入永久返回 2。
|
|
35
|
+
- **静态通过不等于业务成功**:退出码 0 仅表示静态检查通过,不证明最终启用、安装、更新、会话选择、真实触发或业务执行成功。不得复用 Codex 证据宣称其他宿主已校准。
|
|
36
|
+
|
|
37
|
+
### 升级说明
|
|
38
|
+
|
|
39
|
+
三个 Foundation npm 包(`skill-family-engineering-kit`、`skill-family-contracts`、`skill-family-harness-node`)及独立 Plugin 均需精确锁定至 0.26.0 版本,实现四单元锁步。 Contracts 规格保持 1.20.0,与包版本为独立坐标,不随 Kit 升级。 消费方应按精确宿主版本与类别,使用实际已发布的公共接口。 发布说明不替代发布后验证或正式消费者验收。 退出码 0 不构成升级安全保证,不等同于可安全升级或已通过生产验证。
|
|
40
|
+
<!-- release-skill:changelog:end version=0.26.0 locale=zh-CN -->
|
|
41
|
+
|
|
42
|
+
|
|
3
43
|
<!-- release-skill:changelog:start version=0.25.0 locale=zh-CN baseline=sha256:0112af28c40f4ac8dd77173f681345039eb2c55d714315b267827693c5f78e37 -->
|
|
4
44
|
## [0.25.0] - 2026-10-15
|
|
5
45
|
|
package/README.md
CHANGED
|
@@ -4,25 +4,25 @@
|
|
|
4
4
|
|
|
5
5
|
# skill-family-engineering-kit
|
|
6
6
|
|
|
7
|
-
<!-- release-skill:release-version: 0.
|
|
7
|
+
<!-- release-skill:release-version: 0.27.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.
|
|
12
|
+
**0.27.0** (2026-10-21)
|
|
13
13
|
|
|
14
|
-
Engineering Kit 0.
|
|
14
|
+
Engineering Kit 0.27.0 adds the public function `runRegisterExisting` and the CLI sub-action `skill-family-kit check register-existing` under the existing `check` command. The four top-level commands remain `scaffold`, `adopt-plan`, `projection`, and `check`. The sub-action is the only legal first write of `.foundation/file-registry.json`, `skill-family.project-manifest.json`, and `skill-family.managed-file-lock.json` into a nonempty root that already has a valid `profile.json`. Relock never seeds. Scaffold still refuses nonempty directories. Adopt-plan remains read-only. Projection still requires an existing legal registry.
|
|
15
15
|
|
|
16
16
|
**Changed**
|
|
17
17
|
|
|
18
|
-
- Add the public function `
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
- The package moves to 0.
|
|
18
|
+
- Add the public function `runRegisterExisting` and the CLI `skill-family-kit check register-existing`. 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. `--handwritten` is required and non-empty.
|
|
19
|
+
- Missing all three closed-world documents yields exclusive create. All three present and byte-identical yields idempotent success with zero write. Any other combination, class overlap, or drifted bytes refuses with zero overwrite.
|
|
20
|
+
- Relock still never seeds a missing registry. Scaffold still refuses nonempty directories. Adopt-plan remains strictly read-only. Projection and later relock still require an existing legal registry.
|
|
21
|
+
- The package moves to 0.27.0 with the other three units. Contracts specification remains 1.20.0. Published 0.26.0 capabilities are unchanged and are not redone.
|
|
22
22
|
|
|
23
23
|
**Upgrade Notes**
|
|
24
24
|
|
|
25
|
-
Pin the three Foundation npm packages to exactly 0.
|
|
25
|
+
Pin the three Foundation npm packages to exactly 0.27.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. First nonempty registration does not prove business qualification or completed initialization. This note does not replace post-publish verification.
|
|
26
26
|
<!-- release-skill:managed:end id=latest-release -->
|
|
27
27
|
|
|
28
28
|
## Governance Check (0.22.0)
|
|
@@ -65,7 +65,7 @@ Kit is the "engineering stage" layer, depending on the Harness and Contracts. It
|
|
|
65
65
|
|
|
66
66
|
## Installation and Minimal Example
|
|
67
67
|
|
|
68
|
-
This package version is 0.
|
|
68
|
+
This package version is 0.27.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:
|
|
69
69
|
|
|
70
70
|
```sh
|
|
71
71
|
pack_dir="$(mktemp -d)"
|
|
@@ -73,21 +73,21 @@ pack_dir="$(mktemp -d)"
|
|
|
73
73
|
(cd packages/skill-family-harness-node && pnpm pack --pack-destination "$pack_dir")
|
|
74
74
|
(cd packages/skill-family-engineering-kit && pnpm pack --pack-destination "$pack_dir")
|
|
75
75
|
mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
|
|
76
|
-
(cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.
|
|
76
|
+
(cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.27.0.tgz" "$pack_dir/skill-family-harness-node-0.27.0.tgz" "$pack_dir/skill-family-engineering-kit-0.27.0.tgz")
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
The registry installation below requires exact version 0.
|
|
79
|
+
The registry installation below requires exact version 0.27.0 to be formally available:
|
|
80
80
|
|
|
81
81
|
```sh
|
|
82
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
83
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
84
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
85
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
86
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
87
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
82
|
+
npm install --save-dev skill-family-engineering-kit@0.27.0
|
|
83
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit --help
|
|
84
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
85
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale en --uses ./uses.json
|
|
86
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit projection --root <repo>
|
|
87
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit check --root <repo>
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
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.
|
|
90
|
+
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.27.0 -- skill-family-kit --help`.
|
|
91
91
|
|
|
92
92
|
### Engineering declarations (available since 0.24.0)
|
|
93
93
|
|
|
@@ -181,16 +181,50 @@ The caller must first construct a valid report model; Kit does not derive facts
|
|
|
181
181
|
|
|
182
182
|
### Host-loading check sub-action
|
|
183
183
|
|
|
184
|
+
#### Version and scope
|
|
185
|
+
|
|
186
|
+
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.
|
|
187
|
+
|
|
188
|
+
#### Calling the check
|
|
189
|
+
|
|
190
|
+
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:
|
|
191
|
+
|
|
184
192
|
```sh
|
|
185
193
|
npm exec -- skill-family-kit check host-loading --root <project> --host codex --host-version 0.154.0 --path-category codex-project-skills
|
|
186
194
|
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>
|
|
195
|
+
npm exec -- skill-family-kit check host-loading --root <project> --host kimi-code --host-version 2.2.0 --path-category kimi-code-project-skills
|
|
187
196
|
```
|
|
188
197
|
|
|
189
|
-
The
|
|
198
|
+
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.
|
|
199
|
+
|
|
200
|
+
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.
|
|
201
|
+
|
|
202
|
+
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.
|
|
203
|
+
|
|
204
|
+
#### Reading the report
|
|
205
|
+
|
|
206
|
+
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.
|
|
207
|
+
|
|
208
|
+
Codex keeps its existing behavior:
|
|
209
|
+
|
|
210
|
+
- Same-name skills at different paths are all retained.
|
|
211
|
+
- Invalid optional standard skill metadata YAML under `agents/` beside `SKILL.md` is ignored as a whole document, not reported as a skill load failure.
|
|
212
|
+
- 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.
|
|
213
|
+
- `allow_implicit_invocation=false` records implicit invocation being disabled, independently of `enabled`. Without explicit activation rules, `enabled` remains unknown.
|
|
214
|
+
|
|
215
|
+
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`.
|
|
216
|
+
|
|
217
|
+
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.
|
|
218
|
+
|
|
219
|
+
| Exit code | Meaning |
|
|
220
|
+
| --- | --- |
|
|
221
|
+
| `0` | The requested scope is covered and has no established blocker. |
|
|
222
|
+
| `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`. |
|
|
223
|
+
| `2` | An unknown version or shape, non-equivalent coverage, invalid selector, or a missing/non-directory project root. |
|
|
190
224
|
|
|
191
|
-
|
|
225
|
+
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.
|
|
192
226
|
|
|
193
|
-
A static
|
|
227
|
+
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.
|
|
194
228
|
|
|
195
229
|
### Candidate Quickstart projection bundle
|
|
196
230
|
|
package/README.zh-CN.md
CHANGED
|
@@ -5,25 +5,25 @@
|
|
|
5
5
|
|
|
6
6
|
# skill-family-engineering-kit
|
|
7
7
|
|
|
8
|
-
<!-- release-skill:release-version: 0.
|
|
8
|
+
<!-- release-skill:release-version: 0.27.0 -->
|
|
9
9
|
|
|
10
10
|
开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
|
|
11
11
|
|
|
12
12
|
<!-- release-skill:managed:start id=latest-release -->
|
|
13
|
-
**0.
|
|
13
|
+
**0.27.0** (2026-10-21)
|
|
14
14
|
|
|
15
|
-
Engineering Kit 0.
|
|
15
|
+
Engineering Kit 0.27.0 在既有 `check` 下新增公共函数 `runRegisterExisting` 与 CLI 子动作 `skill-family-kit check register-existing`。四个顶层命令仍为 `scaffold`、`adopt-plan`、`projection`、`check`。该子动作是已有有效 `profile.json` 的非空根首次写入 `.foundation/file-registry.json`、`skill-family.project-manifest.json`、`skill-family.managed-file-lock.json` 的唯一合法入口。`relock` 不为缺锁工程播种。`scaffold` 仍拒绝非空目录。`adopt-plan` 仍只读。`projection` 仍要求已有合法登记。
|
|
16
16
|
|
|
17
17
|
**变更**
|
|
18
18
|
|
|
19
|
-
- 新增公共函数 `
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
- 包版本与其他三单元锁步到 0.
|
|
19
|
+
- 新增公共函数 `runRegisterExisting` 与 CLI `skill-family-kit check register-existing`。API 的 `root` 必须是绝对项目工作目录;CLI 会把当前目录或相对路径先解析成绝对路径。`--handwritten` 必填且非空。
|
|
20
|
+
- 三份闭域文件均不存在时排他创建;三份均在且字节一致时幂等成功且零写入;任一其他组合、分类重叠或字节漂移均拒绝且零覆盖。
|
|
21
|
+
- `relock` 仍不为缺锁工程播种。`scaffold` 仍拒绝非空目录。`adopt-plan` 仍严格只读。`projection` 与后续 `relock` 仍要求已有合法登记。
|
|
22
|
+
- 包版本与其他三单元锁步到 0.27.0。Contracts 规格仍为 1.20.0。已发布的 0.26.0 能力保持原样,本版本不重做。
|
|
23
23
|
|
|
24
24
|
**升级说明**
|
|
25
25
|
|
|
26
|
-
三个 Foundation npm 包须精确锁定 0.
|
|
26
|
+
三个 Foundation npm 包须精确锁定 0.27.0,独立插件与三包保持相同发布版本。Contracts 规格仍为 1.20.0,与 npm 包版本分别处理。消费以实际发布版本的公开接口和源码为准。首次非空登记不证明业务资格或初始化完成。本说明不替代发布后验证。
|
|
27
27
|
<!-- release-skill:managed:end id=latest-release -->
|
|
28
28
|
|
|
29
29
|
## 治理检查(0.22.0)
|
|
@@ -64,7 +64,7 @@ Kit 是「工程阶段」层,依赖 Harness 与 Contracts。它只做四件事
|
|
|
64
64
|
|
|
65
65
|
## 安装和最小示例
|
|
66
66
|
|
|
67
|
-
本包版本为 0.
|
|
67
|
+
本包版本为 0.27.0;0.24.1 已正式发布。验证尚未正式发布的工作树时,先把三个包分别打入同一个临时目录,再安装这三个精确 tarball:
|
|
68
68
|
|
|
69
69
|
```sh
|
|
70
70
|
pack_dir="$(mktemp -d)"
|
|
@@ -72,21 +72,21 @@ pack_dir="$(mktemp -d)"
|
|
|
72
72
|
(cd packages/skill-family-harness-node && pnpm pack --pack-destination "$pack_dir")
|
|
73
73
|
(cd packages/skill-family-engineering-kit && pnpm pack --pack-destination "$pack_dir")
|
|
74
74
|
mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
|
|
75
|
-
(cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.
|
|
75
|
+
(cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.27.0.tgz" "$pack_dir/skill-family-harness-node-0.27.0.tgz" "$pack_dir/skill-family-engineering-kit-0.27.0.tgz")
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
以下 registry 安装方式以精确版本 0.
|
|
78
|
+
以下 registry 安装方式以精确版本 0.27.0 已正式可用为前提:
|
|
79
79
|
|
|
80
80
|
```sh
|
|
81
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
82
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
83
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
84
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
85
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
86
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
81
|
+
npm install --save-dev skill-family-engineering-kit@0.27.0
|
|
82
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit --help
|
|
83
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
84
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale zh-CN --uses ./uses.json
|
|
85
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit projection --root <repo>
|
|
86
|
+
npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit check --root <repo>
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.
|
|
89
|
+
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.27.0 -- skill-family-kit --help`。
|
|
90
90
|
|
|
91
91
|
### 工程声明调用(自 0.24.0 提供)
|
|
92
92
|
|
|
@@ -180,16 +180,89 @@ npm exec -- skill-family-kit check report --root <repo> --report <report.md> --m
|
|
|
180
180
|
|
|
181
181
|
### 宿主加载检查子动作
|
|
182
182
|
|
|
183
|
+
#### 版本边界与能力范围
|
|
184
|
+
|
|
185
|
+
- **0.25.0** 版本已支持对 Codex 0.154.0 的宿主加载检查。
|
|
186
|
+
- **0.26.0** 源码候选版本在相同入口中新增对七宿主的检查能力,但该功能**仍处于候选状态**,正式可用性需以该版本的实际发布验证为准。**请勿使用 0.25.0 发布包运行新增宿主检查**。
|
|
187
|
+
|
|
188
|
+
#### CLI 命令与参数说明
|
|
189
|
+
|
|
190
|
+
公共函数为 `runHostLoadingCheck({ root, hostId, hostVersion, pathCategory, activationRules, hostsRoot })`。以下是对应 CLI 调用;第三条需要包含七宿主增量的版本:
|
|
191
|
+
|
|
183
192
|
```sh
|
|
184
193
|
npm exec -- skill-family-kit check host-loading --root <project> --host codex --host-version 0.154.0 --path-category codex-project-skills
|
|
185
194
|
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>
|
|
195
|
+
npm exec -- skill-family-kit check host-loading --root <project> --host kimi-code --host-version 2.2.0 --path-category kimi-code-project-skills
|
|
186
196
|
```
|
|
187
197
|
|
|
188
|
-
|
|
198
|
+
- `root`:必须为绝对项目目录路径;CLI 会先解析当前目录或相对路径。
|
|
199
|
+
- `host`:宿主标识符,如 `codex` 或 `kimi-code`。
|
|
200
|
+
- `host-version`:对应宿主版本号,如 `0.154.0` 或 `2.2.0`。
|
|
201
|
+
- `path-category`:宿主技能容器的相对目录类别,例如 `codex-project-skills` 或 `kimi-code-project-skills`。
|
|
202
|
+
- `--activation-rules`:CLI 接收项目根内相对 JSON 文件路径,其内容为有序规则数组,每项选择 `name` 或 `path` 之一,并带 `enabled` 布尔值。只有 Codex 支持这些规则。新增七宿主的 API 参数 `activationRules` 仅允许省略或 `null`,包括 `[]` 在内的任何非 `null` 值都返回 `2`;CLI 应省略该选项。
|
|
203
|
+
- `hosts-root`:可选,指定自定义宿主配置根目录;省略时使用包内默认 Profile。**指定后不得修改已校准的精确版本、类别与相对目录组合**。
|
|
204
|
+
|
|
205
|
+
#### 宿主选择器与实现依据
|
|
206
|
+
|
|
207
|
+
新增七宿主的精确选择器定义于公开源码中:
|
|
208
|
+
|
|
209
|
+
[src/host-loading-native.mjs](src/host-loading-native.mjs) 中的 `NATIVE_HOSTS` 内部表。
|
|
210
|
+
|
|
211
|
+
该表为内部实现结构,不是包根公共导出;它列出新增七宿主支持的精确版本、类别与相对目录组合。Kimi 示例使用 `.kimi-code/skills`。
|
|
212
|
+
|
|
213
|
+
Codex 的选择器仍沿用 [src/host-loading-check.mjs](src/host-loading-check.mjs) 中的常量合同,容器为 `.agents/skills`。
|
|
214
|
+
|
|
215
|
+
#### 检查行为与限制
|
|
216
|
+
|
|
217
|
+
- **不启动宿主、模型、hook 或脚本**。
|
|
218
|
+
- **不联网、不写入文件、不修改任何状态**。
|
|
219
|
+
- **仅静态分析项目容器内指定路径下的技能结构**。
|
|
220
|
+
- **检查范围不涵盖用户全局技能、祖先项目或插件全环境**。
|
|
221
|
+
- **新增七宿主的目录或文件符号链接保留为未覆盖,返回退出码 2,不越界读取**。
|
|
222
|
+
- **仅检查一个显式指定的项目容器**,不推断启用、安装、更新、会话选择或真实业务触发的成功性。
|
|
223
|
+
|
|
224
|
+
#### Codex 保留行为
|
|
225
|
+
|
|
226
|
+
- 同名不同路径的技能全部保留,不合并或覆盖。
|
|
227
|
+
- `SKILL.md` 旁 `agents/` 目录下的标准可选技能元信息 YAML,若存在错误则整份忽略,不导致加载失败。
|
|
228
|
+
- `policy.products` 非空且只列出 Codex 以外产品时才过滤;包含 `codex` 时保留,空列表不触发产品过滤。
|
|
229
|
+
- `allow_implicit_invocation=false` 记录隐式调用关闭,不代表 `enabled=false`;缺少显式启用规则时,`enabled` 仍未知。
|
|
230
|
+
- `activationRules` 仅 Codex 支持传入有序数组,每项为 `name` 或 `path` 二选一,加 `enabled` 布尔值。
|
|
231
|
+
|
|
232
|
+
#### 新增七宿主行为
|
|
233
|
+
|
|
234
|
+
- 所有技能的基础字段 `enabled`、`disabled`、`implicitInvocation`、`interface`、`shortDescription` 均为 `null`。
|
|
235
|
+
- 原生行为差异通过 `skills[].observations` 数组表达,每项包含:
|
|
236
|
+
- `field`:被观察的字段名
|
|
237
|
+
- `value`:观察到的值
|
|
238
|
+
- `basis`:观察依据,`native-observed` 表示该规则曾用原生事实校准,不表示本次检查启动过宿主
|
|
239
|
+
- `sourceId`:来源标识,对应 `coverage.ruleSources` 中的记录
|
|
240
|
+
- `coverage.ruleSources` 记录每条规则的:
|
|
241
|
+
- `id`
|
|
242
|
+
- `version`
|
|
243
|
+
- `source`
|
|
244
|
+
- `sha256`
|
|
245
|
+
- **仅 Cursor CLI 版本 `2026.09.10-fd3934a` 的 `modelMetadata.*` 字段标记为 `source-reviewed-unexecuted`**,表示“源码核实、未作原生运行校准”。
|
|
246
|
+
- Cursor 的菜单与补全面已有原生校准,**不能将此例外推广为整个宿主无原生证据**。
|
|
247
|
+
- Codex 继续使用 `officialTag` 和 `officialCommit`,**不虚构给其他宿主**。
|
|
248
|
+
|
|
249
|
+
#### 退出码与结果解读
|
|
250
|
+
|
|
251
|
+
| 退出码 | 含义 |
|
|
252
|
+
|--------|------|
|
|
253
|
+
| `0` | 请求范围完整,且无已证实阻断 |
|
|
254
|
+
| `1` | 存在已证实阻断,或项目存在但缺技能容器、没有可发现入口;Codex 只有被产品过滤的目标也返回 `1` |
|
|
255
|
+
| `2` | 未知版本/形态、非等价覆盖、非法选择器,或项目根不存在/非目录 |
|
|
256
|
+
|
|
257
|
+
- **有未覆盖项时优先返回 2,但不丢弃已知的 `findings`**。
|
|
258
|
+
- **报告需综合 `findings`、`uncovered`、`limitations` 三部分,不可仅依赖退出码判断**。
|
|
259
|
+
- **同名规则按宿主独立处理,未覆盖时不猜胜者**。
|
|
260
|
+
|
|
261
|
+
#### 重要说明
|
|
189
262
|
|
|
190
|
-
|
|
263
|
+
- 本检查为静态分析,**不证明宿主已启用、已安装、已更新、会话中被选择或业务流程成功**。
|
|
264
|
+
- 发布包来源与检查范围是两个独立判断,消费正式包时需依据实际接口与来源。
|
|
191
265
|
|
|
192
|
-
静态通过不表示真实安装、会话选择或业务执行已经成功。消费以正式发布包的公开接口和源码为准。本次检查覆盖仅所选项目的 `.agents/skills`。发布包的实际来源是本单元公开闭包,与本次检查覆盖范围分别说明。
|
|
193
266
|
|
|
194
267
|
### Candidate Quickstart 投影包
|
|
195
268
|
|
|
@@ -1507,6 +1507,57 @@
|
|
|
1507
1507
|
"Foundation entry contract: check entries"
|
|
1508
1508
|
]
|
|
1509
1509
|
},
|
|
1510
|
+
{
|
|
1511
|
+
"id": "foundation.kit.register-existing",
|
|
1512
|
+
"intent": "Seed the three official closed-world documents for a nonempty project that already has a valid profile.json and does not yet have a legal registry",
|
|
1513
|
+
"useWhen": [
|
|
1514
|
+
"Need the only legal first write of .foundation/file-registry.json, skill-family.project-manifest.json, and skill-family.managed-file-lock.json into a nonempty root",
|
|
1515
|
+
"Need an official first-nonempty registration that is exclusive-create, idempotent on identical bytes, and refuse-with-zero-overwrite otherwise"
|
|
1516
|
+
],
|
|
1517
|
+
"doNotUseWhen": [
|
|
1518
|
+
"The target is empty (use scaffold)",
|
|
1519
|
+
"The three official documents already exist and a later handwritten file must be admitted (use check relock)",
|
|
1520
|
+
"Need a read-only inventory of an existing project (use adopt-plan)",
|
|
1521
|
+
"Need to overwrite drifted closed-world bytes"
|
|
1522
|
+
],
|
|
1523
|
+
"prerequisites": [
|
|
1524
|
+
"Caller supplies an absolute project working directory",
|
|
1525
|
+
"profile.json exists at the target root and is contract-valid, including profile.adoption.foundation_profile.id",
|
|
1526
|
+
"handwritten classification list is non-empty"
|
|
1527
|
+
],
|
|
1528
|
+
"inputs": [
|
|
1529
|
+
"Absolute project working directory root",
|
|
1530
|
+
"Non-empty handwritten globs or relative paths",
|
|
1531
|
+
"Optional engineering JSON, trackedToolLocks paths, and gitignore-style artifacts patterns"
|
|
1532
|
+
],
|
|
1533
|
+
"outputs": [
|
|
1534
|
+
"register-existing report (kind skill-family.register-existing-report)",
|
|
1535
|
+
"On first create: exclusive publication of the three closed-world documents; on identical bytes: idempotent success with zero write; otherwise refuse with zero overwrite"
|
|
1536
|
+
],
|
|
1537
|
+
"sideEffects": [
|
|
1538
|
+
"Writes at most the three closed-world documents; never overwrites mismatched existing bytes; does not scaffold, apply adopt-plan, or seed via relock"
|
|
1539
|
+
],
|
|
1540
|
+
"failureSemantics": [
|
|
1541
|
+
"Missing or invalid profile.json refuses",
|
|
1542
|
+
"Empty handwritten list refuses",
|
|
1543
|
+
"Class overlap among handwritten, artifacts, and trackedToolLocks refuses",
|
|
1544
|
+
"Any incomplete or drifted combination of the three documents refuses with zero overwrite"
|
|
1545
|
+
],
|
|
1546
|
+
"invariants": [
|
|
1547
|
+
"Adds no fifth top-level command; it runs as the check register-existing sub-action",
|
|
1548
|
+
"Relock never seeds; this sub-action is the only legal first write of the three documents into a nonempty root",
|
|
1549
|
+
"Scaffold still refuses nonempty directories; adopt-plan remains read-only"
|
|
1550
|
+
],
|
|
1551
|
+
"ownedByCaller": [
|
|
1552
|
+
"Choosing handwritten, artifacts, and trackedToolLocks classifications",
|
|
1553
|
+
"Remediation after a refuse-with-zero-overwrite result"
|
|
1554
|
+
],
|
|
1555
|
+
"routeElsewhere": [
|
|
1556
|
+
"Empty target: scaffold",
|
|
1557
|
+
"Existing legal registry plus new handwritten files: check relock",
|
|
1558
|
+
"Read-only nonempty inventory: adopt-plan"
|
|
1559
|
+
]
|
|
1560
|
+
},
|
|
1510
1561
|
{
|
|
1511
1562
|
"id": "foundation.kit.relock",
|
|
1512
1563
|
"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.",
|
|
@@ -996,6 +996,32 @@
|
|
|
996
996
|
"packages/skill-family-engineering-kit/test/cli.test.mjs"
|
|
997
997
|
]
|
|
998
998
|
},
|
|
999
|
+
{
|
|
1000
|
+
"id": "foundation.kit.register-existing",
|
|
1001
|
+
"package": "skill-family-engineering-kit",
|
|
1002
|
+
"layer": "engineering-kit",
|
|
1003
|
+
"since": "0.27.0",
|
|
1004
|
+
"stability": "candidate",
|
|
1005
|
+
"migration": "none",
|
|
1006
|
+
"promotionPolicy": "consumer-transparent",
|
|
1007
|
+
"adoptionScopes": ["engineering-kit"],
|
|
1008
|
+
"entrypoints": [
|
|
1009
|
+
"runRegisterExisting (packages/skill-family-engineering-kit/src/register-existing.mjs)",
|
|
1010
|
+
"registerExistingAction (packages/skill-family-engineering-kit/src/register-existing.mjs)",
|
|
1011
|
+
"REGISTER_EXISTING_REPORT_KIND (packages/skill-family-engineering-kit/src/register-existing.mjs)"
|
|
1012
|
+
],
|
|
1013
|
+
"sourceRefs": [
|
|
1014
|
+
"packages/skill-family-engineering-kit/src/register-existing.mjs",
|
|
1015
|
+
"packages/skill-family-engineering-kit/src/cli.mjs",
|
|
1016
|
+
"packages/skill-family-engineering-kit/src/index.mjs"
|
|
1017
|
+
],
|
|
1018
|
+
"positiveTestRefs": [
|
|
1019
|
+
"packages/skill-family-engineering-kit/test/register-existing.test.mjs"
|
|
1020
|
+
],
|
|
1021
|
+
"negativeTestRefs": [
|
|
1022
|
+
"packages/skill-family-engineering-kit/test/register-existing.test.mjs"
|
|
1023
|
+
]
|
|
1024
|
+
},
|
|
999
1025
|
{
|
|
1000
1026
|
"id": "foundation.kit.relock",
|
|
1001
1027
|
"package": "skill-family-engineering-kit",
|
|
@@ -1506,6 +1506,57 @@
|
|
|
1506
1506
|
"Foundation 入口契约:check entries"
|
|
1507
1507
|
]
|
|
1508
1508
|
},
|
|
1509
|
+
{
|
|
1510
|
+
"id": "foundation.kit.register-existing",
|
|
1511
|
+
"intent": "为已有有效 profile.json、尚未具备合法登记的非空工程,播种三份官方闭域文件",
|
|
1512
|
+
"useWhen": [
|
|
1513
|
+
"需要把 .foundation/file-registry.json、skill-family.project-manifest.json、skill-family.managed-file-lock.json 合法地首次写入非空根",
|
|
1514
|
+
"需要官方首次非空登记:三份皆无则排他创建,字节一致则幂等零写入,其余情况拒绝且零覆盖"
|
|
1515
|
+
],
|
|
1516
|
+
"doNotUseWhen": [
|
|
1517
|
+
"目标为空(走 scaffold)",
|
|
1518
|
+
"三份官方文件已存在、只需纳入后来的手写文件(走 check relock)",
|
|
1519
|
+
"只需只读盘点既有工程(走 adopt-plan)",
|
|
1520
|
+
"需要覆盖已漂移的闭域字节"
|
|
1521
|
+
],
|
|
1522
|
+
"prerequisites": [
|
|
1523
|
+
"调用方给出绝对项目工作目录",
|
|
1524
|
+
"目标根已有合同有效的 profile.json,且含 profile.adoption.foundation_profile.id",
|
|
1525
|
+
"手写分类清单非空"
|
|
1526
|
+
],
|
|
1527
|
+
"inputs": [
|
|
1528
|
+
"绝对项目工作目录 root",
|
|
1529
|
+
"非空手写 glob 或相对路径",
|
|
1530
|
+
"可选 engineering JSON、trackedToolLocks 路径,以及 gitignore 风格的 artifacts 模式"
|
|
1531
|
+
],
|
|
1532
|
+
"outputs": [
|
|
1533
|
+
"register-existing 报告(kind skill-family.register-existing-report)",
|
|
1534
|
+
"首次创建时排他写入三份闭域文件;字节一致时幂等成功且零写入;否则拒绝且零覆盖"
|
|
1535
|
+
],
|
|
1536
|
+
"sideEffects": [
|
|
1537
|
+
"最多写入三份闭域文件;从不覆盖不匹配的既有字节;不 scaffold、不 apply adopt-plan、不经 relock 播种"
|
|
1538
|
+
],
|
|
1539
|
+
"failureSemantics": [
|
|
1540
|
+
"缺少或无效的 profile.json 拒绝",
|
|
1541
|
+
"空手写清单拒绝",
|
|
1542
|
+
"handwritten、artifacts、trackedToolLocks 分类重叠拒绝",
|
|
1543
|
+
"三份文件任一不完整或字节漂移时拒绝且零覆盖"
|
|
1544
|
+
],
|
|
1545
|
+
"invariants": [
|
|
1546
|
+
"不新增第五个顶层命令,落在 check register-existing 子动作",
|
|
1547
|
+
"relock 不为缺锁工程播种;本子动作是非空根首次写入三份文件的唯一合法入口",
|
|
1548
|
+
"scaffold 仍拒绝非空目录;adopt-plan 仍只读"
|
|
1549
|
+
],
|
|
1550
|
+
"ownedByCaller": [
|
|
1551
|
+
"选择 handwritten、artifacts、trackedToolLocks 分类",
|
|
1552
|
+
"拒绝且零覆盖之后的整改"
|
|
1553
|
+
],
|
|
1554
|
+
"routeElsewhere": [
|
|
1555
|
+
"空目标:scaffold",
|
|
1556
|
+
"已有合法登记且需纳入新手写文件:check relock",
|
|
1557
|
+
"非空只读盘点:adopt-plan"
|
|
1558
|
+
]
|
|
1559
|
+
},
|
|
1509
1560
|
{
|
|
1510
1561
|
"id": "foundation.kit.relock",
|
|
1511
1562
|
"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": [
|