release-skill 0.9.35 → 0.9.37

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 (95) 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 +45 -0
  8. package/INSTALL.md +2 -2
  9. package/INSTALL.zh-CN.md +2 -2
  10. package/README.md +24 -9
  11. package/README.zh-CN.md +15 -9
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/release-skill.bundle.mjs +270 -58
  14. package/adapters/claude/schemas/.render-manifest.json +6 -2
  15. package/adapters/claude/skills/release-config/SKILL.md +36 -41
  16. package/adapters/claude/skills/release-docs/SKILL.md +38 -35
  17. package/adapters/claude/skills/release-finish/SKILL.md +2 -2
  18. package/adapters/claude/skills/release-help/SKILL.md +51 -41
  19. package/adapters/claude/skills/release-marketplace/SKILL.md +38 -46
  20. package/adapters/claude/skills/release-prepare/SKILL.md +19 -28
  21. package/adapters/claude/skills/release-publish/SKILL.md +29 -45
  22. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  23. package/adapters/codex/bin/release-skill.bundle.mjs +270 -58
  24. package/adapters/codex/schemas/.render-manifest.json +6 -2
  25. package/adapters/codex/skills/release-config/SKILL.md +36 -41
  26. package/adapters/codex/skills/release-docs/SKILL.md +38 -35
  27. package/adapters/codex/skills/release-finish/SKILL.md +2 -2
  28. package/adapters/codex/skills/release-help/SKILL.md +51 -41
  29. package/adapters/codex/skills/release-marketplace/SKILL.md +38 -46
  30. package/adapters/codex/skills/release-prepare/SKILL.md +19 -28
  31. package/adapters/codex/skills/release-publish/SKILL.md +29 -45
  32. package/adapters/cursor/.cursor-plugin/plugin.json +1 -1
  33. package/adapters/cursor/bin/release-skill.bundle.mjs +270 -58
  34. package/adapters/cursor/schemas/.render-manifest.json +6 -2
  35. package/adapters/cursor/skills/release-config/SKILL.md +36 -41
  36. package/adapters/cursor/skills/release-docs/SKILL.md +38 -35
  37. package/adapters/cursor/skills/release-finish/SKILL.md +2 -2
  38. package/adapters/cursor/skills/release-help/SKILL.md +51 -41
  39. package/adapters/cursor/skills/release-marketplace/SKILL.md +38 -46
  40. package/adapters/cursor/skills/release-prepare/SKILL.md +19 -28
  41. package/adapters/cursor/skills/release-publish/SKILL.md +29 -45
  42. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  43. package/adapters/kimi/bin/release-skill.bundle.mjs +270 -58
  44. package/adapters/kimi/schemas/.render-manifest.json +6 -2
  45. package/adapters/kimi/skills/release-config/SKILL.md +36 -41
  46. package/adapters/kimi/skills/release-docs/SKILL.md +38 -35
  47. package/adapters/kimi/skills/release-finish/SKILL.md +2 -2
  48. package/adapters/kimi/skills/release-help/SKILL.md +51 -41
  49. package/adapters/kimi/skills/release-marketplace/SKILL.md +38 -46
  50. package/adapters/kimi/skills/release-prepare/SKILL.md +19 -28
  51. package/adapters/kimi/skills/release-publish/SKILL.md +29 -45
  52. package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
  53. package/adapters/qoder/bin/release-skill.bundle.mjs +270 -58
  54. package/adapters/qoder/schemas/.render-manifest.json +6 -2
  55. package/adapters/qoder/skills/release-config/SKILL.md +36 -41
  56. package/adapters/qoder/skills/release-docs/SKILL.md +38 -35
  57. package/adapters/qoder/skills/release-finish/SKILL.md +2 -2
  58. package/adapters/qoder/skills/release-help/SKILL.md +51 -41
  59. package/adapters/qoder/skills/release-marketplace/SKILL.md +38 -46
  60. package/adapters/qoder/skills/release-prepare/SKILL.md +19 -28
  61. package/adapters/qoder/skills/release-publish/SKILL.md +29 -45
  62. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  63. package/adapters/workbuddy/bin/release-skill.bundle.mjs +270 -58
  64. package/adapters/workbuddy/schemas/.render-manifest.json +6 -2
  65. package/adapters/workbuddy/skills/release-config/SKILL.md +36 -41
  66. package/adapters/workbuddy/skills/release-docs/SKILL.md +38 -35
  67. package/adapters/workbuddy/skills/release-finish/SKILL.md +2 -2
  68. package/adapters/workbuddy/skills/release-help/SKILL.md +51 -41
  69. package/adapters/workbuddy/skills/release-marketplace/SKILL.md +38 -46
  70. package/adapters/workbuddy/skills/release-prepare/SKILL.md +19 -28
  71. package/adapters/workbuddy/skills/release-publish/SKILL.md +29 -45
  72. package/bin/release-skill.bundle.mjs +270 -58
  73. package/package.json +1 -1
  74. package/platform-manifest.json +4 -4
  75. package/references/.render-manifest.json +2 -2
  76. package/references/02-project-config.md +91 -8
  77. package/schemas/.render-manifest.json +6 -2
  78. package/skills/release-config/SKILL.md +36 -41
  79. package/skills/release-docs/SKILL.md +38 -35
  80. package/skills/release-finish/SKILL.md +2 -2
  81. package/skills/release-help/SKILL.md +51 -41
  82. package/skills/release-marketplace/SKILL.md +38 -46
  83. package/skills/release-prepare/SKILL.md +19 -28
  84. package/skills/release-publish/SKILL.md +29 -45
  85. package/skills-src/release-config/SKILL.md +36 -41
  86. package/skills-src/release-docs/SKILL.md +38 -35
  87. package/skills-src/release-finish/SKILL.md +2 -2
  88. package/skills-src/release-help/SKILL.md +51 -41
  89. package/skills-src/release-marketplace/SKILL.md +38 -46
  90. package/skills-src/release-prepare/SKILL.md +19 -28
  91. package/skills-src/release-publish/SKILL.md +29 -45
  92. package/src/adapters/plugin-marketplace.mjs +152 -43
  93. package/src/commands/post-release-local.mjs +41 -22
  94. package/src/commands/verify.mjs +123 -17
  95. package/src/core/skill-resource-closure.mjs +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.35",
3
+ "version": "0.9.37",
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.35",
3
+ "version": "0.9.37",
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.35",
3
+ "version": "0.9.37",
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.35.",
22
+ "Prepare a release plan for version 0.9.37.",
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.35",
3
+ "version": "0.9.37",
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.35",
3
+ "version": "0.9.37",
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.35",
3
+ "version": "0.9.37",
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,50 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.9.37 locale=en baseline=sha256:11b436a4b3d6a642189df7126078f2fa2a2d3cf0922d8031d0c33cb12d9680d3 -->
4
+ ## [0.9.37] - 2026-10-23
5
+
6
+ 0.9.37 fixes a false verification failure caused by write-bit changes to installed files in the single-plugin path where the frozen plugin root is the project root. It also adds a TEST intake choice before a Skill starts a new production preparation. The three Foundation dependencies remain pinned to 0.25.0. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
7
+
8
+ ### Security
9
+
10
+ - Remote-write authorization and release approval remain unchanged. Consent to skip TEST intake is not release approval.
11
+ - Skill Family Hub is the unified marketplace. Updates use GitHub Git Data API and compare-and-swap against the observed branch head; partial Hub publication is never rolled back or force-pushed, and completed steps are not overwritten.
12
+
13
+ ### Added
14
+
15
+ - Before a Skill starts a new production preparation, it checks `testIntake`. When wiring is missing, the Skill directs the project through the existing `skill-family-test:skill-family-test-plan` and `skill-family-test:skill-family-test-run` entries to organize the plan and checks and return the actual result. The original business owner judges the result; invoking TEST or skipping intake does not mean the tests passed. Skipping requires an explicit prompt followed by consent that applies to the current run and matches the project, version, and scope. Silence, refusal, general release preauthorization, and stale or mismatched consent do not qualify. A matching response for the current run may be reused.
16
+
17
+ ### Fixed
18
+
19
+ - Only in the single-plugin path where the frozen plugin root is the project root, `verify` ignores changes to all write permission bits (`mode & ~0o222`) when comparing installed files with the frozen snapshot. The frozen snapshot retains its original modes. File content, type, size, non-write mode bits, missing or extra paths, and frozen bindings remain strictly checked.
20
+
21
+ ### Upgrade Notes
22
+
23
+ This applies only to new Skill-led production preparation. Read-only and non-production paths, and approval, publish, reconcile, and formal verify for plans that are already frozen, gain no new TEST intake obligation. The direct non-interactive CLI continues to accept optional `testIntake`; no CLI argument, consent format, authentication, or state machine was added. Test results remain bound to the existing candidate and requirements contract. The release-skill standalone marketplace is deprecated; use `ifoohoo/skill-family-hub` and `release-skill@skill-family-hub`.
24
+ <!-- release-skill:changelog:end version=0.9.37 locale=en -->
25
+
26
+
27
+ <!-- release-skill:changelog:start version=0.9.36 locale=en baseline=sha256:704d09597e835404867409d99c9b8d674751ef145a9e0855d6e2182d768bb3a2 -->
28
+ ## [0.9.36] - 2026-10-22
29
+
30
+ 0.9.36 fixes incorrect rejection of valid dual-projection plugin directories in Qoder, ensures correct validation of market sources via both URL and GitHub-based manifests, and corrects Codex entry root detection to respect manifest-declared paths instead of hardcoding `skills/`. This release note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance. Foundation dependencies remain pinned to 0.25.0.
31
+
32
+ ### Security
33
+
34
+ - Foundation 0.25.0 remains unchanged; the source, scope, commit/digest, and full payload are preserved. The frozen snapshot is re-verified before writing, and the full payload is compared after installation. No new market, first-install, host strategy, framework, dependency, or tier has been introduced. 0.9.35 is immutable. Skill Family Hub remains the unified marketplace, using GitHub Git Data API and compare-and-swap bound to the observed branch head. Partial Hub publication is never rolled back or force-pushed; completed steps are not overwritten.
35
+
36
+ ### Fixed
37
+
38
+ - In 0.9.35, Qoder plugins incorrectly rejected valid dual-projection directories. The `name` and `version` in `.qoder-plugin/plugin.json` and `.claude-plugin/plugin.json` must bind to the same frozen target, though individual `skills` can differ. Each present candidate must be a valid JSON object, match the target identity, have non-empty `skills`, and resolve to a real directory within the plugin root. Native takes precedence; compatibility is only used when native is missing. If any candidate is invalid, installation fails immediately without fallback. After installation, the selected path and `skills` must exactly match the frozen choice, and full payload validation is retained.
39
+ - Qoder now also accepts existing markets that provide `.claude-plugin/marketplace.json` instead of a root `marketplace.json`. The system supports two existing locations: a URL-based `marketplace.json` at the root, and a GitHub-based `marketplace.json` in `.claude-plugin/`. At least one must exist. Each present index must be valid and contain exactly one entry for the target plugin, bound to the same frozen identity; other plugin entries remain allowed. A bad source is not ignored just because another is valid. URL sources require exact repository and SHA verification, and any explicit `version` or `ref` must match. GitHub sources require exact verification of `repo`, `ref`, `sha`, and `entry.version`. Only confirmed missing files are considered absent. Validation occurs after market refresh and before plugin update. `ALREADY_CURRENT` remains read-only with zero update commands.
40
+ - The Codex entry root check previously hardcoded `skills/`, rejecting valid paths like `.agents/skills/` declared in the manifest. Installation pre-check and post-install observation now respect the `skills` directory declared in the plugin manifest. When the field is missing, the default `skills/` path is retained, and existing prefix behavior is preserved. Explicitly invalid, out-of-bounds, or non-directory paths are rejected without fallback. Post-install observation and full payload verification must bind to the same frozen installation contract.
41
+
42
+ ### Upgrade Notes
43
+
44
+ The release-skill standalone marketplace is deprecated; use `ifoohoo/skill-family-hub` and the updated `release-skill@skill-family-hub`, `release-finish`, and public CLI. Unmodified plugins need not be republished. Byte changes require a new frozen plan and matching approval. Installation does not imply loading — if actual loading is not observed, the state remains `reload-pending`. Local completion failure does not alter the remote `VERIFIED` status.
45
+ <!-- release-skill:changelog:end version=0.9.36 locale=en -->
46
+
47
+
3
48
  <!-- release-skill:changelog:start version=0.9.35 locale=en baseline=sha256:d6b5bc6f37e83b5ac692f09dc175c61441598caa2f12679a2ffb2a11593b8bca -->
4
49
  ## [0.9.35] - 2026-10-22
5
50
 
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.35 -->
5
+ <!-- release-skill:release-version: 0.9.37 -->
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.35
128
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.37
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.35 -->
5
+ <!-- release-skill:release-version: 0.9.37 -->
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.35
116
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.37
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.35 -->
5
+ <!-- release-skill:release-version: 0.9.37 -->
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,26 +14,30 @@ 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.35** (2026-10-22)
17
+ **0.9.37** (2026-10-23)
18
18
 
19
- 0.9.35 enables successful Qoder finish checks for already installed plugins using a valid Claude-compatible manifest. It detects and blocks invalid or conflicting manifest candidates. This release note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance. Foundation dependencies remain pinned to `0.25.0`.
19
+ 0.9.37 fixes a false verification failure caused by write-bit changes to installed files in the single-plugin path where the frozen plugin root is the project root. It also adds a TEST intake choice before a Skill starts a new production preparation. The three Foundation dependencies remain pinned to 0.25.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
- - The frozen snapshot is reverified before any host write operation. Existing controls—approval, Hub authorization, path containment, and complete payload validation—remain in force. Foundation dependencies are pinned to `0.25.0`. Skill Family Hub remains the unified marketplace, with publication using GitHub Git Data API and compare-and-swap bound to the observed branch head. Partial Hub publication is never rolled back or force-pushed; completed steps are not overwritten. These mechanisms and remote authorization are unchanged in 0.9.35. The checker does not perform first-time installation, add marketplaces, or generate manifests. Generic release tiers and other host update policies are unchanged.
23
+ - Remote-write authorization and release approval remain unchanged. Consent to skip TEST intake is not release approval.
24
+ - Skill Family Hub is the unified marketplace. Updates use GitHub Git Data API and compare-and-swap against the observed branch head; partial Hub publication is never rolled back or force-pushed, and completed steps are not overwritten.
25
+
26
+ **Added**
27
+
28
+ - Before a Skill starts a new production preparation, it checks `testIntake`. When wiring is missing, the Skill directs the project through the existing `skill-family-test:skill-family-test-plan` and `skill-family-test:skill-family-test-run` entries to organize the plan and checks and return the actual result. The original business owner judges the result; invoking TEST or skipping intake does not mean the tests passed. Skipping requires an explicit prompt followed by consent that applies to the current run and matches the project, version, and scope. Silence, refusal, general release preauthorization, and stale or mismatched consent do not qualify. A matching response for the current run may be reused.
24
29
 
25
30
  **Fixed**
26
31
 
27
- - The checker independently reads `.qoder-plugin/plugin.json` and `.claude-plugin/plugin.json` from both the frozen snapshot and the installed plugin. If the native Qoder manifest is missing, a valid Claude-compatible manifest is accepted. If either present manifest is invalid, verification fails without fallback. When both manifests exist, `name`, `version`, and `skills` must match exactly; otherwise, verification fails.
28
- - The installed manifest selection, its associated relative path, and `skills` are compared against the frozen selection. This closes gaps caused by competing manifest additions or changes in selected relative paths. Original plugin identity and complete payload checks remain enforced.
32
+ - Only in the single-plugin path where the frozen plugin root is the project root, `verify` ignores changes to all write permission bits (`mode & ~0o222`) when comparing installed files with the frozen snapshot. The frozen snapshot retains its original modes. File content, type, size, non-write mode bits, missing or extra paths, and frozen bindings remain strictly checked.
29
33
 
30
34
  **Upgrade Notes**
31
35
 
32
- Use the updated `release-finish` entry from the public `release-skill@skill-family-hub` to finish an existing installed compatible plugin using its applicable frozen plan. Updating the checker alone does not require republishing the plugin. New plugin bytes still require a new frozen plan and matching approval. `UPDATED` or `ALREADY_CURRENT` indicates installed payload status only—not that the running host has loaded it. Preserve `reload-pending` when loading has not been observed. A local finish failure does not erase a remote `VERIFIED` result. The release-skill standalone marketplace is deprecated; use `ifoohoo/skill-family-hub` and `release-skill@skill-family-hub`.
36
+ This applies only to new Skill-led production preparation. Read-only and non-production paths, and approval, publish, reconcile, and formal verify for plans that are already frozen, gain no new TEST intake obligation. The direct non-interactive CLI continues to accept optional `testIntake`; no CLI argument, consent format, authentication, or state machine was added. Test results remain bound to the existing candidate and requirements contract. The release-skill standalone marketplace is deprecated; use `ifoohoo/skill-family-hub` and `release-skill@skill-family-hub`.
33
37
  <!-- release-skill:managed:end id=latest-release -->
34
38
 
35
39
  <!-- release-skill:capability:external-write-boundary -->
36
- > **Current boundary:** v0.9.35: this README records capabilities and verification boundaries;
40
+ > **Current boundary:** v0.9.37: this README records capabilities and verification boundaries;
37
41
  > it is not evidence of
38
42
  > publication, consumer-installation verification, or independent acceptance.
39
43
  > Release availability must be established from the corresponding release records
@@ -57,7 +61,7 @@ Use the updated `release-finish` entry from the public `release-skill@skill-fami
57
61
  > publish global preflight.
58
62
 
59
63
  <!-- release-skill:capability:safe-first-command -->
60
- > **Production path verified since the v0.1.1 milestone; for v0.9.35,
64
+ > **Production path verified since the v0.1.1 milestone; for v0.9.37,
61
65
  > publication, consumer-installation verification, and independent acceptance
62
66
  > require version-specific release records and verification results.**
63
67
  > The npm-installed CLI is the supported user entry. Source checkout
@@ -614,6 +618,17 @@ of the current plan digest. Replacing the result, criterion, scope, or allowed
614
618
  limitation invalidates the previous approval. Approve, publish, and reconcile
615
619
  re-check those originals before acting.
616
620
 
621
+ When a Skill starts a new production prepare, it checks intake first. If
622
+ intake is missing, it names the gap and default-pushes the existing wiring.
623
+ Skip is allowed only after this-round matching explicit consent. Silence,
624
+ refuse, generic publish preauthorization, and stale, other-project, version,
625
+ or scope-mismatched consent do not skip. A matching this-round reply is
626
+ reused. Skip is never described as tests already passed. Already-frozen
627
+ approve, publish, reconcile, and verify do not gain a new intake obligation.
628
+ Read-only, non-production, and delegated marketplace-only paths do not add
629
+ one. Direct non-interactive CLI still accepts optional `testIntake` with no
630
+ new choice flag.
631
+
617
632
  Use `release-skill post-release --finish` for the complete local finish. It
618
633
  always reports merge, host update, actual host loading, setup, and source-branch
619
634
  steps. Exit 0 means every applicable step completed or was explicitly skipped;
package/README.zh-CN.md CHANGED
@@ -2,32 +2,36 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.35 -->
5
+ <!-- release-skill:release-version: 0.9.37 -->
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.35** (2026-10-22)
11
+ **0.9.37** (2026-10-23)
12
12
 
13
- 0.9.35 修复 Qoder 收尾检查逻辑,使已安装的、使用有效 Claude 兼容清单的插件可通过检查;同时识别并阻止无效或冲突的候选清单。本发布说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。Foundation 依赖保持精确锁定为 `0.25.0`。
13
+ 0.9.37 修复单插件发布单元在冻结插件根为项目根目录时,安装文件写权限变化造成的验证误报,并在 Skill 发起新一轮生产准备前加入 TEST 接入选择。三个 Foundation 依赖均精确锁定为 0.25.0。本发布说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
14
14
 
15
15
  **安全**
16
16
 
17
- - 在写入宿主前重新核验冻结快照;既有批准、Hub 授权、路径收容与完整载荷边界检查机制保持不变。Foundation 依赖精确锁定为 `0.25.0`。Skill Family Hub 仍为统一市场,沿用 GitHub Git Data API,更新操作绑定已观察分支头并比较后写入(compare-and-swap)。部分发布不回滚、不覆盖已完成步骤、不自动强推;本轮未修改这些机制与远端授权。检查器不执行首次安装、新增市场或伪造清单,通用发布层级和其他宿主更新策略保持不变。
17
+ - 远端写入授权和发布批准保持不变。同意跳过 TEST 接入不等于发布批准。
18
+ - Skill Family Hub 是统一市场,更新采用 GitHub Git Data API,并以比较后写入绑定已观察的分支头;部分发布不回滚、不覆盖已完成步骤,也不 force-push。
19
+
20
+ **新增**
21
+
22
+ - Skill 启动新一轮生产准备前会核对 `testIntake`。缺少接线时,Skill 会引导项目通过现有的 `skill-family-test:skill-family-test-plan` 和 `skill-family-test:skill-family-test-run` 入口组织方案与检查,并交回实际结果。结果仍由原业务职责方判读;调用 TEST 或跳过接入都不表示测试已通过。跳过前必须明确征询,并取得适用于本轮且与项目、版本、范围匹配的同意。沉默、拒绝、一般发布预授权及过期或不匹配的同意都不能作为跳过依据;本轮匹配的答复可以复用。
18
23
 
19
24
  **修复**
20
25
 
21
- - 检查器分别读取冻结快照与已安装插件中的 `.qoder-plugin/plugin.json` 和 `.claude-plugin/plugin.json`。若原生 Qoder 清单不存在,可接受有效的 Claude 兼容清单;清单存在但无效时,不降级接受。当两份清单均存在时,`name`、`version`、`skills` 必须完全一致,否则验证失败。
22
- - 安装侧选定的清单及其相对路径与 `skills`,与冻结侧对应项进行比对,补上额外候选清单和所选路径变化的检查缺口。原有插件身份与完整载荷检查机制持续生效。
26
+ - 仅在单插件发布单元且冻结插件根为项目根目录的验证路径中,`verify` 比较已安装文件与冻结快照时忽略所有写权限位(`mode & ~0o222`)。冻结快照保留原始权限;文件内容、类型、大小、非写权限位、缺失或新增路径及冻结绑定仍严格检查。
23
27
 
24
28
  **升级说明**
25
29
 
26
- 使用 `release-skill@skill-family-hub` 提供的更新版 `release-finish` 入口,配合适用的冻结计划完成已有兼容插件的收尾。仅升级检查器无需重新发布该插件;若插件内容变更,仍需新冻结计划与匹配批准。`UPDATED` 或 `ALREADY_CURRENT` 仅表示安装载荷已通过检查,不表示运行中的宿主已加载。未观察到加载时,保留 `reload-pending` 状态。本机收尾失败不覆盖远端 `VERIFIED` 结果。旧版独立的 `release-skill` 市场已弃用,使用 `ifoohoo/skill-family-hub` 与 `release-skill@skill-family-hub`。
30
+ 本项只适用于由 Skill 开始的新一轮生产准备。只读、非生产路径,以及已有冻结计划的批准、发布、对账和正式验证不新增 TEST 接入义务。直接非交互 CLI 仍接受可选 `testIntake`;本版本未增加 CLI 参数、同意格式、认证或状态机。测试结果继续按既有合同绑定候选与要求。原独立的 `release-skill` 市场已弃用,请使用 `ifoohoo/skill-family-hub` 和 `release-skill@skill-family-hub`。
27
31
  <!-- release-skill:managed:end id=latest-release -->
28
32
 
29
33
  <!-- release-skill:capability:external-write-boundary -->
30
- > **当前边界:** v0.9.35 的能力范围与验证边界见本 README,
34
+ > **当前边界:** v0.9.37 的能力范围与验证边界见本 README,
31
35
  > 不代表已经发布、完成消费者安装验证或通过独立验收。
32
36
  > 版本可用性以对应发布记录及发布后验证结果为准。
33
37
  > v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
@@ -43,7 +47,7 @@ release-skill 帮助维护者回答三个问题:准备发布什么、还有哪
43
47
  > 远端唯一性检查在 `publish` 全局预检执行。
44
48
 
45
49
  <!-- release-skill:capability:safe-first-command -->
46
- > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.35 的发布、消费者安装验证和独立验收状态须由该版本的发布记录及验证结果确认。**
50
+ > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.37 的发布、消费者安装验证和独立验收状态须由该版本的发布记录及验证结果确认。**
47
51
  > npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
48
52
  >
49
53
  > **第一条命令:**
@@ -503,6 +507,8 @@ release-finish 在 `--root` 指定的当前发布项目根目录调用该入口
503
507
 
504
508
  可选的 `testIntake` 只声明要求文件和结果文件,并且只在生产 prepare 中生效。首次生产 prepare 保存一份非正式候选,返回 `NEEDS_INPUT`(`GATE_FAILED`,退出码 13),并给出 `candidatePath`、`candidateSha256` 和 `subjectDigest`,此时不写正式计划。用 `prepare --candidate <path>` 续接同一候选;适用的冻结前要求通过后才写入正式计划和 `PREPARED`。候选不能用于批准或发布,也不能清除 `PARTIAL`、`PUBLISHED` 或 `VERIFIED`。未声明 `testIntake` 的项目保持原有 hook、完整门和发布路径。docs、config、marketplace 工作流、单元选择和无需发布的配置都不免除项目级要求。非生产 prepare 拒绝 `testIntake`,错误码为 `CONFIG_INVALID`。可选的 `testAcceptance` 进入当前计划摘要。替换结果、准则、范围或允许的限制会使原批准失效。approve、publish 和 reconcile 在动作前复核这些原件。
505
509
 
510
+ 由 Skill 发起的新一轮生产准备先核对接入。缺失则说明缺项并默认推动现有接线;仅本轮适用且范围匹配的明确同意可跳过。沉默、拒绝、仅普通发布预授权、旧轮次、其他项目、版本或范围不匹配均不可跳过;本轮匹配答复可复用。不得把跳过写成测试已达标。已冻结计划的批准、发布、对账与正式验证不回头追加接入义务。只读、非生产及 marketplace-only 委托发布不新增接入义务。直接非交互 CLI 仍接受可选 `testIntake`,不新增选择参数。
511
+
506
512
  完整的本地收尾使用 `release-skill post-release --finish`。命令固定报告分支决定、宿主更新、实际加载、setup 和源码分支检查:全部适用步骤完成或明确跳过时退出 0,仍有待办时退出 2,确定失败时退出 1。智能体通过绝对路径的 `--finish-feedback` JSON 文件回传观察,文件必须绑定当前计划摘要、配置摘要和规范项目根目录。反馈只作为数据:脚本不执行其中字符串,也不把反馈当成新的写入授权。`--skip-local-hosts` 显示跳过宿主更新、加载和 setup,不得与 `--hosts` 或 `--update-local-hosts` 同时使用。
507
513
 
508
514
  `distributions` 是必填字段,但可以显式设为空数组。使用
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.35",
3
+ "version": "0.9.37",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"