release-skill 0.4.2 → 0.5.1
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.kimi-plugin/plugin.json +1 -1
- package/CHANGELOG.md +44 -0
- package/INSTALL.md +2 -2
- package/INSTALL.zh-CN.md +2 -2
- package/README.md +10 -7
- package/README.zh-CN.md +10 -7
- package/adapters/claude/.claude-plugin/marketplace.json +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/error-codes.json +154 -0
- package/adapters/claude/bin/kernel-protocol.json +60 -0
- package/adapters/claude/bin/registry.json +179 -0
- package/adapters/claude/bin/release-skill.bundle.mjs +37609 -23014
- package/adapters/claude/bin/rules.json +104 -0
- package/adapters/claude/skills/release-assess/SKILL.md +2 -0
- package/adapters/claude/skills/release-help/SKILL.md +3 -1
- package/adapters/claude/skills/release-prepare/SKILL.md +2 -2
- package/adapters/claude/skills/release-verify/SKILL.md +2 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/error-codes.json +154 -0
- package/adapters/codex/bin/kernel-protocol.json +60 -0
- package/adapters/codex/bin/registry.json +179 -0
- package/adapters/codex/bin/release-skill.bundle.mjs +37609 -23014
- package/adapters/codex/bin/rules.json +104 -0
- package/adapters/codex/skills/release-assess/SKILL.md +2 -0
- package/adapters/codex/skills/release-help/SKILL.md +3 -1
- package/adapters/codex/skills/release-prepare/SKILL.md +2 -2
- package/adapters/codex/skills/release-verify/SKILL.md +2 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/error-codes.json +154 -0
- package/adapters/kimi/bin/kernel-protocol.json +60 -0
- package/adapters/kimi/bin/registry.json +179 -0
- package/adapters/kimi/bin/release-skill.bundle.mjs +37609 -23014
- package/adapters/kimi/bin/rules.json +104 -0
- package/adapters/kimi/skills/release-assess/SKILL.md +2 -0
- package/adapters/kimi/skills/release-help/SKILL.md +3 -1
- package/adapters/kimi/skills/release-prepare/SKILL.md +2 -2
- package/adapters/kimi/skills/release-verify/SKILL.md +2 -0
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/error-codes.json +154 -0
- package/adapters/workbuddy/bin/kernel-protocol.json +60 -0
- package/adapters/workbuddy/bin/registry.json +179 -0
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +37609 -23014
- package/adapters/workbuddy/bin/rules.json +104 -0
- package/adapters/workbuddy/skills/release-assess/SKILL.md +2 -0
- package/adapters/workbuddy/skills/release-help/SKILL.md +3 -1
- package/adapters/workbuddy/skills/release-prepare/SKILL.md +2 -2
- package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -0
- package/bin/error-codes.json +154 -0
- package/bin/kernel-protocol.json +60 -0
- package/bin/registry.json +179 -0
- package/bin/release-skill.bundle.mjs +37609 -23014
- package/bin/rules.json +104 -0
- package/package.json +3 -1
- package/scripts/build-bundle.mjs +159 -5
- package/scripts/sync-public-files.mjs +5 -0
- package/skills/release-assess/SKILL.md +2 -0
- package/skills/release-help/SKILL.md +3 -1
- package/skills/release-prepare/SKILL.md +2 -2
- package/skills/release-verify/SKILL.md +2 -0
- package/skills-src/release-assess/SKILL.md +2 -0
- package/skills-src/release-help/SKILL.md +3 -1
- package/skills-src/release-prepare/SKILL.md +2 -2
- package/skills-src/release-verify/SKILL.md +2 -0
- package/src/adapters/contract.mjs +10 -10
- package/src/adapters/plugin-marketplace.mjs +48 -4
- package/src/adapters/push-snapshot.mjs +12 -4
- package/src/artifacts/entry.mjs +4 -1
- package/src/artifacts/producer-registry.mjs +9 -6
- package/src/artifacts/project-lock.mjs +324 -214
- package/src/commands/assess.mjs +231 -2
- package/src/commands/attest.mjs +11 -0
- package/src/commands/hooks.mjs +6 -1
- package/src/commands/prepare.mjs +83 -1
- package/src/core/approval.mjs +5 -2
- package/src/core/baseline.mjs +11 -1
- package/src/core/digest.mjs +47 -12
- package/src/core/foundation-inflight.mjs +46 -0
- package/src/core/hook-cache.mjs +3 -0
- package/src/core/installation-contract.mjs +4 -2
- package/src/core/plan.mjs +42 -29
- package/src/core/run.mjs +22 -36
- package/src/core/skill-resource-closure.mjs +6 -4
- package/src/core/trusted-resource.mjs +64 -15
- package/src/producers/build-adapters.mjs +27 -9
- package/src/producers/render-public-assets.mjs +12 -7
- package/src/producers/sync-skills.mjs +12 -7
- package/src/snapshot/public-map.mjs +10 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-skill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "广州市风荷科技有限公司"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
],
|
|
20
20
|
"defaultPrompt": [
|
|
21
21
|
"Assess this project for release readiness.",
|
|
22
|
-
"Prepare a release plan for version 0.
|
|
22
|
+
"Prepare a release plan for version 0.5.1.",
|
|
23
23
|
"Help me understand the release workflow."
|
|
24
24
|
]
|
|
25
25
|
}
|
package/.kimi-plugin/plugin.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.5.1 locale=en baseline=sha256:2a8dc4241570c0919e55da270233728963ba1cda347c95c775678ec89a9f0ac0 -->
|
|
4
|
+
## [0.5.1] - 2026-08-17
|
|
5
|
+
|
|
6
|
+
v0.5.1 fixes three frozen-0.5.0 defects — explicit hook environment delivery (envAllowlist now reaches prepare hooks), a 64 MiB baseline maxBuffer for large tracked indexes, and the prefixed skill-directory fallback for marketplace-install preflight/observe — bumps the Skill Family Foundation dependencies to the released 0.5.0 packages, and hardens the release chain so every later release must bind the previous public release commit instead of degrading to an orphan root commit.
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
|
|
10
|
+
- **Foundation 0.5.0 upgrade**: `skill-family-contracts` and `skill-family-harness-node` dependencies bumped from 0.4.0 to 0.5.0 (npm latest); the package-name import bridge keeps working unchanged and the harness-node 0.5.0 export surface was re-verified (`publishFileExclusive`, token-lock five functions, `HARNESS_ERROR_KINDS`).
|
|
11
|
+
- **Chain hardening (chain-integrity)**: `push-snapshot` now requires an explicit `branchStrategy` (the historical `create-release-branch` default that produced orphan root commits is gone); `create-release-branch` is only valid when `previousPublicBaseline.mode=none`; a production online prepare with `mode=none` on a repository that already carries release tags fails closed with `CHAIN_GAP`, demanding a bound baseline at the previous release commit; online `assess` registers a warning-level `VERSION_SEQUENCE_GAP` when the target version jumps the release sequence (e.g. 0.1.1 → 0.1.3 with no v0.1.2 tag), without blocking.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **Hook environment delivery (hook-env-delivery)**: `runDeclaredHooks` now accepts an explicit `env` option and merges it into the hook context (`hookFn(hook, { root, env })`); prepare and `hooks validate` inject the invoking shell's environment, so `hooks.*.envAllowlist` keys exported by the caller finally reach the hook subprocess. Allowlist semantics are unchanged — the hook runner still reads allowlisted keys exclusively from the explicit map, never from `process.env` directly.
|
|
16
|
+
- **Large-tracked-index baseline (baseline-maxbuffer)**: `computeWorkspaceDigest` now runs its three git subprocesses with a 64 MiB `maxBuffer` (official fix 39c631f); workspaces with thousands of tracked files (measured 8494 tracked files → 1,519,151 B `ls-files -s` stdout) no longer fail with `ERR_CHILD_PROCESS_STDIO_MAXBUFFER`.
|
|
17
|
+
- **Prefixed skill-directory resolution (entry-skill-prefix)**: marketplace-install preflight and observe now fall back from `skills/<entrySkill>/SKILL.md` to `skills/<plugin>-<entrySkill>/SKILL.md` (plugin from the action parameters, D-ACA-30 platform physical names); candidate builds with prefixed skill directories pass preflight and observe instead of failing with `entry skill not found`.
|
|
18
|
+
<!-- release-skill:changelog:end version=0.5.1 locale=en -->
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
<!-- release-skill:changelog:start version=0.5.0 locale=en baseline=sha256:e59bef4bd7bc6e0809d1f415d7ff3d342e45a7e77075f66d6ffa48cfd9b71932 -->
|
|
22
|
+
## [0.5.0] - 2026-08-16
|
|
23
|
+
|
|
24
|
+
v0.5.0 adopts the released Skill Family Foundation 0.4.0 packages (skill-family-contracts / skill-family-harness-node) for digest computation, atomic writes, contained file reads, and project locking; migrates the project lock domain to a single-file token lock with fail-closed legacy detection; hardens the online assess npm check against fail-open; and documents the hooks authorization contract as config-time authorization.
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- **Negative test coverage**: 12 additional tests covering exclusive publication, token-lock migration, and the assess npm-check behavior.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- **Foundation adoption**: digest computation, atomic writes, contained-path reads and project locking now delegate to the published `skill-family-contracts@0.4.0` / `skill-family-harness-node@0.4.0` packages instead of local implementations; dependencies bumped from 0.3.0 to 0.4.0.
|
|
33
|
+
- **Token lock domain**: project locks migrated from a directory-based domain to a single `.release-skill/lock` file (0600, token record). Legacy directory-form locks are detected and fail closed with `LOCK_MIGRATION_REQUIRED`; no automatic conversion or deletion is performed.
|
|
34
|
+
- **Exclusive plan/run publication**: immutable plan and run records are published via `publishFileExclusive` — identical bytes are idempotent, divergent bytes fail with `GATE_FAILED`.
|
|
35
|
+
- **Assess npm check semantics**: the online `assess` npm check no longer treats every registry error as version-not-found; only E404/ETARGET mean a missing version, other failures surface as an `NPM_VERSION_CHECK_FAILED` warning.
|
|
36
|
+
- **Hooks authorization contract**: release-prepare/release-help now document the explicit contract that configuring a hook in project configuration IS the authorization (hooks are arbitrary local processes with no sandbox, no filesystem/network isolation, and no pre-trigger confirmation point); restoring a mandatory pre-trigger confirmation gate is a future hardening item.
|
|
37
|
+
- **Audit-scope ruling**: the bundled-family marketplace configuration is recorded as not applicable to the `release_artifact` target type (G3 target-side T4 ruling); T3/T5/T6 deferred to independent tasks.
|
|
38
|
+
- **Plan schema**: production plans carry the resolved codebuddy marketplace coordinates so approval and publish review the exact marketplace target.
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- **Configurable CodeBuddy marketplace**: codebuddy-plugin distributions accept `marketplace` and `marketplaceSource` in project configuration, and prepare threads both values into the consumer install action instead of assuming a fixed marketplace.
|
|
43
|
+
- **Assess fail-open**: an online `assess` no longer silently reports no gaps when the npm registry check fails for reasons other than a missing version.
|
|
44
|
+
<!-- release-skill:changelog:end version=0.5.0 locale=en -->
|
|
45
|
+
|
|
46
|
+
|
|
3
47
|
<!-- release-skill:changelog:start version=0.4.2 locale=en baseline=sha256:b8676f90eb68c93e40f84ff16de18a8c472e6a06e321bcc25895799e9e6f3896 -->
|
|
4
48
|
## [0.4.2] - 2026-08-12
|
|
5
49
|
|
package/INSTALL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](INSTALL.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.
|
|
5
|
+
<!-- release-skill:release-version: 0.5.1 -->
|
|
6
6
|
## Prerequisites
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 or later
|
|
@@ -114,7 +114,7 @@ tag pinned to the exact version (never the bare repository URL, which installs
|
|
|
114
114
|
the latest release or default branch), confirm the trust prompt, then reload:
|
|
115
115
|
|
|
116
116
|
```
|
|
117
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.
|
|
117
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.5.1
|
|
118
118
|
/plugins reload
|
|
119
119
|
```
|
|
120
120
|
|
package/INSTALL.zh-CN.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](INSTALL.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.
|
|
5
|
+
<!-- release-skill:release-version: 0.5.1 -->
|
|
6
6
|
## 前置条件
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 或更高版本
|
|
@@ -104,7 +104,7 @@ Kimi Code 有交互式插件市场,但**没有可脚本化的非交互安装
|
|
|
104
104
|
(切勿使用裸仓库地址,它会安装最新 release 或默认分支),确认信任提示后重新加载:
|
|
105
105
|
|
|
106
106
|
```
|
|
107
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.
|
|
107
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.5.1
|
|
108
108
|
/plugins reload
|
|
109
109
|
```
|
|
110
110
|
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](README.zh-CN.md) · Installation: [English](INSTALL.md) / [简体中文](INSTALL.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.
|
|
5
|
+
<!-- release-skill:release-version: 0.5.1 -->
|
|
6
6
|
Release preparation for Claude Code, CodeBuddy, WorkBuddy, Codex, and Kimi Code, with human-edited files kept intact.
|
|
7
7
|
|
|
8
8
|
release-skill helps a maintainer answer three questions: what will be released,
|
|
@@ -14,21 +14,24 @@ Setup surfaces only the deterministic `compactSummary` review view; the full
|
|
|
14
14
|
report stays in a temporary session directory.
|
|
15
15
|
|
|
16
16
|
<!-- release-skill:managed:start id=latest-release -->
|
|
17
|
-
**0.
|
|
17
|
+
**0.5.1** (2026-08-17)
|
|
18
18
|
|
|
19
|
-
v0.
|
|
19
|
+
v0.5.1 fixes three frozen-0.5.0 defects — explicit hook environment delivery (envAllowlist now reaches prepare hooks), a 64 MiB baseline maxBuffer for large tracked indexes, and the prefixed skill-directory fallback for marketplace-install preflight/observe — bumps the Skill Family Foundation dependencies to the released 0.5.0 packages, and hardens the release chain so every later release must bind the previous public release commit instead of degrading to an orphan root commit.
|
|
20
20
|
|
|
21
21
|
**Changed**
|
|
22
22
|
|
|
23
|
-
- **
|
|
23
|
+
- **Foundation 0.5.0 upgrade**: `skill-family-contracts` and `skill-family-harness-node` dependencies bumped from 0.4.0 to 0.5.0 (npm latest); the package-name import bridge keeps working unchanged and the harness-node 0.5.0 export surface was re-verified (`publishFileExclusive`, token-lock five functions, `HARNESS_ERROR_KINDS`).
|
|
24
|
+
- **Chain hardening (chain-integrity)**: `push-snapshot` now requires an explicit `branchStrategy` (the historical `create-release-branch` default that produced orphan root commits is gone); `create-release-branch` is only valid when `previousPublicBaseline.mode=none`; a production online prepare with `mode=none` on a repository that already carries release tags fails closed with `CHAIN_GAP`, demanding a bound baseline at the previous release commit; online `assess` registers a warning-level `VERSION_SEQUENCE_GAP` when the target version jumps the release sequence (e.g. 0.1.1 → 0.1.3 with no v0.1.2 tag), without blocking.
|
|
24
25
|
|
|
25
26
|
**Fixed**
|
|
26
27
|
|
|
27
|
-
- **
|
|
28
|
+
- **Hook environment delivery (hook-env-delivery)**: `runDeclaredHooks` now accepts an explicit `env` option and merges it into the hook context (`hookFn(hook, { root, env })`); prepare and `hooks validate` inject the invoking shell's environment, so `hooks.*.envAllowlist` keys exported by the caller finally reach the hook subprocess. Allowlist semantics are unchanged — the hook runner still reads allowlisted keys exclusively from the explicit map, never from `process.env` directly.
|
|
29
|
+
- **Large-tracked-index baseline (baseline-maxbuffer)**: `computeWorkspaceDigest` now runs its three git subprocesses with a 64 MiB `maxBuffer` (official fix 39c631f); workspaces with thousands of tracked files (measured 8494 tracked files → 1,519,151 B `ls-files -s` stdout) no longer fail with `ERR_CHILD_PROCESS_STDIO_MAXBUFFER`.
|
|
30
|
+
- **Prefixed skill-directory resolution (entry-skill-prefix)**: marketplace-install preflight and observe now fall back from `skills/<entrySkill>/SKILL.md` to `skills/<plugin>-<entrySkill>/SKILL.md` (plugin from the action parameters, D-ACA-30 platform physical names); candidate builds with prefixed skill directories pass preflight and observe instead of failing with `entry skill not found`.
|
|
28
31
|
<!-- release-skill:managed:end id=latest-release -->
|
|
29
32
|
|
|
30
33
|
<!-- release-skill:capability:external-write-boundary -->
|
|
31
|
-
> **Current boundary:** v0.
|
|
34
|
+
> **Current boundary:** v0.5.1 is the current source candidate; v0.4.1 remains
|
|
32
35
|
> the latest published release (v0.2.2 previously held
|
|
33
36
|
> published status before the platform verification convergence fix was added).
|
|
34
37
|
> v0.1.1 completed a real production release to GitHub and npm — the first
|
|
@@ -47,7 +50,7 @@ v0.4.2 makes the CodeBuddy consumer marketplace configurable per distribution in
|
|
|
47
50
|
> publish global preflight.
|
|
48
51
|
|
|
49
52
|
<!-- release-skill:capability:safe-first-command -->
|
|
50
|
-
> **Production path verified since the v0.1.1 milestone; v0.
|
|
53
|
+
> **Production path verified since the v0.1.1 milestone; v0.5.1 is the current
|
|
51
54
|
> source candidate and v0.4.1 is the latest published release.** The npm-installed CLI is the supported user entry. Source checkout
|
|
52
55
|
> is the development/contributor fallback.
|
|
53
56
|
>
|
package/README.zh-CN.md
CHANGED
|
@@ -2,27 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.
|
|
5
|
+
<!-- release-skill:release-version: 0.5.1 -->
|
|
6
6
|
面向 Claude Code、CodeBuddy、WorkBuddy、Codex 和 Kimi Code 的发布准备工具,完整保留人工维护的文件内容。
|
|
7
7
|
|
|
8
8
|
release-skill 帮助维护者回答三个问题:准备发布什么、还有哪些检查未通过、最终发布的内容是什么。它不重新生成、也不回写项目源文件。`prepare` 把每个配置的公开文件复制到隔离快照并验证字节——先冻结并供人工审阅,再从同一份冻结产物发布。`setup` 只显示确定性的 `compactSummary` 审阅视图,完整报告保留在临时会话目录中。
|
|
9
9
|
|
|
10
10
|
<!-- release-skill:managed:start id=latest-release -->
|
|
11
|
-
**0.
|
|
11
|
+
**0.5.1** (2026-08-17)
|
|
12
12
|
|
|
13
|
-
v0.
|
|
13
|
+
v0.5.1 修复冻结 0.5.0 的三项缺陷——hook 显式环境送达(envAllowlist 终于作用于 prepare hooks)、大索引基线 64 MiB maxBuffer、marketplace-install preflight/observe 的带前缀技能目录回退——并把 Skill Family Foundation 依赖提升到已发布的 0.5.0 包,同时加固发布链:后续任何发布都必须绑定上一公开发布提交,不再退化为孤儿根提交。
|
|
14
14
|
|
|
15
15
|
**变更**
|
|
16
16
|
|
|
17
|
-
-
|
|
17
|
+
- **Foundation 0.5.0 升级**:`skill-family-contracts` 与 `skill-family-harness-node` 依赖由 0.4.0 提升至 0.5.0(npm latest);包名 import 桥无需改动,harness-node 0.5.0 导出面已逐项复核(`publishFileExclusive`、token-lock 五函数、`HARNESS_ERROR_KINDS`)。
|
|
18
|
+
- **链加固(chain-integrity)**:`push-snapshot` 现要求显式 `branchStrategy`(历史上产生孤儿根提交的 `create-release-branch` 默认值已移除);`create-release-branch` 仅在 `previousPublicBaseline.mode=none` 时合法;生产在线 prepare 在公开仓已有发布标签时仍以 `mode=none` 冻结计划会以 `CHAIN_GAP` 失败关闭,要求把基线绑定到上一发布提交;在线 `assess` 检测到版本序列跳号(如 0.1.1→0.1.3 且无 v0.1.2 标签)时登记 `VERSION_SEQUENCE_GAP` 警告,不阻断。
|
|
18
19
|
|
|
19
20
|
**修复**
|
|
20
21
|
|
|
21
|
-
- **
|
|
22
|
+
- **Hook 环境送达(hook-env-delivery)**:`runDeclaredHooks` 新增显式 `env` 选项并并入 hook 上下文(`hookFn(hook, { root, env })`);prepare 与 `hooks validate` 注入调用方 shell 的环境,`hooks.*.envAllowlist` 中由调用方导出的键终于能到达 hook 子进程。allowlist 语义不变——hook 运行器仍只从显式映射读取白名单键,绝不直接回退 process.env。
|
|
23
|
+
- **大索引基线(baseline-maxbuffer)**:`computeWorkspaceDigest` 的三个 git 子进程统一设置 64 MiB `maxBuffer`(官方修复 39c631f);tracked 文件数较多的工作区(实测 8494 个文件 → `ls-files -s` 输出 1,519,151 B)不再报 `ERR_CHILD_PROCESS_STDIO_MAXBUFFER`。
|
|
24
|
+
- **带前缀技能目录解析(entry-skill-prefix)**:marketplace-install 的 preflight 与 observe 从 `skills/<entrySkill>/SKILL.md` 未命中时回退 `skills/<plugin>-<entrySkill>/SKILL.md`(plugin 取 action 参数,D-ACA-30 平台物理名);带前缀技能目录的候选构建不再以 `entry skill not found` 失败。
|
|
22
25
|
<!-- release-skill:managed:end id=latest-release -->
|
|
23
26
|
|
|
24
27
|
<!-- release-skill:capability:external-write-boundary -->
|
|
25
|
-
> **当前边界:** v0.
|
|
28
|
+
> **当前边界:** v0.5.1 是当前源码候选,v0.4.1 仍是最新已发布版本(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
|
|
26
29
|
> v0.1.1 已完成 GitHub 与 npm 的
|
|
27
30
|
> 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
|
|
28
31
|
> 安装及 Claude/Codex 消费者安装验证;"当前发布版本"与"首次生产验证里程碑"
|
|
@@ -35,7 +38,7 @@ v0.4.2 将 CodeBuddy 消费者市场改为按分发渠道可配置,不再硬
|
|
|
35
38
|
> 远端唯一性检查在 `publish` 全局预检执行。
|
|
36
39
|
|
|
37
40
|
<!-- release-skill:capability:safe-first-command -->
|
|
38
|
-
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.
|
|
41
|
+
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.5.1 是当前源码候选,v0.4.1 是最新已发布版本。**
|
|
39
42
|
> npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
|
|
40
43
|
>
|
|
41
44
|
> **第一条命令:**
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"kind": "skill-family.contracts.error-codes",
|
|
4
|
+
"contractsVersion": "1.5.0",
|
|
5
|
+
"policy": {
|
|
6
|
+
"format": "^SFC[0-9]{4}$",
|
|
7
|
+
"ranges": [
|
|
8
|
+
{
|
|
9
|
+
"prefix": "SFC1",
|
|
10
|
+
"category": "contract",
|
|
11
|
+
"note": "Contracts authority errors: schemas, registry, dialects, rules, fixtures."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"prefix": "SFC2",
|
|
15
|
+
"category": "kernel",
|
|
16
|
+
"note": "Kernel protocol operation errors."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"prefix": "SFC3",
|
|
20
|
+
"category": "report",
|
|
21
|
+
"note": "Report contract errors: digest binding, mandatory elements, fact drift. Style findings are never coded here; they are advisory output of the report check, not errors."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"stability": "Codes are append-only. A frozen code is never reused for a different meaning; a deprecated code stays reserved. New codes require a contracts change."
|
|
25
|
+
},
|
|
26
|
+
"codes": [
|
|
27
|
+
{
|
|
28
|
+
"code": "SFC1001",
|
|
29
|
+
"name": "SCHEMA_VALIDATION_FAILED",
|
|
30
|
+
"category": "contract",
|
|
31
|
+
"stableSince": "1.0.0",
|
|
32
|
+
"meaning": "A document failed validation against its registered schema under the declared dialect and policy."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"code": "SFC1002",
|
|
36
|
+
"name": "UNKNOWN_SCHEMA_ID",
|
|
37
|
+
"category": "contract",
|
|
38
|
+
"stableSince": "1.0.0",
|
|
39
|
+
"meaning": "The referenced $id is not present in the schema registry."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"code": "SFC1003",
|
|
43
|
+
"name": "DUPLICATE_SCHEMA_ID",
|
|
44
|
+
"category": "contract",
|
|
45
|
+
"stableSince": "1.0.0",
|
|
46
|
+
"meaning": "Two schema registrations share the same $id; the registration is mechanically rejected."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"code": "SFC1004",
|
|
50
|
+
"name": "DUPLICATE_PROTOCOL_NAME",
|
|
51
|
+
"category": "contract",
|
|
52
|
+
"stableSince": "1.0.0",
|
|
53
|
+
"meaning": "Two protocol registrations share the same name and version; the registration is mechanically rejected."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"code": "SFC1005",
|
|
57
|
+
"name": "UNRESOLVED_REF",
|
|
58
|
+
"category": "contract",
|
|
59
|
+
"stableSince": "1.0.0",
|
|
60
|
+
"meaning": "A $ref target cannot be resolved within the registered schema set."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"code": "SFC1006",
|
|
64
|
+
"name": "UNSUPPORTED_DIALECT",
|
|
65
|
+
"category": "contract",
|
|
66
|
+
"stableSince": "1.0.0",
|
|
67
|
+
"meaning": "The declared JSON Schema dialect is not in the frozen supported dialect set."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"code": "SFC1007",
|
|
71
|
+
"name": "UNKNOWN_CHECK_TYPE",
|
|
72
|
+
"category": "contract",
|
|
73
|
+
"stableSince": "1.0.0",
|
|
74
|
+
"meaning": "A rule uses a check type outside the finite set of nine."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"code": "SFC1008",
|
|
78
|
+
"name": "RULE_BUDGET_EXCEEDED",
|
|
79
|
+
"category": "contract",
|
|
80
|
+
"stableSince": "1.0.0",
|
|
81
|
+
"meaning": "The mandatory rule count exceeds the first-version budget or the absolute cap."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"code": "SFC1009",
|
|
85
|
+
"name": "UNKNOWN_ERROR_CODE",
|
|
86
|
+
"category": "contract",
|
|
87
|
+
"stableSince": "1.0.0",
|
|
88
|
+
"meaning": "A fixture expectation references an error code that is not in this frozen registry."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"code": "SFC1010",
|
|
92
|
+
"name": "FIXTURE_EXPECTATION_MISMATCH",
|
|
93
|
+
"category": "contract",
|
|
94
|
+
"stableSince": "1.0.0",
|
|
95
|
+
"meaning": "A fixture did not behave as declared: a valid-expecting fixture failed, or an invalid-expecting fixture did not fail with the declared stable code."
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"code": "SFC1011",
|
|
99
|
+
"name": "UNKNOWN_PROTOCOL",
|
|
100
|
+
"category": "contract",
|
|
101
|
+
"stableSince": "1.0.0",
|
|
102
|
+
"meaning": "A request references a protocol name/version that is not registered."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"code": "SFC1012",
|
|
106
|
+
"name": "SCHEMA_COMPILE_FAILED",
|
|
107
|
+
"category": "contract",
|
|
108
|
+
"stableSince": "1.0.0",
|
|
109
|
+
"meaning": "A registered schema does not compile under its declared dialect (the schema document itself is invalid)."
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"code": "SFC2002",
|
|
113
|
+
"name": "UNKNOWN_OPERATION",
|
|
114
|
+
"category": "kernel",
|
|
115
|
+
"stableSince": "1.0.0",
|
|
116
|
+
"meaning": "The requested operation name is not in the frozen operation vocabulary of the referenced protocol version."
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"code": "SFC2003",
|
|
120
|
+
"name": "INVALID_PARAMS",
|
|
121
|
+
"category": "kernel",
|
|
122
|
+
"stableSince": "1.0.0",
|
|
123
|
+
"meaning": "Operation params do not satisfy the frozen params contract of the requested operation."
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"code": "SFC2004",
|
|
127
|
+
"name": "EXECUTION_FAILED",
|
|
128
|
+
"category": "kernel",
|
|
129
|
+
"stableSince": "1.0.0",
|
|
130
|
+
"meaning": "The mechanism runtime failed while executing a well-formed operation; details carry the mechanism evidence. Demonstrable only by a mechanism runtime, not by static contracts checks."
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"code": "SFC3001",
|
|
134
|
+
"name": "REPORT_DIGEST_MISMATCH",
|
|
135
|
+
"category": "report",
|
|
136
|
+
"stableSince": "1.2.0",
|
|
137
|
+
"meaning": "A report binding digest (model, result, or report digest) does not match the recomputed sha256 digest, or the report is not the canonical render of its model; the binding is stale or tampered and is never trusted."
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"code": "SFC3002",
|
|
141
|
+
"name": "REPORT_ELEMENT_MISSING",
|
|
142
|
+
"category": "report",
|
|
143
|
+
"stableSince": "1.2.0",
|
|
144
|
+
"meaning": "A mandatory report element is absent, empty where it must not be, or declared in an unsupported form: the conclusion, non-empty evidence, risks/next-action sections, a supported locale, or a coded outcome for failed/blocked runs. No half report is issued for a missing element."
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"code": "SFC3003",
|
|
148
|
+
"name": "REPORT_FACT_DRIFT",
|
|
149
|
+
"category": "report",
|
|
150
|
+
"stableSince": "1.2.0",
|
|
151
|
+
"meaning": "A report model misstates the bound operation result's terminal state/errors, or rendered report bytes diverge from the deterministic re-render of the bound report model: fact fields rewritten, sections deleted, duplicated, or injected."
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"kind": "skill-family.kernel-protocol",
|
|
4
|
+
"name": "skill-family.kernel.operation",
|
|
5
|
+
"version": 1,
|
|
6
|
+
"status": "stable",
|
|
7
|
+
"contractsVersion": "1.5.0",
|
|
8
|
+
"description": "Frozen v1 kernel protocol: request/result envelope, operation lifecycle states, and the operation vocabulary. Extensible only by a new protocol version; v1 content is frozen.",
|
|
9
|
+
"states": ["accepted", "running", "succeeded", "failed", "rejected"],
|
|
10
|
+
"initialStates": ["accepted", "rejected"],
|
|
11
|
+
"terminalStates": ["succeeded", "failed", "rejected"],
|
|
12
|
+
"transitions": [
|
|
13
|
+
{ "from": "accepted", "to": "running" },
|
|
14
|
+
{ "from": "accepted", "to": "failed" },
|
|
15
|
+
{ "from": "running", "to": "succeeded" },
|
|
16
|
+
{ "from": "running", "to": "failed" }
|
|
17
|
+
],
|
|
18
|
+
"stateRules": {
|
|
19
|
+
"intake": "A well-formed request enters accepted; an intake rejection (for example an unregistered protocol) enters rejected directly.",
|
|
20
|
+
"result": "An operation-result carries only terminal states; non-terminal states are never serialized in results.",
|
|
21
|
+
"synchronous": "A synchronous mechanism implementation may move accepted through running to a terminal state without exposing intermediate states."
|
|
22
|
+
},
|
|
23
|
+
"operations": [
|
|
24
|
+
{
|
|
25
|
+
"name": "validate",
|
|
26
|
+
"status": "stable",
|
|
27
|
+
"description": "Validate one document against one registered schema under a declared dialect and policy.",
|
|
28
|
+
"params": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"required": ["schemaId", "document"],
|
|
32
|
+
"properties": {
|
|
33
|
+
"schemaId": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"minLength": 1,
|
|
36
|
+
"description": "Registered $id of the target schema."
|
|
37
|
+
},
|
|
38
|
+
"document": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"description": "The document to validate."
|
|
41
|
+
},
|
|
42
|
+
"dialect": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"description": "Optional dialect override; must be in the supported dialect set."
|
|
45
|
+
},
|
|
46
|
+
"policy": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "Optional validation policy name; defaults to strict."
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"resultContract": {
|
|
55
|
+
"outputs": {
|
|
56
|
+
"validate": "On success, outputs.report is an object with valid (boolean) and errors (array of normalized validation findings)."
|
|
57
|
+
},
|
|
58
|
+
"errors": "Every error entry carries a code from the frozen contracts error registry."
|
|
59
|
+
}
|
|
60
|
+
}
|