release-skill 0.7.0 → 0.7.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.
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.7.0",
12
+ "version": "0.7.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.7.0",
3
+ "version": "0.7.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.7.0",
3
+ "version": "0.7.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.7.0",
3
+ "version": "0.7.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.7.0.",
22
+ "Prepare a release plan for version 0.7.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.7.0",
3
+ "version": "0.7.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,27 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.7.2 locale=en baseline=sha256:2d5868f216a43f817df4db597c239ab7db305398dba7af1ffe555b47105dbe75 -->
4
+ ## [0.7.2] - 2026-08-22
5
+
6
+ v0.7.2 fixes native safe-fs loading from generated host adapters whose installation roots intentionally omit package.json.
7
+
8
+ ### Fixed
9
+
10
+ - **Adapter-safe native loader anchor**: the bundled runtime now anchors createRequire() to the shipped CLI entry shared by source and adapter layouts. Claude, Codex, Kimi, and WorkBuddy adapters can load their packaged native safe-fs addon without relying on a root package manifest.
11
+ <!-- release-skill:changelog:end version=0.7.2 locale=en -->
12
+
13
+
14
+ <!-- release-skill:changelog:start version=0.7.1 locale=en baseline=sha256:9f86def686489f30d89bb67884dfd8c44ee1d48b5d0cf5efabba44f87998d7d4 -->
15
+ ## [0.7.1] - 2026-08-22
16
+
17
+ v0.7.1 fixes a leakage-scan false positive that blocked generated JSON Schema validators containing POSIX-like JSON Pointer segments.
18
+
19
+ ### Fixed
20
+
21
+ - **Context-aware POSIX path detection**: the snapshot leakage scanner no longer treats JSON Pointer property segments or ordinary URL paths as machine-local absolute paths. Concrete Linux root, home, and user-home paths remain release-blocking findings.
22
+ <!-- release-skill:changelog:end version=0.7.1 locale=en -->
23
+
24
+
3
25
  <!-- release-skill:changelog:start version=0.7.0 locale=en baseline=sha256:a4d6989dd03d562c498344baf0dc1d0e1d0a225aecf0d48a7c4f9850c495b0ef -->
4
26
  ## [0.7.0] - 2026-08-22
5
27
 
package/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.7.0 -->
5
+ <!-- release-skill:release-version: 0.7.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.7.0
117
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.7.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.7.0 -->
5
+ <!-- release-skill:release-version: 0.7.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.7.0
107
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.7.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.7.0 -->
5
+ <!-- release-skill:release-version: 0.7.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,31 +14,17 @@ 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.7.0** (2026-08-22)
17
+ **0.7.2** (2026-08-22)
18
18
 
19
- v0.7.0 closes the release architecture gaps identified after v0.6.3. Private postPublish inputs are now frozen into the approved plan, checkpoint approvals must be consumed from their authoritative immutable path, and downstream projection reuses the published Skill Family Foundation 0.8.0 contracts instead of workspace-local substitutes.
20
-
21
- **Added**
22
-
23
- - **Frozen postPublish execution bundles**: release units can declare private `executionFiles`; prepare freezes their exact bytes and resource closure into the immutable plan, and distribute or postVerify installs only that verified bundle into the detached execution worktree. Live workspace edits after approval cannot change the executed command.
24
- - **Authoritative checkpoint approval consumption**: postPublish approvals are accepted only from the canonical path derived from the plan digest and hook id. The consumer rechecks the plan digest, approval digest, strict file bytes, and symlink-free authority chain before any hook or external write.
25
- - **Foundation-managed downstream projection**: postPublish payload projection now uses the published `skill-family-engineering-kit` projection compiler and runner, with strict reads and resource-closure verification from `skill-family-harness-node`.
26
-
27
- **Changed**
28
-
29
- - **Separated workspace roles**: preset execution now distinguishes the maintainer's `releaseWorkspaceRoot` from the detached `executionWorktreeRoot`; ambiguous legacy root fallback is rejected, and presets cannot target the release workspace itself.
30
- - **Exact Foundation 0.8.0 baseline**: `skill-family-contracts`, `skill-family-harness-node`, and `skill-family-engineering-kit` are pinned to 0.8.0. The package runtime is pinned to Node.js `>=22.22.2 <23`.
31
- - **Explicit distribute authority**: `distribute` requires the plan-bound release approval record; postPublish hook approvals remain separate checkpoint records.
19
+ v0.7.2 fixes native safe-fs loading from generated host adapters whose installation roots intentionally omit package.json.
32
20
 
33
21
  **Fixed**
34
22
 
35
- - **Credential-bearing Git URL rejection and redaction**: configured Git remotes reject URL userinfo at schema and runtime boundaries. Errors, evidence, and summaries pass through the shared redaction path so embedded credentials are not persisted.
36
- - **Fail-closed production gates**: `NODE_TEST_CONTEXT` can no longer exempt derived-artifact gates, adapter behavior is explicit for each plan version, and Node.js 22 test-reporter output is accepted without weakening assertions.
37
- - **Public packaging and license closure**: the workspace documentation and public package now agree on Apache-2.0, and the public bundle carries the required Apache-2.0 and MIT license texts.
23
+ - **Adapter-safe native loader anchor**: the bundled runtime now anchors createRequire() to the shipped CLI entry shared by source and adapter layouts. Claude, Codex, Kimi, and WorkBuddy adapters can load their packaged native safe-fs addon without relying on a root package manifest.
38
24
  <!-- release-skill:managed:end id=latest-release -->
39
25
 
40
26
  <!-- release-skill:capability:external-write-boundary -->
41
- > **Current boundary:** v0.7.0 is the current source candidate; v0.6.3 remains
27
+ > **Current boundary:** v0.7.2 is the current source candidate; v0.7.1 remains
42
28
  > the latest published release. v0.4.1 was an earlier published milestone;
43
29
  > v0.2.2 previously held published status before the platform verification
44
30
  > convergence fix was added.
@@ -58,8 +44,8 @@ v0.7.0 closes the release architecture gaps identified after v0.6.3. Private pos
58
44
  > publish global preflight.
59
45
 
60
46
  <!-- release-skill:capability:safe-first-command -->
61
- > **Production path verified since the v0.1.1 milestone; v0.7.0 is the current
62
- > source candidate and v0.6.3 is the latest published release.** The npm-installed CLI is the supported user entry. Source checkout
47
+ > **Production path verified since the v0.1.1 milestone; v0.7.2 is the current
48
+ > source candidate and v0.7.1 is the latest published release.** The npm-installed CLI is the supported user entry. Source checkout
63
49
  > is the development/contributor fallback.
64
50
  >
65
51
  > **Start here:**
package/README.zh-CN.md CHANGED
@@ -2,37 +2,23 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.7.0 -->
5
+ <!-- release-skill:release-version: 0.7.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.7.0** (2026-08-22)
11
+ **0.7.2** (2026-08-22)
12
12
 
13
- v0.7.0 收口了 v0.6.3 之后识别出的发布架构缺口:postPublish 私有执行输入随批准计划冻结,检查点批准只能从不可变权威路径消费,下游投影直接复用已发布的 Skill Family Foundation 0.8.0 合同,不再依赖工作区本地替代实现。
14
-
15
- **新增**
16
-
17
- - **冻结 postPublish 执行包**:发布单元可以声明私有 `executionFiles`;prepare 把精确字节及资源闭包冻结进不可变计划,distribute 或 postVerify 只把复验通过的执行包安装到隔离执行工作树。批准后的实时工作区改动无法改变实际执行命令。
18
- - **从权威路径消费检查点批准**:postPublish 批准只接受由计划摘要和 hook id 推导出的规范路径。任何 hook 或外部写入开始前,消费端都会复核计划摘要、批准摘要、严格读取的文件字节,以及整条权威路径不存在符号链接。
19
- - **由 Foundation 托管下游投影**:postPublish 载荷投影改用已发布的 `skill-family-engineering-kit` 投影编译器和运行器,并通过 `skill-family-harness-node` 完成严格读取与资源闭包复验。
20
-
21
- **变更**
22
-
23
- - **区分两类工作区**:预设执行明确区分维护者的 `releaseWorkspaceRoot` 与隔离的 `executionWorktreeRoot`;拒绝含义模糊的旧 `root` 回退,也不允许预设把发布工作区自身作为目标。
24
- - **精确采用 Foundation 0.8.0**:`skill-family-contracts`、`skill-family-harness-node` 与 `skill-family-engineering-kit` 均钉扎 0.8.0;包运行时钉扎 Node.js `>=22.22.2 <23`。
25
- - **显式 distribute 权威**:`distribute` 必须取得与计划绑定的发布批准记录;postPublish hook 批准继续使用独立的检查点记录。
13
+ v0.7.2 修复了宿主适配器的 native safe-fs 加载问题:适配器安装根目录按设计不包含 package.json,现在也能正常加载。
26
14
 
27
15
  **修复**
28
16
 
29
- - **拒绝并脱敏携带凭证的 Git URL**:配置中的 Git 远端在 schema 与运行时两层拒绝 URL userinfo。错误、证据和摘要统一经过共享脱敏路径,避免持久化嵌入式凭证。
30
- - **生产门禁失败关闭**:`NODE_TEST_CONTEXT` 不再能够豁免派生产物门禁;adapter 按计划版本明确处理语义;兼容 Node.js 22 的测试报告格式,同时不放宽断言。
31
- - **公开打包与许可证收口**:工作区说明与公开包统一采用 Apache-2.0,公开 bundle 同时携带所需的 Apache-2.0 与 MIT 许可证正文。
17
+ - **适配器可用的原生加载锚点**:bundled runtime 现在把 createRequire() 锚定到源码包和适配器都会携带的 CLI 入口。Claude、Codex、Kimi WorkBuddy 适配器无需依赖根 package.json,也能加载随包分发的 native safe-fs 插件。
32
18
  <!-- release-skill:managed:end id=latest-release -->
33
19
 
34
20
  <!-- release-skill:capability:external-write-boundary -->
35
- > **当前边界:** v0.7.0 是当前源码候选,v0.6.3 是最新已发布版本。v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
21
+ > **当前边界:** v0.7.2 是当前源码候选,v0.7.1 是最新已发布版本。v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
36
22
  > v0.1.1 已完成 GitHub 与 npm 的
37
23
  > 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
38
24
  > 安装及 Claude/Codex 消费者安装验证;"当前发布版本"与"首次生产验证里程碑"
@@ -45,7 +31,7 @@ v0.7.0 收口了 v0.6.3 之后识别出的发布架构缺口:postPublish 私
45
31
  > 远端唯一性检查在 `publish` 全局预检执行。
46
32
 
47
33
  <!-- release-skill:capability:safe-first-command -->
48
- > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.7.0 是当前源码候选,v0.6.3 是最新已发布版本。**
34
+ > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.7.2 是当前源码候选,v0.7.1 是最新已发布版本。**
49
35
  > npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
50
36
  >
51
37
  > **第一条命令:**
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.7.0",
12
+ "version": "0.7.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.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
9
9
  // Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
10
10
  const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
11
11
  // Package identity injected at build time — closure-independent --version probe.
12
- const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.0"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.2"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "f8978e3fb25219e3f69c7d483818837bb3443e9db587b030cfe6d8030e4995eb";
14
+ const __bundleSourceDigest = "151b10d546755e2b693a841c27569302a499a5424861834dfb8ec05138dca3b8";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -32285,7 +32285,7 @@ var init_report = __esm({
32285
32285
  init_closure();
32286
32286
  init_errors2();
32287
32287
  init_validation();
32288
- PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.0" });
32288
+ PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.2" });
32289
32289
  REPORT_RENDERER_VERSION = PACKAGE_META.version;
32290
32290
  SUPPORTED_REPORT_LOCALES = Object.freeze(["zh-CN", "en-US"]);
32291
32291
  EXECUTION_STATUSES = Object.freeze([
@@ -38737,7 +38737,7 @@ function validateManifestEntry(entry, key) {
38737
38737
  }
38738
38738
  function requireAddon(addonPath) {
38739
38739
  try {
38740
- const require2 = createRequire(resolve9(PKG_ROOT2, "package.json"));
38740
+ const require2 = createRequire(resolve9(PKG_ROOT2, "bin/release-skill.mjs"));
38741
38741
  return require2(addonPath);
38742
38742
  } catch (err) {
38743
38743
  throw new ReleaseError(SAFE_WRITE_UNAVAILABLE, sanitizeError(err));
@@ -46063,8 +46063,12 @@ var init_scan = __esm({
46063
46063
  ]);
46064
46064
  BINARY_PROBE_SIZE = 8192;
46065
46065
  ABSOLUTE_PATH_PATTERNS = [
46066
- /\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
- /\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46066
+ /(?<![A-Za-z0-9_#])\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
+ // A JSON Pointer may contain a property segment named "root".
46068
+ // Require a path boundary before that segment so it is not mistaken for a
46069
+ // Linux absolute path, while preserving real root-home paths after
46070
+ // whitespace or punctuation.
46071
+ /(?<![A-Za-z0-9_#])\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46068
46072
  /\/tmp\/(?=[^\s"'`<>]*(?:secret|token|credential|password|private[-_]?key|id_rsa))[^\s"'`<>]+/i,
46069
46073
  /(?:^|[^A-Za-z0-9_])[A-Za-z]:\\[A-Za-z0-9_$-][A-Za-z0-9._$-]*(?:\\[^\s"'`<>]*)?/
46070
46074
  ];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.7.0",
3
+ "version": "0.7.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.7.0.",
22
+ "Prepare a release plan for version 0.7.2.",
23
23
  "Help me understand the release workflow."
24
24
  ]
25
25
  }
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
9
9
  // Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
10
10
  const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
11
11
  // Package identity injected at build time — closure-independent --version probe.
12
- const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.0"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.2"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "f8978e3fb25219e3f69c7d483818837bb3443e9db587b030cfe6d8030e4995eb";
14
+ const __bundleSourceDigest = "151b10d546755e2b693a841c27569302a499a5424861834dfb8ec05138dca3b8";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -32285,7 +32285,7 @@ var init_report = __esm({
32285
32285
  init_closure();
32286
32286
  init_errors2();
32287
32287
  init_validation();
32288
- PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.0" });
32288
+ PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.2" });
32289
32289
  REPORT_RENDERER_VERSION = PACKAGE_META.version;
32290
32290
  SUPPORTED_REPORT_LOCALES = Object.freeze(["zh-CN", "en-US"]);
32291
32291
  EXECUTION_STATUSES = Object.freeze([
@@ -38737,7 +38737,7 @@ function validateManifestEntry(entry, key) {
38737
38737
  }
38738
38738
  function requireAddon(addonPath) {
38739
38739
  try {
38740
- const require2 = createRequire(resolve9(PKG_ROOT2, "package.json"));
38740
+ const require2 = createRequire(resolve9(PKG_ROOT2, "bin/release-skill.mjs"));
38741
38741
  return require2(addonPath);
38742
38742
  } catch (err) {
38743
38743
  throw new ReleaseError(SAFE_WRITE_UNAVAILABLE, sanitizeError(err));
@@ -46063,8 +46063,12 @@ var init_scan = __esm({
46063
46063
  ]);
46064
46064
  BINARY_PROBE_SIZE = 8192;
46065
46065
  ABSOLUTE_PATH_PATTERNS = [
46066
- /\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
- /\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46066
+ /(?<![A-Za-z0-9_#])\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
+ // A JSON Pointer may contain a property segment named "root".
46068
+ // Require a path boundary before that segment so it is not mistaken for a
46069
+ // Linux absolute path, while preserving real root-home paths after
46070
+ // whitespace or punctuation.
46071
+ /(?<![A-Za-z0-9_#])\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46068
46072
  /\/tmp\/(?=[^\s"'`<>]*(?:secret|token|credential|password|private[-_]?key|id_rsa))[^\s"'`<>]+/i,
46069
46073
  /(?:^|[^A-Za-z0-9_])[A-Za-z]:\\[A-Za-z0-9_$-][A-Za-z0-9._$-]*(?:\\[^\s"'`<>]*)?/
46070
46074
  ];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
9
9
  // Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
10
10
  const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
11
11
  // Package identity injected at build time — closure-independent --version probe.
12
- const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.0"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.2"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "f8978e3fb25219e3f69c7d483818837bb3443e9db587b030cfe6d8030e4995eb";
14
+ const __bundleSourceDigest = "151b10d546755e2b693a841c27569302a499a5424861834dfb8ec05138dca3b8";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -32285,7 +32285,7 @@ var init_report = __esm({
32285
32285
  init_closure();
32286
32286
  init_errors2();
32287
32287
  init_validation();
32288
- PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.0" });
32288
+ PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.2" });
32289
32289
  REPORT_RENDERER_VERSION = PACKAGE_META.version;
32290
32290
  SUPPORTED_REPORT_LOCALES = Object.freeze(["zh-CN", "en-US"]);
32291
32291
  EXECUTION_STATUSES = Object.freeze([
@@ -38737,7 +38737,7 @@ function validateManifestEntry(entry, key) {
38737
38737
  }
38738
38738
  function requireAddon(addonPath) {
38739
38739
  try {
38740
- const require2 = createRequire(resolve9(PKG_ROOT2, "package.json"));
38740
+ const require2 = createRequire(resolve9(PKG_ROOT2, "bin/release-skill.mjs"));
38741
38741
  return require2(addonPath);
38742
38742
  } catch (err) {
38743
38743
  throw new ReleaseError(SAFE_WRITE_UNAVAILABLE, sanitizeError(err));
@@ -46063,8 +46063,12 @@ var init_scan = __esm({
46063
46063
  ]);
46064
46064
  BINARY_PROBE_SIZE = 8192;
46065
46065
  ABSOLUTE_PATH_PATTERNS = [
46066
- /\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
- /\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46066
+ /(?<![A-Za-z0-9_#])\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
+ // A JSON Pointer may contain a property segment named "root".
46068
+ // Require a path boundary before that segment so it is not mistaken for a
46069
+ // Linux absolute path, while preserving real root-home paths after
46070
+ // whitespace or punctuation.
46071
+ /(?<![A-Za-z0-9_#])\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46068
46072
  /\/tmp\/(?=[^\s"'`<>]*(?:secret|token|credential|password|private[-_]?key|id_rsa))[^\s"'`<>]+/i,
46069
46073
  /(?:^|[^A-Za-z0-9_])[A-Za-z]:\\[A-Za-z0-9_$-][A-Za-z0-9._$-]*(?:\\[^\s"'`<>]*)?/
46070
46074
  ];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
9
9
  // Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
10
10
  const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
11
11
  // Package identity injected at build time — closure-independent --version probe.
12
- const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.0"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.2"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "f8978e3fb25219e3f69c7d483818837bb3443e9db587b030cfe6d8030e4995eb";
14
+ const __bundleSourceDigest = "151b10d546755e2b693a841c27569302a499a5424861834dfb8ec05138dca3b8";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -32285,7 +32285,7 @@ var init_report = __esm({
32285
32285
  init_closure();
32286
32286
  init_errors2();
32287
32287
  init_validation();
32288
- PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.0" });
32288
+ PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.2" });
32289
32289
  REPORT_RENDERER_VERSION = PACKAGE_META.version;
32290
32290
  SUPPORTED_REPORT_LOCALES = Object.freeze(["zh-CN", "en-US"]);
32291
32291
  EXECUTION_STATUSES = Object.freeze([
@@ -38737,7 +38737,7 @@ function validateManifestEntry(entry, key) {
38737
38737
  }
38738
38738
  function requireAddon(addonPath) {
38739
38739
  try {
38740
- const require2 = createRequire(resolve9(PKG_ROOT2, "package.json"));
38740
+ const require2 = createRequire(resolve9(PKG_ROOT2, "bin/release-skill.mjs"));
38741
38741
  return require2(addonPath);
38742
38742
  } catch (err) {
38743
38743
  throw new ReleaseError(SAFE_WRITE_UNAVAILABLE, sanitizeError(err));
@@ -46063,8 +46063,12 @@ var init_scan = __esm({
46063
46063
  ]);
46064
46064
  BINARY_PROBE_SIZE = 8192;
46065
46065
  ABSOLUTE_PATH_PATTERNS = [
46066
- /\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
- /\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46066
+ /(?<![A-Za-z0-9_#])\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
+ // A JSON Pointer may contain a property segment named "root".
46068
+ // Require a path boundary before that segment so it is not mistaken for a
46069
+ // Linux absolute path, while preserving real root-home paths after
46070
+ // whitespace or punctuation.
46071
+ /(?<![A-Za-z0-9_#])\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46068
46072
  /\/tmp\/(?=[^\s"'`<>]*(?:secret|token|credential|password|private[-_]?key|id_rsa))[^\s"'`<>]+/i,
46069
46073
  /(?:^|[^A-Za-z0-9_])[A-Za-z]:\\[A-Za-z0-9_$-][A-Za-z0-9._$-]*(?:\\[^\s"'`<>]*)?/
46070
46074
  ];
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
9
9
  // Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
10
10
  const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
11
11
  // Package identity injected at build time — closure-independent --version probe.
12
- const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.0"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.7.2"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "f8978e3fb25219e3f69c7d483818837bb3443e9db587b030cfe6d8030e4995eb";
14
+ const __bundleSourceDigest = "151b10d546755e2b693a841c27569302a499a5424861834dfb8ec05138dca3b8";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -32285,7 +32285,7 @@ var init_report = __esm({
32285
32285
  init_closure();
32286
32286
  init_errors2();
32287
32287
  init_validation();
32288
- PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.0" });
32288
+ PACKAGE_META = Object.freeze({ "name": "release-skill", "version": "0.7.2" });
32289
32289
  REPORT_RENDERER_VERSION = PACKAGE_META.version;
32290
32290
  SUPPORTED_REPORT_LOCALES = Object.freeze(["zh-CN", "en-US"]);
32291
32291
  EXECUTION_STATUSES = Object.freeze([
@@ -38737,7 +38737,7 @@ function validateManifestEntry(entry, key) {
38737
38737
  }
38738
38738
  function requireAddon(addonPath) {
38739
38739
  try {
38740
- const require2 = createRequire(resolve9(PKG_ROOT2, "package.json"));
38740
+ const require2 = createRequire(resolve9(PKG_ROOT2, "bin/release-skill.mjs"));
38741
38741
  return require2(addonPath);
38742
38742
  } catch (err) {
38743
38743
  throw new ReleaseError(SAFE_WRITE_UNAVAILABLE, sanitizeError(err));
@@ -46063,8 +46063,12 @@ var init_scan = __esm({
46063
46063
  ]);
46064
46064
  BINARY_PROBE_SIZE = 8192;
46065
46065
  ABSOLUTE_PATH_PATTERNS = [
46066
- /\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
- /\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46066
+ /(?<![A-Za-z0-9_#])\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46067
+ // A JSON Pointer may contain a property segment named "root".
46068
+ // Require a path boundary before that segment so it is not mistaken for a
46069
+ // Linux absolute path, while preserving real root-home paths after
46070
+ // whitespace or punctuation.
46071
+ /(?<![A-Za-z0-9_#])\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
46068
46072
  /\/tmp\/(?=[^\s"'`<>]*(?:secret|token|credential|password|private[-_]?key|id_rsa))[^\s"'`<>]+/i,
46069
46073
  /(?:^|[^A-Za-z0-9_])[A-Za-z]:\\[A-Za-z0-9_$-][A-Za-z0-9._$-]*(?:\\[^\s"'`<>]*)?/
46070
46074
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -2,11 +2,11 @@
2
2
  "schemaVersion": "1.0.0",
3
3
  "platformId": "release-skill",
4
4
  "platformName": "release-skill Plugin Platform",
5
- "version": "0.7.0",
5
+ "version": "0.7.2",
6
6
  "logicalRoot": "skills-src/",
7
7
  "logicalRootDigest": "3767fc36f42ca561f5e839cea7b7e5bc16d08c47867b5bd6086f25efd0cb0f06",
8
8
  "projectionDigest": "419f7f9601015459956e10aae74f42240ab2ac248238ff7494f3e761643d1749",
9
- "projectionId": "release-skill:platform:0.7.0",
9
+ "projectionId": "release-skill:platform:0.7.2",
10
10
  "manifestRequired": true,
11
11
  "projectionSources": {
12
12
  "skills-src-root": {
@@ -180,8 +180,9 @@ function validateManifestEntry(entry, key) {
180
180
 
181
181
  function requireAddon(addonPath) {
182
182
  try {
183
- // Use PKG_ROOT-relative resolution so bundled mode can find the addon.
184
- const require = createRequire(resolve(PKG_ROOT, 'package.json'));
183
+ // Anchor require() to a file present in both the source package and every
184
+ // generated adapter. Adapter roots intentionally do not ship package.json.
185
+ const require = createRequire(resolve(PKG_ROOT, 'bin/release-skill.mjs'));
185
186
  return require(addonPath);
186
187
  } catch (err) {
187
188
  throw new ReleaseError(SAFE_WRITE_UNAVAILABLE, sanitizeError(err));
@@ -48,8 +48,12 @@ const BINARY_PROBE_SIZE = 8192;
48
48
  * such as `/Users/...` alone.
49
49
  */
50
50
  const ABSOLUTE_PATH_PATTERNS = [
51
- /\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
52
- /\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
51
+ /(?<![A-Za-z0-9_#])\/(?:Users|home)\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
52
+ // A JSON Pointer may contain a property segment named "root".
53
+ // Require a path boundary before that segment so it is not mistaken for a
54
+ // Linux absolute path, while preserving real root-home paths after
55
+ // whitespace or punctuation.
56
+ /(?<![A-Za-z0-9_#])\/root\/[A-Za-z0-9_-][A-Za-z0-9._-]*(?:\/[^\s"'`<>]*)?/,
53
57
  /\/tmp\/(?=[^\s"'`<>]*(?:secret|token|credential|password|private[-_]?key|id_rsa))[^\s"'`<>]+/i,
54
58
  /(?:^|[^A-Za-z0-9_])[A-Za-z]:\\[A-Za-z0-9_$-][A-Za-z0-9._$-]*(?:\\[^\s"'`<>]*)?/,
55
59
  ];