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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codebuddy-plugin/plugin.json +4 -2
- package/.codex-plugin/plugin.json +2 -2
- package/.kimi-plugin/plugin.json +1 -1
- package/CHANGELOG.md +40 -0
- package/INSTALL.md +183 -21
- package/INSTALL.zh-CN.md +160 -16
- package/README.md +112 -13
- package/README.zh-CN.md +72 -11
- package/adapters/claude/.claude-plugin/marketplace.json +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +2240 -587
- package/adapters/claude/schemas/release-plan.schema.json +44 -2
- package/adapters/claude/schemas/release-project.schema.json +46 -4
- package/adapters/claude/schemas/release-run.schema.json +1 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +2240 -587
- package/adapters/codex/schemas/release-plan.schema.json +44 -2
- package/adapters/codex/schemas/release-project.schema.json +46 -4
- package/adapters/codex/schemas/release-run.schema.json +1 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +2240 -587
- package/adapters/kimi/schemas/release-plan.schema.json +44 -2
- package/adapters/kimi/schemas/release-project.schema.json +46 -4
- package/adapters/kimi/schemas/release-run.schema.json +1 -0
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +4 -2
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +2240 -587
- package/adapters/workbuddy/schemas/release-plan.schema.json +44 -2
- package/adapters/workbuddy/schemas/release-project.schema.json +46 -4
- package/adapters/workbuddy/schemas/release-run.schema.json +1 -0
- package/bin/release-skill-cli.mjs +46 -4
- package/bin/release-skill.bundle.mjs +2240 -587
- package/package.json +1 -1
- package/references/02-project-config.md +7 -0
- package/references/06-adapter-contract.md +21 -2
- package/schemas/release-plan.schema.json +44 -2
- package/schemas/release-project.schema.json +46 -4
- package/schemas/release-run.schema.json +1 -0
- package/scripts/sync-public-files.mjs +8 -4
- package/src/adapters/contract.mjs +1 -0
- package/src/adapters/plugin-marketplace.mjs +796 -41
- package/src/commands/assess.mjs +50 -1
- package/src/commands/prepare.mjs +342 -9
- package/src/commands/publish.mjs +1 -0
- package/src/commands/reconcile.mjs +1 -0
- package/src/commands/setup.mjs +7 -3
- package/src/commands/verify.mjs +13 -5
- package/src/core/baseline.mjs +13 -0
- package/src/core/checkpoints.mjs +7 -2
- package/src/core/plan.mjs +275 -4
- package/src/core/verification-gates.mjs +1 -1
- package/src/platforms/codebuddy.mjs +658 -0
- package/src/platforms/registry.mjs +258 -5
- 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
|
|
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
|
}
|
|
@@ -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 {
|