release-skill 0.2.3 → 0.2.4

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 (53) 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 +22 -0
  7. package/CONTRIBUTING.md +27 -0
  8. package/INSTALL.md +95 -139
  9. package/INSTALL.zh-CN.md +70 -121
  10. package/README.md +264 -913
  11. package/README.zh-CN.md +222 -535
  12. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  13. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  14. package/adapters/claude/bin/release-skill.bundle.mjs +19054 -17573
  15. package/adapters/claude/schemas/release-plan.schema.json +137 -0
  16. package/adapters/claude/schemas/release-project.schema.json +93 -0
  17. package/adapters/claude/schemas/release-run.schema.json +70 -2
  18. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  19. package/adapters/codex/bin/release-skill.bundle.mjs +19054 -17573
  20. package/adapters/codex/schemas/release-plan.schema.json +137 -0
  21. package/adapters/codex/schemas/release-project.schema.json +93 -0
  22. package/adapters/codex/schemas/release-run.schema.json +70 -2
  23. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  24. package/adapters/kimi/bin/release-skill.bundle.mjs +19054 -17573
  25. package/adapters/kimi/schemas/release-plan.schema.json +137 -0
  26. package/adapters/kimi/schemas/release-project.schema.json +93 -0
  27. package/adapters/kimi/schemas/release-run.schema.json +70 -2
  28. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  29. package/adapters/workbuddy/bin/release-skill.bundle.mjs +19054 -17573
  30. package/adapters/workbuddy/schemas/release-plan.schema.json +137 -0
  31. package/adapters/workbuddy/schemas/release-project.schema.json +93 -0
  32. package/adapters/workbuddy/schemas/release-run.schema.json +70 -2
  33. package/bin/release-skill.bundle.mjs +19054 -17573
  34. package/package.json +1 -1
  35. package/schemas/release-plan.schema.json +137 -0
  36. package/schemas/release-project.schema.json +93 -0
  37. package/schemas/release-run.schema.json +70 -2
  38. package/src/adapters/plugin-marketplace.mjs +1190 -435
  39. package/src/commands/prepare.mjs +380 -40
  40. package/src/commands/publish.mjs +107 -75
  41. package/src/commands/reconcile.mjs +92 -327
  42. package/src/commands/setup.mjs +148 -20
  43. package/src/commands/verify.mjs +304 -20
  44. package/src/core/baseline.mjs +8 -1
  45. package/src/core/checkpoints.mjs +50 -7
  46. package/src/core/config.mjs +15 -0
  47. package/src/core/errors.mjs +2 -0
  48. package/src/core/installation-contract.mjs +341 -0
  49. package/src/core/plan.mjs +129 -6
  50. package/src/platforms/codebuddy.mjs +193 -280
  51. package/src/platforms/codex.mjs +369 -0
  52. package/src/platforms/kimi.mjs +164 -119
  53. package/src/platforms/registry.mjs +24 -6
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.3 -->
5
+ <!-- release-skill:release-version: 0.2.4 -->
6
6
  ## 前置条件
7
7
 
8
8
  - Node.js 22.0.0 或更高版本
@@ -32,39 +32,32 @@ release-skill help
32
32
 
33
33
  输出中应包含版本号和可用命令列表。
34
34
 
35
- ## 安装为插件(统一市场——推荐)
35
+ ## 安装为插件(bundled-family 市场——推荐)
36
36
 
37
- 四种受支持的插件宿主都从统一市场
38
- [ifoohoo/artifact-skill-set](https://github.com/ifoohoo/artifact-skill-set)
39
- 安装 release-skill;该市场为同一发布版本提供 Claude Code、
40
- CodeBuddy/WorkBuddy、Codex 与 Kimi Code 四份清单。先添加一次市场,再安装
37
+ Claude Code、CodeBuddy、WorkBuddy 和 Codex 从 bundled-family 市场
38
+ [ifoohoo/release-skill](https://github.com/ifoohoo/release-skill)
39
+ 安装 release-skill。插件仓库自身携带市场清单
40
+ (`.claude-plugin/marketplace.json`),无需外部市场。Kimi Code 没有市场安装
41
+ 接口——见 [Kimi Code 小节](#安装为-kimi-code-插件)。先添加一次市场,再安装
41
42
  插件:
42
43
 
43
- > **外部独立市场形态。** `ifoohoo/artifact-skill-set` 是一个外部独立市场:
44
- > 插件仓库(`ifoohoo/release-skill`)只含 plugin 清单
45
- >(`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 等),marketplace
46
- > 索引(`marketplace.json`)则集中于外部市场仓库。当发布单元的插件 distribution
47
- > 声明 `marketplaceRepo` 时,`prepare --online --production` 会冻结外部市场
48
- > HEAD——Codex 钉 commit sha(强冻结)、Claude 钉默认分支名(弱冻结)——并以
49
- > 本单元自身冻结快照整树校验安装载荷(契约 `external-marketplace-v1`)。
50
- >
51
- > **发布时序(先市场后插件)。** 由于安装目标是外部市场,marketplace 索引必须
52
- > **先**定版并发布——其 `release-skill` 条目版本须等于目标发布版本(claude 形态
53
- > 会校验该条目)——之后 `prepare --online --production` 才能冻结到含该条目的市场
54
- > sha。详见 `references/06-adapter-contract.md` §2.3/§2.4。
44
+ > **前置条件:GitHub 访问。** `owner/repo` 简写会让 Claude Code 通过
45
+ > `git@github.com:...`(SSH)克隆,需要本机配置 GitHub 公钥。如不使用 SSH,
46
+ > 可传完整 HTTPS 地址——`/plugin marketplace add https://github.com/ifoohoo/release-skill`——
47
+ > 或设置 `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`。
55
48
 
56
49
  **Claude Code**(交互会话中):
57
50
 
58
51
  ```
59
- /plugin marketplace add ifoohoo/artifact-skill-set
60
- /plugin install release-skill@artifact-skill-set
52
+ /plugin marketplace add ifoohoo/release-skill
53
+ /plugin install release-skill@release-skill
61
54
  ```
62
55
 
63
56
  **CodeBuddy / WorkBuddy:**
64
57
 
65
58
  ```bash
66
- codebuddy plugin marketplace add ifoohoo/artifact-skill-set
67
- codebuddy plugin install release-skill@artifact-skill-set
59
+ codebuddy plugin marketplace add ifoohoo/release-skill
60
+ codebuddy plugin install release-skill@release-skill
68
61
  ```
69
62
 
70
63
  WorkBuddy 桌面端只能通过已注册的市场安装:执行上面的 `marketplace add`
@@ -73,19 +66,15 @@ WorkBuddy 桌面端只能通过已注册的市场安装:执行上面的 `marke
73
66
  **OpenAI Codex:**
74
67
 
75
68
  ```bash
76
- codex plugin marketplace add ifoohoo/artifact-skill-set
69
+ codex plugin marketplace add ifoohoo/release-skill
77
70
  ```
78
71
 
79
72
  然后在交互式 `/plugins` 浏览器中安装 `release-skill`。
80
73
 
81
74
  **Kimi Code**(交互会话中):
82
75
 
83
- ```
84
- /plugins marketplace https://raw.githubusercontent.com/ifoohoo/artifact-skill-set/main/kimi-marketplace.json
85
- ```
86
-
87
- 或在启动前把 `KIMI_CODE_PLUGIN_MARKETPLACE_URL` 指向同一 URL。然后在
88
- `/plugins` 面板中安装 `release-skill`。
76
+ Kimi Code 没有市场安装接口,需手动安装并钉死到特定 release tag。详见
77
+ [Kimi Code 小节](#安装为-kimi-code-插件)的版本钉死手动安装与证明闭环。
89
78
 
90
79
  ### 备选:直接从仓库安装(进阶)
91
80
 
@@ -114,60 +103,43 @@ Kimi Code 有交互式插件市场,但**没有可脚本化的非交互安装
114
103
  release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观测/人工证明”:
115
104
  `publish`/`verify` 从不对 Kimi 执行自动安装。完整闭环如下:
116
105
 
117
- 1. `publish` 先完成自动化写入(Git branch/tag、npm、GitHub Release),随后
118
- 到达 `kimi-marketplace-install` 检查点。由于没有可脚本化安装接口,该检查点
119
- **失败关闭**,整个 run 落入 `PARTIAL`——已成功的自动化写入**不会**被撤销。
120
- 检查点输出(以及下面的 requirement 文件)会给出隔离的 `KIMI_CODE_HOME`、
121
- 钉死的安装 URL 与证明写入路径。
106
+ 1. `publish` 先完成自动化远端写入(Git branch/tag、npm、GitHub Release)。
107
+ `kimi-marketplace-install` 动作在 publish 阶段记录为 `DEFERRED`,不调用市场适配器,自动化安装路径失败关闭。全部远端永久写入一致后运行进入 `PUBLISHED`。运行记录会给出钉死的安装 URL 与证明写入路径。
122
108
  2. 读取 requirement:
123
109
  `<root>/.release-skill/kimi-attestations/<planDigest>/<plugin>/release-skill-kimi-manual-install.json`。
124
- 3. 用该**隔离** home 启动 Kimi Code,使 managed 副本落在其中(不要使用你日常的
125
- `~/.kimi-code`):
110
+ 3. 启动 Kimi Code,从钉死到精确版本的 release tag 安装(切勿使用裸仓库地址,
111
+ 它会安装最新 release 或默认分支),确认信任提示后重新加载。写出证明之前,
112
+ 必须核实已安装插件清单版本等于冻结版本;否则**不得**出具证明。
126
113
 
127
114
  ```
128
- HOME=<kimiCodeHome> KIMI_CODE_HOME=<kimiCodeHome> kimi
129
- ```
130
-
131
- 插件会安装到 `<kimiCodeHome>/plugins/managed/<plugin>/`。
132
- 4. 在该隔离会话中,从钉死到精确版本的 release tag 安装(切勿使用裸仓库地址,
133
- 它会安装最新 release 或默认分支),确认信任提示后重新加载:
134
-
135
- ```
136
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.3
115
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.4
137
116
  /plugins reload
138
117
  ```
139
118
 
140
- 5. 把证明 JSON 写入
119
+ 4. 把人工结果 JSON 写入
141
120
  `<root>/.release-skill/kimi-attestations/<planDigest>/<plugin>/release-skill-kimi-attestation.json`。
142
- `planDigest` 必须是冻结**计划**摘要;`payloadDigest` 必须是冻结快照**载荷**
143
- 摘要;`installPath` 必须是上面的隔离 managed 目录;`attestedAt` 不得为未来
144
- 时间,`expiresAt` 必须在 `attestedAt` 之后 24 小时内。示例:
121
+ `planDigest` 必须是冻结**计划**摘要;`result` 只接受 `"passed"` 或 `"failed"`。
122
+ 示例:
145
123
 
146
124
  ```json
147
125
  {
148
- "consumer": "kimi",
149
- "plugin": "release-skill",
150
- "version": "0.2.3",
151
- "entrySkill": "release-help",
152
- "repo": "ifoohoo/release-skill",
153
- "ref": "release-skill-v0.2.3",
154
- "installPath": "<kimiCodeHome>/plugins/managed/release-skill",
126
+ "platform": "kimi",
127
+ "version": "0.2.4",
155
128
  "planDigest": "<64 位十六进制冻结计划摘要>",
156
- "payloadDigest": "<64 位十六进制冻结快照载荷摘要>",
157
- "attestedBy": "<责任人>",
158
- "attestedAt": "2026-07-23T00:00:00.000Z",
159
- "expiresAt": "2026-07-23T12:00:00.000Z"
129
+ "result": "passed",
130
+ "actor": "<确认人>",
131
+ "confirmedAt": "2026-07-23T00:00:00.000Z",
132
+ "note": "<可选备注>"
160
133
  }
161
134
  ```
162
135
 
163
- 6. 运行 `release-skill reconcile --run <publish-run>`(把 `PARTIAL` 提升为
164
- `PUBLISHED`),再运行 `release-skill verify --run <reconcile-run>`(→
165
- `VERIFIED`)。两者都从同一个按计划摘要命名的目录读取证明,因此它们各自的
166
- 新 run 目录不会丢失该证明。
136
+ 5. 运行 `release-skill verify --run <publish-run>`(→
137
+ `VERIFIED`)。verify 命令从同一个按计划摘要命名的目录读取证明,因此新的
138
+ run 目录不会丢失该证明。
167
139
 
168
- 把插件安装到日常的 `~/.kimi-code` **不**构成有效证明:证明中的 `installPath`
169
- 必须解析到 requirement 给出的隔离 `KIMI_CODE_HOME` managed 根之内,否则验证
170
- 失败关闭,Kimi 单元绝不进入 `VERIFIED`。
140
+ 当平台没有可靠的自动化验证时,绑定后的人工 `passed`/`failed` 结果即为权威判定。
141
+ `verify` 命令消费人工结果,成功后进入 `VERIFIED`。但身份、版本、载荷、市场来源
142
+ 或安装契约不一致时,不可被人工 `passed` 结果覆盖。
171
143
 
172
144
  ## 安装为 CodeBuddy/WorkBuddy 插件
173
145
 
@@ -190,76 +162,53 @@ codebuddy CLI 可以添加市场并安装插件,但 **`plugin marketplace add`
190
162
  “**手动**安装 + 可信观测/人工证明”(与 Kimi Code 相同的能力缺口与闭环):
191
163
  `publish`/`verify` 从不对 CodeBuddy 执行自动安装。完整闭环如下:
192
164
 
193
- 1. `publish` 先完成自动化写入(Git branch/tag、npm、GitHub Release),随后
194
- 到达 `codebuddy-marketplace-install` 检查点。由于安装无法钉死冻结 ref,该
195
- 检查点**失败关闭**,整个 run 落入 `PARTIAL`——已成功的自动化写入**不会**被撤销。
196
- 检查点输出(以及下面的 requirement 文件)会给出两个安装通道、统一市场、
197
- 隔离的 CLI home 与证明写入路径。
165
+ 1. `publish` 先完成自动化远端写入(Git branch/tag、npm、GitHub Release)。
166
+ `codebuddy-marketplace-install` 动作在 publish 阶段记录为 `DEFERRED`,不调用
167
+ 市场适配器,自动化安装路径失败关闭。全部远端永久写入一致后运行进入 `PUBLISHED`。运行记录会给出证明写入路径。
198
168
  2. 读取 requirement:
199
169
  `<root>/.release-skill/codebuddy-attestations/<planDigest>/<plugin>/release-skill-codebuddy-manual-install.json`。
200
- 3. 经**两个通道之一**从统一市场 `artifact-skill-set`
201
- (https://github.com/ifoohoo/artifact-skill-set)安装 release-skill
202
-
203
- **主路径(WorkBuddy 桌面端):** 从插件面板安装 release-skill,然后确认
204
- `~/.workbuddy/settings.json` 的 `enabledPlugins` 含
205
- `"release-skill@artifact-skill-set": true`。插件落点为
206
- `~/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill/`。
207
-
208
- **备选路径(捆绑的 codebuddy CLI,可隔离):** 用 requirement 给出的**隔离**
209
- home 运行 CLI,使克隆落在其中(不要使用你日常的 `~/.codebuddy`):
210
-
211
- ```
212
- HOME="<codebuddyHome>" <codebuddy 二进制> plugin marketplace add https://github.com/ifoohoo/artifact-skill-set
213
- HOME="<codebuddyHome>" <codebuddy 二进制> plugin install release-skill@artifact-skill-set
214
- ```
215
-
216
- CLI 随 WorkBuddy.app 捆绑(macOS 已知路径
217
- `/Applications/WorkBuddy.app/Contents/Resources/app.asar.unpacked/cli/bin/codebuddy`)。
218
- 插件落点为
219
- `<codebuddyHome>/.codebuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill/`。
220
- 4. **ref 限制警告:** codebuddy 安装跟踪市场默认分支,**无法**钉死到冻结 ref。
221
- 写出证明之前,必须核实已安装插件清单版本等于冻结版本 `0.2.3`;否则**不得**
222
- 出具证明。
223
- 5. 把证明 JSON 写入
170
+ 3. bundled-family 市场 `ifoohoo/release-skill`
171
+ (https://github.com/ifoohoo/release-skill)安装 release-skill
172
+ 写出证明之前,必须核实已安装插件清单版本等于冻结版本;否则**不得**出具证明。
173
+ 4. 把人工结果 JSON 写入
224
174
  `<root>/.release-skill/codebuddy-attestations/<planDigest>/<plugin>/release-skill-codebuddy-attestation.json`。
225
- `planDigest` 必须是冻结**计划**摘要;`payloadDigest` 必须是冻结快照**载荷**
226
- 摘要;`installChannel` 必须是 `"desktop"` 或 `"cli"`;`marketplace` 必须是
227
- `artifact-skill-set`;`installPath` 必须是所选通道的实际安装目录;
228
- `attestedAt` 不得为未来时间,`expiresAt` 必须在 `attestedAt` 之后 24 小时内。
175
+ `planDigest` 必须是冻结**计划**摘要;`result` 只接受 `"passed"` 或 `"failed"`。
229
176
  示例:
230
177
 
231
178
  ```json
232
179
  {
233
- "consumer": "codebuddy",
234
- "plugin": "release-skill",
235
- "version": "0.2.3",
236
- "entrySkill": "release-help",
237
- "repo": "ifoohoo/release-skill",
238
- "ref": "release-skill-v0.2.3",
239
- "marketplace": "artifact-skill-set",
240
- "installChannel": "desktop",
241
- "installPath": "~/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill",
180
+ "platform": "codebuddy",
181
+ "version": "0.2.4",
242
182
  "planDigest": "<64 位十六进制冻结计划摘要>",
243
- "payloadDigest": "<64 位十六进制冻结快照载荷摘要>",
244
- "attestedBy": "<责任人>",
245
- "attestedAt": "2026-07-23T00:00:00.000Z",
246
- "expiresAt": "2026-07-23T12:00:00.000Z"
183
+ "result": "passed",
184
+ "actor": "<确认人>",
185
+ "confirmedAt": "2026-07-23T00:00:00.000Z",
186
+ "note": "<可选备注>"
247
187
  }
248
188
  ```
249
189
 
250
- 6. 运行 `release-skill reconcile --run <publish-run>`(把 `PARTIAL` 提升为
251
- `PUBLISHED`),再运行 `release-skill verify --run <reconcile-run>`(→
252
- `VERIFIED`)。两者都从同一个按计划摘要命名的目录读取证明,因此它们各自的
253
- 新 run 目录不会丢失该证明。
190
+ 5. 运行 `release-skill verify --run <publish-run>`(→
191
+ `VERIFIED`)。verify 命令从同一个按计划摘要命名的目录读取证明,因此新的
192
+ run 目录不会丢失该证明。
254
193
 
255
- cli 通道而言,把插件安装到日常的 `~/.codebuddy` **不**构成有效证明:证明中的
256
- `installPath` 必须解析到 requirement 给出的隔离 `<codebuddyHome>` managed 根之内,
257
- 否则验证失败关闭,CodeBuddy 单元绝不进入 `VERIFIED`。(desktop 通道使用上文真实的
258
- `~/.workbuddy` 市场布局,那本身就是公认的有效证明布局。)
194
+ 当平台没有可靠的自动化验证时,绑定后的人工 `passed`/`failed` 结果即为权威判定。
195
+ `verify` 命令消费人工结果,成功后进入 `VERIFIED`。但身份、版本、载荷、市场来源
196
+ 或安装契约不一致时,不可被人工 `passed` 结果覆盖。
259
197
 
260
198
  源码检出后也可以用 `--plugin-dir <path>/adapters/workbuddy` 把 CodeBuddy 指向
261
199
  生成的插件目录做单会话使用;适配器不引用自身目录之外的任何文件。
262
200
 
201
+ ## 消费端安装验证边界
202
+
203
+ **何时执行验证。** 消费端安装验证仅在安装契约关键文件相对已确认公开基线发生变化时执行;
204
+ 关键文件未变化时结果为 `NOT_REQUIRED_UNCHANGED`,不得追加重复安装验证。
205
+
206
+ **市场来源选择。** 每个平台、每次发布只能选择一种市场来源:
207
+ `bundled-family`(技能族自带市场文件)或 `standalone-index`(独立市场索引),不能同时使用。
208
+
209
+ **Codex 自动验证优先。** Codex 优先自动验证;仅当 CLI/接口、运行环境或传输通道不可用时,
210
+ 才允许降级为人工判定。身份、版本、载荷、市场来源或安装契约不一致属于失败,不能人工覆盖。
211
+
263
212
  ## 开发安装(本地源码)
264
213
 
265
214
  用于开发或尚未公开发布的源码候选: