release-skill 0.6.0 → 0.6.2

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.
Files changed (45) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +31 -0
  7. package/INSTALL.md +2 -2
  8. package/INSTALL.zh-CN.md +2 -2
  9. package/README.md +12 -8
  10. package/README.zh-CN.md +12 -8
  11. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/release-skill.bundle.mjs +1028 -423
  14. package/adapters/claude/schemas/release-plan.schema.json +9 -0
  15. package/adapters/claude/schemas/release-project.schema.json +8 -0
  16. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  17. package/adapters/codex/bin/release-skill.bundle.mjs +1028 -423
  18. package/adapters/codex/schemas/release-plan.schema.json +9 -0
  19. package/adapters/codex/schemas/release-project.schema.json +8 -0
  20. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  21. package/adapters/kimi/bin/release-skill.bundle.mjs +1028 -423
  22. package/adapters/kimi/schemas/release-plan.schema.json +9 -0
  23. package/adapters/kimi/schemas/release-project.schema.json +8 -0
  24. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  25. package/adapters/workbuddy/bin/release-skill.bundle.mjs +1028 -423
  26. package/adapters/workbuddy/schemas/release-plan.schema.json +9 -0
  27. package/adapters/workbuddy/schemas/release-project.schema.json +8 -0
  28. package/bin/release-skill-cli.mjs +11 -0
  29. package/bin/release-skill.bundle.mjs +1028 -423
  30. package/package.json +1 -1
  31. package/references/05-evidence-and-errors.md +1 -0
  32. package/schemas/release-plan.schema.json +9 -0
  33. package/schemas/release-project.schema.json +8 -0
  34. package/scripts/build-bundle.mjs +11 -2
  35. package/scripts/sync-public-files.mjs +4 -0
  36. package/src/commands/lineage.mjs +101 -32
  37. package/src/commands/prepare.mjs +273 -9
  38. package/src/commands/publish.mjs +10 -1
  39. package/src/commands/verify.mjs +22 -0
  40. package/src/core/bundle-freshness.mjs +236 -0
  41. package/src/core/errors.mjs +2 -0
  42. package/src/core/frozen-marker.mjs +97 -0
  43. package/src/core/hooks.mjs +12 -1
  44. package/src/core/skill-resource-closure.mjs +240 -10
  45. package/src/platforms/registry.mjs +12 -0
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.6.0",
12
+ "version": "0.6.2",
13
13
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
14
14
  "author": {
15
15
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
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.6.0.",
22
+ "Prepare a release plan for version 0.6.2.",
23
23
  "Help me understand the release workflow."
24
24
  ]
25
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.6.2 locale=en baseline=sha256:103dcbd11e52542a07da9a1220eb246cf812de79ede19ff63a374785393580b7 -->
4
+ ## [0.6.2] - 2026-08-19
5
+
6
+ v0.6.2 promotes the skill resource closure checker to a fail-closed release gate spanning prepare, publish, and verify, closes the five gaps (G1–G5) confirmed by the clause-by-clause gate audit, and fixes lineage commit-identity parsing that corrupted rebuilt commits: missing or drifted skill resources, home-directory search paths, and undeclared host surfaces now block a release before plan freeze, and commit identities are parsed with an anchored regex that fails closed instead of fabricating identity fields.
7
+
8
+ ### Added
9
+
10
+ - **Skill-resource-closure v2 release gate**: the closure checker is now a fail-closed release gate across all three phases — prepare scans the frozen snapshot and blocks plan freeze on any finding with `GATE_FAILED` (error code 13), publish Gate 2c recomputes closure against the verified frozen snapshots for production plans, and verify validates the real npm install tree and marketplace install directories with per-host receipts. Receipts now carry `unitId`, host/surface detail, digests, `checkerVersion` (`skill-resource-closure-v2`), and counts; the platform registry declares each adapter's host surface as an explicit adapter directory name, and the receipt schema is bound in all six release-plan schema copies. A version mismatch between an old frozen plan and the new checker fails closed.
11
+ - **Closure gate gap closure (G1–G5)**: source-only (`SOURCE_ONLY_NOT_SHIPPED`) exemptions are now listed per reference in the receipt projection and in the prepare evidence — auditable and non-blocking; `~/`, `$HOME/`, and `${HOME}/` search paths inside code spans, fences, and link targets fail closed as `HOME_DIRECTORY_SEARCH`; identical surface-relative resources whose contents diverge across surfaces fail closed as `RESOURCE_DRIFT` with cross-surface reference locations; unreferenced regular files inside adapter skill closure directories fail closed as `STALE_RESOURCE`; every declared plugin distribution must be backed by a receipt host surface with at least one skill (declared-host reconciliation), so a dropped adapter tree can no longer skip the gate silently; and frozen receipts bind a deterministic `preparedAt` freeze timestamp (never a wall-clock sample) plus `exitCode: 0`, so identical sources freeze byte-identical receipts on every re-prepare.
12
+
13
+ ### Fixed
14
+
15
+ - **Lineage commit-identity parsing (lineage-ident)**: `lineage rebuild` parsed author/committer ident lines with `split(/\s+>/)`, which never matched a legal ident line and corrupted the identities written to rebuilt commits (names containing spaces or `>` were mis-parsed as well). Idents are now parsed with an anchored regex whose greedy name capture lets the last `<email> ts tz` group win; unparseable lines fail closed instead of fabricating identity fields. Commit messages are fed to `commit-tree` via `-F -` stdin from untrimmed `cat-file` output, preserving arbitrary message bytes including trailing whitespace and blank lines.
16
+ - **Assess npm-transport test stability (test-only)**: the assess npm-transport test flaked when the npm lifecycle injected a silent loglevel setting and ambient proxy variables into the child environment — emptying npm stderr and letting a released ephemeral localhost port be hijacked. The test now strips ambient npm-config-namespace environment keys and proxy variables (`isolateNpmTransportEnv`), holds the localhost port for the whole test (`startConnectionResetRegistry`), and asserts `ECONNRESET|ECONNREFUSED` deterministically. No production behavior changed.
17
+ <!-- release-skill:changelog:end version=0.6.2 locale=en -->
18
+
19
+
20
+ <!-- release-skill:changelog:start version=0.6.1 locale=en baseline=sha256:dd7c991244d72db1247dda808057fda060b1e7bb03ff866aae691841828e6239 -->
21
+ ## [0.6.1] - 2026-08-18
22
+
23
+ v0.6.1 closes the four root causes of the 0.6.0 self-bootstrap release cycle, in which 22 of 25 runs failed and nearly all wall-clock time was spent in diagnose-repair loops or on external interference: hook failures are no longer silent, stale bundles fail closed at the earliest gate, the freeze path can never skip the full test suite, and a machine-readable frozen marker now tells sibling governance tasks to keep out of a repository mid-release.
24
+
25
+ ### Added
26
+
27
+ - **Hook failure output passthrough (R1)**: when a prepare hook exits non-zero, the run evidence now carries bounded `stderrTail` / `stdoutTail` projections (last 50 lines, capped at 8 KiB) and the CLI echoes the stderr tail, so failures such as a bare `exit=13` are diagnosable immediately instead of by blind retry. Exit-code semantics are unchanged.
28
+ - **Bundle freshness gate (R2)**: every rebuilt bundle embeds a frozen digest of its source tree, and prepare compares source against bundle right after the config phase; any mismatch fails closed as `BUNDLE_STALE` (error code 54) with the rebuild command in the message, before hooks, snapshots, or network checks run. No workflow path is exempt.
29
+ - **Full-test freeze gate (R3)**: plan digests can no longer be computed unless the full test suite ran in this prepare; the gate sits before `computePlanDigest`, the `testSelection` value is validated against a schema enum in project and plan schemas, and no overlay switch can waive the freeze-path requirement.
30
+ - **Frozen-release marker (R4)**: a successful prepare writes `.release-skill/FROZEN` carrying `planDigest`, `targetVersions` (unit → version), `createdAt`, and `runId`; the marker is removed only when verify reaches `VERIFIED`, giving sibling repositories and governance tasks a machine-readable signal to skip a repository mid-release.
31
+ <!-- release-skill:changelog:end version=0.6.1 locale=en -->
32
+
33
+
3
34
  <!-- release-skill:changelog:start version=0.6.0 locale=en baseline=sha256:1942e4534cc9ab36065168471875ba8c4648c73328a20ef3ee6a7a53eb1f1b7d -->
4
35
  ## [0.6.0] - 2026-08-18
5
36
 
package/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.6.0 -->
5
+ <!-- release-skill:release-version: 0.6.2 -->
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.6.0
117
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.6.2
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.6.0 -->
5
+ <!-- release-skill:release-version: 0.6.2 -->
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.6.0
107
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.6.2
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.6.0 -->
5
+ <!-- release-skill:release-version: 0.6.2 -->
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,19 +14,23 @@ 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.6.0** (2026-08-18)
17
+ **0.6.2** (2026-08-19)
18
18
 
19
- v0.6.0 automates the most error-prone bookkeeping step of the release loop: after a release reaches VERIFIED, verify now advances each unit's previousPublicBaseline in project.yaml to the just-published commit, tree, and manifest digest recorded in the frozen plan. The advance is local-only, idempotent, validated with automatic rollback, and commits the config file on its own only when it was clean before the write, so the drift gate always sees a truthful previous public baseline without anyone hand-copying hashes.
19
+ v0.6.2 promotes the skill resource closure checker to a fail-closed release gate spanning prepare, publish, and verify, closes the five gaps (G1–G5) confirmed by the clause-by-clause gate audit, and fixes lineage commit-identity parsing that corrupted rebuilt commits: missing or drifted skill resources, home-directory search paths, and undeclared host surfaces now block a release before plan freeze, and commit identities are parsed with an anchored regex that fails closed instead of fabricating identity fields.
20
20
 
21
21
  **Added**
22
22
 
23
- - **Automatic baseline advance (baseline-advance)**: after `verify` reaches `VERIFIED`, every `mode: bound` unit's `previousPublicBaseline` (`commit`, `tree`, `manifestDigest`) is advanced to the published values derived from the frozen plan's `push-snapshot` binding never recomputed from workspace state. The rewritten `project.yaml` preserves comments, is re-validated with `loadProjectConfig`, and is restored byte-for-byte if validation fails. The advance never demotes `VERIFIED`: failures are recorded in evidence and reported for manual handling.
24
- - **Clean-worktree commit policy**: the baseline advance auto-commits the config file in an isolated commit only when `project.yaml` had no staged or unstaged changes before the write; a dirty worktree leaves the file written but uncommitted for human review, and a missing or broken git fails safe to never committing.
25
- - **Ship-state traceability**: `ship` persists the verify `baselineAdvance` result (`advanced` / `already-current` / `committed` / `failed`) in its durable state, and the `verify` human-readable output reports the advance outcome line.
23
+ - **Skill-resource-closure v2 release gate**: the closure checker is now a fail-closed release gate across all three phases — prepare scans the frozen snapshot and blocks plan freeze on any finding with `GATE_FAILED` (error code 13), publish Gate 2c recomputes closure against the verified frozen snapshots for production plans, and verify validates the real npm install tree and marketplace install directories with per-host receipts. Receipts now carry `unitId`, host/surface detail, digests, `checkerVersion` (`skill-resource-closure-v2`), and counts; the platform registry declares each adapter's host surface as an explicit adapter directory name, and the receipt schema is bound in all six release-plan schema copies. A version mismatch between an old frozen plan and the new checker fails closed.
24
+ - **Closure gate gap closure (G1–G5)**: source-only (`SOURCE_ONLY_NOT_SHIPPED`) exemptions are now listed per reference in the receipt projection and in the prepare evidence auditable and non-blocking; `~/`, `$HOME/`, and `${HOME}/` search paths inside code spans, fences, and link targets fail closed as `HOME_DIRECTORY_SEARCH`; identical surface-relative resources whose contents diverge across surfaces fail closed as `RESOURCE_DRIFT` with cross-surface reference locations; unreferenced regular files inside adapter skill closure directories fail closed as `STALE_RESOURCE`; every declared plugin distribution must be backed by a receipt host surface with at least one skill (declared-host reconciliation), so a dropped adapter tree can no longer skip the gate silently; and frozen receipts bind a deterministic `preparedAt` freeze timestamp (never a wall-clock sample) plus `exitCode: 0`, so identical sources freeze byte-identical receipts on every re-prepare.
25
+
26
+ **Fixed**
27
+
28
+ - **Lineage commit-identity parsing (lineage-ident)**: `lineage rebuild` parsed author/committer ident lines with `split(/\s+>/)`, which never matched a legal ident line and corrupted the identities written to rebuilt commits (names containing spaces or `>` were mis-parsed as well). Idents are now parsed with an anchored regex whose greedy name capture lets the last `<email> ts tz` group win; unparseable lines fail closed instead of fabricating identity fields. Commit messages are fed to `commit-tree` via `-F -` stdin from untrimmed `cat-file` output, preserving arbitrary message bytes including trailing whitespace and blank lines.
29
+ - **Assess npm-transport test stability (test-only)**: the assess npm-transport test flaked when the npm lifecycle injected a silent loglevel setting and ambient proxy variables into the child environment — emptying npm stderr and letting a released ephemeral localhost port be hijacked. The test now strips ambient npm-config-namespace environment keys and proxy variables (`isolateNpmTransportEnv`), holds the localhost port for the whole test (`startConnectionResetRegistry`), and asserts `ECONNRESET|ECONNREFUSED` deterministically. No production behavior changed.
26
30
  <!-- release-skill:managed:end id=latest-release -->
27
31
 
28
32
  <!-- release-skill:capability:external-write-boundary -->
29
- > **Current boundary:** v0.6.0 is the current source candidate; v0.4.1 remains
33
+ > **Current boundary:** v0.6.2 is the current source candidate; v0.4.1 remains
30
34
  > the latest published release (v0.2.2 previously held
31
35
  > published status before the platform verification convergence fix was added).
32
36
  > v0.1.1 completed a real production release to GitHub and npm — the first
@@ -45,7 +49,7 @@ v0.6.0 automates the most error-prone bookkeeping step of the release loop: afte
45
49
  > publish global preflight.
46
50
 
47
51
  <!-- release-skill:capability:safe-first-command -->
48
- > **Production path verified since the v0.1.1 milestone; v0.6.0 is the current
52
+ > **Production path verified since the v0.1.1 milestone; v0.6.2 is the current
49
53
  > source candidate and v0.4.1 is the latest published release.** The npm-installed CLI is the supported user entry. Source checkout
50
54
  > is the development/contributor fallback.
51
55
  >
package/README.zh-CN.md CHANGED
@@ -2,25 +2,29 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.6.0 -->
5
+ <!-- release-skill:release-version: 0.6.2 -->
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.6.0** (2026-08-18)
11
+ **0.6.2** (2026-08-19)
12
12
 
13
- v0.6.0 把发布循环中最容易出错的一步记账工作自动化了:发布到达 VERIFIED 后,verify 会自动把 project.yaml 中每个 unit 的 previousPublicBaseline 推进到本次已发布的 commit、tree 与 manifest digest,数值全部取自冻结计划的记录。推进只写本地、幂等、写回后自动校验并在失败时原样回滚,并且只在写回前文件干净时才用独立提交落库——漂移门禁从此总是看到真实的前序公开基线,不再需要任何人手工抄写哈希。
13
+ v0.6.2 把技能资源闭包检查器升级为贯穿 prepare、publish、verify 的失败关闭发布门禁,收口逐条审计确认的五项缺口(G1–G5),并修复 lineage 重建提交时的身份解析错误:缺失或漂移的技能资源、主目录搜索路径、未声明的 host 面从此在计划冻结前即阻断发布;提交身份改用锚定正则解析,解析失败即失败关闭,绝不伪造身份字段。
14
14
 
15
15
  **新增**
16
16
 
17
- - **基线自动推进(baseline-advance)**:`verify` 到达 `VERIFIED` 后,每个 `mode: bound` unit `previousPublicBaseline`(`commit`、`tree`、`manifestDigest`)自动推进到冻结计划 `push-snapshot` 绑定中的已发布值——绝不从工作区状态重新计算。写回的 `project.yaml` 保留注释,经 `loadProjectConfig` 重新校验,校验失败时逐字节还原。推进失败不会降级 `VERIFIED`:失败记录进证据并提示人工处理。
18
- - **干净工作区提交策略**:仅当写回前 `project.yaml` 没有任何暂存或未暂存改动时,基线推进才用一次独立提交只包含该文件;工作区有在途改动时只落盘不提交、留给人工复核;git 缺失或损坏时安全失败为永不提交。
19
- - **ship 状态可追溯**:`ship` 把 verify 的 `baselineAdvance` 结果(`advanced` / `already-current` / `committed` / `failed`)写入持久状态;`verify` 的人类可读输出新增推进结果行。
17
+ - **skill-resource-closure v2 发布门禁**:闭包检查器升级为贯穿三个阶段的失败关闭门禁——prepare 扫描冻结快照,任何 finding 即以 `GATE_FAILED`(错误码 13)阻断计划冻结;publish Gate 2c 对 production 计划按已验证的冻结快照重算闭包;verify 以逐 host 收据校验真实 npm 安装树与 marketplace 安装目录。收据新增 `unitId`、host/surface 明细、摘要、`checkerVersion`(`skill-resource-closure-v2`)与计数字段;平台注册表以显式 adapter 目录名声明各 host 面;收据 schema 在全部六份 release-plan schema 副本中绑定。旧冻结计划与新 checker 版本不一致即失败关闭。
18
+ - **闭包门禁缺口收口(G1–G5)**:source-only(`SOURCE_ONLY_NOT_SHIPPED`)豁免逐条列入收据投影与 prepare 证据——可审计、非阻断;code span/fence/link 目标中的 `~/`、`$HOME/`、`${HOME}/` 搜索路径以 `HOME_DIRECTORY_SEARCH` 失败关闭;同名相对路径资源跨 surface 内容不一致以 `RESOURCE_DRIFT` 失败关闭并给出跨 surface 引用定位;adapter 技能闭包目录内未被引用的常规文件以 `STALE_RESOURCE` 失败关闭;每个声明的插件分发必须有 skillCount ≥ 1 的收据 host 面背书(declared-host 对账)——publicFiles 漏收 adapter 时该 host 面不再静默缺席;冻结收据绑定确定性 `preparedAt` 冻结时间戳(绝不采样墙钟)与 `exitCode: 0`,同输入重复 prepare 冻结字节一致的收据。
19
+
20
+ **修复**
21
+
22
+ - **lineage 提交身份解析(lineage-ident)**:`lineage rebuild` 原先用 `split(/\s+>/)` 解析 author/committer ident 行——该切分对合法 ident 从不匹配,写进重建提交的身份因此损坏(名字含空格或 `>` 时同样错乱)。现改用锚定正则解析,贪婪名字捕获使行尾最后一个 `<email> ts tz` 组生效;无法解析即失败关闭,绝不伪造身份字段。提交消息改经 `commit-tree -F -` stdin 喂入,取自不裁剪的 `cat-file` 输出——任意消息字节(含尾部空白与空行)原样保留。
23
+ - **assess npm-transport 测试稳定性(仅测试)**:npm 生命周期向子进程环境注入静默日志级别设置与环境代理变量,导致 npm stderr 被清空、释放后的本地临时端口被劫持,测试间歇性失败。现剥离环境中的 npm-config 族环境键与代理变量(`isolateNpmTransportEnv`),整个测试期间持有本地端口(`startConnectionResetRegistry`),并确定性断言 `ECONNRESET|ECONNREFUSED`。生产行为无变化。
20
24
  <!-- release-skill:managed:end id=latest-release -->
21
25
 
22
26
  <!-- release-skill:capability:external-write-boundary -->
23
- > **当前边界:** v0.6.0 是当前源码候选,v0.4.1 仍是最新已发布版本(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
27
+ > **当前边界:** v0.6.2 是当前源码候选,v0.4.1 仍是最新已发布版本(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
24
28
  > v0.1.1 已完成 GitHub 与 npm 的
25
29
  > 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
26
30
  > 安装及 Claude/Codex 消费者安装验证;"当前发布版本"与"首次生产验证里程碑"
@@ -33,7 +37,7 @@ v0.6.0 把发布循环中最容易出错的一步记账工作自动化了:发
33
37
  > 远端唯一性检查在 `publish` 全局预检执行。
34
38
 
35
39
  <!-- release-skill:capability:safe-first-command -->
36
- > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.6.0 是当前源码候选,v0.4.1 是最新已发布版本。**
40
+ > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.6.2 是当前源码候选,v0.4.1 是最新已发布版本。**
37
41
  > npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
38
42
  >
39
43
  > **第一条命令:**
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.6.0",
12
+ "version": "0.6.2",
13
13
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
14
14
  "author": {
15
15
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"