release-skill 0.9.3 → 0.9.5

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 (79) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +58 -0
  7. package/INSTALL.md +2 -2
  8. package/INSTALL.zh-CN.md +2 -2
  9. package/README.md +52 -16
  10. package/README.zh-CN.md +46 -16
  11. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/consumer-contract-vectors.json +7 -7
  14. package/adapters/claude/bin/foundation-resource-binding.json +1 -1
  15. package/adapters/claude/bin/release-skill.bundle.mjs +1513 -352
  16. package/adapters/claude/schemas/release-plan.schema.json +36 -0
  17. package/adapters/claude/schemas/release-project.schema.json +31 -0
  18. package/adapters/claude/skills/release-finish/SKILL.md +5 -5
  19. package/adapters/claude/skills/release-help/SKILL.md +11 -4
  20. package/adapters/claude/skills/release-prepare/SKILL.md +11 -3
  21. package/adapters/claude/skills/release-verify/SKILL.md +2 -1
  22. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  23. package/adapters/codex/bin/consumer-contract-vectors.json +7 -7
  24. package/adapters/codex/bin/foundation-resource-binding.json +1 -1
  25. package/adapters/codex/bin/release-skill.bundle.mjs +1513 -352
  26. package/adapters/codex/schemas/release-plan.schema.json +36 -0
  27. package/adapters/codex/schemas/release-project.schema.json +31 -0
  28. package/adapters/codex/skills/release-finish/SKILL.md +5 -5
  29. package/adapters/codex/skills/release-help/SKILL.md +11 -4
  30. package/adapters/codex/skills/release-prepare/SKILL.md +11 -3
  31. package/adapters/codex/skills/release-verify/SKILL.md +2 -1
  32. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  33. package/adapters/kimi/bin/consumer-contract-vectors.json +7 -7
  34. package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
  35. package/adapters/kimi/bin/release-skill.bundle.mjs +1513 -352
  36. package/adapters/kimi/schemas/release-plan.schema.json +36 -0
  37. package/adapters/kimi/schemas/release-project.schema.json +31 -0
  38. package/adapters/kimi/skills/release-finish/SKILL.md +5 -5
  39. package/adapters/kimi/skills/release-help/SKILL.md +11 -4
  40. package/adapters/kimi/skills/release-prepare/SKILL.md +11 -3
  41. package/adapters/kimi/skills/release-verify/SKILL.md +2 -1
  42. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  43. package/adapters/workbuddy/bin/consumer-contract-vectors.json +7 -7
  44. package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
  45. package/adapters/workbuddy/bin/release-skill.bundle.mjs +1513 -352
  46. package/adapters/workbuddy/schemas/release-plan.schema.json +36 -0
  47. package/adapters/workbuddy/schemas/release-project.schema.json +31 -0
  48. package/adapters/workbuddy/skills/release-finish/SKILL.md +5 -5
  49. package/adapters/workbuddy/skills/release-help/SKILL.md +11 -4
  50. package/adapters/workbuddy/skills/release-prepare/SKILL.md +11 -3
  51. package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -1
  52. package/bin/consumer-contract-vectors.json +7 -7
  53. package/bin/foundation-resource-binding.json +1 -1
  54. package/bin/release-skill-cli.mjs +113 -22
  55. package/bin/release-skill.bundle.mjs +1513 -352
  56. package/package.json +4 -4
  57. package/platform-manifest.json +4 -4
  58. package/references/.render-manifest.json +4 -4
  59. package/references/01-state-machine.md +18 -0
  60. package/references/02-project-config.md +20 -0
  61. package/schemas/release-plan.schema.json +36 -0
  62. package/schemas/release-project.schema.json +31 -0
  63. package/skills/release-finish/SKILL.md +5 -5
  64. package/skills/release-help/SKILL.md +11 -4
  65. package/skills/release-prepare/SKILL.md +11 -3
  66. package/skills/release-verify/SKILL.md +2 -1
  67. package/skills-src/release-finish/SKILL.md +5 -5
  68. package/skills-src/release-help/SKILL.md +11 -4
  69. package/skills-src/release-prepare/SKILL.md +11 -3
  70. package/skills-src/release-verify/SKILL.md +2 -1
  71. package/src/commands/post-release-local.mjs +373 -26
  72. package/src/commands/prepare.mjs +361 -16
  73. package/src/commands/ship.mjs +190 -13
  74. package/src/commands/verify.mjs +175 -2
  75. package/src/core/foundation-plugin-verification.mjs +22 -2
  76. package/src/core/plan.mjs +45 -1
  77. package/src/platforms/registry.mjs +97 -0
  78. package/src/producers/foundation-resource-projection.mjs +3 -3
  79. package/src/readme/contract.mjs +23 -3
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.9.3",
12
+ "version": "0.9.5",
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.9.3",
3
+ "version": "0.9.5",
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.3",
3
+ "version": "0.9.5",
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.3",
3
+ "version": "0.9.5",
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.3.",
22
+ "Prepare a release plan for version 0.9.5.",
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.3",
3
+ "version": "0.9.5",
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,63 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.9.5 locale=en baseline=sha256:21c87f71244641b1819ee77ca067f65fd29caa64e42229184cd552b82829d86b -->
4
+ ## [0.9.5] - 2026-09-02
5
+
6
+ 0.9.5 is a local source candidate that closes the postVerify-to-local-finish lifecycle, recognizes the supported real host install commands, and tightens standalone-index marketplace identity checks. It consumes the three Foundation packages at the exact 0.16.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
7
+
8
+ ### Security
9
+
10
+ - Local finishing fails closed when the canonical plan or run evidence is missing, mismatched, incomplete, or not linked to the same VERIFIED lineage; host detection and host writes do not start on that path.
11
+ - Any host plan remains a qualified frozen-plan path and requires a VERIFIED-run from the same release lineage before host acceptance; this source candidate does not provide that acceptance.
12
+
13
+ ### Added
14
+
15
+ - Require completed postVerify evidence, including same-lineage VERIFIED data and every declared checkpoint, before any local host update is probed or executed. Incomplete postVerify evidence returns a bound `ship` continuation when state evidence is available.
16
+ - Add the explicit `manual-index-checkpoint` first-release bootstrap path for Claude and Codex standalone-index distributions. The plan binds the expected plugin identity and leaves the final marketplace index commit pending until verify observes the remote index.
17
+
18
+ ### Changed
19
+
20
+ - Recognize the supported real host install commands and environment boundaries separately for CodeBuddy and WorkBuddy; unsupported WorkBuddy platforms are reported without invoking a host command.
21
+ - Require first-release bootstrap plans to observe an empty plugin repository without the target tag or GitHub Release, then match the marketplace name and selected entry exactly before continuing.
22
+ - Preserve the complete selected marketplace entry metadata for ordinary non-bootstrap remote distributions while deriving verification identity only from the platform-owned fields.
23
+ - The CodeBuddy plugin declares `marketplace: release-skill`, and both release-finish local-finish examples pass `--root <project-root>`.
24
+ - Keep the narrow R-05 Hook cache v2 consumer path in the current 0.9.5 candidate; this does not add a broader Hook cache or host acceptance surface.
25
+
26
+ ### Upgrade Notes
27
+
28
+ Prepare a new 0.9.5 plan when adopting these changes. Complete postVerify with `ship` before running post-release when the checklist reports `COMPLETE_POST_VERIFY`. Real-host acceptance can begin only after 0.9.5 is officially published and VERIFIED; the official 0.9.5 entry must be installed or reloaded first. A source candidate, an older installed entry, or the mere existence of plan and run files cannot complete real-host acceptance. Each selected host must complete a first successful update. On the second run, Claude, Kimi, CodeBuddy, and WorkBuddy must report `ALREADY_CURRENT`; Codex may report `UPDATED` only when it reinstalls the same exact 0.9.5 frozen reference, payload validation passes, and `restartRequired=true` is declared. A first-release bootstrap uses `manual-index-checkpoint` only for Claude or Codex standalone-index distributions and requires a manual index checkpoint during verify; it does not add general standalone-index support. This source candidate does not provide real-host acceptance.
29
+ <!-- release-skill:changelog:end version=0.9.5 locale=en -->
30
+
31
+
32
+ <!-- release-skill:changelog:start version=0.9.4 locale=en baseline=sha256:bd122e1e4f28539503d3bdd702f73cbabc675dc7006f750cc38ff08544b72dc5 -->
33
+ ## [0.9.4] - 2026-09-01
34
+
35
+ 0.9.4 is a local source candidate that lets multi-unit projects freeze and approve an explicit safe release scope while deferring unrelated units. It consumes the three Foundation packages at the exact 0.16.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
36
+
37
+ ### Security
38
+
39
+ - Ship persists an explicit unit request only before plan freeze and rejects attempts to change it while resuming the same state. Once external writes begin, partial success remains `PARTIAL` and recovery stays forward-only within the original plan.
40
+ - Any host plan remains a qualified frozen-plan path and requires a VERIFIED-run before host acceptance; this source candidate does not provide that acceptance.
41
+
42
+ ### Added
43
+
44
+ - Add repeatable `--unit <id>` selection to prepare and the pre-freeze ship path. Successful explicit selection reports selected and deferred unit IDs plus the exact next prepare command for deferred units.
45
+ - Require an explicitly selected scope to include the complete existing `publicSourceAuthorityReceipt` dependency closure. The command reports missing units and stops before hooks, snapshots, or plan writes instead of expanding the scope automatically.
46
+
47
+ ### Changed
48
+
49
+ - Run unit-scoped document, version, snapshot, distribution, and verification-gate work only for selected units. Project configuration validation, generated-artifact freshness checks, and top-level hooks still cover the whole project.
50
+ - Keep `plan.units` as the only frozen release-scope authority. Publish, reconcile, verify, and distribute continue to consume the complete frozen plan and do not accept a new unit selector.
51
+ - Consume skill-family-contracts, skill-family-harness-node, and skill-family-engineering-kit at the exact 0.16.0 release through their public package-root APIs. The CodeBuddy plugin declares marketplace: release-skill, and both release-finish local-finish examples pass --root <project-root>.
52
+ - For CodeBuddy, treat only the closed plugin-management command set as eligible to consume complete read-only output when the CLI reports childExitCode 0 but leaves a residual process group; retain the Foundation anomaly and completed SIGTERM cleanup as observable facts, run each write command at most once, and require the final plugin version and commit to match exactly. This handling does not extend to WorkBuddy or change release status.
53
+ - Improve Kimi TUI prompt matching for ANSI boxed prompts and `>` characters in command output, so trust-and-install and reload prompts are recognized without treating ordinary output as an input prompt.
54
+
55
+ ### Upgrade Notes
56
+
57
+ Existing commands that omit `--unit` keep the full configured release scope. Multi-unit projects may repeat `--unit` on prepare or on a new ship state to defer unrelated units. Review `releaseScope.deferredUnitIds` and the approval summary before approving. A scope that touches `publicSourceAuthorityReceipt` must include its coordinator and every subject. Do not add `--unit` to publish, reconcile, verify, or distribute; those commands must execute the complete frozen plan. Real-host acceptance can begin only after 0.9.4 is officially published and VERIFIED; the official 0.9.4 entry must be installed or reloaded first. A source candidate, an older installed entry, or the mere existence of plan and run files cannot complete real-host acceptance. Each selected host must complete a first successful update. On the second run, Claude, Kimi, CodeBuddy, and WorkBuddy must report `ALREADY_CURRENT`; Codex may report `UPDATED` only when it reinstalls the same exact 0.9.4 frozen reference, payload validation passes, and `restartRequired=true` is declared.
58
+ <!-- release-skill:changelog:end version=0.9.4 locale=en -->
59
+
60
+
3
61
  <!-- release-skill:changelog:start version=0.9.3 locale=en baseline=sha256:96e5f9167abb13203ba308ebacbb081452f8c23e26ff0b377514556338ebdfff -->
4
62
  ## [0.9.3] - 2026-08-31
5
63
 
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.3 -->
5
+ <!-- release-skill:release-version: 0.9.5 -->
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.9.3
117
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.5
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.9.3 -->
5
+ <!-- release-skill:release-version: 0.9.5 -->
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.9.3
107
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.5
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.9.3 -->
5
+ <!-- release-skill:release-version: 0.9.5 -->
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,34 +14,35 @@ 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.3** (2026-08-31)
17
+ **0.9.5** (2026-09-02)
18
18
 
19
- 0.9.3 is a local source candidate for the four workflow safeguards and the narrow Hook cache v2 and isolated-install-tree integrations. It consumes the three Foundation packages at the exact 0.15.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
19
+ 0.9.5 is a local source candidate that closes the postVerify-to-local-finish lifecycle, recognizes the supported real host install commands, and tightens standalone-index marketplace identity checks. It consumes the three Foundation packages at the exact 0.16.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
20
20
 
21
21
  **Security**
22
22
 
23
- - Unknown, corrupt, non-stable, or unsupported observations remain fail-closed. A cache hit never replaces a Hook execution when the authority or identity evidence is unavailable, and no TTL or ambient PATH inference is used.
24
- - Any host plan remains a qualified frozen-plan path and requires a VERIFIED-run before host acceptance; this source candidate does not provide that acceptance.
23
+ - Local finishing fails closed when the canonical plan or run evidence is missing, mismatched, incomplete, or not linked to the same VERIFIED lineage; host detection and host writes do not start on that path.
24
+ - Any host plan remains a qualified frozen-plan path and requires a VERIFIED-run from the same release lineage before host acceptance; this source candidate does not provide that acceptance.
25
25
 
26
26
  **Added**
27
27
 
28
- - Add the opt-in pre-hook public-surface check, ship help and target-version conflict guard, verify lineage guidance, and evidence-based adoption suggestions without adding a new command, state, or approval authority.
29
- - Add the narrow Hook cache v2 consumer path: absolute-path and validated cwd-relative executable identity, closed input and environment binding, no TTL, and fail-closed cache reuse for bare PATH, PATHEXT, Windows, and unavailable observations while Hooks still execute cold.
30
- - Add the narrow isolated install-tree record path after a completed host command, recording host-added links without following them and rejecting declared-payload symlinks while preserving legacy full-tree semantics.
28
+ - Require completed postVerify evidence, including same-lineage VERIFIED data and every declared checkpoint, before any local host update is probed or executed. Incomplete postVerify evidence returns a bound `ship` continuation when state evidence is available.
29
+ - Add the explicit `manual-index-checkpoint` first-release bootstrap path for Claude and Codex standalone-index distributions. The plan binds the expected plugin identity and leaves the final marketplace index commit pending until verify observes the remote index.
31
30
 
32
31
  **Changed**
33
32
 
34
- - Consume skill-family-contracts, skill-family-harness-node, and skill-family-engineering-kit at the exact 0.15.0 release through their public package-root APIs.
35
- - Keep the 0.9.2 production plan PREPARED and immutable as an unpublished historical record now replaced by the 0.9.3 candidate; with an explicit target, only unfinished records that pass complete run, plan, digest/binding, and lineage validation and whose plan target matches participate in current recovery, while all other history remains diagnostics. Without a target, route still shows full-history diagnostics, but workflow selection remains based on the current diff and baseline.
36
- - The CodeBuddy plugin explicitly declares marketplace: release-skill, and both release-finish local-finish examples pass --root <project-root>.
33
+ - Recognize the supported real host install commands and environment boundaries separately for CodeBuddy and WorkBuddy; unsupported WorkBuddy platforms are reported without invoking a host command.
34
+ - Require first-release bootstrap plans to observe an empty plugin repository without the target tag or GitHub Release, then match the marketplace name and selected entry exactly before continuing.
35
+ - Preserve the complete selected marketplace entry metadata for ordinary non-bootstrap remote distributions while deriving verification identity only from the platform-owned fields.
36
+ - The CodeBuddy plugin declares `marketplace: release-skill`, and both release-finish local-finish examples pass `--root <project-root>`.
37
+ - Keep the narrow R-05 Hook cache v2 consumer path in the current 0.9.5 candidate; this does not add a broader Hook cache or host acceptance surface.
37
38
 
38
39
  **Upgrade Notes**
39
40
 
40
- Real-host acceptance can begin only after 0.9.3 is officially published and VERIFIED; the official 0.9.3 entry must be installed or reloaded first. A source candidate, an older installed entry, or the mere existence of plan and run files cannot complete real-host acceptance. Each selected host must complete a first successful update. On the second run, Claude, Kimi, CodeBuddy, and WorkBuddy must report `ALREADY_CURRENT`; Codex may report `UPDATED` only when it reinstalls the same exact 0.9.3 frozen reference, payload validation passes, and `restartRequired=true` is declared. The 0.9.2 plan was never published and remains an immutable historical record. With an explicit target, only unfinished records that pass complete run, plan, digest/binding, and lineage validation and whose plan target matches participate in current recovery; all other history remains diagnostics. Without a target, route still shows full-history diagnostics, but workflow selection remains based on the current diff and baseline.
41
+ Prepare a new 0.9.5 plan when adopting these changes. Complete postVerify with `ship` before running post-release when the checklist reports `COMPLETE_POST_VERIFY`. Real-host acceptance can begin only after 0.9.5 is officially published and VERIFIED; the official 0.9.5 entry must be installed or reloaded first. A source candidate, an older installed entry, or the mere existence of plan and run files cannot complete real-host acceptance. Each selected host must complete a first successful update. On the second run, Claude, Kimi, CodeBuddy, and WorkBuddy must report `ALREADY_CURRENT`; Codex may report `UPDATED` only when it reinstalls the same exact 0.9.5 frozen reference, payload validation passes, and `restartRequired=true` is declared. A first-release bootstrap uses `manual-index-checkpoint` only for Claude or Codex standalone-index distributions and requires a manual index checkpoint during verify; it does not add general standalone-index support. This source candidate does not provide real-host acceptance.
41
42
  <!-- release-skill:managed:end id=latest-release -->
42
43
 
43
44
  <!-- release-skill:capability:external-write-boundary -->
44
- > **Current boundary:** v0.9.3 is the current source candidate. This README
45
+ > **Current boundary:** v0.9.5 is the current source candidate. This README
45
46
  > records intended scope and verification boundaries; it is not evidence of
46
47
  > publication, consumer-installation verification, or independent acceptance.
47
48
  > Release availability must be established from the corresponding release records
@@ -65,7 +66,7 @@ Real-host acceptance can begin only after 0.9.3 is officially published and VERI
65
66
  > publish global preflight.
66
67
 
67
68
  <!-- release-skill:capability:safe-first-command -->
68
- > **Production path verified since the v0.1.1 milestone; v0.9.3 is the current
69
+ > **Production path verified since the v0.1.1 milestone; v0.9.5 is the current
69
70
  > source candidate. Its README does not establish publication,
70
71
  > consumer-installation verification, or independent acceptance.**
71
72
  > The npm-installed CLI is the supported user entry. Source checkout
@@ -94,12 +95,12 @@ checkpoints remain intact and use matching-version recovery. Evidence v1 stays
94
95
  read-only; v2 uses a closed top level with phase extensions in `details`.
95
96
  Summaries and recovery suggestions are diagnostic, never publication authority.
96
97
 
97
- The current 0.9.3 candidate includes the narrow R-05 Hook cache v2 consumer
98
+ The current 0.9.5 candidate includes the narrow R-05 Hook cache v2 consumer
98
99
  path and the stable isolated install-tree record path (A2/A3). It still
99
100
  excludes R-02 safe full-tree inventory, R-10 historical-release verification
100
101
  implementation, real Kimi/WorkBuddy public-marketplace installation and
101
102
  invocation gates, and an Audit public offline release-record verifier.
102
- Foundation dependencies are pinned to the three released 0.15.0 packages.
103
+ Foundation dependencies are pinned to the three released 0.16.0 packages.
103
104
  For new bundled-family Kimi/CodeBuddy plans, verify calls the released
104
105
  `runPluginVerification` entry with the complete frozen payload and records a
105
106
  minimal `install-only` observation receipt. Kimi maps to `kimi-code`; CodeBuddy
@@ -191,6 +192,37 @@ This scope summary is not a remote publication record or a consumer upgrade inst
191
192
 
192
193
  A release unit is a release object with independently configured version, public files, and distribution targets.
193
194
 
195
+ ### Selecting a release scope
196
+
197
+ Multi-unit projects can repeat `--unit <id>` before the plan is frozen. Omitting
198
+ the option keeps the existing full-scope behavior:
199
+
200
+ ```bash
201
+ release-skill prepare --root "$PROJECT" --offline \
202
+ --unit runtime --unit plugin --json
203
+ release-skill ship --root "$PROJECT" --target-version 1.2.3 \
204
+ --unit runtime --unit plugin --json
205
+ ```
206
+
207
+ The selected IDs are normalized to project configuration order. Unit-scoped
208
+ version, documentation, snapshot, distribution, and verification-gate work runs
209
+ only for that scope. Full configuration validation, generated-artifact freshness
210
+ checks, and top-level hooks still cover the whole project.
211
+
212
+ An explicit scope that includes any unit named by
213
+ `publicSourceAuthorityReceipt` must include its coordinator and every subject.
214
+ release-skill reports the missing units and stops before hooks or plan writes; it
215
+ does not expand the scope automatically. A successful explicit selection reports
216
+ `releaseScope.selectedUnitIds`, `releaseScope.deferredUnitIds`, and the exact next
217
+ prepare command for the deferred units.
218
+
219
+ After freeze, `plan.units` is the only release-scope authority. Approval covers
220
+ every action in that plan. `publish`, `reconcile`, `verify`, and `distribute` do
221
+ not accept `--unit`; a partial external write remains `PARTIAL` and resumes
222
+ forward within the same frozen plan. A resumed ship state may omit `--unit` and
223
+ reuse its saved request, but cannot change that request or add it to a legacy
224
+ full-scope state.
225
+
194
226
  ### Install
195
227
 
196
228
  - Node.js 22+, Git 2.30+, a target Git repository with at least one commit.
@@ -739,6 +771,10 @@ bundled-family CodeBuddy/WorkBuddy entry when the frozen tag and mutable branch
739
771
  both resolve to the frozen commit. It requires explicit user confirmation and
740
772
  does not change release status. Missing, standalone, inaccessible, or ambiguous
741
773
  CodeBuddy/WorkBuddy targets remain manual and receive no host mutation.
774
+ WorkBuddy local updates are macOS-only; on other platforms they are skipped as
775
+ unsupported. When a plan declares postVerify hooks, release-finish must receive
776
+ the completed postVerify run produced by `ship`, rather than the earlier verify
777
+ run. The core prepare, publish, and verify workflow remains cross-platform.
742
778
 
743
779
  A `codebuddy-plugin` distribution may optionally declare `marketplace` (and
744
780
  `marketplaceSource`, the URL consumers use to add the marketplace) to override
package/README.zh-CN.md CHANGED
@@ -2,40 +2,41 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.3 -->
5
+ <!-- release-skill:release-version: 0.9.5 -->
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.3** (2026-08-31)
11
+ **0.9.5** (2026-09-02)
12
12
 
13
- 0.9.3 是四项工作流安全修补、Hook cache v2 窄接线和稳定隔离安装树记录接线的本地源码候选。三项 Foundation 依赖均精确消费已发布的 0.15.0。本说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
13
+ 0.9.5 是当前本地源码候选,收口 postVerify 到本机收尾的生命周期,识别受支持的真实宿主安装命令,并收紧 standalone-index 市场索引的身份校验。三项 Foundation 依赖均精确消费已发布的 0.16.0。本说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
14
14
 
15
15
  **安全**
16
16
 
17
- - 未知、损坏、非稳定或不支持的观察结果继续失败关闭。权威或身份证据不足时,缓存命中不能替代 Hook 执行;不使用 TTL,也不从环境 PATH 推断可执行文件身份。
18
- - 任何宿主计划都必须是合格冻结计划,且宿主验收要求 VERIFIED run;本源码候选不提供该验收。
17
+ - canonical plan run 证据缺失、摘要不一致、内容不完整或未连接到同一 VERIFIED 谱系时,本机收尾会失败关闭;该路径不会开始宿主探测或写入。
18
+ - 任何宿主计划都必须是合格冻结计划,并要求同一发布谱系的 VERIFIED run 才能开始宿主验收;本源码候选不提供该验收。
19
19
 
20
20
  **新增**
21
21
 
22
- - 新增可选的 Hook 前公开表面检查、ship 帮助与目标版本冲突保护、verify 血缘提示和基于证据的接入建议,不增加新命令、状态或批准权威。
23
- - 新增窄范围 Hook cache v2 消费路径:支持绝对路径和经真实 cwd 校验的 cwd-relative executable identity,绑定封闭输入与环境,无 TTL;裸 PATH、PATHEXT、Windows 或观察不可用时仅禁止缓存复用,Hook 仍正常冷执行。
24
- - 新增宿主命令完成后的稳定隔离安装树记录路径:记录宿主附加链接但不跟随;声明载荷中的 symlink 仍失败关闭,同时保留 legacy 全树语义。
22
+ - 本机更新前必须先取得同一发布谱系的 VERIFIED 证据,并逐项完成所有已声明 checkpoint;postVerify 尚未完成时不会探测或执行宿主。本机状态证据可用时,待处理路径会返回带绑定信息的 `ship` 续接命令。
23
+ - Claude Codex standalone-index 分发新增显式 `manual-index-checkpoint` 首发引导路径。计划会绑定预期插件身份,并把最终市场索引提交留到 verify 观察远端索引后确定。
25
24
 
26
25
  **变更**
27
26
 
28
- - 通过公开包根 API 精确消费 skill-family-contracts、skill-family-harness-node skill-family-engineering-kit 0.15.0。
29
- - 保留从未发布的 0.9.2 production plan 作为不可变历史记录;它已由 0.9.3 候选取代。显式传入目标时,只有完整通过 run、plan、digest/binding lineage 校验且计划目标匹配的未完成记录,才参与当前恢复;其他历史仅保留为 diagnostics。未传目标时仍展示全历史 diagnostics,但 workflow 始终按当前 diff 和 baseline 选择,历史不能覆盖工作流。
30
- - CodeBuddy plugin 显式声明 marketplace: release-skill,两个 release-finish local-finish 示例都显式传入 --root <project-root>。
27
+ - 分别识别 CodeBuddy WorkBuddy 支持的真实宿主安装命令和环境边界;在不支持 WorkBuddy 的平台上只报告跳过状态,不调用宿主命令。
28
+ - 首发引导计划必须确认插件仓库为空、目标 tagGitHub Release 均不存在,再严格匹配市场名称与选定条目后继续。
29
+ - 普通非 bootstrap 远端分发保留完整的市场条目元数据;身份校验只取平台自有字段生成。
30
+ - CodeBuddy 插件显式声明 `marketplace: release-skill`;两个 release-finish 本机收尾示例都传入 `--root <project-root>`。
31
+ - 当前 0.9.5 候选保留窄范围的 R-05 Hook cache v2 消费路径;本版不扩大 Hook cache 或宿主验收范围。
31
32
 
32
33
  **升级说明**
33
34
 
34
- 只有 0.9.3 正式发布并达到 VERIFIED,且先安装或重载正式的 0.9.3 入口,才能开始真实宿主验收。源码候选、旧的已安装入口或仅存在计划和运行文件都不能完成真实宿主验收。每个选定宿主都须首次成功更新。第二次运行时,Claude、Kimi、CodeBuddy 和 WorkBuddy 必须返回 `ALREADY_CURRENT`;Codex 可以返回 `UPDATED`,但仅当再次安装同一精确 0.9.3 冻结引用、载荷验证通过且声明 `restartRequired=true`。0.9.2 计划从未发布,作为不可变历史记录保留并已由 0.9.3 候选取代。显式传入目标时,只有完整通过 run、plan、digest/binding lineage 校验且计划目标匹配的未完成记录,才参与当前恢复;其他历史仅保留为 diagnostics。未传目标时仍展示全历史 diagnostics,但 workflow 始终按当前 diff 和 baseline 选择,历史不能覆盖工作流。
35
+ 采用这些改动时请重新准备 0.9.5 计划。清单返回 `COMPLETE_POST_VERIFY` 时,先用 `ship` 完成 postVerify,再运行 post-release。只有 0.9.5 正式发布并达到 VERIFIED,才能开始真实宿主验收;必须先安装或重载正式的 0.9.5 入口。源码候选、旧的已安装入口,或仅存在计划和运行文件,都不能完成真实宿主验收。每个选定宿主都必须先完成首次成功更新。第二次运行时,Claude、Kimi、CodeBuddy 和 WorkBuddy 必须返回 `ALREADY_CURRENT`;Codex 可以使用 `UPDATED`,但只有在重新安装同一精确 0.9.5 冻结引用、载荷验证通过并声明 `restartRequired=true` 时才允许这样返回。首发引导只适用于 Claude Codex standalone-index 分发,并使用 `manual-index-checkpoint`;verify 期间必须完成一次人工索引检查,当前版本不扩展 standalone-index 的通用支持。本源码候选不提供真实宿主验收。
35
36
  <!-- release-skill:managed:end id=latest-release -->
36
37
 
37
38
  <!-- release-skill:capability:external-write-boundary -->
38
- > **当前边界:** v0.9.3 只是当前源码候选。本 README 记录预期范围与验证边界,
39
+ > **当前边界:** v0.9.5 只是当前源码候选。本 README 记录预期范围与验证边界,
39
40
  > 不代表已经发布、完成消费者安装验证或通过独立验收。
40
41
  > 版本可用性以对应发布记录及发布后验证结果为准。
41
42
  > v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
@@ -51,7 +52,7 @@ release-skill 帮助维护者回答三个问题:准备发布什么、还有哪
51
52
  > 远端唯一性检查在 `publish` 全局预检执行。
52
53
 
53
54
  <!-- release-skill:capability:safe-first-command -->
54
- > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.3 是当前源码候选,本 README 不证明该候选已经发布、完成消费者安装验证或通过独立验收。**
55
+ > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.5 是当前源码候选,本 README 不证明该候选已经发布、完成消费者安装验证或通过独立验收。**
55
56
  > npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
56
57
  >
57
58
  > **第一条命令:**
@@ -69,9 +70,9 @@ marketplace 委托目标工作区发布的边界不变。
69
70
 
70
71
  旧 production 计划缺少 `sourceAuthority` 时,在外部写入前拒绝。未发生外部写入的计划必须重新 prepare 并批准新摘要,不能补写旧计划或迁移批准。已有 `PARTIAL` 保留检查点,走匹配版本的恢复路径。evidence v1 只读;v2 顶层封闭,阶段扩展放在 `details`。摘要和恢复建议只作诊断,不构成发布权威。
71
72
 
72
- 当前 0.9.3 候选包含窄范围的 R-05 Hook cache v2 消费路径和稳定隔离安装树记录路径(A2/A3)。当前仍不包含 R-02 安全整树盘点、R-10 历史发布验证的产品实现、真实 Kimi/WorkBuddy 公开市场安装与调用门禁或 Audit 公开离线发布记录验证器。本范围说明不构成远端发布记录或消费者升级指引。
73
+ 当前 0.9.5 候选包含窄范围的 R-05 Hook cache v2 消费路径和稳定隔离安装树记录路径(A2/A3)。当前仍不包含 R-02 安全整树盘点、R-10 历史发布验证的产品实现、真实 Kimi/WorkBuddy 公开市场安装与调用门禁或 Audit 公开离线发布记录验证器。本范围说明不构成远端发布记录或消费者升级指引。
73
74
 
74
- Foundation 三包精确依赖已发布的 0.15.0。新生成的 Kimi/CodeBuddy 同仓计划在 verify 阶段调用正式 `runPluginVerification`,把完整冻结载荷交给 Foundation,并记录最小的 `install-only` 观察收据。Kimi 映射为 `kimi-code`,CodeBuddy 映射为兼容的 `workbuddy`。`observed` 与 `payloadMatches` 只表示机制观察结果,不代表远端已发布或 release-skill 已完成领域验证。独立市场来源、真实市场安装和宿主调用仍是人工后续任务。
75
+ Foundation 三包精确依赖已发布的 0.16.0。新生成的 Kimi/CodeBuddy 同仓计划在 verify 阶段调用正式 `runPluginVerification`,把完整冻结载荷交给 Foundation,并记录最小的 `install-only` 观察收据。Kimi 映射为 `kimi-code`,CodeBuddy 映射为兼容的 `workbuddy`。`observed` 与 `payloadMatches` 只表示机制观察结果,不代表远端已发布或 release-skill 已完成领域验证。独立市场来源、真实市场安装和宿主调用仍是人工后续任务。
75
76
 
76
77
  <!-- release-skill:maturity:distribute-v1 -->
77
78
  <!-- release-skill:capability:distribute -->
@@ -145,6 +146,32 @@ Foundation 三包精确依赖已发布的 0.15.0。新生成的 Kimi/CodeBuddy
145
146
 
146
147
  发布单元是独立配置版本、公开文件和分发目标的发布对象。
147
148
 
149
+ ### 选择本轮发布范围
150
+
151
+ 多发布单元项目可以在计划冻结前重复传入 `--unit <id>`。不传该参数时,继续选择
152
+ 配置中的全部单元:
153
+
154
+ ```bash
155
+ release-skill prepare --root "$PROJECT" --offline \
156
+ --unit runtime --unit plugin --json
157
+ release-skill ship --root "$PROJECT" --target-version 1.2.3 \
158
+ --unit runtime --unit plugin --json
159
+ ```
160
+
161
+ 命令会按项目配置顺序整理单元 ID。版本、发布文档、快照、分发和按单元绑定的验证门
162
+ 只处理选中范围;完整配置校验、生成物新鲜度检查和顶层 Hook 仍覆盖整个项目。
163
+
164
+ 显式范围只要包含 `publicSourceAuthorityReceipt` 声明的任一单元,就必须同时包含
165
+ coordinator 和全部 subjects。release-skill 会列出缺少的单元,并在 Hook 或计划写入前
166
+ 停止,不会自动扩大范围。选择成功后,`releaseScope.selectedUnitIds` 和
167
+ `releaseScope.deferredUnitIds` 分别列出本轮单元与延期单元;返回结果还会给出下一次
168
+ 准备延期单元的精确命令。
169
+
170
+ 计划冻结后,`plan.units` 是唯一发布范围权威,批准覆盖计划内的全部动作。
171
+ `publish`、`reconcile`、`verify` 和 `distribute` 不接受 `--unit`。外部写入部分成功时
172
+ 仍进入 `PARTIAL`,只能在同一冻结计划内向前恢复。恢复已有 ship 状态时可以省略
173
+ `--unit` 并沿用首次请求,但不能改变该请求,也不能给旧的全范围状态追加该参数。
174
+
148
175
  ### 安装
149
176
 
150
177
  - Node.js 22+、Git 2.30+、至少已有一个提交的目标 Git 仓库。
@@ -626,6 +653,9 @@ release-skill ship --root "$PROJECT" --hook-approval "$HOOK_APPROVAL_PATH" --jso
626
653
  对于已有的 bundled-family CodeBuddy/WorkBuddy 条目,只有冻结标签与可变分支都解析到
627
654
  冻结提交时才允许更新。该流程要求用户明确同意,且不改变发布状态。目标缺失、使用
628
655
  standalone 来源、远端不可访问或身份含糊时仍转人工处理,不修改宿主。
656
+ WorkBuddy 本机更新仅支持 macOS;其他平台返回不支持并跳过。计划声明 postVerify hook 时,
657
+ release-finish 必须接收 `ship` 产出的已完成 postVerify run,不能直接使用较早的
658
+ verify run;核心 prepare、publish、verify 流程仍跨平台。
629
659
 
630
660
  `codebuddy-plugin` 分发可以可选地声明 `marketplace`(以及 `marketplaceSource`,即消费者添加市场所用的 URL)来覆盖默认统一市场 `artifact-skill-set`;未声明的分发保持默认值,冻结计划字节不变。
631
661
 
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.9.3",
12
+ "version": "0.9.5",
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.9.3",
3
+ "version": "0.9.5",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "skill-family.contracts.consumer-contract-vectors",
4
- "foundationVersion": "0.15.0",
4
+ "foundationVersion": "0.16.0",
5
5
  "sets": [
6
6
  {
7
7
  "capabilityId": "foundation.contracts.object-validation",
@@ -15,7 +15,7 @@
15
15
  "vectorId": "foundation.contracts.object-validation.consumer-v1.indeterminate",
16
16
  "vectorSetId": "foundation.contracts.object-validation.consumer-v1",
17
17
  "capabilityId": "foundation.contracts.object-validation",
18
- "foundationVersion": "0.15.0",
18
+ "foundationVersion": "0.16.0",
19
19
  "contractId": "skill-family-contracts:validateDocument",
20
20
  "caseClass": "indeterminate",
21
21
  "strategy": "real-pure",
@@ -31,7 +31,7 @@
31
31
  "vectorId": "foundation.contracts.object-validation.consumer-v1.negative",
32
32
  "vectorSetId": "foundation.contracts.object-validation.consumer-v1",
33
33
  "capabilityId": "foundation.contracts.object-validation",
34
- "foundationVersion": "0.15.0",
34
+ "foundationVersion": "0.16.0",
35
35
  "contractId": "skill-family-contracts:validateDocument",
36
36
  "caseClass": "negative",
37
37
  "strategy": "real-pure",
@@ -47,7 +47,7 @@
47
47
  "vectorId": "foundation.contracts.object-validation.consumer-v1.positive",
48
48
  "vectorSetId": "foundation.contracts.object-validation.consumer-v1",
49
49
  "capabilityId": "foundation.contracts.object-validation",
50
- "foundationVersion": "0.15.0",
50
+ "foundationVersion": "0.16.0",
51
51
  "contractId": "skill-family-contracts:validateDocument",
52
52
  "caseClass": "positive",
53
53
  "strategy": "real-pure",
@@ -71,7 +71,7 @@
71
71
  "vectorId": "foundation.harness.atomic-write.consumer-v1.indeterminate",
72
72
  "vectorSetId": "foundation.harness.atomic-write.consumer-v1",
73
73
  "capabilityId": "foundation.harness.atomic-write",
74
- "foundationVersion": "0.15.0",
74
+ "foundationVersion": "0.16.0",
75
75
  "contractId": "skill-family-harness-node:writeFileAtomic",
76
76
  "caseClass": "indeterminate",
77
77
  "strategy": "official-fake",
@@ -84,7 +84,7 @@
84
84
  "vectorId": "foundation.harness.atomic-write.consumer-v1.negative",
85
85
  "vectorSetId": "foundation.harness.atomic-write.consumer-v1",
86
86
  "capabilityId": "foundation.harness.atomic-write",
87
- "foundationVersion": "0.15.0",
87
+ "foundationVersion": "0.16.0",
88
88
  "contractId": "skill-family-harness-node:writeFileAtomic",
89
89
  "caseClass": "negative",
90
90
  "strategy": "official-fake",
@@ -97,7 +97,7 @@
97
97
  "vectorId": "foundation.harness.atomic-write.consumer-v1.positive",
98
98
  "vectorSetId": "foundation.harness.atomic-write.consumer-v1",
99
99
  "capabilityId": "foundation.harness.atomic-write",
100
- "foundationVersion": "0.15.0",
100
+ "foundationVersion": "0.16.0",
101
101
  "contractId": "skill-family-harness-node:writeFileAtomic",
102
102
  "caseClass": "positive",
103
103
  "strategy": "official-fake",