release-skill 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) 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 +21 -0
  7. package/INSTALL.md +183 -21
  8. package/INSTALL.zh-CN.md +160 -16
  9. package/README.md +112 -11
  10. package/README.zh-CN.md +73 -10
  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 +1718 -600
  14. package/adapters/claude/schemas/release-plan.schema.json +44 -2
  15. package/adapters/claude/schemas/release-project.schema.json +46 -4
  16. package/adapters/claude/schemas/release-run.schema.json +1 -0
  17. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  18. package/adapters/codex/bin/release-skill.bundle.mjs +1718 -600
  19. package/adapters/codex/schemas/release-plan.schema.json +44 -2
  20. package/adapters/codex/schemas/release-project.schema.json +46 -4
  21. package/adapters/codex/schemas/release-run.schema.json +1 -0
  22. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  23. package/adapters/kimi/bin/release-skill.bundle.mjs +1718 -600
  24. package/adapters/kimi/schemas/release-plan.schema.json +44 -2
  25. package/adapters/kimi/schemas/release-project.schema.json +46 -4
  26. package/adapters/kimi/schemas/release-run.schema.json +1 -0
  27. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +4 -2
  28. package/adapters/workbuddy/bin/release-skill.bundle.mjs +1718 -600
  29. package/adapters/workbuddy/schemas/release-plan.schema.json +44 -2
  30. package/adapters/workbuddy/schemas/release-project.schema.json +46 -4
  31. package/adapters/workbuddy/schemas/release-run.schema.json +1 -0
  32. package/bin/release-skill-cli.mjs +46 -4
  33. package/bin/release-skill.bundle.mjs +1718 -600
  34. package/package.json +1 -1
  35. package/references/02-project-config.md +7 -0
  36. package/references/06-adapter-contract.md +21 -2
  37. package/schemas/release-plan.schema.json +44 -2
  38. package/schemas/release-project.schema.json +46 -4
  39. package/schemas/release-run.schema.json +1 -0
  40. package/scripts/sync-public-files.mjs +8 -4
  41. package/src/adapters/contract.mjs +1 -0
  42. package/src/adapters/plugin-marketplace.mjs +536 -23
  43. package/src/commands/assess.mjs +50 -1
  44. package/src/commands/prepare.mjs +273 -9
  45. package/src/commands/publish.mjs +1 -0
  46. package/src/commands/reconcile.mjs +1 -0
  47. package/src/commands/setup.mjs +7 -3
  48. package/src/commands/verify.mjs +2 -0
  49. package/src/core/checkpoints.mjs +7 -2
  50. package/src/core/plan.mjs +97 -4
  51. package/src/core/verification-gates.mjs +1 -1
  52. package/src/platforms/codebuddy.mjs +618 -0
  53. package/src/platforms/registry.mjs +100 -5
  54. package/src/producers/build-adapters.mjs +21 -13
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.1 -->
5
+ <!-- release-skill:release-version: 0.2.2 -->
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,20 +11,27 @@ 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.1** (2026-07-25)
14
+ **0.2.2** (2026-07-26)
15
15
 
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.
16
+ v0.2.2 closes the CodeBuddy platform distribution loop and adds the external independent marketplace distribution form. CodeBuddy/WorkBuddy joins the publish/reconcile/verify pipeline through a human attestation closed loop isomorphic to kimi: because the codebuddy CLI cannot pin a frozen ref (no ref option; installs track the default branch/latest), the execute phase writes a manual install requirement (never execs the CLI), and observe/verify consume a structured human attestation with read-only install-point validation missing, expired, mismatched, or path-escaping attestations all fail closed, at the same severity as kimi (post-publish verification cannot be waived). The external marketplace form lets a distribution declare `marketplaceRepo` so prepare freezes the external marketplace HEAD online (codex hard-frozen to a commit sha, claude weak-frozen to its default branch name) with frozen-sha and index-entry integrity checks, and plugin-marketplace gains matching preflight/observe branches under the `external-marketplace-v1` payload contract while the inline/kimi/codebuddy/legacy branches stay byte-for-byte unchanged. Installation docs (en + zh-CN) are unified on the independent marketplace `ifoohoo/artifact-skill-set` primary path. The npm package name (`release-skill`), publishing identity (`publisher: mzdbxqh`), public repository (`ifoohoo/release-skill`), and corporate maintainer remain unchanged.
17
17
 
18
18
  **Added**
19
19
 
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.
20
+ - **CodeBuddy platform human attestation closed loop**: CodeBuddy/WorkBuddy joins the release pipeline (`publish`/`reconcile`/`verify`) via a human attestation closed loop isomorphic to kimi. The codebuddy CLI's marketplace add/install cannot pin a frozen ref (no ref option; installs track the default branch/`latest`, measured), so the automated install checkpoint cannot guarantee frozen-artifact identity. Execute writes a manual install requirement and never execs the CLI; observe/verify consume a structured human attestation and read-only-validate the install point. Missing, expired, mismatched, or path-escaping attestations all fail closed, at the same severity as kimi (post-publish verification cannot be waived). Two measured install channels: desktop installs through the WorkBuddy desktop unified marketplace `artifact-skill-set` (`installPath` must contain the `/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/<plugin>` tail segment, segment-checked); cli runs the bundled CLI under an isolated `HOME=<authorityDir>/codebuddy-home` (`installPath` must be contained in that isolated home's marketplace plugin root). Attestations carry `installChannel` + `marketplace` fields and are validated per channel. Pipeline routing: platform id `codebuddy`, distributionType `codebuddy-plugin`, actionType `codebuddy-marketplace-install`, Tier 3 (same tier as kimi); the build adapter keeps its historical directory name `workbuddy` (`adapters/workbuddy/`, `.codebuddy-plugin/plugin.json` manifest, bytes unchanged).
21
+ - **External independent marketplace distribution form**: a distribution declaring `marketplaceRepo` enables the external form. The prepare production loop freezes the external marketplace HEAD online via `git ls-remote --symref` (codex hard-frozen to a commit sha, claude weak-frozen to its default branch name) and validates the external index entry via `gh api` (name match, exactly one entry, `entry.version == target version` for the claude form); declaring the external form while offline fails closed, and the external repository is strictly read-only. Frozen actions carry `repo=marketplaceRepo`, `ref=add-ref`, `marketplaceCommitSha`, `marketplaceLocation=external`, `payloadContract=external-marketplace-v1`; `snapshotPath`/`manifestDigest` still bind this unit's frozen snapshot (payload authority unchanged). Plan integrity gains an external branch (repo match, `marketplaceLocation`, 40-hex `marketplaceCommitSha`, ref structure safety); kimi/codebuddy with `marketplaceRepo` fail closed. `plugin-marketplace` gains external preflight/observe branches: `external-marketplace-v1` uses the same whole-tree containment semantics as `declared-manifest-v1` (authority is `.`, host-added paths recorded as `extraInstalledPaths` rather than failing); preflight skips the in-snapshot marketplace segment and reads the plugin manifest from the snapshot root, validating name/version and the frozen fields; observe reuses the existing strategy for install-side entry comparison (weak-frozen claude version drift fails closed). Inline/kimi/codebuddy/legacy/`declared-manifest-v1` branches are byte-for-byte unchanged.
22
+
23
+ **Changed**
24
+
25
+ - **Installation docs unified on the marketplace primary path (en + zh-CN)**: README and INSTALL (all four documents) now route plugin installation through the independent marketplace `ifoohoo/artifact-skill-set` as the primary path, and the READMEs add a workflow overview and platform distribution description. Standards and public references (`standards/06-adapter-contract.md`, `references/06-adapter-contract.md`) are synchronized to the codebuddy attestation form and the external marketplace form with its ordering constraints.
26
+
27
+ **Fixed**
28
+
29
+ - **CodeBuddy plugin manifest `skills` field is now an array**: the `.codebuddy-plugin/plugin.json` manifest's `skills` field is emitted as an array, matching the CodeBuddy host's expected shape.
30
+ - **`verificationGate` scope distribution enum includes `codebuddy-plugin`**: `release-project.schema.json` adds `codebuddy-plugin` to the `verificationGate.scope.distribution` enum (mirroring the existing `kimi-plugin` rule), keeping the schema and the runtime gate whitelist consistent; the embedded schema copies in all four adapters are rebuilt to match.
24
31
  <!-- release-skill:managed:end id=latest-release -->
25
32
 
26
33
  <!-- release-skill:capability:external-write-boundary -->
27
- > **Current boundary:** v0.2.1 is the current release (v0.1.9 previously held
34
+ > **Current boundary:** v0.2.2 is the current release (v0.1.9 previously held
28
35
  > published status before the codex migrated-command-skills fix was added).
29
36
  > v0.1.1 completed a real production release to GitHub and npm — the first
30
37
  > production-verified milestone — followed by
@@ -58,6 +65,45 @@ v0.2.1 adds a fourth platform adapter — workbuddy (CodeBuddy/WorkBuddy plugin)
58
65
  > specifically requires `prepare --online --production`. Without digest confirmation,
59
66
  > no remote preflight or write starts.
60
67
 
68
+ ## Release workflow overview
69
+
70
+ release-skill models the release lifecycle as a strict state machine so that every
71
+ stage has explicit entry and exit conditions and no stage can be skipped. The
72
+ normative definition lives in `references/01-state-machine.md`.
73
+
74
+ ```text
75
+ DISCOVERED -> ASSESSED -> PREPARED -> APPROVED -> PUBLISHING -> PUBLISHED -> VERIFIED
76
+ exception states: NEEDS_INPUT / BLOCKED / PARTIAL
77
+ ```
78
+
79
+ Each CLI command maps to one transition:
80
+
81
+ - `help` checks the environment; `setup` discovers the project and, after digest
82
+ confirmation, creates the config once.
83
+ - `assess` performs a read-only readiness evaluation (`DISCOVERED -> ASSESSED`).
84
+ - `prepare` runs the verification gates, freezes an immutable release plan, and
85
+ copies the configured public files into an isolated snapshot
86
+ (`ASSESSED -> PREPARED`). It writes only under `.release-skill/` and never
87
+ touches remote services.
88
+ - `approve` records human approval bound to the plan digest with a 24-hour expiry
89
+ (`PREPARED -> APPROVED`). A changed plan invalidates the approval automatically.
90
+ - `publish` executes the external write checkpoints in order
91
+ (`APPROVED -> PUBLISHING -> PUBLISHED`).
92
+ - `reconcile` recovers from `PARTIAL`; `verify` performs a fresh consumer-install
93
+ check in an isolated environment (`PUBLISHED -> VERIFIED`).
94
+
95
+ `PUBLISHED` is **not** the terminal state. Only a fresh `verify` run that confirms
96
+ remote state and exact consumer installs match the frozen plan reaches `VERIFIED`.
97
+
98
+ **Publishing checkpoint order.** `publish` runs a read-only global preflight over
99
+ all actions, then executes and observes in this fixed order: public snapshot
100
+ branch -> signed/tracked tag -> npm publish -> GitHub Release -> configured
101
+ Claude/Codex plugin-marketplace install -> run record. Any failure stops subsequent
102
+ checkpoints and the run lands in `PARTIAL`. The system never auto-deletes remote
103
+ tags, unpublishes packages, or restarts from scratch; `reconcile` queries the actual
104
+ remote state, skips already-consistent steps, and retries only safe, incomplete
105
+ actions, while remote conflicts require a human decision.
106
+
61
107
  ## Why this is safe for a hand-edited README
62
108
 
63
109
  release-skill does not regenerate or rewrite project source files. `prepare` copies
@@ -116,6 +162,29 @@ npx release-skill help
116
162
  release-skill help
117
163
  ```
118
164
 
165
+ **Install as a plugin (Claude Code / CodeBuddy / WorkBuddy / Codex / Kimi Code):**
166
+
167
+ All four plugin hosts install from the unified marketplace
168
+ `ifoohoo/artifact-skill-set` — for example, in a Claude Code session:
169
+
170
+ ```
171
+ /plugin marketplace add ifoohoo/artifact-skill-set
172
+ /plugin install release-skill@artifact-skill-set
173
+ ```
174
+
175
+ `ifoohoo/artifact-skill-set` is an **external independent marketplace**: the
176
+ plugin repository carries only the plugin manifest, while the marketplace index
177
+ is centralized in the external marketplace repository. When a release unit's
178
+ plugin distribution declares `marketplaceRepo`, `prepare --online --production`
179
+ freezes the external marketplace HEAD (Codex pins the commit sha — strong
180
+ freeze; Claude pins the default branch name — weak freeze) and verifies the
181
+ installed payload against the unit's own frozen snapshot whole-tree. **Release
182
+ ordering:** publish the external marketplace index first — its entry version
183
+ must equal the target release version — before `prepare` can freeze a
184
+ marketplace sha containing that entry. See [INSTALL.md](INSTALL.md) for the
185
+ per-platform commands and `references/06-adapter-contract.md` §2.3/§2.4 for the
186
+ contract and the advanced direct-repository options.
187
+
119
188
  **Development install (contributor fallback, from source checkout):**
120
189
 
121
190
  Set the checkout location and install dependencies:
@@ -894,11 +963,19 @@ Successful reconcile returns `PUBLISHED`, not `VERIFIED`; only the fresh
894
963
  Code (no scriptable install API) it emits a version-pinned manual install
895
964
  requirement and proves the entry Skill and payload digest only from a trusted
896
965
  attestation bound to the frozen plan digest;
966
+ - supports an external independent marketplace for Claude/Codex distributions
967
+ (`marketplaceRepo`): `prepare --online --production` freezes the external
968
+ marketplace HEAD (Codex commit sha / Claude default branch name), validates the
969
+ marketplace index entry at that sha, and verifies the installed payload against
970
+ the unit's own frozen snapshot whole-tree (`external-marketplace-v1`), while the
971
+ install-side CLI list observation fails closed on version drift;
897
972
  - ships a generated, self-contained CodeBuddy/WorkBuddy adapter
898
973
  (`adapters/workbuddy/`, manifest `.codebuddy-plugin/plugin.json`, skills
899
974
  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;
975
+ adapters; because the codebuddy CLI cannot pin a frozen ref there is no
976
+ automated marketplace install checkpoint, so it emits a manual install
977
+ requirement and proves the entry Skill and payload digest only from a trusted
978
+ attestation bound to the frozen plan digest;
902
979
  - distinguishes `PUBLISHED` (writes completed) from `VERIFIED` (remote and
903
980
  consumer installation evidence completed);
904
981
  - stops subsequent checkpoints on failure and writes a separate run record
@@ -985,7 +1062,8 @@ npm publish may never be hooks/gates; they remain controlled plan actions.
985
1062
  `--force-with-lease=<ref>:` solely as an atomic compare-and-set assertion that
986
1063
  the ref is absent, while existing branches use an ordinary non-force push;
987
1064
  - no automated CodeBuddy/WorkBuddy marketplace install checkpoint — the
988
- generated `adapters/workbuddy/` distribution adapter is installed manually;
1065
+ codebuddy CLI cannot pin a frozen ref, so installation is a manual step proven
1066
+ by the same attestation closed loop as Kimi Code;
989
1067
  - no promise of Windows or broad multi-platform native write support;
990
1068
  - no hidden commit, push, tag, release, or package publication.
991
1069
 
@@ -1036,6 +1114,29 @@ Conflicts still default to human intervention. The npm-installed `release-skill`
1036
1114
  CLI is the supported user entry after v0.1.1 production publication; source
1037
1115
  checkout remains the development/contributor fallback.
1038
1116
 
1117
+ ## Platform distribution
1118
+
1119
+ One deterministic core engine ships to several targets through build-only adapter
1120
+ closures. A release unit declares what reaches users via `distributions`; each
1121
+ distribution type maps to a concrete artifact:
1122
+
1123
+ | `distributions` type | Physical artifact | Install |
1124
+ |---|---|---|
1125
+ | `npm` | npm package with CLI entry | `npm install -g release-skill` |
1126
+ | `claude-plugin` | self-contained closure under `adapters/claude/` | automated marketplace checkpoint |
1127
+ | `codex-plugin` | self-contained closure under `adapters/codex/` | automated marketplace checkpoint |
1128
+ | `kimi-plugin` | self-contained closure (no scriptable install API) | manual, attestation-bound |
1129
+ | `codebuddy-plugin` | generated `adapters/workbuddy/` with `.codebuddy-plugin/plugin.json` (the codebuddy CLI cannot pin a frozen ref) | manual, attestation-bound |
1130
+
1131
+ Each adapter closure bundles its own copy of the CLI bundle, skills, and schemas so
1132
+ it runs with no external dependency after installation. The Claude/Codex marketplace
1133
+ install checkpoints are automated (preflight, execute, observe, verify); the Kimi
1134
+ Code checkpoint fails closed and produces a version-pinned manual install
1135
+ requirement; the CodeBuddy/WorkBuddy checkpoint likewise fails closed — because
1136
+ the codebuddy CLI cannot pin a frozen ref there is no automated install
1137
+ checkpoint — and produces a manual install requirement proven by a trusted
1138
+ attestation bound to the frozen plan digest.
1139
+
1039
1140
  ## License
1040
1141
 
1041
1142
  MIT. See [LICENSE](LICENSE).
package/README.zh-CN.md CHANGED
@@ -2,26 +2,33 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.2.1 -->
5
+ <!-- release-skill:release-version: 0.2.2 -->
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.1** (2026-07-25)
11
+ **0.2.2** (2026-07-26)
12
12
 
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。
13
+ v0.2.2 闭合 CodeBuddy 平台分发链路并新增外部独立市场分发形态。CodeBuddy/WorkBuddy 经与 kimi 同构的人工 attestation 闭环接入 publish/reconcile/verify 流水线:因 codebuddy CLI 无法钉死冻结 ref(无 ref 选项、安装跟踪默认分支/latest),execute 阶段写手动安装 requirement(绝不 exec CLI),observe/verify 消费结构化人工 attestation 并对安装点做只读校验——缺失、过期、不匹配、路径逃逸一律 fail-closed,严重级别与 kimi 一致(发布后验证不可豁免)。外部市场形态允许 distribution 声明 `marketplaceRepo`,prepare 在线冻结外部市场 HEAD(codex 强冻至 commit sha、claude 弱冻至默认分支名)并做冻结 sha 与索引条目完整性校验,plugin-marketplace `external-marketplace-v1` 载荷契约下新增对应 preflight/observe 分支,inline/kimi/codebuddy/legacy 分支一字不变。安装说明(中英四份)统一以独立市场 `ifoohoo/artifact-skill-set` 为主路径。npm 包名(`release-skill`)、发布身份(`publisher: mzdbxqh`)、公开仓库(`ifoohoo/release-skill`)与公司维护主体保持不变。
14
14
 
15
15
  **新增**
16
16
 
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 的范围限制。
17
+ - **CodeBuddy 平台人工 attestation 闭环**:CodeBuddy/WorkBuddy 经与 kimi 同构的人工 attestation 闭环接入发布流水线(`publish`/`reconcile`/`verify`)。因 codebuddy CLI 的 marketplace add/install 均无法钉死冻结 ref(无 ref 选项、安装跟踪默认分支/`latest`,已实测),自动化安装检查点无法保证冻结产物同一性。execute 写手动安装 requirement,绝不 exec CLI;observe/verify 消费结构化人工 attestation 并对安装点做只读校验。缺失、过期、不匹配、路径逃逸的 attestation 一律 fail-closed,严重级别与 kimi 一致(发布后验证不可豁免)。双安装通道(均有实测落盘证据):desktop 经 WorkBuddy 桌面端统一市场 `artifact-skill-set` 安装(`installPath` 须含 `/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/<plugin>` 尾段,段级检查);cli 以隔离 `HOME=<authorityDir>/codebuddy-home` 运行捆绑 CLI(`installPath` 须 containment 于该隔离 home 的市场插件根)。attestation 增加 `installChannel` + `marketplace` 字段并按通道校验。管线路由:平台 id `codebuddy`,distributionType `codebuddy-plugin`,actionType `codebuddy-marketplace-install`,列于 Tier 3(与 kimi 同层);build adapter 保留历史目录名 `workbuddy`(`adapters/workbuddy/`、`.codebuddy-plugin/plugin.json` 清单,字节不变)。
18
+ - **外部独立市场分发形态**:distribution 声明 `marketplaceRepo` 时启用外部形态。prepare 生产循环经 `git ls-remote --symref` 在线冻结外部市场 HEAD(codex 强冻至 commit sha、claude 弱冻至默认分支名),并经 `gh api` 校验外部索引条目(name 匹配、恰一条、claude 形态 `entry.version == 目标版本`);非在线声明外部形态 fail-closed,外部仓库严格只读。冻结动作携带 `repo=marketplaceRepo`、`ref=add-ref`、`marketplaceCommitSha`、`marketplaceLocation=external`、`payloadContract=external-marketplace-v1`;`snapshotPath`/`manifestDigest` 仍绑本单元冻结快照(载荷权威不变)。plan 完整性校验增加外部分支(repo 匹配、`marketplaceLocation`、40-hex `marketplaceCommitSha`、ref 结构安全);kimi/codebuddy 携带 `marketplaceRepo` fail-closed。`plugin-marketplace` 新增外部形态 preflight/observe 分支:`external-marketplace-v1` 走与 `declared-manifest-v1` 相同的整树包含语义(权威为 `.`,宿主新增路径记 `extraInstalledPaths` 而非失败);preflight 跳过快照内市场段,从快照根读 plugin manifest 校验 name/version 与冻结字段;observe 复用既有 strategy 做安装侧条目观察比对(弱冻 claude 版本漂移 fail-closed)。inline/kimi/codebuddy/legacy/`declared-manifest-v1` 分支一字不变。
19
+
20
+ **变更**
21
+
22
+ - **安装说明统一市场主路径(中英四份)**:README 与 INSTALL(四份文档)将插件安装统一改为以独立市场 `ifoohoo/artifact-skill-set` 为主路径,README 增补工作流概览与平台分发说明。标准与公开参考(`standards/06-adapter-contract.md`、`references/06-adapter-contract.md`)同步至 codebuddy attestation 形态与外部独立市场形态及其时序约束。
23
+
24
+ **修复**
25
+
26
+ - **CodeBuddy 插件 manifest `skills` 字段改为数组**:`.codebuddy-plugin/plugin.json` 清单的 `skills` 字段改为数组输出,与 CodeBuddy 宿主期望的形状一致。
27
+ - **`verificationGate` 作用域 distribution 枚举补 `codebuddy-plugin`**:`release-project.schema.json` 的 `verificationGate.scope.distribution` 枚举补入 `codebuddy-plugin`(镜像既有 `kimi-plugin` 规则),保持 schema 与运行时门白名单一致;四个适配器内嵌的 schema 副本同步重建。
21
28
  <!-- release-skill:managed:end id=latest-release -->
22
29
 
23
30
  <!-- release-skill:capability:external-write-boundary -->
24
- > **当前边界:** v0.2.1 是当前发布版本(v0.1.9 曾处于已发布、待独立验证状态)。
31
+ > **当前边界:** v0.2.2 是当前发布版本(v0.1.9 曾处于已发布、待独立验证状态)。
25
32
  > v0.1.1 已完成 GitHub 与 npm 的
26
33
  > 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
27
34
  > 安装及 Claude/Codex 消费者安装验证;“当前发布版本”与“首次生产验证里程碑”
@@ -48,6 +55,28 @@ v0.2.1 新增第四个平台适配器 workbuddy(CodeBuddy/WorkBuddy 插件)
48
55
  > --confirm-production <planDigest>`;`bound` 前序公开基线必须使用
49
56
  > `prepare --online --production`。没有摘要确认就不会预检或写远端。
50
57
 
58
+ ## 发布工作流概览
59
+
60
+ release-skill 把发布生命周期建模为一个严格状态机,让每个阶段都有明确的进入和退出条件,且任何阶段都不能跳过。规范定义见 `references/01-state-machine.md`。
61
+
62
+ ```text
63
+ DISCOVERED -> ASSESSED -> PREPARED -> APPROVED -> PUBLISHING -> PUBLISHED -> VERIFIED
64
+ 异常态:NEEDS_INPUT / BLOCKED / PARTIAL
65
+ ```
66
+
67
+ 每个 CLI 命令对应一次状态转换:
68
+
69
+ - `help` 检查环境;`setup` 发现项目,并在摘要确认后仅首次创建配置。
70
+ - `assess` 执行只读就绪度评估(`DISCOVERED -> ASSESSED`)。
71
+ - `prepare` 运行验证门、冻结一份不可变发布计划,并把配置的公开文件复制进隔离快照(`ASSESSED -> PREPARED`)。它只写入 `.release-skill/` 目录,从不触碰远端服务。
72
+ - `approve` 记录人工批准,绑定到计划摘要并带 24 小时有效期(`PREPARED -> APPROVED`)。计划一旦变化,批准自动失效。
73
+ - `publish` 按顺序执行外部写操作检查点(`APPROVED -> PUBLISHING -> PUBLISHED`)。
74
+ - `reconcile` 从 `PARTIAL` 恢复;`verify` 在全新隔离环境完成消费者安装验证(`PUBLISHED -> VERIFIED`)。
75
+
76
+ `PUBLISHED` **不是**终态。只有全新运行的 `verify` 确认远端状态和精确消费者安装都与冻结计划一致时,才会到达 `VERIFIED`。
77
+
78
+ **发布检查点顺序。** `publish` 先对所有动作做只读全局预检,再按固定顺序执行并观察:公开快照 branch → 签名/可追溯 tag → npm 发布 → GitHub Release → 配置的 Claude/Codex 插件市场安装 → 运行记录。任一步骤失败都会停止后续检查点并使运行进入 `PARTIAL`。系统绝不自动删除远端 tag、不 unpublish 包、不从头重跑;`reconcile` 查询实际远端状态,跳过已一致的步骤,只重试安全且未完成的动作,远端冲突则交由人工决策。
79
+
51
80
  ## 为什么人工修改的 README 不会丢失
52
81
 
53
82
  release-skill 不重新生成、也不回写项目源文件。`prepare` 从当前工作区把每个公开文件复制到隔离的本地快照,并验证复制前后的字节。README 的 slogan、示例、正文、格式,以及后续任何人工修改都会作为完整文件被保留。
@@ -89,6 +118,25 @@ npx release-skill help
89
118
  release-skill help
90
119
  ```
91
120
 
121
+ **安装为插件(Claude Code / CodeBuddy / WorkBuddy / Codex / Kimi Code):**
122
+
123
+ 四种插件宿主都从统一市场 `ifoohoo/artifact-skill-set` 安装——以 Claude
124
+ Code 会话为例:
125
+
126
+ ```
127
+ /plugin marketplace add ifoohoo/artifact-skill-set
128
+ /plugin install release-skill@artifact-skill-set
129
+ ```
130
+
131
+ `ifoohoo/artifact-skill-set` 是一个**外部独立市场**:插件仓库只含 plugin
132
+ 清单,marketplace 索引集中于外部市场仓库。当发布单元的插件 distribution 声明
133
+ `marketplaceRepo` 时,`prepare --online --production` 会冻结外部市场 HEAD
134
+ (Codex 钉 commit sha——强冻结;Claude 钉默认分支名——弱冻结),并以本单元自身
135
+ 冻结快照整树校验安装载荷。**发布时序:** 须先发布外部市场索引——其条目版本须
136
+ 等于目标发布版本——之后 `prepare` 才能冻结到含该条目的市场 sha。各平台完整命令
137
+ 见 [INSTALL.zh-CN.md](INSTALL.zh-CN.md),契约与进阶直接仓库安装方式见
138
+ `references/06-adapter-contract.md` §2.3/§2.4。
139
+
92
140
  **开发安装(贡献者回退,从源码 checkout):**
93
141
 
94
142
  ```bash
@@ -595,7 +643,8 @@ reconcile 成功只返回 `PUBLISHED`,不会返回 `VERIFIED`;只有全新
595
643
  - 用计划摘要、有效期和显式 action allowlist 绑定人工批准;
596
644
  - 从冻结 Git object 和 npm tarball 发布,并核对远端 commit/tree/tag/integrity;
597
645
  - 从冻结 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;
646
+ - Claude/Codex distribution 支持外部独立市场(`marketplaceRepo`):`prepare --online --production` 冻结外部市场 HEAD(Codex commit sha / Claude 默认分支名),校验该 sha 处的市场索引条目,并以本单元自身冻结快照整树校验安装载荷(`external-marketplace-v1`),安装侧 CLI list 观察在版本漂移时失败关闭;
647
+ - 随 Claude/Codex/Kimi 适配器一并提供生成的自包含 CodeBuddy/WorkBuddy 适配器(`adapters/workbuddy/`,清单 `.codebuddy-plugin/plugin.json`,技能以 `${CODEBUDDY_PLUGIN_ROOT}` 渲染);因 codebuddy CLI 无法钉死冻结 ref 而无自动化 marketplace 安装检查点,故产出手动安装要求,仅依据绑定到冻结计划摘要的可信证明来确认入口 Skill 和载荷摘要;
599
648
  - 明确区分 `PUBLISHED`(外写完成)与 `VERIFIED`(远端和消费者安装证据完成);
600
649
  - 中途失败停止后续动作,记录独立 run;不修改冻结 plan,不自动撤销已成功动作。
601
650
 
@@ -647,7 +696,7 @@ push、tag、默认分支修改、GitHub Release 和 npm publish 不能放进 ho
647
696
  - 不声称已经替项目完成真实生产 canary;
648
697
  - `prepare --online` 只观察 bound 前序基线;目标唯一性由 publish 全局预检完成;
649
698
  - 不覆盖已有 branch/tag/Release,不 unpublish npm;
650
- - 不提供自动化 CodeBuddy/WorkBuddy marketplace 安装检查点——生成的 `adapters/workbuddy/` 分发适配器需手动安装;
699
+ - 不提供自动化 CodeBuddy/WorkBuddy marketplace 安装检查点——codebuddy CLI 无法钉死冻结 ref,安装为手动步骤,经与 Kimi Code 相同的可信证明闭环确认;
651
700
  - 不承诺 Windows 或广泛的跨平台原生写入;
652
701
  - 不会隐藏地 commit、push、打 tag、创建 Release 或发布包。
653
702
 
@@ -687,6 +736,20 @@ push、tag、默认分支修改、GitHub Release 和 npm publish 不能放进 ho
687
736
  - `release-reconcile`:基于证据恢复 PARTIAL;冲突时人工介入。
688
737
  - `release-verify`:发布后验证;只有 `VERIFIED` 才是 happy end。
689
738
 
739
+ ## 平台分发
740
+
741
+ 同一个确定性核心引擎通过 build-only 适配器闭包分发到多个目标。发布单元用 `distributions` 声明要发布给谁;每种分发类型对应一个具体产物:
742
+
743
+ | `distributions` 类型 | 物理产物 | 安装方式 |
744
+ |---|---|---|
745
+ | `npm` | 带 CLI 入口的 npm 包 | `npm install -g release-skill` |
746
+ | `claude-plugin` | `adapters/claude/` 下的自包含闭包 | 自动化 marketplace 检查点 |
747
+ | `codex-plugin` | `adapters/codex/` 下的自包含闭包 | 自动化 marketplace 检查点 |
748
+ | `kimi-plugin` | 自包含闭包(无可脚本化安装接口) | 手动,需可信证明 |
749
+ | `codebuddy-plugin` | 生成的 `adapters/workbuddy/`,带 `.codebuddy-plugin/plugin.json`(codebuddy CLI 无法钉死冻结 ref) | 手动,需可信证明 |
750
+
751
+ 每个适配器闭包都自带一份 CLI bundle、skills 和 schemas 的副本,安装后无需外部依赖即可运行。Claude/Codex 的 marketplace 安装检查点是自动化的(preflight、execute、observe、verify);Kimi Code 检查点失败关闭,并产出版本钉死的手动安装要求;CodeBuddy/WorkBuddy 检查点同样失败关闭——因 codebuddy CLI 无法钉死冻结 ref 而无自动化安装检查点——并产出经绑定冻结计划摘要的可信证明确认的手动安装要求。
752
+
690
753
  ## 许可证
691
754
 
692
755
  MIT,见 [LICENSE](LICENSE)。
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.2.1",
12
+ "version": "0.2.2",
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.1",
3
+ "version": "0.2.2",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"