release-skill 0.2.1 → 0.2.3

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 (55) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +4 -2
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +40 -0
  7. package/INSTALL.md +183 -21
  8. package/INSTALL.zh-CN.md +160 -16
  9. package/README.md +112 -13
  10. package/README.zh-CN.md +72 -11
  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 +2240 -587
  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 +2240 -587
  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 +2240 -587
  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 +2240 -587
  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 +2240 -587
  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 +796 -41
  43. package/src/commands/assess.mjs +50 -1
  44. package/src/commands/prepare.mjs +342 -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 +13 -5
  49. package/src/core/baseline.mjs +13 -0
  50. package/src/core/checkpoints.mjs +7 -2
  51. package/src/core/plan.mjs +275 -4
  52. package/src/core/verification-gates.mjs +1 -1
  53. package/src/platforms/codebuddy.mjs +658 -0
  54. package/src/platforms/registry.mjs +258 -5
  55. package/src/producers/build-adapters.mjs +30 -15
@@ -353,7 +353,8 @@
353
353
  "npm",
354
354
  "claude-plugin",
355
355
  "codex-plugin",
356
- "kimi-plugin"
356
+ "kimi-plugin",
357
+ "codebuddy-plugin"
357
358
  ]
358
359
  },
359
360
  "package": {
@@ -397,6 +398,11 @@
397
398
  "minLength": 1,
398
399
  "pattern": "^[a-z0-9][a-z0-9._-]*$"
399
400
  },
401
+ "marketplaceRepo": {
402
+ "type": "string",
403
+ "pattern": "^[a-z0-9][a-z0-9._-]*/[a-z0-9][a-z0-9._-]*$",
404
+ "description": "外部独立市场仓库 owner/name;存在即启用外部市场形态"
405
+ },
400
406
  "entrySkill": {
401
407
  "type": "string",
402
408
  "minLength": 1,
@@ -467,6 +473,40 @@
467
473
  ]
468
474
  }
469
475
  },
476
+ {
477
+ "if": {
478
+ "properties": {
479
+ "type": {
480
+ "const": "codebuddy-plugin"
481
+ }
482
+ }
483
+ },
484
+ "then": {
485
+ "required": [
486
+ "plugin",
487
+ "entrySkill"
488
+ ]
489
+ }
490
+ },
491
+ {
492
+ "if": {
493
+ "properties": {
494
+ "type": {
495
+ "enum": [
496
+ "kimi-plugin",
497
+ "codebuddy-plugin"
498
+ ]
499
+ }
500
+ }
501
+ },
502
+ "then": {
503
+ "not": {
504
+ "required": [
505
+ "marketplaceRepo"
506
+ ]
507
+ }
508
+ }
509
+ },
470
510
  {
471
511
  "if": {
472
512
  "required": [
@@ -671,6 +711,7 @@
671
711
  "claude-marketplace-install",
672
712
  "codex-marketplace-install",
673
713
  "kimi-marketplace-install",
714
+ "codebuddy-marketplace-install",
674
715
  "set-default-branch"
675
716
  ]
676
717
  },
@@ -797,7 +838,8 @@
797
838
  "npm",
798
839
  "claude-plugin",
799
840
  "codex-plugin",
800
- "kimi-plugin"
841
+ "kimi-plugin",
842
+ "codebuddy-plugin"
801
843
  ]
802
844
  }
803
845
  }
@@ -139,7 +139,8 @@
139
139
  "npm",
140
140
  "claude-plugin",
141
141
  "codex-plugin",
142
- "kimi-plugin"
142
+ "kimi-plugin",
143
+ "codebuddy-plugin"
143
144
  ]
144
145
  },
145
146
  "package": {
@@ -184,6 +185,11 @@
184
185
  "minLength": 1,
185
186
  "pattern": "^[a-z0-9][a-z0-9._-]*$"
186
187
  },
188
+ "marketplaceRepo": {
189
+ "type": "string",
190
+ "pattern": "^[a-z0-9][a-z0-9._-]*/[a-z0-9][a-z0-9._-]*$",
191
+ "description": "外部独立市场仓库 owner/name;存在即启用外部市场形态"
192
+ },
187
193
  "entrySkill": {
188
194
  "type": "string",
189
195
  "minLength": 1,
@@ -206,7 +212,7 @@
206
212
  "type": "integer",
207
213
  "minimum": 30000,
208
214
  "maximum": 900000,
209
- "description": "Timeout in milliseconds for plugin marketplace install commands (claude-plugin, codex-plugin). Kimi Code has no scriptable install command, so for kimi-plugin this bounds the read-only observation/verification only, not an install command. Only valid for claude-plugin, codex-plugin, and kimi-plugin distributions."
215
+ "description": "Timeout in milliseconds for plugin marketplace install commands (claude-plugin, codex-plugin). Kimi Code has no scriptable install command, so for kimi-plugin this bounds the read-only observation/verification only, not an install command. CodeBuddy/WorkBuddy has no scriptable install command that can pin a frozen ref, so for codebuddy-plugin this likewise bounds the read-only observation/verification only. Only valid for claude-plugin, codex-plugin, kimi-plugin, and codebuddy-plugin distributions."
210
216
  }
211
217
  },
212
218
  "allOf": [
@@ -238,7 +244,8 @@
238
244
  "enum": [
239
245
  "claude-plugin",
240
246
  "codex-plugin",
241
- "kimi-plugin"
247
+ "kimi-plugin",
248
+ "codebuddy-plugin"
242
249
  ]
243
250
  }
244
251
  }
@@ -278,6 +285,40 @@
278
285
  ]
279
286
  }
280
287
  },
288
+ {
289
+ "if": {
290
+ "properties": {
291
+ "type": {
292
+ "const": "codebuddy-plugin"
293
+ }
294
+ }
295
+ },
296
+ "then": {
297
+ "required": [
298
+ "plugin",
299
+ "entrySkill"
300
+ ]
301
+ }
302
+ },
303
+ {
304
+ "if": {
305
+ "properties": {
306
+ "type": {
307
+ "enum": [
308
+ "kimi-plugin",
309
+ "codebuddy-plugin"
310
+ ]
311
+ }
312
+ }
313
+ },
314
+ "then": {
315
+ "not": {
316
+ "required": [
317
+ "marketplaceRepo"
318
+ ]
319
+ }
320
+ }
321
+ },
281
322
  {
282
323
  "if": {
283
324
  "required": [
@@ -824,7 +865,8 @@
824
865
  "npm",
825
866
  "claude-plugin",
826
867
  "codex-plugin",
827
- "kimi-plugin"
868
+ "kimi-plugin",
869
+ "codebuddy-plugin"
828
870
  ]
829
871
  }
830
872
  }
@@ -127,6 +127,7 @@
127
127
  "claude-marketplace-install",
128
128
  "codex-marketplace-install",
129
129
  "kimi-marketplace-install",
130
+ "codebuddy-marketplace-install",
130
131
  "set-default-branch"
131
132
  ],
132
133
  "description": "Type of external action"
@@ -52,6 +52,36 @@ async function checkDependency(command, versionArgs = ['--version']) {
52
52
  }
53
53
  }
54
54
 
55
+ /** Known macOS bundled location of the codebuddy CLI shipped with WorkBuddy.app. */
56
+ const CODEBUDDY_MACOS_ABS_PATH = '/Applications/WorkBuddy.app/Contents/Resources/app.asar.unpacked/cli/bin/codebuddy';
57
+
58
+ /**
59
+ * Detect the CodeBuddy CLI (`codebuddy`, alias `cbc`), which is NOT on PATH by
60
+ * default: it ships bundled inside WorkBuddy.app. Probe in order — PATH
61
+ * `codebuddy`, PATH `cbc`, then the known macOS absolute bundle path (read-only
62
+ * `--version`) — and report the first available. The closed loop never execs
63
+ * this CLI for install (the install cannot pin a frozen ref); detection only
64
+ * powers the help/dependency report.
65
+ *
66
+ * @returns {Promise<{available: boolean, version: string|null, diagnostic: string, source: string|null}>}
67
+ */
68
+ async function checkCodeBuddyDependency() {
69
+ const candidates = [
70
+ { source: 'PATH:codebuddy', command: 'codebuddy' },
71
+ { source: 'PATH:cbc', command: 'cbc' },
72
+ { source: 'macOS-bundle', command: CODEBUDDY_MACOS_ABS_PATH },
73
+ ];
74
+ const diagnostics = [];
75
+ for (const { source, command } of candidates) {
76
+ const result = await checkDependency(command, ['--version']);
77
+ if (result.available) {
78
+ return { available: true, version: result.version, diagnostic: 'ok', source };
79
+ }
80
+ diagnostics.push(`${source}: ${result.diagnostic}`);
81
+ }
82
+ return { available: false, version: null, diagnostic: diagnostics.join('; '), source: null };
83
+ }
84
+
55
85
  /**
56
86
  * Perform environment and dependency checks.
57
87
  *
@@ -122,6 +152,13 @@ async function performEnvironmentChecks() {
122
152
  usage: '仅当计划声明 kimi-plugin distribution 时用于消费者安装验证',
123
153
  };
124
154
 
155
+ const codebuddyCheck = await checkCodeBuddyDependency();
156
+ checks.codebuddy = {
157
+ ...codebuddyCheck,
158
+ required: false,
159
+ usage: '仅当计划声明 codebuddy-plugin distribution 时用于消费者安装验证(人工 attestation 闭环;CLI 无法钉死冻结 ref,安装由人工完成并出具 attestation)',
160
+ };
161
+
125
162
  return checks;
126
163
  }
127
164
 
@@ -155,7 +192,7 @@ function getCapabilityMaturity() {
155
192
  publish: {
156
193
  available: true,
157
194
  mode: 'controlled production (protocol-tested; no OS/network sandbox)',
158
- description: 'Publishes frozen GitHub/npm artifacts and runs configured Claude/Codex/Kimi consumer checkpoints with approval and exact digest confirmation',
195
+ description: 'Publishes frozen GitHub/npm artifacts and runs configured Claude/Codex/Kimi/CodeBuddy consumer checkpoints (CodeBuddy via human attestation closed loop) with approval and exact digest confirmation',
159
196
  },
160
197
  reconcile: {
161
198
  available: true,
@@ -165,7 +202,7 @@ function getCapabilityMaturity() {
165
202
  verify: {
166
203
  available: true,
167
204
  mode: 'fresh consumer verification (protocol-tested; no OS/network sandbox)',
168
- description: 'Recheck remote state, exact npm installation, CLI help, and configured Claude/Codex/Kimi installs before VERIFIED',
205
+ description: 'Recheck remote state, exact npm installation, CLI help, and configured Claude/Codex/Kimi/CodeBuddy installs (CodeBuddy via human attestation) before VERIFIED',
169
206
  },
170
207
  };
171
208
  }
@@ -307,6 +344,7 @@ if (!command || command === 'help') {
307
344
  claude: '声明 claude-plugin distribution 时必须可用',
308
345
  codex: '声明 codex-plugin distribution 时必须可用',
309
346
  kimi: '声明 kimi-plugin distribution 时必须可用',
347
+ codebuddy: '声明 codebuddy-plugin distribution 时用于人工 attestation 闭环(CLI 无法钉死冻结 ref,安装由人工完成并出具 attestation)',
310
348
  },
311
349
  },
312
350
  },
@@ -318,9 +356,9 @@ if (!command || command === 'help') {
318
356
  prepare: 'offline local writes; configured hooks/gates require their explicit side-effect acknowledgements',
319
357
  docs: 'read-only dry-run by default; write requires --write, exact --confirm-refresh, and --ack-local-document-write; never commits, pushes, or publishes',
320
358
  onlinePrepare: 'previous-public-baseline observation available; production mode freezes publish artifacts and fails closed on drift or unknown state',
321
- publish: 'GitHub/npm plus configured Claude/Codex/Kimi consumer checkpoints are protocol-tested without an OS/network sandbox; approval and exact digest confirmation required',
359
+ publish: 'GitHub/npm plus configured Claude/Codex/Kimi/CodeBuddy consumer checkpoints are protocol-tested without an OS/network sandbox (CodeBuddy via human attestation closed loop); approval and exact digest confirmation required',
322
360
  reconcile: 'PARTIAL recovery is protocol-tested without an OS/network sandbox; remote conflicts require human intervention',
323
- verify: 'fresh exact npm and Claude/Codex/Kimi consumer installation checks are protocol-tested without an OS/network sandbox; configured consumer processes require explicit acknowledgement; success reaches VERIFIED',
361
+ verify: 'fresh exact npm and Claude/Codex/Kimi/CodeBuddy consumer installation checks are protocol-tested without an OS/network sandbox (CodeBuddy via human attestation); configured consumer processes require explicit acknowledgement; success reaches VERIFIED',
324
362
  },
325
363
  recommendations: [],
326
364
  };
@@ -360,6 +398,10 @@ if (!command || command === 'help') {
360
398
  output.recommendations.push('Install Kimi Code CLI before releasing a configured kimi-plugin distribution');
361
399
  }
362
400
 
401
+ if (!checks.codebuddy.available) {
402
+ output.recommendations.push('Install WorkBuddy (bundled codebuddy CLI) before releasing a configured codebuddy-plugin distribution; the install is a manual attestation closed loop because the CLI cannot pin a frozen ref');
403
+ }
404
+
363
405
  console.log(JSON.stringify(output, null, 2));
364
406
  process.exit(readiness.status === 'READY' ? 0 : 1);
365
407
  } else {