release-skill 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +10 -0
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +14 -0
  7. package/INSTALL.md +24 -4
  8. package/INSTALL.zh-CN.md +22 -4
  9. package/README.md +15 -13
  10. package/README.zh-CN.md +10 -13
  11. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/release-skill.bundle.mjs +1 -1
  14. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  15. package/adapters/codex/bin/release-skill.bundle.mjs +1 -1
  16. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  17. package/adapters/kimi/bin/release-skill.bundle.mjs +1 -1
  18. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +10 -0
  19. package/adapters/workbuddy/bin/release-skill.bundle.mjs +85363 -0
  20. package/adapters/workbuddy/bin/release-skill.mjs +54 -0
  21. package/adapters/workbuddy/native/safe-write/binding.gyp +41 -0
  22. package/adapters/workbuddy/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  23. package/adapters/workbuddy/native/safe-write/prebuilds.json +24 -0
  24. package/adapters/workbuddy/native/safe-write/src/safe_write.cc +2032 -0
  25. package/adapters/workbuddy/schemas/.render-manifest.json +37 -0
  26. package/adapters/workbuddy/schemas/approval-record.schema.json +115 -0
  27. package/adapters/workbuddy/schemas/artifact-lock.schema.json +111 -0
  28. package/adapters/workbuddy/schemas/artifact-plan.schema.json +52 -0
  29. package/adapters/workbuddy/schemas/artifact-policy.schema.json +76 -0
  30. package/adapters/workbuddy/schemas/evidence-event.schema.json +89 -0
  31. package/adapters/workbuddy/schemas/release-plan.schema.json +882 -0
  32. package/adapters/workbuddy/schemas/release-project.schema.json +909 -0
  33. package/adapters/workbuddy/schemas/release-run.schema.json +343 -0
  34. package/adapters/workbuddy/skills/release-assess/SKILL.md +51 -0
  35. package/adapters/workbuddy/skills/release-help/SKILL.md +77 -0
  36. package/adapters/workbuddy/skills/release-prepare/SKILL.md +92 -0
  37. package/adapters/workbuddy/skills/release-publish/SKILL.md +57 -0
  38. package/adapters/workbuddy/skills/release-reconcile/SKILL.md +73 -0
  39. package/adapters/workbuddy/skills/release-setup/SKILL.md +95 -0
  40. package/adapters/workbuddy/skills/release-verify/SKILL.md +70 -0
  41. package/bin/release-skill.bundle.mjs +1 -1
  42. package/package.json +2 -1
  43. package/references/06-adapter-contract.md +1 -1
  44. package/scripts/sync-public-files.mjs +21 -2
  45. package/src/producers/build-adapters.mjs +38 -4
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.2.0",
12
+ "version": "0.2.1",
13
13
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification"
14
14
  }
15
15
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "release-skill",
3
+ "version": "0.2.1",
4
+ "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
+ "author": {
6
+ "name": "广州市风荷科技有限公司"
7
+ },
8
+ "license": "MIT",
9
+ "skills": "./adapters/workbuddy/skills/"
10
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
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.2.0.",
22
+ "Prepare a release plan for version 0.2.1.",
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.2.0",
3
+ "version": "0.2.1",
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,19 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.2.1 locale=en baseline=sha256:7d616df824b1d28f9939ef181d6a5d5928d3e0f0455974bebb356c742992ac81 -->
4
+ ## [0.2.1] - 2026-07-25
5
+
6
+ v0.2.1 adds a fourth platform adapter — workbuddy (CodeBuddy/WorkBuddy plugin) — using a build-only distribution model. The build-adapters generator and platform registry now register workbuddy alongside claude, codex, and kimi, producing a self-contained adapter directory at `adapters/workbuddy/` with a `.codebuddy-plugin/plugin.json` manifest, bundled CLI entry, native prebuilds, schemas, and skills. The sync-public-files and sync-version scripts cover the new manifest, and the adapter-contract standard documents build-only distribution. README and INSTALL (en + zh-CN) register the CodeBuddy installation entry. Installation is manual — the automated marketplace install checkpoint does not cover CodeBuddy yet.
7
+
8
+ ### Added
9
+
10
+ - **WorkBuddy/CodeBuddy build-only distribution adapter**: new fourth platform adapter `workbuddy` registered in the platform registry and build-adapters generator. The generated self-contained adapter directory (`adapters/workbuddy/`) ships a `.codebuddy-plugin/plugin.json` manifest, a bundled CLI entry (`bin/release-skill.bundle.mjs`), native safe-write prebuilds, JSON schemas, and the full skill set. Skills resolve the CLI entry via `${CODEBUDDY_PLUGIN_ROOT}`, which CodeBuddy expands inline.
11
+ - **Build-only distribution model in adapter-contract standard**: both the parent `standards/06-adapter-contract.md` and the public `references/06-adapter-contract.md` now document the build-only distribution scope — the adapter is generated and self-contained, installation is manual, and the automated preflight/execute/observe/verify marketplace checkpoint is not yet wired for CodeBuddy.
12
+ - **sync-public-files and sync-version coverage for `.codebuddy-plugin`**: the `sync-public-files.mjs` script now validates the `.codebuddy-plugin/plugin.json` manifest as a public asset, and `sync-version.mjs` propagates the package version into it. The build-adapters generator produces workbuddy artifacts alongside the existing three platforms.
13
+ - **README and INSTALL registration (en + zh-CN)**: all four public documents (README.md, README.zh-CN.md, INSTALL.md, INSTALL.zh-CN.md) now list the CodeBuddy/WorkBuddy adapter, its manual installation path, and the scope limitation that the automated marketplace install checkpoint does not yet cover CodeBuddy.
14
+ <!-- release-skill:changelog:end version=0.2.1 locale=en -->
15
+
16
+
3
17
  <!-- release-skill:changelog:start version=0.2.0 locale=en baseline=sha256:cc9236e620cdb2d9eef6fede00c54095bf0cc0ccdfeb9c1e584f063ff3af7e23 -->
4
18
  ## [0.2.0] - 2026-07-25
5
19
 
package/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.2.0 -->
5
+ <!-- release-skill:release-version: 0.2.1 -->
6
6
  ## Prerequisites
7
7
 
8
8
  - Node.js 22.0.0 or later
@@ -68,7 +68,7 @@ as a version-pinned **manual** install plus trusted observation/attestation:
68
68
  default branch), confirm the trust prompt, then reload:
69
69
 
70
70
  ```
71
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.0
71
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.1
72
72
  /plugins reload
73
73
  ```
74
74
 
@@ -83,10 +83,10 @@ as a version-pinned **manual** install plus trusted observation/attestation:
83
83
  {
84
84
  "consumer": "kimi",
85
85
  "plugin": "release-skill",
86
- "version": "0.2.0",
86
+ "version": "0.2.1",
87
87
  "entrySkill": "release-help",
88
88
  "repo": "ifoohoo/release-skill",
89
- "ref": "release-skill-v0.2.0",
89
+ "ref": "release-skill-v0.2.1",
90
90
  "installPath": "<kimiCodeHome>/plugins/managed/release-skill",
91
91
  "planDigest": "<64-hex frozen plan digest>",
92
92
  "payloadDigest": "<64-hex frozen snapshot payload digest>",
@@ -106,6 +106,26 @@ attested `installPath` must resolve inside the requirement's isolated
106
106
  `KIMI_CODE_HOME` managed root, otherwise verification fails closed and the Kimi
107
107
  unit never reaches `VERIFIED`.
108
108
 
109
+ ## Install as a CodeBuddy/WorkBuddy plugin
110
+
111
+ The package also ships a generated, self-contained CodeBuddy/WorkBuddy adapter
112
+ at `adapters/workbuddy/`, next to `adapters/claude/`, `adapters/codex/`, and
113
+ `adapters/kimi/`. Its manifest lives at `.codebuddy-plugin/plugin.json` (the
114
+ components — `skills/`, `bin/`, `schemas/`, `native/` — sit at the plugin
115
+ root, per the CodeBuddy plugin reference), and its skills resolve the CLI
116
+ entry via `${CODEBUDDY_PLUGIN_ROOT}`, which CodeBuddy expands inline like
117
+ Claude Code expands `${CLAUDE_PLUGIN_ROOT}`.
118
+
119
+ CodeBuddy/WorkBuddy installation is a **manual** step today: the automated
120
+ marketplace install checkpoint (`publish`/`verify`) does not cover CodeBuddy
121
+ yet. To use the adapter, point CodeBuddy at the generated plugin directory —
122
+ for a single session run CodeBuddy with `--plugin-dir <path>/adapters/workbuddy`,
123
+ or add the directory as a marketplace source you control
124
+ (`codebuddy plugin marketplace add <source>`) and install from it
125
+ (`codebuddy plugin install release-skill@<marketplace>`, or the interactive
126
+ `/plugin` manager). The installed copy lands in CodeBuddy's versioned plugin
127
+ cache; the adapter never references files outside its own directory.
128
+
109
129
  ## Development Install (Local Checkout)
110
130
 
111
131
  For development or when working from source:
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.2.0 -->
5
+ <!-- release-skill:release-version: 0.2.1 -->
6
6
  ## 前置条件
7
7
 
8
8
  - Node.js 22.0.0 或更高版本
@@ -62,7 +62,7 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
62
62
  它会安装最新 release 或默认分支),确认信任提示后重新加载:
63
63
 
64
64
  ```
65
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.0
65
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.1
66
66
  /plugins reload
67
67
  ```
68
68
 
@@ -76,10 +76,10 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
76
76
  {
77
77
  "consumer": "kimi",
78
78
  "plugin": "release-skill",
79
- "version": "0.2.0",
79
+ "version": "0.2.1",
80
80
  "entrySkill": "release-help",
81
81
  "repo": "ifoohoo/release-skill",
82
- "ref": "release-skill-v0.2.0",
82
+ "ref": "release-skill-v0.2.1",
83
83
  "installPath": "<kimiCodeHome>/plugins/managed/release-skill",
84
84
  "planDigest": "<64 位十六进制冻结计划摘要>",
85
85
  "payloadDigest": "<64 位十六进制冻结快照载荷摘要>",
@@ -98,6 +98,24 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
98
98
  必须解析到 requirement 给出的隔离 `KIMI_CODE_HOME` managed 根之内,否则验证
99
99
  失败关闭,Kimi 单元绝不进入 `VERIFIED`。
100
100
 
101
+ ## 安装为 CodeBuddy/WorkBuddy 插件
102
+
103
+ 本包还随 `adapters/claude/`、`adapters/codex/`、`adapters/kimi/` 一并提供生成的
104
+ 自包含 CodeBuddy/WorkBuddy 适配器 `adapters/workbuddy/`。其清单位于
105
+ `.codebuddy-plugin/plugin.json`(组件——`skills/`、`bin/`、`schemas/`、
106
+ `native/`——按 CodeBuddy 插件规范位于插件根目录),技能通过
107
+ `${CODEBUDDY_PLUGIN_ROOT}` 解析 CLI 入口;CodeBuddy 会像 Claude Code 展开
108
+ `${CLAUDE_PLUGIN_ROOT}` 一样内联展开该变量。
109
+
110
+ CodeBuddy/WorkBuddy 安装目前是**手动**步骤:自动化 marketplace 安装检查点
111
+ (`publish`/`verify`)尚未覆盖 CodeBuddy。使用该适配器时,把 CodeBuddy 指向
112
+ 生成的插件目录——单会话可用 `--plugin-dir <path>/adapters/workbuddy` 启动
113
+ CodeBuddy;或把该目录作为你控制的 marketplace 源
114
+ (`codebuddy plugin marketplace add <source>`)再从中安装
115
+ (`codebuddy plugin install release-skill@<marketplace>`,或交互式 `/plugin`
116
+ 管理器)。安装后的副本落在 CodeBuddy 的版本化插件缓存中;适配器不引用自身
117
+ 目录之外的任何文件。
118
+
101
119
  ## 开发安装(本地源码)
102
120
 
103
121
  用于开发或尚未公开发布的源码候选:
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.2.0 -->
5
+ <!-- release-skill:release-version: 0.2.1 -->
6
6
  Release preparation for Claude Code, 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,
@@ -11,25 +11,20 @@ reviewed artifacts first and publishes those same artifacts later; it does not
11
11
  regenerate a README or re-pack the live workspace at the last step.
12
12
 
13
13
  <!-- release-skill:managed:start id=latest-release -->
14
- **0.2.0** (2026-07-25)
14
+ **0.2.1** (2026-07-25)
15
15
 
16
- v0.2.0 is a hardening release that improves publish reliability, digest reproducibility, version management, and platform registry data-driven architecture. Nine hardening tasks are completed: observe retry backoff, digest decoupling with planVersion 2, declared-manifest payload contract, single-source versioning, real CLI contract tests, incremental hook caching, tiered parallel checkpoint execution, observe-before-execute idempotent skip, and platform registry data-driven architecture. The npm package name (`release-skill`), publishing identity (`publisher: mzdbxqh`), public repository (`ifoohoo/release-skill`), and corporate maintainer remain unchanged.
16
+ v0.2.1 adds a fourth platform adapter workbuddy (CodeBuddy/WorkBuddy plugin) using a build-only distribution model. The build-adapters generator and platform registry now register workbuddy alongside claude, codex, and kimi, producing a self-contained adapter directory at `adapters/workbuddy/` with a `.codebuddy-plugin/plugin.json` manifest, bundled CLI entry, native prebuilds, schemas, and skills. The sync-public-files and sync-version scripts cover the new manifest, and the adapter-contract standard documents build-only distribution. README and INSTALL (en + zh-CN) register the CodeBuddy installation entry. Installation is manual the automated marketplace install checkpoint does not cover CodeBuddy yet.
17
17
 
18
18
  **Added**
19
19
 
20
- - **Observe retry backoff (`observeWithRetry`)**: post-execute observe in publish/reconcile now uses bounded exponential backoff for transient failures. Transient classification is propagating retries only on transient errors (network timeouts, 5xx); CONFLICTING errors are never retried. Marketplace retry window is clamped to action `timeoutMs`. This resolves intermittent PARTIAL failures caused by transient observe timeouts on real networks.
21
- - **Digest decoupling with planVersion 2**: plan fields split into binding layer (frozen artifacts, actions, versions, config) vs record layer (baseline, createdAt, status). Frozen commit timestamp derived from `headCommit` for reproducible digests. Approval no longer invalidated by tree/workspace digest drift (v2 plans); baseline check demoted to evidence warning. v1 legacy behavior preserved byte-for-byte (golden-value tested).
22
- - **Declared-manifest payload contract for marketplace installs**: replace whole-tree byte equality with declared-manifest comparison. Authority entries must exist and match byte-for-byte in the install dir; host-added files are recorded (`extraInstalledPaths`, capped) instead of failing. Legacy plans without `payloadContract` keep exact whole-tree semantics. `consumerTransportExclusions` deprecated (legacy path only).
23
- - **Single-source versioning with `sync-version` script**: `package.json` version is now the sole handwritten source. New `sync-version.mjs` propagates it to plugin manifests, marketplace.json, README boundary lines, and INSTALL docs (idempotent, `--check` mode, defensive whitelist). `smokeExpectedJson.version` is injected at runtime from `targetVersion`, ending the bump-invalidates-plan loop. docs hook now runs `check-docs-drift.mjs` (render check + sync-version check). Hardcoded version literals in tests replaced with dynamic reads.
24
- - **Real CLI contract tests for claude/codex/kimi adapters**: isolated-HOME contract tests asserting adapter assumptions against real CLI protocol shapes (`list --json` output forms, subcommand existence), gated by `RELEASE_SKILL_LIVE_CLI=1` with skip-not-fail semantics. Static contract locks in 'kimi has no scriptable install' to prevent fabricated CLI commands from regressing silently.
25
- - **Incremental hook caching for prepare**: hooks can declare `cacheable`+`cacheInputs`; results cached under `.release-skill/cache/hooks/<name>/<key>.json` keyed by hook config and input content hashes. Failures never cached; hits skip execution but not authorization gates; `--no-hook-cache` escape hatch. Cache dir registered in baseline control-plane exclusions and gitignore. test/typecheck hooks cached in this project: second prepare drops to ~2s with test hook served from cache.
26
- - **Tiered parallel checkpoint execution for publish**: publish checkpoints grouped into hard-coded `TIER_TABLE` layers. Layers run sequentially, actions within a layer run concurrently with `allSettled` semantics (no fail-fast, successes preserved). State persistence moves to per-layer snapshots keeping the appendRunState hash chain intact; crash recovery verified via SIGKILL-mid-tier integration test. Evidence appends serialized through a mutex chain with sequence starting at 1 and tier info in `details.tier`.
27
- - **Observe-before-execute idempotent skip**: publish each checkpoint execute now has a single read-only pre-observe. Four-way classification: CONSISTENT→SKIPPED / MISSING→execute / CONFLICTING→FAILED / not observable→execute. Two-layer preflight shares `classifyPreObservation` single source (global Safety Gate 10 arbitration). SKIPPED downstream adaptation: layer folding recognizes success, three `every` checks expanded to SUCCEEDED||SKIPPED, `buildPersistedState` maps skipped, TOCTOU as usual.
28
- - **Platform registry data-driven architecture**: new `src/platforms/registry.mjs` with `PLATFORMS`/`getPlatform`/`assertRegistry` module self-validation. Three platforms complete description (§3.4 matrix full dimensions) + pure strategy functions. Golden tests 12 cases solidify three platforms execute/observe/list current behavior. `src/producers/build-adapters.mjs` PLATFORMS now derived from registry; `scripts/build-adapters.mjs` duplicate platform table removed for single-source. `build:adapters:check` byte-zero diff (zero behavior change strong evidence).
20
+ - **WorkBuddy/CodeBuddy build-only distribution adapter**: new fourth platform adapter `workbuddy` registered in the platform registry and build-adapters generator. The generated self-contained adapter directory (`adapters/workbuddy/`) ships a `.codebuddy-plugin/plugin.json` manifest, a bundled CLI entry (`bin/release-skill.bundle.mjs`), native safe-write prebuilds, JSON schemas, and the full skill set. Skills resolve the CLI entry via `${CODEBUDDY_PLUGIN_ROOT}`, which CodeBuddy expands inline.
21
+ - **Build-only distribution model in adapter-contract standard**: both the parent `standards/06-adapter-contract.md` and the public `references/06-adapter-contract.md` now document the build-only distribution scope the adapter is generated and self-contained, installation is manual, and the automated preflight/execute/observe/verify marketplace checkpoint is not yet wired for CodeBuddy.
22
+ - **sync-public-files and sync-version coverage for `.codebuddy-plugin`**: the `sync-public-files.mjs` script now validates the `.codebuddy-plugin/plugin.json` manifest as a public asset, and `sync-version.mjs` propagates the package version into it. The build-adapters generator produces workbuddy artifacts alongside the existing three platforms.
23
+ - **README and INSTALL registration (en + zh-CN)**: all four public documents (README.md, README.zh-CN.md, INSTALL.md, INSTALL.zh-CN.md) now list the CodeBuddy/WorkBuddy adapter, its manual installation path, and the scope limitation that the automated marketplace install checkpoint does not yet cover CodeBuddy.
29
24
  <!-- release-skill:managed:end id=latest-release -->
30
25
 
31
26
  <!-- release-skill:capability:external-write-boundary -->
32
- > **Current boundary:** v0.2.0 is the current release (v0.1.9 previously held
27
+ > **Current boundary:** v0.2.1 is the current release (v0.1.9 previously held
33
28
  > published status before the codex migrated-command-skills fix was added).
34
29
  > v0.1.1 completed a real production release to GitHub and npm — the first
35
30
  > production-verified milestone — followed by
@@ -899,6 +894,11 @@ Successful reconcile returns `PUBLISHED`, not `VERIFIED`; only the fresh
899
894
  Code (no scriptable install API) it emits a version-pinned manual install
900
895
  requirement and proves the entry Skill and payload digest only from a trusted
901
896
  attestation bound to the frozen plan digest;
897
+ - ships a generated, self-contained CodeBuddy/WorkBuddy adapter
898
+ (`adapters/workbuddy/`, manifest `.codebuddy-plugin/plugin.json`, skills
899
+ rendered with `${CODEBUDDY_PLUGIN_ROOT}`) alongside the Claude/Codex/Kimi
900
+ adapters; CodeBuddy installation is manual — the automated marketplace
901
+ install checkpoint does not cover CodeBuddy yet;
902
902
  - distinguishes `PUBLISHED` (writes completed) from `VERIFIED` (remote and
903
903
  consumer installation evidence completed);
904
904
  - stops subsequent checkpoints on failure and writes a separate run record
@@ -984,6 +984,8 @@ npm publish may never be hooks/gates; they remain controlled plan actions.
984
984
  - no overwrite of branches/tags/releases or npm unpublish; create-only refs use
985
985
  `--force-with-lease=<ref>:` solely as an atomic compare-and-set assertion that
986
986
  the ref is absent, while existing branches use an ordinary non-force push;
987
+ - no automated CodeBuddy/WorkBuddy marketplace install checkpoint — the
988
+ generated `adapters/workbuddy/` distribution adapter is installed manually;
987
989
  - no promise of Windows or broad multi-platform native write support;
988
990
  - no hidden commit, push, tag, release, or package publication.
989
991
 
package/README.zh-CN.md CHANGED
@@ -2,31 +2,26 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.2.0 -->
5
+ <!-- release-skill:release-version: 0.2.1 -->
6
6
  面向 Claude Code、Codex 和 Kimi Code 的发布准备工具,完整保留人工维护的文件内容。
7
7
 
8
8
  release-skill 帮助维护者回答三个问题:准备发布什么、还有哪些检查未通过、最终发布的内容是什么。它先冻结并供人工审阅,再从同一份冻结产物发布,不会在最后一步重新生成 README、重新打包当前工作区或覆盖人工内容。
9
9
 
10
10
  <!-- release-skill:managed:start id=latest-release -->
11
- **0.2.0** (2026-07-25)
11
+ **0.2.1** (2026-07-25)
12
12
 
13
- v0.2.0 是一个硬化发布,提升发布可靠性、摘要可复现性、版本管理和平台注册表数据驱动架构。完成九个硬化任务:暂态重试退避、摘要解耦 planVersion 2、声明式清单载荷契约、版本单源、真实 CLI 契约测试、增量 hooks 缓存、分层并行检查点执行、observe-before-execute 幂等跳过、平台注册表数据化。npm 包名(`release-skill`)、发布身份(`publisher: mzdbxqh`)、公开仓库(`ifoohoo/release-skill`)与公司维护主体保持不变。
13
+ v0.2.1 新增第四个平台适配器 workbuddy(CodeBuddy/WorkBuddy 插件),采用 build-only 分发模式。build-adapters 生成器与平台注册表现在将 workbuddy 与 claude、codex、kimi 并列登记,在 `adapters/workbuddy/` 产出包含 `.codebuddy-plugin/plugin.json` 清单、打包 CLI 入口、native 预编译、JSON schemas 与全套技能的自包含适配器目录。sync-public-files sync-version 脚本覆盖新清单,适配器契约标准补充 build-only 分发说明。README 与 INSTALL(中英四份)登记 CodeBuddy 安装入口。安装为手动步骤——自动化 marketplace 安装检查点尚未覆盖 CodeBuddy。
14
14
 
15
15
  **新增**
16
16
 
17
- - **暂态重试退避(`observeWithRetry`)**:publish/reconcile execute observe 现在对暂态失败使用有界指数退避。暂态分类具有传播性——仅对暂态错误(网络超时、5xx)重试;CONFLICTING 错误永不重试。市场重试窗口钳制到动作 `timeoutMs`。这解决了真实网络上因暂态 observe 超时导致的间歇性 PARTIAL 失败。
18
- - **摘要解耦 planVersion 2**:计划字段拆分为绑定层(冻结制品、动作、版本、配置)与记录层(基线、创建时间、状态)。冻结提交时间戳从 `headCommit` 派生,确保摘要可复现。审批不再因树/工作区摘要漂移而失效(v2 计划);基线检查降级为证据警告。v1 遗留行为逐字节保留(黄金值测试)。
19
- - **声明式清单载荷契约**:用声明式清单比较替换整树字节相等性。权威条目必须存在且在安装目录中逐字节匹配;主机添加的文件记录(`extraInstalledPaths`,有上限)而非失败。缺少 `payloadContract` 的遗留计划保持精确整树语义。`consumerTransportExclusions` 已弃用(仅遗留路径)。
20
- - **版本单源 `sync-version` 脚本**:`package.json` 版本现在是唯一手写来源。新的 `sync-version.mjs` 将其传播到插件清单、marketplace.jsonREADME 边界行和 INSTALL 文档(幂等、`--check` 模式、防御性白名单)。`smokeExpectedJson.version` 在运行时从 `targetVersion` 注入,结束 bump-invalidates-plan 循环。docs 钩子现在运行 `check-docs-drift.mjs`(render 检查 + sync-version 检查)。测试中的硬编码版本字面量替换为动态读取。
21
- - **真实 CLI 契约测试**:隔离 HOME 的契约测试,针对真实 CLI 协议形状(`list --json` 输出形式、子命令存在性)断言适配器假设,由 `RELEASE_SKILL_LIVE_CLI=1` 门控,skip-not-fail 语义。静态契约锁定 'kimi 无脚本化安装',防止伪造的 CLI 命令静默回归。
22
- - **增量 hooks 缓存**:hooks 可声明 `cacheable`+`cacheInputs`;结果缓存在 `.release-skill/cache/hooks/<name>/<key>.json`,按 hook 配置和输入内容哈希键控。失败永不缓存;命中跳过执行但不跳过授权门;`--no-hook-cache` 逃生舱。缓存目录注册到基线控制面排除和 gitignore。本项目的 test/typecheck hooks 已缓存:第二次 prepare 降至约 2 秒(test hook 从缓存服务)。
23
- - **分层并行检查点执行**:publish 检查点分组为硬编码 `TIER_TABLE` 层。层顺序执行,层内动作并发执行,`allSettled` 语义(不快速失败,成功保留)。状态持久化移至每层快照,保持 appendRunState 哈希链完整;通过 SIGKILL-层中集成测试验证崩溃恢复。证据追加通过互斥链序列化,序列从 1 开始,`details.tier` 包含层信息。
24
- - **observe-before-execute 幂等跳过**:publish 每个检查点 execute 前增加单发只读 pre-observe。四分类:CONSISTENT→SKIPPED / MISSING→execute / CONFLICTING→FAILED / 不可观察→execute。两层 preflight 共用 `classifyPreObservation` 单源(全局 Safety Gate 10 占用仲裁)。SKIPPED 下游适配:层折叠认成功、三处 `every` 扩展为 SUCCEEDED||SKIPPED、`buildPersistedState` 映射 skipped、TOCTOU 照常。
25
- - **平台注册表数据驱动架构**:新增 `src/platforms/registry.mjs`,包含 `PLATFORMS`/`getPlatform`/`assertRegistry` 模块自校验。三平台完整描述(§3.4 矩阵全维度)+ 纯策略函数。黄金测试 12 用例固化三平台 execute/observe/list 现状行为。`src/producers/build-adapters.mjs` PLATFORMS 改从注册表派生;`scripts/build-adapters.mjs` 重复平台表删除同源导入。`build:adapters:check` 逐字节零 diff(行为零变化强证据)。
17
+ - **WorkBuddy/CodeBuddy build-only 分发适配器**:新增第四个平台适配器 `workbuddy`,在平台注册表和 build-adapters 生成器中登记。生成的自包含适配器目录(`adapters/workbuddy/`)附带 `.codebuddy-plugin/plugin.json` 清单、打包 CLI 入口(`bin/release-skill.bundle.mjs`)、native safe-write 预编译、JSON schemas 与全套技能。技能通过 `${CODEBUDDY_PLUGIN_ROOT}` 解析 CLI 入口,CodeBuddy 会内联展开该变量。
18
+ - **适配器契约标准补充 build-only 分发模型**:父级 `standards/06-adapter-contract.md` 与公开 `references/06-adapter-contract.md` 均补充 build-only 分发范围说明——适配器由生成器产出且自包含,安装为手动步骤,CodeBuddy 的自动化 preflight/execute/observe/verify marketplace 检查点尚未接入。
19
+ - **sync-public-files 与 sync-version 覆盖 `.codebuddy-plugin`**:`sync-public-files.mjs` 脚本现在将 `.codebuddy-plugin/plugin.json` 清单作为公开资产校验,`sync-version.mjs` 将包版本同步到该清单。build-adapters 生成器将 workbuddy 产物与既有三平台并列生成。
20
+ - **README INSTALL 登记(中英四份)**:四份公开文档(README.md、README.zh-CN.md、INSTALL.md、INSTALL.zh-CN.md)均列出 CodeBuddy/WorkBuddy 适配器、其手动安装路径以及自动化 marketplace 安装检查点尚未覆盖 CodeBuddy 的范围限制。
26
21
  <!-- release-skill:managed:end id=latest-release -->
27
22
 
28
23
  <!-- release-skill:capability:external-write-boundary -->
29
- > **当前边界:** v0.2.0 是当前发布版本(v0.1.9 曾处于已发布、待独立验证状态)。
24
+ > **当前边界:** v0.2.1 是当前发布版本(v0.1.9 曾处于已发布、待独立验证状态)。
30
25
  > v0.1.1 已完成 GitHub 与 npm 的
31
26
  > 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
32
27
  > 安装及 Claude/Codex 消费者安装验证;“当前发布版本”与“首次生产验证里程碑”
@@ -600,6 +595,7 @@ reconcile 成功只返回 `PUBLISHED`,不会返回 `VERIFIED`;只有全新
600
595
  - 用计划摘要、有效期和显式 action allowlist 绑定人工批准;
601
596
  - 从冻结 Git object 和 npm tarball 发布,并核对远端 commit/tree/tag/integrity;
602
597
  - 从冻结 Git ref 安装配置的 Claude/Codex 插件,证明入口 Skill 和安装载荷摘要;对 Kimi Code(无可脚本化安装接口)产出版本钉死的手动安装要求,仅依据绑定到冻结计划摘要的可信证明来确认入口 Skill 和载荷摘要;
598
+ - 随 Claude/Codex/Kimi 适配器一并提供生成的自包含 CodeBuddy/WorkBuddy 适配器(`adapters/workbuddy/`,清单 `.codebuddy-plugin/plugin.json`,技能以 `${CODEBUDDY_PLUGIN_ROOT}` 渲染);CodeBuddy 安装为手动步骤——自动化 marketplace 安装检查点尚未覆盖 CodeBuddy;
603
599
  - 明确区分 `PUBLISHED`(外写完成)与 `VERIFIED`(远端和消费者安装证据完成);
604
600
  - 中途失败停止后续动作,记录独立 run;不修改冻结 plan,不自动撤销已成功动作。
605
601
 
@@ -651,6 +647,7 @@ push、tag、默认分支修改、GitHub Release 和 npm publish 不能放进 ho
651
647
  - 不声称已经替项目完成真实生产 canary;
652
648
  - `prepare --online` 只观察 bound 前序基线;目标唯一性由 publish 全局预检完成;
653
649
  - 不覆盖已有 branch/tag/Release,不 unpublish npm;
650
+ - 不提供自动化 CodeBuddy/WorkBuddy marketplace 安装检查点——生成的 `adapters/workbuddy/` 分发适配器需手动安装;
654
651
  - 不承诺 Windows 或广泛的跨平台原生写入;
655
652
  - 不会隐藏地 commit、push、打 tag、创建 Release 或发布包。
656
653
 
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.2.0",
12
+ "version": "0.2.1",
13
13
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification"
14
14
  }
15
15
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -9,7 +9,7 @@ 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.2.0"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.2.1"});
13
13
 
14
14
  var __create = Object.create;
15
15
  var __defProp = Object.defineProperty;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
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.2.0.",
22
+ "Prepare a release plan for version 0.2.1.",
23
23
  "Help me understand the release workflow."
24
24
  ]
25
25
  }
@@ -9,7 +9,7 @@ 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.2.0"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.2.1"});
13
13
 
14
14
  var __create = Object.create;
15
15
  var __defProp = Object.defineProperty;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -9,7 +9,7 @@ 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.2.0"});
12
+ const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.2.1"});
13
13
 
14
14
  var __create = Object.create;
15
15
  var __defProp = Object.defineProperty;
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "release-skill",
3
+ "version": "0.2.1",
4
+ "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
+ "author": {
6
+ "name": "广州市风荷科技有限公司"
7
+ },
8
+ "license": "MIT",
9
+ "skills": "./skills/"
10
+ }