release-skill 0.9.26 → 0.9.27

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 (35) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.cursor-plugin/plugin.json +1 -1
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/.qoder-plugin/plugin.json +1 -1
  7. package/CHANGELOG.md +25 -0
  8. package/INSTALL.md +2 -2
  9. package/INSTALL.zh-CN.md +2 -2
  10. package/README.md +9 -9
  11. package/README.zh-CN.md +9 -9
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/release-skill.bundle.mjs +13 -6
  14. package/adapters/claude/skills/release-help/SKILL.md +2 -2
  15. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  16. package/adapters/codex/bin/release-skill.bundle.mjs +13 -6
  17. package/adapters/codex/skills/release-help/SKILL.md +2 -2
  18. package/adapters/cursor/.cursor-plugin/plugin.json +1 -1
  19. package/adapters/cursor/bin/release-skill.bundle.mjs +13 -6
  20. package/adapters/cursor/skills/release-help/SKILL.md +2 -2
  21. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  22. package/adapters/kimi/bin/release-skill.bundle.mjs +13 -6
  23. package/adapters/kimi/skills/release-help/SKILL.md +2 -2
  24. package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
  25. package/adapters/qoder/bin/release-skill.bundle.mjs +13 -6
  26. package/adapters/qoder/skills/release-help/SKILL.md +2 -2
  27. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  28. package/adapters/workbuddy/bin/release-skill.bundle.mjs +13 -6
  29. package/adapters/workbuddy/skills/release-help/SKILL.md +2 -2
  30. package/bin/release-skill.bundle.mjs +13 -6
  31. package/package.json +1 -1
  32. package/platform-manifest.json +4 -4
  33. package/skills/release-help/SKILL.md +2 -2
  34. package/skills-src/release-help/SKILL.md +2 -2
  35. package/src/commands/post-release-local.mjs +13 -4
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.26",
3
+ "version": "0.9.27",
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.9.26",
3
+ "version": "0.9.27",
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.9.26",
3
+ "version": "0.9.27",
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.9.26.",
22
+ "Prepare a release plan for version 0.9.27.",
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.9.26",
3
+ "version": "0.9.27",
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.9.26",
3
+ "version": "0.9.27",
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.9.26",
3
+ "version": "0.9.27",
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,30 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.9.27 locale=en baseline=sha256:69bb1c474b2b31ec80eead86837455a7ec3b128baa671245db12cf509fa53a5b -->
4
+ ## [0.9.27] - 2026-10-13
5
+
6
+ 0.9.27 fixes Kimi local-host observation when a managed plugin root contains kimi.plugin.json and no package.json. The WorkBuddy lite-wb selector remains the 0.9.26 fix and is not part of this version. The three Foundation dependencies remain pinned to 0.22.0. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
7
+
8
+ ### Security
9
+
10
+ - Existing safety boundaries are unchanged: Hub publication remains a compare-and-swap operation bound to the observed branch head. Partial Hub publication is never rolled back or force-pushed automatically, and completed steps are not overwritten.
11
+ - Approval, publication, post-publication verification, consumer installation, real-host loading, and independent acceptance still require their own actual records. This note does not prove any of those outcomes. Reading a Kimi plugin manifest does not establish authentication or real-host qualification.
12
+
13
+ ### Changed
14
+
15
+ - The distribution path is unchanged: Skill Family Hub remains the central marketplace, and its entry is still updated through the existing GitHub Git Data API after release verification.
16
+ - The WorkBuddy CODEBUDDY_FORCE_LITE_WB_BUNDLE selector shipped in 0.9.26. This version does not change that selector.
17
+
18
+ ### Fixed
19
+
20
+ - Kimi local host observation still reads package.json when that file is present, and that path is unchanged. When the read fails with the existing missing-resource or ENOENT shape, observation reads kimi.plugin.json in the same managed root and uses its name and version in the existing identity comparison, together with the GitHub tag ref and installed SHA from installed.json. A missing kimi.plugin.json still fails closed. Declared-root checks, tag ref handling, installed SHA handling, and git HEAD comparison stay as they are. This fallback does not add package.json to any Kimi projection.
21
+
22
+ ### Upgrade Notes
23
+
24
+ For consumers already using Skill Family Hub, no configuration migration is required. Installations still using the old release-skill standalone marketplace should remove it and use the ifoohoo/skill-family-hub repository with the Hub-qualified plugin id release-skill@skill-family-hub; this migration path is unchanged. The existing --unit release-selection contract is unchanged.
25
+ <!-- release-skill:changelog:end version=0.9.27 locale=en -->
26
+
27
+
3
28
  <!-- release-skill:changelog:start version=0.9.26 locale=en baseline=sha256:233636f011ef5211286935424f64ef11eb1170dc297f40a2dd65e6572c459bb0 -->
4
29
  ## [0.9.26] - 2026-10-12
5
30
 
package/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.26 -->
5
+ <!-- release-skill:release-version: 0.9.27 -->
6
6
  ## Prerequisites
7
7
 
8
8
  - Node.js `>=22.22.2 <23` (22.22.2 or newer, and below 23)
@@ -125,7 +125,7 @@ tag pinned to the exact version (never the bare repository URL, which installs
125
125
  the latest release or default branch), confirm the trust prompt, then reload:
126
126
 
127
127
  ```
128
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.26
128
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.27
129
129
  /plugins reload
130
130
  ```
131
131
 
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.9.26 -->
5
+ <!-- release-skill:release-version: 0.9.27 -->
6
6
  ## 前置条件
7
7
 
8
8
  - Node.js `>=22.22.2 <23`(22.22.2 及以上,且低于 23)
@@ -113,7 +113,7 @@ release-skill 当前只采用并验证 Kimi Code 的交互式 TUI 路径,**无
113
113
  (切勿使用裸仓库地址,它会安装最新 release 或默认分支),确认信任提示后重新加载:
114
114
 
115
115
  ```
116
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.26
116
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.27
117
117
  /plugins reload
118
118
  ```
119
119
 
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.9.26 -->
5
+ <!-- release-skill:release-version: 0.9.27 -->
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,31 @@ 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.9.26** (2026-10-12)
17
+ **0.9.27** (2026-10-13)
18
18
 
19
- 0.9.26 corrects wording that treated the current installed version as permanently a source candidate. It also makes existing WorkBuddy CLI calls in local host updates select the official lite-wb bundle. The three Foundation dependencies remain pinned to 0.22.0. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
19
+ 0.9.27 fixes Kimi local-host observation when a managed plugin root contains kimi.plugin.json and no package.json. The WorkBuddy lite-wb selector remains the 0.9.26 fix and is not part of this version. The three Foundation dependencies remain pinned to 0.22.0. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
20
20
 
21
21
  **Security**
22
22
 
23
23
  - Existing safety boundaries are unchanged: Hub publication remains a compare-and-swap operation bound to the observed branch head. Partial Hub publication is never rolled back or force-pushed automatically, and completed steps are not overwritten.
24
- - Approval, publication, post-publication verification, consumer installation, real-host loading, and independent acceptance still require their own actual records. This note does not prove any of those outcomes. Selecting the WorkBuddy bundle does not establish authentication or real-host qualification.
24
+ - Approval, publication, post-publication verification, consumer installation, real-host loading, and independent acceptance still require their own actual records. This note does not prove any of those outcomes. Reading a Kimi plugin manifest does not establish authentication or real-host qualification.
25
25
 
26
26
  **Changed**
27
27
 
28
28
  - The distribution path is unchanged: Skill Family Hub remains the central marketplace, and its entry is still updated through the existing GitHub Git Data API after release verification.
29
+ - The WorkBuddy CODEBUDDY_FORCE_LITE_WB_BUNDLE selector shipped in 0.9.26. This version does not change that selector.
29
30
 
30
31
  **Fixed**
31
32
 
32
- - The help and prepare skills, both READMEs, and README acceptance prompts describe capabilities and evidence boundaries without assigning a permanent candidate status to the current version. Version synchronization retains necessary version references without restoring that status assertion. Existing regression checks cover these boundaries.
33
- - The WorkBuddy branch of local host update commands sets CODEBUDDY_FORCE_LITE_WB_BUNDLE=1 to select the official lite-wb bundle. Other hosts do not receive this selector. Existing authentication filtering, exact-source checks, and fail-closed behavior remain in place.
33
+ - Kimi local host observation still reads package.json when that file is present, and that path is unchanged. When the read fails with the existing missing-resource or ENOENT shape, observation reads kimi.plugin.json in the same managed root and uses its name and version in the existing identity comparison, together with the GitHub tag ref and installed SHA from installed.json. A missing kimi.plugin.json still fails closed. Declared-root checks, tag ref handling, installed SHA handling, and git HEAD comparison stay as they are. This fallback does not add package.json to any Kimi projection.
34
34
 
35
35
  **Upgrade Notes**
36
36
 
37
- For consumers already using Skill Family Hub, no configuration migration is required. Installations still using the old release-skill standalone marketplace should remove it and use the ifoohoo/skill-family-hub repository with the Hub-qualified plugin id release-skill@skill-family-hub; this migration path is unchanged. The existing --unit release-selection contract is unchanged. This update adds no automatic first-time installation capability and does not change the existing MANUAL_REQUIRED boundary.
37
+ For consumers already using Skill Family Hub, no configuration migration is required. Installations still using the old release-skill standalone marketplace should remove it and use the ifoohoo/skill-family-hub repository with the Hub-qualified plugin id release-skill@skill-family-hub; this migration path is unchanged. The existing --unit release-selection contract is unchanged.
38
38
  <!-- release-skill:managed:end id=latest-release -->
39
39
 
40
40
  <!-- release-skill:capability:external-write-boundary -->
41
- > **Current boundary:** v0.9.26: this README records capabilities and verification boundaries;
41
+ > **Current boundary:** v0.9.27: this README records capabilities and verification boundaries;
42
42
  > it is not evidence of
43
43
  > publication, consumer-installation verification, or independent acceptance.
44
44
  > Release availability must be established from the corresponding release records
@@ -62,7 +62,7 @@ For consumers already using Skill Family Hub, no configuration migration is requ
62
62
  > publish global preflight.
63
63
 
64
64
  <!-- release-skill:capability:safe-first-command -->
65
- > **Production path verified since the v0.1.1 milestone; for v0.9.26,
65
+ > **Production path verified since the v0.1.1 milestone; for v0.9.27,
66
66
  > publication, consumer-installation verification, and independent acceptance
67
67
  > require version-specific release records and verification results.**
68
68
  > The npm-installed CLI is the supported user entry. Source checkout
package/README.zh-CN.md CHANGED
@@ -2,37 +2,37 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.26 -->
5
+ <!-- release-skill:release-version: 0.9.27 -->
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.9.26** (2026-10-12)
11
+ **0.9.27** (2026-10-13)
12
12
 
13
- 0.9.26 修正了将当前安装版本永久描述为“源码候选”的措辞,并让本机宿主更新中的既有 WorkBuddy CLI 调用选择官方 lite-wb 包。Foundation 三个依赖继续固定为 0.22.0。本说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
13
+ 0.9.27 修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。WorkBuddy 的 lite-wb 选择器修复已在 0.9.26 完成,不属于本版。Foundation 三个依赖继续固定为 0.22.0。本说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
14
14
 
15
15
  **安全**
16
16
 
17
17
  - 既有安全边界保持不变:Hub 写入继续绑定已观察的分支头,按 compare-and-swap 比较后写入。部分发布时不回滚、不覆盖已成功步骤,也不自动强推。
18
- - 批准、发布、发布后验证、消费者安装、真实宿主加载和独立验收仍分别需要实际记录。本说明不能证明这些结果,选择 WorkBuddy 包也不能证明认证已成立或真实宿主资格已经通过。
18
+ - 批准、发布、发布后验证、消费者安装、真实宿主加载和独立验收仍分别需要实际记录。本说明不能证明这些结果,读取 Kimi 插件清单也不能证明认证已成立或真实宿主资格已经通过。
19
19
 
20
20
  **变更**
21
21
 
22
22
  - 分发路径保持不变:Skill Family Hub 仍是统一市场;发布验证完成后,Hub 条目仍通过既有 GitHub Git Data API 更新。
23
+ - WorkBuddy 的 CODEBUDDY_FORCE_LITE_WB_BUNDLE 选择器已随 0.9.26 交付,本版不改动该选择器。
23
24
 
24
25
  **修复**
25
26
 
26
- - help 和 prepare 技能、两份 README 及 README 验收提示现在说明能力与证据边界,不再给当前版本固定候选身份。版本同步继续保留必要的版本引用,但不再恢复这一状态断言。既有回归检查覆盖这些边界。
27
- - 本机宿主更新命令的 WorkBuddy 分支通过 CODEBUDDY_FORCE_LITE_WB_BUNDLE=1 选择官方 lite-wb 包;其他宿主不接收该选择器。原有认证信息过滤、精确来源检查和失败关闭行为保持不变。
27
+ - Kimi 本机宿主观察在 package.json 存在时仍读取该文件,这条路径保持不变。读取失败且错误属于既有 missing-resource 或 ENOENT 形态时,改为读取同一受管根下的 kimi.plugin.json,并用其 name 与 version 参加既有身份比较,同时继续使用 installed.json 中的 GitHub tag ref 与 installedSha。kimi.plugin.json 同样缺失时仍按原错误失败关闭。声明根检查、tag ref、installedSha 与 git HEAD 比较逻辑不变。该回退不会给任何 Kimi 投影补上 package.json。
28
28
 
29
29
  **升级说明**
30
30
 
31
- 已使用 Skill Family Hub 的消费者升级时无需迁移配置。若仍使用旧版独立的 `release-skill` 市场,应移除旧市场,改用 ifoohoo/skill-family-hub 仓库与 Hub 限定插件名 release-skill@skill-family-hub;这条迁移路径保持不变。既有 --unit 选择合同保持不变。本次不增加首次自动安装能力,也不改变原 MANUAL_REQUIRED 边界。
31
+ 已使用 Skill Family Hub 的消费者升级时无需迁移配置。若仍使用旧版独立的 `release-skill` 市场,应移除旧市场,改用 ifoohoo/skill-family-hub 仓库与 Hub 限定插件名 release-skill@skill-family-hub;这条迁移路径保持不变。既有 --unit 选择合同保持不变。
32
32
  <!-- release-skill:managed:end id=latest-release -->
33
33
 
34
34
  <!-- release-skill:capability:external-write-boundary -->
35
- > **当前边界:** v0.9.26 的能力范围与验证边界见本 README,
35
+ > **当前边界:** v0.9.27 的能力范围与验证边界见本 README,
36
36
  > 不代表已经发布、完成消费者安装验证或通过独立验收。
37
37
  > 版本可用性以对应发布记录及发布后验证结果为准。
38
38
  > v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
@@ -48,7 +48,7 @@ release-skill 帮助维护者回答三个问题:准备发布什么、还有哪
48
48
  > 远端唯一性检查在 `publish` 全局预检执行。
49
49
 
50
50
  <!-- release-skill:capability:safe-first-command -->
51
- > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.26 的发布、消费者安装验证和独立验收状态须由该版本的发布记录及验证结果确认。**
51
+ > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.27 的发布、消费者安装验证和独立验收状态须由该版本的发布记录及验证结果确认。**
52
52
  > npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
53
53
  >
54
54
  > **第一条命令:**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.26",
3
+ "version": "0.9.27",
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.9.26"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "e423ce89a99a1ec7350c5243cca4a6570684945b0ba83452cc9892789985489d";
14
+ const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -136645,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
136645
136645
  const pluginRoot = await resolveContained(managedRoot, target.plugin);
136646
136646
  const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
136647
136647
  if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
136648
- const packageJson = parseJson2(
136649
- await readFileContained(pluginRoot, "package.json", { encoding: "utf8" }),
136650
- "Kimi installed package manifest"
136651
- );
136648
+ let manifestText;
136649
+ let manifestLabel = "Kimi installed package manifest";
136650
+ try {
136651
+ manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
136652
+ } catch (error) {
136653
+ const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
136654
+ if (!missing) throw error;
136655
+ manifestLabel = "Kimi installed plugin manifest";
136656
+ manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
136657
+ }
136658
+ const packageJson = parseJson2(manifestText, manifestLabel);
136652
136659
  const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
136653
136660
  const revision = entry.github.installedSha;
136654
136661
  let gitHeadExact = true;
@@ -29,9 +29,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
29
29
 
30
30
  治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
31
31
 
32
- ## 0.9.26 能力与证据边界
32
+ ## 0.9.27 能力与证据边界
33
33
 
34
- release-skill 0.9.26 精确依赖 Foundation 0.22.0 的公开包根 API。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
34
+ release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
35
35
 
36
36
  在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
37
37
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.26",
3
+ "version": "0.9.27",
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.9.26.",
22
+ "Prepare a release plan for version 0.9.27.",
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.9.26"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "e423ce89a99a1ec7350c5243cca4a6570684945b0ba83452cc9892789985489d";
14
+ const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -136645,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
136645
136645
  const pluginRoot = await resolveContained(managedRoot, target.plugin);
136646
136646
  const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
136647
136647
  if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
136648
- const packageJson = parseJson2(
136649
- await readFileContained(pluginRoot, "package.json", { encoding: "utf8" }),
136650
- "Kimi installed package manifest"
136651
- );
136648
+ let manifestText;
136649
+ let manifestLabel = "Kimi installed package manifest";
136650
+ try {
136651
+ manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
136652
+ } catch (error) {
136653
+ const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
136654
+ if (!missing) throw error;
136655
+ manifestLabel = "Kimi installed plugin manifest";
136656
+ manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
136657
+ }
136658
+ const packageJson = parseJson2(manifestText, manifestLabel);
136652
136659
  const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
136653
136660
  const revision = entry.github.installedSha;
136654
136661
  let gitHeadExact = true;
@@ -37,9 +37,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
37
37
 
38
38
  治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
39
39
 
40
- ## 0.9.26 能力与证据边界
40
+ ## 0.9.27 能力与证据边界
41
41
 
42
- release-skill 0.9.26 精确依赖 Foundation 0.22.0 的公开包根 API。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
42
+ release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
43
43
 
44
44
  在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
45
45
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.26",
3
+ "version": "0.9.27",
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.9.26"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "e423ce89a99a1ec7350c5243cca4a6570684945b0ba83452cc9892789985489d";
14
+ const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -136645,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
136645
136645
  const pluginRoot = await resolveContained(managedRoot, target.plugin);
136646
136646
  const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
136647
136647
  if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
136648
- const packageJson = parseJson2(
136649
- await readFileContained(pluginRoot, "package.json", { encoding: "utf8" }),
136650
- "Kimi installed package manifest"
136651
- );
136648
+ let manifestText;
136649
+ let manifestLabel = "Kimi installed package manifest";
136650
+ try {
136651
+ manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
136652
+ } catch (error) {
136653
+ const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
136654
+ if (!missing) throw error;
136655
+ manifestLabel = "Kimi installed plugin manifest";
136656
+ manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
136657
+ }
136658
+ const packageJson = parseJson2(manifestText, manifestLabel);
136652
136659
  const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
136653
136660
  const revision = entry.github.installedSha;
136654
136661
  let gitHeadExact = true;
@@ -38,9 +38,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
38
38
 
39
39
  治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
40
40
 
41
- ## 0.9.26 能力与证据边界
41
+ ## 0.9.27 能力与证据边界
42
42
 
43
- release-skill 0.9.26 精确依赖 Foundation 0.22.0 的公开包根 API。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
43
+ release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
44
44
 
45
45
  在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
46
46
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.26",
3
+ "version": "0.9.27",
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.9.26"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "e423ce89a99a1ec7350c5243cca4a6570684945b0ba83452cc9892789985489d";
14
+ const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -136645,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
136645
136645
  const pluginRoot = await resolveContained(managedRoot, target.plugin);
136646
136646
  const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
136647
136647
  if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
136648
- const packageJson = parseJson2(
136649
- await readFileContained(pluginRoot, "package.json", { encoding: "utf8" }),
136650
- "Kimi installed package manifest"
136651
- );
136648
+ let manifestText;
136649
+ let manifestLabel = "Kimi installed package manifest";
136650
+ try {
136651
+ manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
136652
+ } catch (error) {
136653
+ const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
136654
+ if (!missing) throw error;
136655
+ manifestLabel = "Kimi installed plugin manifest";
136656
+ manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
136657
+ }
136658
+ const packageJson = parseJson2(manifestText, manifestLabel);
136652
136659
  const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
136653
136660
  const revision = entry.github.installedSha;
136654
136661
  let gitHeadExact = true;
@@ -37,9 +37,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
37
37
 
38
38
  治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
39
39
 
40
- ## 0.9.26 能力与证据边界
40
+ ## 0.9.27 能力与证据边界
41
41
 
42
- release-skill 0.9.26 精确依赖 Foundation 0.22.0 的公开包根 API。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
42
+ release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
43
43
 
44
44
  在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
45
45
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.26",
3
+ "version": "0.9.27",
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.9.26"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "e423ce89a99a1ec7350c5243cca4a6570684945b0ba83452cc9892789985489d";
14
+ const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -136645,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
136645
136645
  const pluginRoot = await resolveContained(managedRoot, target.plugin);
136646
136646
  const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
136647
136647
  if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
136648
- const packageJson = parseJson2(
136649
- await readFileContained(pluginRoot, "package.json", { encoding: "utf8" }),
136650
- "Kimi installed package manifest"
136651
- );
136648
+ let manifestText;
136649
+ let manifestLabel = "Kimi installed package manifest";
136650
+ try {
136651
+ manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
136652
+ } catch (error) {
136653
+ const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
136654
+ if (!missing) throw error;
136655
+ manifestLabel = "Kimi installed plugin manifest";
136656
+ manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
136657
+ }
136658
+ const packageJson = parseJson2(manifestText, manifestLabel);
136652
136659
  const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
136653
136660
  const revision = entry.github.installedSha;
136654
136661
  let gitHeadExact = true;
@@ -37,9 +37,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
37
37
 
38
38
  治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
39
39
 
40
- ## 0.9.26 能力与证据边界
40
+ ## 0.9.27 能力与证据边界
41
41
 
42
- release-skill 0.9.26 精确依赖 Foundation 0.22.0 的公开包根 API。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
42
+ release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
43
43
 
44
44
  在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
45
45
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.26",
3
+ "version": "0.9.27",
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.9.26"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "e423ce89a99a1ec7350c5243cca4a6570684945b0ba83452cc9892789985489d";
14
+ const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -136645,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
136645
136645
  const pluginRoot = await resolveContained(managedRoot, target.plugin);
136646
136646
  const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
136647
136647
  if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
136648
- const packageJson = parseJson2(
136649
- await readFileContained(pluginRoot, "package.json", { encoding: "utf8" }),
136650
- "Kimi installed package manifest"
136651
- );
136648
+ let manifestText;
136649
+ let manifestLabel = "Kimi installed package manifest";
136650
+ try {
136651
+ manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
136652
+ } catch (error) {
136653
+ const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
136654
+ if (!missing) throw error;
136655
+ manifestLabel = "Kimi installed plugin manifest";
136656
+ manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
136657
+ }
136658
+ const packageJson = parseJson2(manifestText, manifestLabel);
136652
136659
  const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
136653
136660
  const revision = entry.github.installedSha;
136654
136661
  let gitHeadExact = true;
@@ -29,9 +29,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
29
29
 
30
30
  治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
31
31
 
32
- ## 0.9.26 能力与证据边界
32
+ ## 0.9.27 能力与证据边界
33
33
 
34
- release-skill 0.9.26 精确依赖 Foundation 0.22.0 的公开包根 API。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
34
+ release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
35
35
 
36
36
  在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
37
37
 
@@ -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.9.26"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
13
13
  // Build-time source digest for the BUNDLE_STALE freshness gate (see above).
14
- const __bundleSourceDigest = "e423ce89a99a1ec7350c5243cca4a6570684945b0ba83452cc9892789985489d";
14
+ const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
15
15
 
16
16
  var __create = Object.create;
17
17
  var __defProp = Object.defineProperty;
@@ -136645,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
136645
136645
  const pluginRoot = await resolveContained(managedRoot, target.plugin);
136646
136646
  const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
136647
136647
  if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
136648
- const packageJson = parseJson2(
136649
- await readFileContained(pluginRoot, "package.json", { encoding: "utf8" }),
136650
- "Kimi installed package manifest"
136651
- );
136648
+ let manifestText;
136649
+ let manifestLabel = "Kimi installed package manifest";
136650
+ try {
136651
+ manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
136652
+ } catch (error) {
136653
+ const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
136654
+ if (!missing) throw error;
136655
+ manifestLabel = "Kimi installed plugin manifest";
136656
+ manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
136657
+ }
136658
+ const packageJson = parseJson2(manifestText, manifestLabel);
136652
136659
  const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
136653
136660
  const revision = entry.github.installedSha;
136654
136661
  let gitHeadExact = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.26",
3
+ "version": "0.9.27",
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.9.26",
5
+ "version": "0.9.27",
6
6
  "logicalRoot": "skills-src/",
7
- "logicalRootDigest": "b32605fb6cf0bac83c6313cdfc8216073a1a3a11f83bb4e4c59016a0b93b5a43",
8
- "projectionDigest": "544fb531a089493618b276dde92ca98c1ae3bf91bd1c5101a0f2d2b344133b56",
9
- "projectionId": "release-skill:platform:0.9.26",
7
+ "logicalRootDigest": "0fa3132f1cabb5aa580e9984ee85a1762824ffd147bc91262ad9b60ad7f3b7a1",
8
+ "projectionDigest": "a47de2ca6763aba458a767d21d28fdab2581dcb0cd422593529056d34d052763",
9
+ "projectionId": "release-skill:platform:0.9.27",
10
10
  "manifestRequired": true,
11
11
  "projectionSources": {
12
12
  "skills-src-root": {
@@ -29,9 +29,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
29
29
 
30
30
  治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
31
31
 
32
- ## 0.9.26 能力与证据边界
32
+ ## 0.9.27 能力与证据边界
33
33
 
34
- release-skill 0.9.26 精确依赖 Foundation 0.22.0 的公开包根 API。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
34
+ release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
35
35
 
36
36
  在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
37
37
 
@@ -29,9 +29,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
29
29
 
30
30
  治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
31
31
 
32
- ## 0.9.26 能力与证据边界
32
+ ## 0.9.27 能力与证据边界
33
33
 
34
- release-skill 0.9.26 精确依赖 Foundation 0.22.0 的公开包根 API。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
34
+ release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
35
35
 
36
36
  在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
37
37
 
@@ -1898,10 +1898,19 @@ async function observeKimiTarget(target, kimiHome, run) {
1898
1898
  const pluginRoot = await resolveContained(managedRoot, target.plugin);
1899
1899
  const declaredRoot = await resolveContained(managedRoot, relative(managedRoot, entry.root));
1900
1900
  if (declaredRoot !== pluginRoot) throw new Error('Kimi installed plugin root does not match its managed root');
1901
- const packageJson = parseJson(
1902
- await readFileContained(pluginRoot, 'package.json', { encoding: 'utf8' }),
1903
- 'Kimi installed package manifest',
1904
- );
1901
+ let manifestText;
1902
+ let manifestLabel = 'Kimi installed package manifest';
1903
+ try {
1904
+ manifestText = await readFileContained(pluginRoot, 'package.json', { encoding: 'utf8' });
1905
+ } catch (error) {
1906
+ const missing = error?.code === 'ENOENT'
1907
+ || error?.details?.causeCode === 'ENOENT'
1908
+ || error?.details?.kind === 'missing-resource';
1909
+ if (!missing) throw error;
1910
+ manifestLabel = 'Kimi installed plugin manifest';
1911
+ manifestText = await readFileContained(pluginRoot, 'kimi.plugin.json', { encoding: 'utf8' });
1912
+ }
1913
+ const packageJson = parseJson(manifestText, manifestLabel);
1905
1914
  const refName = entry.github.ref?.kind === 'tag' ? entry.github.ref.value : undefined;
1906
1915
  const revision = entry.github.installedSha;
1907
1916
  let gitHeadExact = true;