release-skill 0.9.17 → 0.9.18
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/plugin.json +1 -1
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.cursor-plugin/plugin.json +10 -0
- package/.kimi-plugin/plugin.json +1 -1
- package/.qoder-plugin/plugin.json +1 -1
- package/CHANGELOG.md +36 -2
- package/INSTALL.md +56 -9
- package/INSTALL.zh-CN.md +41 -7
- package/README.md +31 -20
- package/README.zh-CN.md +29 -19
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/consumer-contract-vectors.json +7 -7
- package/adapters/claude/bin/error-codes.json +1 -1
- package/adapters/claude/bin/foundation-resource-binding.json +1 -1
- package/adapters/claude/bin/prebuild-manifest.json +8 -4
- package/adapters/claude/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
- package/adapters/claude/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
- package/adapters/claude/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
- package/adapters/claude/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
- package/adapters/claude/bin/registry.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +3560 -1200
- package/adapters/claude/bin/rules.json +1 -1
- package/adapters/claude/data/hosts/cursor/host-descriptor.json +34 -0
- package/adapters/claude/data/hosts/registry.json +1 -0
- package/adapters/claude/schemas/release-plan.schema.json +255 -25
- package/adapters/claude/schemas/release-project.schema.json +228 -26
- package/adapters/claude/skills/release-finish/SKILL.md +17 -4
- package/adapters/claude/skills/release-help/SKILL.md +40 -39
- package/adapters/claude/src/schemas/host-descriptor.schema.json +9 -2
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/consumer-contract-vectors.json +7 -7
- package/adapters/codex/bin/error-codes.json +1 -1
- package/adapters/codex/bin/foundation-resource-binding.json +1 -1
- package/adapters/codex/bin/prebuild-manifest.json +8 -4
- package/adapters/codex/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
- package/adapters/codex/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
- package/adapters/codex/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
- package/adapters/codex/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
- package/adapters/codex/bin/registry.json +1 -1
- package/adapters/codex/bin/release-skill.bundle.mjs +3560 -1200
- package/adapters/codex/bin/rules.json +1 -1
- package/adapters/codex/data/hosts/cursor/host-descriptor.json +34 -0
- package/adapters/codex/data/hosts/registry.json +1 -0
- package/adapters/codex/schemas/release-plan.schema.json +255 -25
- package/adapters/codex/schemas/release-project.schema.json +228 -26
- package/adapters/codex/skills/release-finish/SKILL.md +17 -4
- package/adapters/codex/skills/release-help/SKILL.md +40 -39
- package/adapters/codex/src/schemas/host-descriptor.schema.json +9 -2
- package/adapters/cursor/.cursor-plugin/plugin.json +10 -0
- package/adapters/cursor/bin/consumer-contract-vectors.json +110 -0
- package/adapters/cursor/bin/error-codes.json +161 -0
- package/adapters/cursor/bin/foundation-legal/skill-family-contracts/LICENSE +202 -0
- package/adapters/cursor/bin/foundation-legal/skill-family-contracts/NOTICE +10 -0
- package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/LICENSE +202 -0
- package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/NOTICE +10 -0
- package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES +142 -0
- package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/LICENSE +202 -0
- package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/NOTICE +10 -0
- package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/native-NOTICE +2 -0
- package/adapters/cursor/bin/foundation-resource-binding.json +1 -0
- package/adapters/cursor/bin/kernel-protocol.json +60 -0
- package/adapters/cursor/bin/license-texts/Apache-2.0.txt +201 -0
- package/adapters/cursor/bin/license-texts/MIT.txt +21 -0
- package/adapters/cursor/bin/prebuild-manifest.json +83 -0
- package/adapters/cursor/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
- package/adapters/cursor/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
- package/adapters/cursor/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
- package/adapters/cursor/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
- package/adapters/cursor/bin/registry.json +347 -0
- package/adapters/cursor/bin/release-skill-local-finish.mjs +4 -0
- package/adapters/cursor/bin/release-skill.bundle.mjs +151806 -0
- package/adapters/cursor/bin/release-skill.mjs +54 -0
- package/adapters/cursor/bin/rules.json +104 -0
- package/adapters/cursor/bin/schemas/consumer-contract-vector.schema.json +149 -0
- package/adapters/cursor/data/hosts/claude/host-descriptor.json +45 -0
- package/adapters/cursor/data/hosts/codebuddy/host-descriptor.json +26 -0
- package/adapters/cursor/data/hosts/codex/host-descriptor.json +45 -0
- package/adapters/cursor/data/hosts/cursor/host-descriptor.json +34 -0
- package/adapters/cursor/data/hosts/deepseek-harness/host-descriptor.json +23 -0
- package/adapters/cursor/data/hosts/kimi-code/host-descriptor.json +36 -0
- package/adapters/cursor/data/hosts/qoder/host-descriptor.json +26 -0
- package/adapters/cursor/data/hosts/registry.json +14 -0
- package/adapters/cursor/data/hosts/workbuddy/host-descriptor.json +34 -0
- package/adapters/cursor/data/licensing/registry.json +211 -0
- package/adapters/cursor/data/licensing/schema.json +207 -0
- package/adapters/cursor/native/safe-write/binding.gyp +41 -0
- package/adapters/cursor/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
- package/adapters/cursor/native/safe-write/prebuilds.json +24 -0
- package/adapters/cursor/native/safe-write/src/safe_write.cc +2032 -0
- package/adapters/cursor/schemas/.render-manifest.json +41 -0
- package/adapters/cursor/schemas/approval-record.schema.json +115 -0
- package/adapters/cursor/schemas/artifact-lock.schema.json +111 -0
- package/adapters/cursor/schemas/artifact-plan.schema.json +52 -0
- package/adapters/cursor/schemas/artifact-policy.schema.json +76 -0
- package/adapters/cursor/schemas/evidence-event-v2.schema.json +164 -0
- package/adapters/cursor/schemas/evidence-event.schema.json +89 -0
- package/adapters/cursor/schemas/postpublish-approval-record.schema.json +47 -0
- package/adapters/cursor/schemas/release-plan.schema.json +2226 -0
- package/adapters/cursor/schemas/release-project.schema.json +1815 -0
- package/adapters/cursor/schemas/release-run.schema.json +777 -0
- package/adapters/cursor/skills/release-assess/SKILL.md +61 -0
- package/adapters/cursor/skills/release-config/SKILL.md +151 -0
- package/adapters/cursor/skills/release-docs/SKILL.md +120 -0
- package/adapters/cursor/skills/release-finish/SKILL.md +155 -0
- package/adapters/cursor/skills/release-help/SKILL.md +155 -0
- package/adapters/cursor/skills/release-marketplace/SKILL.md +157 -0
- package/adapters/cursor/skills/release-prepare/SKILL.md +136 -0
- package/adapters/cursor/skills/release-publish/SKILL.md +92 -0
- package/adapters/cursor/skills/release-reconcile/SKILL.md +81 -0
- package/adapters/cursor/skills/release-setup/SKILL.md +132 -0
- package/adapters/cursor/skills/release-verify/SKILL.md +110 -0
- package/adapters/cursor/src/schemas/adapter-build-manifest.schema.json +41 -0
- package/adapters/cursor/src/schemas/adapter-peer-verification-request.schema.json +54 -0
- package/adapters/cursor/src/schemas/adapter-peer-verification-result.schema.json +54 -0
- package/adapters/cursor/src/schemas/adapter-source.schema.json +47 -0
- package/adapters/cursor/src/schemas/audit-baseline-pin.schema.json +163 -0
- package/adapters/cursor/src/schemas/declared-read-surface-result.schema.json +61 -0
- package/adapters/cursor/src/schemas/engineering-baseline.schema.json +77 -0
- package/adapters/cursor/src/schemas/executable-identity-observation.schema.json +162 -0
- package/adapters/cursor/src/schemas/filesystem-root-binding.schema.json +14 -0
- package/adapters/cursor/src/schemas/filesystem-tree-observation.schema.json +71 -0
- package/adapters/cursor/src/schemas/fixed-set-publication-manifest.schema.json +108 -0
- package/adapters/cursor/src/schemas/fixed-set-publication-receipt.schema.json +148 -0
- package/adapters/cursor/src/schemas/host-capability-fact.schema.json +31 -0
- package/adapters/cursor/src/schemas/host-descriptor.schema.json +144 -0
- package/adapters/cursor/src/schemas/host-operation-plan.schema.json +57 -0
- package/adapters/cursor/src/schemas/host-operation-receipt.schema.json +81 -0
- package/adapters/cursor/src/schemas/host-probe-result.schema.json +30 -0
- package/adapters/cursor/src/schemas/host-registry.schema.json +18 -0
- package/adapters/cursor/src/schemas/host-verification-request.schema.json +67 -0
- package/adapters/cursor/src/schemas/host-verification-result.schema.json +149 -0
- package/adapters/cursor/src/schemas/managed-file-lock.schema.json +77 -0
- package/adapters/cursor/src/schemas/migration-manifest.schema.json +412 -0
- package/adapters/cursor/src/schemas/observation-scope.schema.json +91 -0
- package/adapters/cursor/src/schemas/operation-request.schema.json +58 -0
- package/adapters/cursor/src/schemas/operation-result.schema.json +130 -0
- package/adapters/cursor/src/schemas/platform-difference-registry.schema.json +110 -0
- package/adapters/cursor/src/schemas/plugin-verification-request.schema.json +499 -0
- package/adapters/cursor/src/schemas/plugin-verification-result.schema.json +1217 -0
- package/adapters/cursor/src/schemas/profile-adoption-declaration.schema.json +111 -0
- package/adapters/cursor/src/schemas/profile-descriptor.schema.json +99 -0
- package/adapters/cursor/src/schemas/project-manifest.schema.json +67 -0
- package/adapters/cursor/src/schemas/project-profile.schema.json +25 -0
- package/adapters/cursor/src/schemas/public-boundary-declaration.schema.json +73 -0
- package/adapters/cursor/src/schemas/report-binding.schema.json +42 -0
- package/adapters/cursor/src/schemas/report-model.schema.json +308 -0
- package/adapters/cursor/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
- package/adapters/cursor/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
- package/adapters/cursor/src/schemas/source-authority-receipt.schema.json +31 -0
- package/adapters/cursor/src/schemas/state-event-envelope.schema.json +38 -0
- package/adapters/cursor/src/schemas/state-snapshot-metadata.schema.json +25 -0
- package/adapters/cursor/src/schemas/structured-scan-policy.schema.json +97 -0
- package/adapters/cursor/src/schemas/surface-scan-policy.schema.json +42 -0
- package/adapters/cursor/src/schemas/timeout-policy.schema.json +24 -0
- package/adapters/cursor/src/schemas/token-estimate-record.schema.json +75 -0
- package/adapters/cursor/src/schemas/token-estimate-result.schema.json +43 -0
- package/adapters/cursor/src/schemas/watchdog-termination-envelope.schema.json +156 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/consumer-contract-vectors.json +7 -7
- package/adapters/kimi/bin/error-codes.json +1 -1
- package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
- package/adapters/kimi/bin/prebuild-manifest.json +8 -4
- package/adapters/kimi/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
- package/adapters/kimi/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
- package/adapters/kimi/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
- package/adapters/kimi/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
- package/adapters/kimi/bin/registry.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +3560 -1200
- package/adapters/kimi/bin/rules.json +1 -1
- package/adapters/kimi/data/hosts/cursor/host-descriptor.json +34 -0
- package/adapters/kimi/data/hosts/registry.json +1 -0
- package/adapters/kimi/schemas/release-plan.schema.json +255 -25
- package/adapters/kimi/schemas/release-project.schema.json +228 -26
- package/adapters/kimi/skills/release-finish/SKILL.md +17 -4
- package/adapters/kimi/skills/release-help/SKILL.md +40 -39
- package/adapters/kimi/src/schemas/host-descriptor.schema.json +9 -2
- package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
- package/adapters/qoder/bin/consumer-contract-vectors.json +7 -7
- package/adapters/qoder/bin/error-codes.json +1 -1
- package/adapters/qoder/bin/foundation-resource-binding.json +1 -1
- package/adapters/qoder/bin/prebuild-manifest.json +8 -4
- package/adapters/qoder/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
- package/adapters/qoder/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
- package/adapters/qoder/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
- package/adapters/qoder/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
- package/adapters/qoder/bin/registry.json +1 -1
- package/adapters/qoder/bin/release-skill.bundle.mjs +3560 -1200
- package/adapters/qoder/bin/rules.json +1 -1
- package/adapters/qoder/data/hosts/cursor/host-descriptor.json +34 -0
- package/adapters/qoder/data/hosts/registry.json +1 -0
- package/adapters/qoder/schemas/release-plan.schema.json +255 -25
- package/adapters/qoder/schemas/release-project.schema.json +228 -26
- package/adapters/qoder/skills/release-finish/SKILL.md +17 -4
- package/adapters/qoder/skills/release-help/SKILL.md +40 -39
- package/adapters/qoder/src/schemas/host-descriptor.schema.json +9 -2
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/consumer-contract-vectors.json +7 -7
- package/adapters/workbuddy/bin/error-codes.json +1 -1
- package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
- package/adapters/workbuddy/bin/prebuild-manifest.json +8 -4
- package/adapters/workbuddy/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
- package/adapters/workbuddy/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
- package/adapters/workbuddy/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
- package/adapters/workbuddy/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
- package/adapters/workbuddy/bin/registry.json +1 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +3560 -1200
- package/adapters/workbuddy/bin/rules.json +1 -1
- package/adapters/workbuddy/data/hosts/cursor/host-descriptor.json +34 -0
- package/adapters/workbuddy/data/hosts/registry.json +1 -0
- package/adapters/workbuddy/schemas/release-plan.schema.json +255 -25
- package/adapters/workbuddy/schemas/release-project.schema.json +228 -26
- package/adapters/workbuddy/skills/release-finish/SKILL.md +17 -4
- package/adapters/workbuddy/skills/release-help/SKILL.md +40 -39
- package/adapters/workbuddy/src/schemas/host-descriptor.schema.json +9 -2
- package/bin/consumer-contract-vectors.json +7 -7
- package/bin/error-codes.json +1 -1
- package/bin/foundation-resource-binding.json +1 -1
- package/bin/prebuild-manifest.json +8 -4
- package/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
- package/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
- package/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
- package/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
- package/bin/registry.json +1 -1
- package/bin/release-skill-cli.mjs +25 -1
- package/bin/release-skill.bundle.mjs +3560 -1200
- package/bin/rules.json +1 -1
- package/data/hosts/cursor/host-descriptor.json +34 -0
- package/data/hosts/registry.json +1 -0
- package/package.json +7 -5
- package/platform-manifest.json +75 -9
- package/schemas/release-plan.schema.json +255 -25
- package/schemas/release-project.schema.json +228 -26
- package/scripts/sync-public-files.mjs +3 -22
- package/skills/release-finish/SKILL.md +17 -4
- package/skills/release-help/SKILL.md +40 -39
- package/skills-src/release-finish/SKILL.md +17 -4
- package/skills-src/release-help/SKILL.md +40 -39
- package/src/adapters/contract.mjs +1 -0
- package/src/adapters/plugin-marketplace.mjs +201 -9
- package/src/commands/post-release-local.mjs +290 -34
- package/src/commands/prepare.mjs +74 -9
- package/src/commands/publish.mjs +4 -1
- package/src/commands/ship.mjs +2 -0
- package/src/commands/verify.mjs +73 -0
- package/src/core/checkpoints.mjs +5 -2
- package/src/core/config.mjs +1 -1
- package/src/core/foundation-host-verification.mjs +168 -0
- package/src/core/plan.mjs +19 -1
- package/src/core/postpublish.mjs +9 -1
- package/src/core/run-retention.mjs +1 -1
- package/src/core/surface-host-bindings.mjs +1 -0
- package/src/core/verification-gates.mjs +1 -1
- package/src/platforms/registry.mjs +225 -16
- package/src/producers/build-adapters.mjs +21 -26
- package/src/producers/foundation-resource-projection.mjs +3 -3
- package/src/schemas/host-descriptor.schema.json +9 -2
|
@@ -188,7 +188,9 @@
|
|
|
188
188
|
"claude-plugin",
|
|
189
189
|
"codex-plugin",
|
|
190
190
|
"kimi-plugin",
|
|
191
|
-
"codebuddy-plugin"
|
|
191
|
+
"codebuddy-plugin",
|
|
192
|
+
"qoder-plugin",
|
|
193
|
+
"cursor-plugin"
|
|
192
194
|
]
|
|
193
195
|
},
|
|
194
196
|
"package": {
|
|
@@ -265,7 +267,7 @@
|
|
|
265
267
|
"type": "integer",
|
|
266
268
|
"minimum": 30000,
|
|
267
269
|
"maximum": 900000,
|
|
268
|
-
"description": "
|
|
270
|
+
"description": "Maximum time in milliseconds for plugin installation or host verification. Kimi Code has no scriptable install command that can pin the frozen ref, nor does CodeBuddy; for these hosts this bounds read-only observation or read-only verification only. Cursor uses this limit for its frozen single-Skill invocation."
|
|
269
271
|
},
|
|
270
272
|
"marketplaceSourceType": {
|
|
271
273
|
"type": "string",
|
|
@@ -287,6 +289,9 @@
|
|
|
287
289
|
"minLength": 1,
|
|
288
290
|
"pattern": "^(?!/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(/|$))(?!\\.$)(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/$).*$",
|
|
289
291
|
"description": "Bundled marketplace index relative path override;仅插件 distribution 允许"
|
|
292
|
+
},
|
|
293
|
+
"hostVerification": {
|
|
294
|
+
"$ref": "#/definitions/cursorHostScenario"
|
|
290
295
|
}
|
|
291
296
|
},
|
|
292
297
|
"allOf": [
|
|
@@ -319,7 +324,9 @@
|
|
|
319
324
|
"claude-plugin",
|
|
320
325
|
"codex-plugin",
|
|
321
326
|
"kimi-plugin",
|
|
322
|
-
"codebuddy-plugin"
|
|
327
|
+
"codebuddy-plugin",
|
|
328
|
+
"qoder-plugin",
|
|
329
|
+
"cursor-plugin"
|
|
323
330
|
]
|
|
324
331
|
}
|
|
325
332
|
}
|
|
@@ -331,7 +338,8 @@
|
|
|
331
338
|
"type": {
|
|
332
339
|
"enum": [
|
|
333
340
|
"claude-plugin",
|
|
334
|
-
"codex-plugin"
|
|
341
|
+
"codex-plugin",
|
|
342
|
+
"qoder-plugin"
|
|
335
343
|
]
|
|
336
344
|
}
|
|
337
345
|
}
|
|
@@ -359,6 +367,55 @@
|
|
|
359
367
|
]
|
|
360
368
|
}
|
|
361
369
|
},
|
|
370
|
+
{
|
|
371
|
+
"if": {
|
|
372
|
+
"properties": {
|
|
373
|
+
"type": {
|
|
374
|
+
"const": "cursor-plugin"
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
"then": {
|
|
379
|
+
"required": [
|
|
380
|
+
"entrySkill",
|
|
381
|
+
"hostVerification"
|
|
382
|
+
],
|
|
383
|
+
"not": {
|
|
384
|
+
"anyOf": [
|
|
385
|
+
{
|
|
386
|
+
"required": [
|
|
387
|
+
"marketplace"
|
|
388
|
+
]
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"required": [
|
|
392
|
+
"marketplaceSource"
|
|
393
|
+
]
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"required": [
|
|
397
|
+
"marketplaceRepo"
|
|
398
|
+
]
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"required": [
|
|
402
|
+
"marketplaceSourceType"
|
|
403
|
+
]
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"required": [
|
|
407
|
+
"marketplaceIndexPath"
|
|
408
|
+
]
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"required": [
|
|
412
|
+
"firstReleaseBootstrap"
|
|
413
|
+
]
|
|
414
|
+
}
|
|
415
|
+
]
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
},
|
|
362
419
|
{
|
|
363
420
|
"if": {
|
|
364
421
|
"properties": {
|
|
@@ -383,7 +440,8 @@
|
|
|
383
440
|
"claude-plugin",
|
|
384
441
|
"codex-plugin",
|
|
385
442
|
"kimi-plugin",
|
|
386
|
-
"codebuddy-plugin"
|
|
443
|
+
"codebuddy-plugin",
|
|
444
|
+
"qoder-plugin"
|
|
387
445
|
]
|
|
388
446
|
}
|
|
389
447
|
}
|
|
@@ -402,7 +460,8 @@
|
|
|
402
460
|
"claude-plugin",
|
|
403
461
|
"codex-plugin",
|
|
404
462
|
"kimi-plugin",
|
|
405
|
-
"codebuddy-plugin"
|
|
463
|
+
"codebuddy-plugin",
|
|
464
|
+
"qoder-plugin"
|
|
406
465
|
]
|
|
407
466
|
},
|
|
408
467
|
"marketplaceSourceType": {
|
|
@@ -429,7 +488,8 @@
|
|
|
429
488
|
"claude-plugin",
|
|
430
489
|
"codex-plugin",
|
|
431
490
|
"kimi-plugin",
|
|
432
|
-
"codebuddy-plugin"
|
|
491
|
+
"codebuddy-plugin",
|
|
492
|
+
"qoder-plugin"
|
|
433
493
|
]
|
|
434
494
|
},
|
|
435
495
|
"marketplaceSourceType": {
|
|
@@ -456,7 +516,8 @@
|
|
|
456
516
|
"claude-plugin",
|
|
457
517
|
"codex-plugin",
|
|
458
518
|
"kimi-plugin",
|
|
459
|
-
"codebuddy-plugin"
|
|
519
|
+
"codebuddy-plugin",
|
|
520
|
+
"qoder-plugin"
|
|
460
521
|
]
|
|
461
522
|
},
|
|
462
523
|
"marketplaceSourceType": {
|
|
@@ -530,6 +591,20 @@
|
|
|
530
591
|
"smokeBin"
|
|
531
592
|
]
|
|
532
593
|
}
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"if": {
|
|
597
|
+
"required": [
|
|
598
|
+
"hostVerification"
|
|
599
|
+
]
|
|
600
|
+
},
|
|
601
|
+
"then": {
|
|
602
|
+
"properties": {
|
|
603
|
+
"type": {
|
|
604
|
+
"const": "cursor-plugin"
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
533
608
|
}
|
|
534
609
|
]
|
|
535
610
|
}
|
|
@@ -1031,42 +1106,111 @@
|
|
|
1031
1106
|
"$ref": "#/definitions/localHostUpdate"
|
|
1032
1107
|
}
|
|
1033
1108
|
},
|
|
1034
|
-
"allOf": [
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1109
|
+
"allOf": [
|
|
1110
|
+
{
|
|
1111
|
+
"if": {
|
|
1112
|
+
"required": [
|
|
1113
|
+
"localHostUpdate"
|
|
1114
|
+
]
|
|
1115
|
+
},
|
|
1116
|
+
"then": {
|
|
1117
|
+
"required": [
|
|
1118
|
+
"hooks"
|
|
1119
|
+
],
|
|
1120
|
+
"properties": {
|
|
1121
|
+
"hooks": {
|
|
1122
|
+
"contains": {
|
|
1123
|
+
"type": "object",
|
|
1124
|
+
"required": [
|
|
1125
|
+
"phase"
|
|
1126
|
+
],
|
|
1127
|
+
"properties": {
|
|
1128
|
+
"phase": {
|
|
1129
|
+
"const": "postVerify"
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1041
1134
|
}
|
|
1042
1135
|
}
|
|
1043
1136
|
}
|
|
1044
|
-
|
|
1137
|
+
]
|
|
1045
1138
|
},
|
|
1046
1139
|
"localHostUpdate": {
|
|
1047
1140
|
"type": "object",
|
|
1048
1141
|
"additionalProperties": false,
|
|
1049
|
-
"required": [
|
|
1142
|
+
"required": [
|
|
1143
|
+
"plugin",
|
|
1144
|
+
"hosts",
|
|
1145
|
+
"hub"
|
|
1146
|
+
],
|
|
1050
1147
|
"properties": {
|
|
1051
|
-
"plugin": {
|
|
1148
|
+
"plugin": {
|
|
1149
|
+
"type": "string",
|
|
1150
|
+
"minLength": 1,
|
|
1151
|
+
"pattern": ".*\\S.*"
|
|
1152
|
+
},
|
|
1052
1153
|
"hosts": {
|
|
1053
1154
|
"type": "array",
|
|
1054
1155
|
"minItems": 1,
|
|
1055
1156
|
"uniqueItems": true,
|
|
1056
|
-
"items": {
|
|
1157
|
+
"items": {
|
|
1158
|
+
"type": "string",
|
|
1159
|
+
"enum": [
|
|
1160
|
+
"claude",
|
|
1161
|
+
"codex",
|
|
1162
|
+
"kimi",
|
|
1163
|
+
"codebuddy",
|
|
1164
|
+
"workbuddy",
|
|
1165
|
+
"qoder",
|
|
1166
|
+
"cursor"
|
|
1167
|
+
]
|
|
1168
|
+
}
|
|
1057
1169
|
},
|
|
1058
|
-
"hub": {
|
|
1170
|
+
"hub": {
|
|
1171
|
+
"$ref": "#/definitions/localHostHub"
|
|
1172
|
+
},
|
|
1173
|
+
"cursor": {
|
|
1174
|
+
"$ref": "#/definitions/cursorLocalPlugin"
|
|
1175
|
+
}
|
|
1176
|
+
},
|
|
1177
|
+
"allOf": [{ "if": { "properties": { "hosts": { "contains": { "const": "cursor" } } } }, "then": { "required": ["cursor"], "properties": { "plugin": { "pattern": "^[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$" } } }, "else": { "not": { "required": ["cursor"] } } }]
|
|
1178
|
+
},
|
|
1179
|
+
"cursorLocalPlugin": {
|
|
1180
|
+
"type": "object",
|
|
1181
|
+
"additionalProperties": false,
|
|
1182
|
+
"required": ["sourcePath"],
|
|
1183
|
+
"properties": {
|
|
1184
|
+
"sourcePath": { "type": "string", "pattern": "^(?!/)(?!.*\\\\)(?!.*:)(?!.*\\u0000)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*//)(?!.*\\/$).+$" },
|
|
1185
|
+
"dependencyInstall": { "const": "npm-ci-ignore-scripts" }
|
|
1059
1186
|
}
|
|
1060
1187
|
},
|
|
1061
1188
|
"localHostHub": {
|
|
1062
1189
|
"type": "object",
|
|
1063
1190
|
"additionalProperties": false,
|
|
1064
|
-
"required": [
|
|
1191
|
+
"required": [
|
|
1192
|
+
"name",
|
|
1193
|
+
"repo",
|
|
1194
|
+
"ref"
|
|
1195
|
+
],
|
|
1065
1196
|
"properties": {
|
|
1066
|
-
"name": {
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1197
|
+
"name": {
|
|
1198
|
+
"type": "string",
|
|
1199
|
+
"minLength": 1,
|
|
1200
|
+
"pattern": ".*\\S.*"
|
|
1201
|
+
},
|
|
1202
|
+
"githubHost": {
|
|
1203
|
+
"type": "string",
|
|
1204
|
+
"pattern": "^[A-Za-z0-9](?:[A-Za-z0-9.-]*[A-Za-z0-9])?$"
|
|
1205
|
+
},
|
|
1206
|
+
"repo": {
|
|
1207
|
+
"type": "string",
|
|
1208
|
+
"pattern": "^[A-Za-z0-9._-]+\\/[A-Za-z0-9._-]+$"
|
|
1209
|
+
},
|
|
1210
|
+
"ref": {
|
|
1211
|
+
"type": "string",
|
|
1212
|
+
"pattern": "^refs\\/heads\\/[A-Za-z0-9][A-Za-z0-9._-]*(?:\\/[A-Za-z0-9][A-Za-z0-9._-]*)*$"
|
|
1213
|
+
}
|
|
1070
1214
|
}
|
|
1071
1215
|
},
|
|
1072
1216
|
"postPublishHook": {
|
|
@@ -1528,7 +1672,8 @@
|
|
|
1528
1672
|
"claude-plugin",
|
|
1529
1673
|
"codex-plugin",
|
|
1530
1674
|
"kimi-plugin",
|
|
1531
|
-
"codebuddy-plugin"
|
|
1675
|
+
"codebuddy-plugin",
|
|
1676
|
+
"qoder-plugin"
|
|
1532
1677
|
]
|
|
1533
1678
|
}
|
|
1534
1679
|
}
|
|
@@ -1608,6 +1753,63 @@
|
|
|
1608
1753
|
}
|
|
1609
1754
|
}
|
|
1610
1755
|
]
|
|
1756
|
+
},
|
|
1757
|
+
"cursorHostScenario": {
|
|
1758
|
+
"type": "object",
|
|
1759
|
+
"additionalProperties": false,
|
|
1760
|
+
"required": [
|
|
1761
|
+
"workloadDocument",
|
|
1762
|
+
"fixtureFiles",
|
|
1763
|
+
"protectedWorkspaceFiles",
|
|
1764
|
+
"platformManifest",
|
|
1765
|
+
"effectivePrompt",
|
|
1766
|
+
"expectedResult"
|
|
1767
|
+
],
|
|
1768
|
+
"properties": {
|
|
1769
|
+
"workloadDocument": {
|
|
1770
|
+
"type": "string",
|
|
1771
|
+
"minLength": 1
|
|
1772
|
+
},
|
|
1773
|
+
"fixtureFiles": {
|
|
1774
|
+
"$ref": "#/definitions/cursorScenarioFiles"
|
|
1775
|
+
},
|
|
1776
|
+
"protectedWorkspaceFiles": {
|
|
1777
|
+
"$ref": "#/definitions/cursorScenarioFiles"
|
|
1778
|
+
},
|
|
1779
|
+
"platformManifest": {
|
|
1780
|
+
"type": "object"
|
|
1781
|
+
},
|
|
1782
|
+
"effectivePrompt": {
|
|
1783
|
+
"type": "string",
|
|
1784
|
+
"minLength": 1,
|
|
1785
|
+
"pattern": "^[^\\u0000]*$"
|
|
1786
|
+
},
|
|
1787
|
+
"expectedResult": {
|
|
1788
|
+
"type": "string"
|
|
1789
|
+
}
|
|
1790
|
+
}
|
|
1791
|
+
},
|
|
1792
|
+
"cursorScenarioFiles": {
|
|
1793
|
+
"type": "array",
|
|
1794
|
+
"minItems": 1,
|
|
1795
|
+
"items": {
|
|
1796
|
+
"type": "object",
|
|
1797
|
+
"additionalProperties": false,
|
|
1798
|
+
"required": [
|
|
1799
|
+
"path",
|
|
1800
|
+
"content"
|
|
1801
|
+
],
|
|
1802
|
+
"properties": {
|
|
1803
|
+
"path": {
|
|
1804
|
+
"type": "string",
|
|
1805
|
+
"minLength": 1,
|
|
1806
|
+
"pattern": "^(?!/)(?!.*\\\\)(?!.*:)(?!.*\\u0000)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*(?:^|/)\\.cursor(?:/|$))(?!.*//)(?!.*\\/$).+$"
|
|
1807
|
+
},
|
|
1808
|
+
"content": {
|
|
1809
|
+
"type": "string"
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
}
|
|
1611
1813
|
}
|
|
1612
1814
|
}
|
|
1613
1815
|
}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* The generator scans `packages/release-skill/` for all regular files,
|
|
11
11
|
* excludes the `adapters/` subtree (generated by build-adapters), then adds:
|
|
12
12
|
* 1. Platform manifest files derived from the registry (manifestPaths +
|
|
13
|
-
* buildAdapter fields),
|
|
14
|
-
*
|
|
13
|
+
* buildAdapter fields), including historical directory names such as
|
|
14
|
+
* codebuddy -> workbuddy.
|
|
15
15
|
* 2. All files under `adapters/{platform.id}/` for each registry platform
|
|
16
16
|
* and each build-only adapter.
|
|
17
17
|
*
|
|
@@ -31,7 +31,6 @@ import { fileURLToPath } from 'node:url';
|
|
|
31
31
|
// ---------------------------------------------------------------------------
|
|
32
32
|
|
|
33
33
|
import { PLATFORMS } from '../src/platforms/registry.mjs';
|
|
34
|
-
import { BUILD_ONLY_ADAPTERS } from '../src/producers/build-adapters.mjs';
|
|
35
34
|
|
|
36
35
|
// ---------------------------------------------------------------------------
|
|
37
36
|
// Constants
|
|
@@ -262,7 +261,7 @@ async function collectEntries(packageRoot) {
|
|
|
262
261
|
const platformManifestFiles = [];
|
|
263
262
|
const platformAdapterFiles = [];
|
|
264
263
|
|
|
265
|
-
for (const platform of PLATFORMS) {
|
|
264
|
+
for (const platform of PLATFORMS.filter((candidate) => candidate.buildAdapter.enabled)) {
|
|
266
265
|
// Root-level manifest files
|
|
267
266
|
for (const mp of deriveManifestPaths(platform)) {
|
|
268
267
|
if (allSet.has(mp)) {
|
|
@@ -282,24 +281,6 @@ async function collectEntries(packageRoot) {
|
|
|
282
281
|
}
|
|
283
282
|
}
|
|
284
283
|
|
|
285
|
-
// Build-only distribution adapters (BUILD_ONLY_ADAPTERS): not publish-pipeline
|
|
286
|
-
// platforms, but their generated adapter trees and root manifests ship
|
|
287
|
-
// publicly just like the pipeline platforms'. Currently empty — workbuddy
|
|
288
|
-
// moved into the registry as the `codebuddy` platform (handled above via its
|
|
289
|
-
// buildAdapter.name); this loop is retained for future build-only hosts.
|
|
290
|
-
for (const adapter of BUILD_ONLY_ADAPTERS) {
|
|
291
|
-
const rootManifest = `${adapter.pluginDirName}/${adapter.templateFileName}`;
|
|
292
|
-
if (allSet.has(rootManifest)) {
|
|
293
|
-
platformManifestFiles.push(rootManifest);
|
|
294
|
-
}
|
|
295
|
-
const adapterDirPrefix = `adapters/${adapter.name}/`;
|
|
296
|
-
for (const f of allFiles) {
|
|
297
|
-
if (f.startsWith(adapterDirPrefix)) {
|
|
298
|
-
platformAdapterFiles.push(f);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
284
|
// 5. Combine, deduplicate, sort
|
|
304
285
|
const combined = [...baseFiles, ...platformManifestFiles, ...platformAdapterFiles];
|
|
305
286
|
const unique = [...new Set(combined)];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: release-finish
|
|
3
|
-
description: 发布达到 VERIFIED 后处理发布收尾:确认 postVerify 提案送达边界,按发布分支策略决定是否询问合并,并在用户确认后更新本机 Claude、Codex、Kimi、CodeBuddy/WorkBuddy、Qoder 插件
|
|
3
|
+
description: 发布达到 VERIFIED 后处理发布收尾:确认 postVerify 提案送达边界,按发布分支策略决定是否询问合并,并在用户确认后更新本机 Claude、Codex、Kimi、CodeBuddy/WorkBuddy、Qoder、Cursor 插件
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# release-finish
|
|
@@ -60,17 +60,30 @@ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill-local-finish.mjs" \
|
|
|
60
60
|
--json
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
只传用户选择且计划声明的宿主。Cursor 选择方式见下节;其他宿主 CLI 不存在时返回 `SKIPPED_NOT_INSTALLED`。各宿主按以下规则处理:
|
|
64
64
|
|
|
65
65
|
- Claude 或 Codex 只有在市场需要重绑时,才会在该宿主第一条写命令之前只读查询冻结的市场仓库、引用和提交。远端不可达、引用缺失或提交不一致时返回 `MANUAL_REQUIRED`,该宿主不执行市场或插件写入;其他已选宿主继续处理。精确当前安装仍核对真实载荷,但不强制联网。
|
|
66
|
-
- Kimi 的精确当前安装会在返回 `ALREADY_CURRENT` 前核对真实载荷;发生安装或迁移时,只在操作完成后核对结果。配置根依次取显式 `kimiHome`、`KIMI_CODE_HOME`、用户主目录下的 `.kimi-code`,TUI 与安装后观察使用同一根。release-finish 当前只采用并验证 Kimi Code 的受控终端交互界面(TUI)路径,并把 TUI 工作目录固定为 `--root` 指定的当前发布项目。用户已确认冻结计划、显式选择更新且 `--hosts` 包含 `kimi`
|
|
66
|
+
- Kimi 的精确当前安装会在返回 `ALREADY_CURRENT` 前核对真实载荷;发生安装或迁移时,只在操作完成后核对结果。配置根依次取显式 `kimiHome`、`KIMI_CODE_HOME`、用户主目录下的 `.kimi-code`,TUI 与安装后观察使用同一根。release-finish 当前只采用并验证 Kimi Code 的受控终端交互界面(TUI)路径,并把 TUI 工作目录固定为 `--root` 指定的当前发布项目。用户已确认冻结计划、显式选择更新且 `--hosts` 包含 `kimi` 时,流程读取完整的初始 `Trust this folder?` 对话框,要求其中只有一个正向项 `Trust this folder` 和一个选中项。正向项已经选中时不发送方向键,直接确认;已知拒绝项选中时,按它与正向项的相对位置移动一次,重新读取完整对话框并确认正向项已选中,然后才提交。插件命令发出后再次出现目录信任、界面或选中项未知、正向项缺失或重复、移动后无法确认、超时或提前退出时,该宿主失败并停止后续安装步骤。若后续 Kimi 版本出现新的可复现界面差异,先记录 Kimi 版本、可见选项、选中项及选项关系;这些事实足以唯一确认当前目录、正向信任项和选择结果时,在最近测试补回归与兼容并继续,目录身份或选项语义不明时仍停止并交回主会话。插件信任仍先清理 ANSI/OSC 控制序列和软换行,再分别核对冻结仓库与标签;只有选中 `Trust and install` 才提交并重新加载。包名、版本、发布标签、已安装修订号和受管安装根必须与冻结计划一致;`.git` 只提供附加诊断,不是通过条件。旧的本地路径安装会在同一 TUI 会话中先移除,再按发布标签安装。
|
|
67
67
|
- CodeBuddy/WorkBuddy 只处理同一 bundled-family 插件和市场。CodeBuddy 仅探测全局 `codebuddy`/`cbc`,由收尾脚本把 `CODEBUDDY_CONFIG_DIR` 固定为有效 `HOME`(环境未提供时取操作系统用户主目录)下名为 `.codebuddy` 的目录;WorkBuddy 仅在 macOS 探测 WorkBuddy 应用内嵌 CLI,由收尾脚本把 `CODEBUDDY_CONFIG_DIR` 与 `WORKBUDDY_CONFIG_DIR` 同时固定为有效 `HOME` 下名为 `.workbuddy` 的目录,绝不把两者互作回退。只有冻结标签与计划声明的可变分支都从同一远端解析到冻结提交时,才调用正式市场更新和插件更新命令;完成后重新读取安装列表,并精确核对唯一条目的市场、版本和修订号。目标未安装、来源不符、远端不可访问或身份不一致时返回 `MANUAL_REQUIRED`,不修改宿主。非 macOS 的 WorkBuddy 返回 `SKIPPED_UNSUPPORTED_PLATFORM`。
|
|
68
68
|
- Qoder 先用 `qoder plugins marketplace list --json` 核对计划声明的 Hub 名称、仓库、分支和本机 checkout,再用 `qoder plugins list --json` 核对唯一插件条目的市场、`scope=user`、版本与 `installPath`。目标市场或插件未安装时返回 `MANUAL_REQUIRED`,不添加市场,也不执行首次安装。旧版已安装时,只运行 `qoder plugins marketplace update <name>` 和 `qoder plugins update <plugin@marketplace> --scope user`。市场刷新后、插件更新前,必须从 Hub 的 `marketplace.json` 核对目标条目的 `source.url` 和 `source.sha`;操作后从真实 `installPath` 核对 Qoder manifest、完整声明载荷和冻结来源。市场可能在检查与更新之间变化,事后身份不符时报告失败,不自动降级、卸载或覆盖。
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
任何宿主失败都保留其他宿主的实际结果,不把失败冒充成功。Cursor 只在本次交换映射可确认且备份迁移失败时恢复自己的原目录。
|
|
71
71
|
|
|
72
72
|
完成后报告每个宿主的安装状态。Qoder 返回 `UPDATED` 只表示安装载荷已经更新;启动新会话或执行 `/plugins reload` 并核对实际加载版本后,才能报告新版已加载。本机结果只记录收尾事实,不改变发布状态。
|
|
73
73
|
|
|
74
|
+
## Cursor 完整 Local 插件
|
|
75
|
+
|
|
76
|
+
计划声明 `hosts: [cursor]` 和 `cursor.sourcePath` 后,用户可选择 `--hosts cursor`,并必须提供
|
|
77
|
+
`--cursor-plugins-root <absolute-directory>`。该目录通常是用户目录下的 `.cursor/plugins`,不得猜测。
|
|
78
|
+
无需 Cursor CLI、消费项目根或扩展目录;当前自动安装仅支持 macOS,且必须先退出 Cursor 主进程。
|
|
79
|
+
|
|
80
|
+
脚本复验冻结快照和完整插件清单,在扫描根外准备候选;可选 `npm-ci-ignore-scripts` 只安装候选依赖。
|
|
81
|
+
目标为 `<cursor-plugins-root>/local/<plugin>`。新装不覆盖,升级整体交换目录,旧版移入
|
|
82
|
+
`backups/<plugin>/`。备份迁移失败且映射可确认时恢复原目录;交换结果不确定时保留两侧并停止,禁止盲重试。
|
|
83
|
+
|
|
84
|
+
版本与完整闭包一致返回 `ALREADY_CURRENT`;安装或升级成功返回 `UPDATED`、`restartRequired` 与重启提示。
|
|
85
|
+
重启 Cursor/Reload Window 后,分别核对 Local 来源、版本、公开 Skill 和业务调用;脚本结果不能证明这些加载事实。
|
|
86
|
+
|
|
74
87
|
## 配置与目录
|
|
75
88
|
|
|
76
89
|
从发布项目目录的 `.release-skill/project.yaml` 读取 `releaseFinish` 和 `project.defaultBranch`。
|
|
@@ -7,33 +7,46 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
7
7
|
|
|
8
8
|
## 触发
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
询问用法、发布流程、只读诊断或 dry-run 时使用。
|
|
11
11
|
|
|
12
12
|
## 职责
|
|
13
13
|
|
|
14
14
|
- 依赖和环境检查:Node.js >= 22、Git 决定本地准备就绪度;npm/gh 另行决定生产依赖就绪度
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- 只读诊断:运行 dry-run 检查,不修改任何文件
|
|
18
|
-
- 故障引导:根据错误码指向对应的修复 Skill
|
|
15
|
+
- 能力说明:缺配置走 `help → setup → assess`;已有配置默认走 `help → assess → prepare --offline`。生产发布优先用可恢复的 `ship`,也支持 `prepare --online --production → approve → publish → verify`。冻结计划批准是发布级唯一批准门;`requiresApproval: true` 的 postPublish hook 另需 checkpoint 批准。声明的 `postVerify` hook 可由 `postverify` 独立执行或由 `ship` 编排;本机收尾须等待完成的 postVerify run,仅有 `VERIFIED` 不构成授权。核心流程跨平台,WorkBuddy 本机收尾仅支持 macOS
|
|
16
|
+
- 示例与诊断:引导至 `release-assess`;dry-run 不改文件,失败按错误码路由
|
|
19
17
|
|
|
20
|
-
## 0.9.
|
|
18
|
+
## 0.9.18 候选边界
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
多单元项目可在冻结前通过 `prepare` 或新建 `ship` 状态重复传入 `--unit <id>`,不传则选全部。输出列出选中与延期单元;延期单元不进入计划、不获得发布状态。
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
选择只影响单元检查与动作;完整配置、生成物新鲜度和顶层 Hook 仍覆盖全项目。`publicSourceAuthorityReceipt` 的 coordinator 和 subjects 必须共同选择,不自动扩选。冻结后以 `plan.units` 为唯一范围;publish、reconcile、verify、distribute 不接受 `--unit`。
|
|
25
23
|
|
|
26
|
-
0.9.3 引入的四项工作流保护、Hook cache v2 和稳定隔离安装树记录在后续版本继续保留。当前 0.9.
|
|
24
|
+
0.9.3 引入的四项工作流保护、Hook cache v2 和稳定隔离安装树记录在后续版本继续保留。当前 0.9.18 候选精确消费 Foundation 0.21.0 的公开包根 API。Hook cache 只复用绝对路径或经真实 cwd 校验的 cwd-relative executable identity;裸 PATH、PATHEXT、Windows 和观察不可用时,Hook 仍冷执行,缓存复用失败关闭且不写入 v2 cache。缓存没有 TTL。
|
|
27
25
|
|
|
28
|
-
稳定隔离安装树记录只在宿主命令退出、目录已隔离且扫描期间没有并发写入时执行;宿主附加链接只记录、不跟随,声明载荷中的 symlink 失败关闭,legacy 全树语义保持不变。0.9.
|
|
26
|
+
稳定隔离安装树记录只在宿主命令退出、目录已隔离且扫描期间没有并发写入时执行;宿主附加链接只记录、不跟随,声明载荷中的 symlink 失败关闭,legacy 全树语义保持不变。0.9.18 仍是源码候选,不能从本说明推断已批准、发布或验证。
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
**阶段通过规则**:本地 help/assess/prepare 通过须同时满足 `READY` 和 exit code 0;读取 `status`、`readiness.localPreparation.status`,缺失 Node/Git 见 `missingRequired`。生产另看 `readiness.productionPublish`:缺 npm/gh 为 `NOT_READY`,存在也只到 `AUTH_CHECK_REQUIRED`。help 不联网、不检查认证,本地就绪不等于生产就绪。
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
**边界**:help 不改文件、不执行外部写入、不生成计划;优先用 PATH 上的 `release-skill`,不可用才回退源码。每个 unit 必填 `previousPublicBaseline`:确认无前序版本才用 none,否则用 bound + repo/ref/commit;none 不绕过 publish 唯一性预检。v0.1.1 已完成 GitHub/npm 真实发布、冻结 Git ref 的 Claude/Codex 安装、精确 npm 安装 smoke 和 VERIFIED;本地协议套件覆盖 fake gh/npm/Claude/Codex 与 bare Git,未做 OS 级禁网。该历史结果不证明其他项目的认证、权限、限流或最终一致性;各项目首次发布仍须监控 canary。
|
|
31
|
+
|
|
32
|
+
## Cursor 消费项目验证
|
|
33
|
+
|
|
34
|
+
消费项目的 `cursor-plugin` 必填 `entrySkill` 和 `hostVerification`。场景含 UTF-8 `workloadDocument`、非空 `fixtureFiles` 与 `protectedWorkspaceFiles`、JSON 对象 `platformManifest`、提示词 `effectivePrompt` 和预期字符串 `expectedResult`。文件格式为 `{path, content}`;路径须安全、相对,不得重复、互为父子或指向 `.cursor`。场景进入公开冻结计划,禁止含凭证。`timeoutMs` 限制验证时长,默认 300000 毫秒。
|
|
35
|
+
|
|
36
|
+
`prepare` 冻结到 `hostVerificationContract.scenario`;`verify` 复验冻结单 Skill 载荷后,由 Foundation 0.21.0 准备并执行 Cursor 调用。仅当宿主成功且 `result` 严格等于 `expectedResult` 时自动通过;不证明完整插件安装或团队市场分发。
|
|
37
|
+
|
|
38
|
+
每次运行 `verify` 或通过 `ship` 进入验证阶段,都须传入以下两个绝对目录:
|
|
39
|
+
|
|
40
|
+
- `--cursor-executable-root <absolute-directory>`:包含 `cursor-agent` 的受控目录。
|
|
41
|
+
- `--cursor-user-state-root <absolute-directory>`:本次获准使用的现有 Cursor 用户状态目录。
|
|
42
|
+
|
|
43
|
+
目录不写入计划、ship 状态或公开收据,恢复时须重传,不从 `PATH`/`HOME` 推断。须有用户状态使用权限;宿主可能刷新该状态。
|
|
44
|
+
|
|
45
|
+
成功、失败或拒绝后读取证据并清理临时目录;结果不确定则保留现场,返回 `CONSUMER_VERIFICATION_DEFERRED` 和临时目录名 `sceneId`。人工检查进程与现场后才重试,并用新目录;不确定结果不构成 Cursor 发布检查点或 `PARTIAL`。
|
|
33
46
|
|
|
34
47
|
## 正向执行路径
|
|
35
48
|
|
|
36
|
-
1.
|
|
49
|
+
1. 从插件根运行下节的 `help --json` 命令
|
|
37
50
|
2. 检查 `readiness.localPreparation`;需要生产发布时再检查 `readiness.productionPublish`
|
|
38
51
|
3. 若环境就绪且缺少 `.release-skill/project.yaml`,先路由 `release-setup`;配置已存在才运行 `release-assess`
|
|
39
52
|
4. 默认在审阅本地计划和快照后停止;只有用户明确要求且完成摘要审批时才进入 `release-publish`。已持有合法批准的 production plan 时,publish 自行完成权威校验,不把 route 当作授权门
|
|
@@ -48,9 +61,6 @@ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" assess --root <path> --offlin
|
|
|
48
61
|
# 日常发布快速路径:发布前确认可读计划摘要,状态文件可恢复。
|
|
49
62
|
# 受限 postPublish hook 的 checkpoint 批准与计划批准分开。
|
|
50
63
|
node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" ship --root <path> --target-version <version> --json
|
|
51
|
-
# 多发布单元项目显式选择本轮范围;未传 --unit 时仍为全部单元
|
|
52
|
-
node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" ship --root <path> \
|
|
53
|
-
--target-version <version> --unit <unit-a> --unit <unit-b> --json
|
|
54
64
|
# 对已经 VERIFIED 的计划独立执行 postVerify hook;不读取或写入 ship state
|
|
55
65
|
node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" postverify --root <path> \
|
|
56
66
|
--plan <plan-path> --approval <approval-path> --run <verified-run-path> \
|
|
@@ -72,14 +82,14 @@ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" docs refresh --unit <id> \
|
|
|
72
82
|
|
|
73
83
|
## 发布文档刷新(docs refresh)
|
|
74
84
|
|
|
75
|
-
|
|
85
|
+
配置 `releaseDocuments` 后,双语说明源可刷新 README 受管区域、唯一版本标记机器值及 CHANGELOG 当前受管条目。CLI 不联网、不调用大模型、不翻译;只写声明的上述目标,其余字节保留。`prepare` 只查新鲜度、不写工作树。
|
|
76
86
|
|
|
77
|
-
- **配置**:`releaseDocuments.notesSource
|
|
78
|
-
- **说明源**:`version`
|
|
87
|
+
- **配置**:`releaseDocuments.notesSource` 只允许 `{version}` 占位符及 `.yaml`/`.yml`/`.json`;`locales` 声明语种;`changelogs` 声明 path + locale;`readmes` 另含 `regions` 区域 id 和 `versionMarkers` 模式。模式须精确匹配 README 唯一标记,只替换 `{version}` 机器值;零次或多次匹配失败关闭。
|
|
88
|
+
- **说明源**:`version` 须与单元一致,`date` 为 `YYYY-MM-DD`;每种配置语种恰好一次,`summary` 非空,`security`/`breaking`/`added`/`changed`/`deprecated`/`removed`/`fixed` 至少一类含非空条目。YAML alias、重复键、未知字段、语种回退均失败关闭。
|
|
79
89
|
- **只读演练**:`docs refresh --unit <id> --json` 输出逐文件相对路径、locale、新旧摘要、`version`、`locales`、`inputDigest`、`refreshDigest` 和 `nextCommand.argv`;候选无变化时 `status: "clean"`。
|
|
80
90
|
- **确认写入**:必须同时提供 `--write`、精确 `--confirm-refresh <refreshDigest>` 和 `--ack-local-document-write`,全部目标作为一个事务提交;成功后立即复演必须为 `clean`。
|
|
81
91
|
|
|
82
|
-
|
|
92
|
+
**授权边界**:文档写入只覆盖声明的本地目标,不授权 Git 提交、push、publish 或安装。hook/gate 由命令直接授权;project.yaml 配置 hook 即授权(FM-16 处置 A),配置者负责其内容。hook 是任意本地进程,无文件系统/网络隔离,触发前无确认;恢复确认门留待后续加固。写入后须审阅、提交,再 prepare。
|
|
83
93
|
|
|
84
94
|
## 故障路由
|
|
85
95
|
|
|
@@ -99,32 +109,19 @@ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" docs refresh --unit <id> \
|
|
|
99
109
|
|
|
100
110
|
## Routing Suggestions (§4.3 Quickstart Routing)
|
|
101
111
|
|
|
102
|
-
|
|
112
|
+
不确定入口时用 `release-skill route` 推荐工作流:
|
|
103
113
|
|
|
104
114
|
```bash
|
|
105
115
|
# 快速分类变更并推荐工作流;已知目标版本时显式传入,未知时省略
|
|
106
|
-
node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" route --root <path> --json
|
|
107
116
|
node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" route --root <path> \
|
|
108
117
|
--target-version <version> --json
|
|
109
118
|
|
|
110
|
-
# JSON 输出包含 classification 和 recommendation 字段
|
|
111
|
-
{
|
|
112
|
-
"classification": {
|
|
113
|
-
"code": [],
|
|
114
|
-
"docs": ["README.md"],
|
|
115
|
-
"config": [],
|
|
116
|
-
"marketplace": [],
|
|
117
|
-
"mixed": false
|
|
118
|
-
},
|
|
119
|
-
"recommendation": {
|
|
120
|
-
"workflowKind": "docs-only",
|
|
121
|
-
"reason": "Pure documentation changes detected...",
|
|
122
|
-
"firstCommand": "release-docs"
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
119
|
```
|
|
126
120
|
|
|
127
|
-
|
|
121
|
+
输出 `classification` 区分 code/docs/config/marketplace 和 mixed,`recommendation` 给出 workflowKind、reason、firstCommand。
|
|
122
|
+
|
|
123
|
+
**可用工作流**:
|
|
124
|
+
|
|
128
125
|
- `docs-only`: 纯文档变更(跳过代码类门限)
|
|
129
126
|
- `config-only`: 纯配置变更(schema 验证 + 决策分支)
|
|
130
127
|
- `marketplace-only`: 纯 marketplace 索引变更(条目更新 + snapshot 同步)
|
|
@@ -141,6 +138,10 @@ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" route --root <path> \
|
|
|
141
138
|
| RELEASE_DOCS_REFRESH_STALE | 确认绑定后候选已变化;重新演练取得新 `refreshDigest` 再确认写入 |
|
|
142
139
|
| RELEASE_DOCS_STALE | prepare 检测到文档未刷新;按 `docs refresh` → 审阅 → 提交 → 重新 prepare 恢复 |
|
|
143
140
|
|
|
141
|
+
## Cursor 本地安装
|
|
142
|
+
|
|
143
|
+
完整 `adapters/cursor/` 插件的首次安装和升级见 `release-finish`;macOS 需退出 Cursor 并传入 `--cursor-plugins-root`。安装与加载分别验收。
|
|
144
|
+
|
|
144
145
|
## 后续引导
|
|
145
146
|
|
|
146
|
-
|
|
147
|
+
本地就绪后运行 `release-assess`;生产发布另需 npm、gh 和认证检查。
|