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.
Files changed (257) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.cursor-plugin/plugin.json +10 -0
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/.qoder-plugin/plugin.json +1 -1
  7. package/CHANGELOG.md +36 -2
  8. package/INSTALL.md +56 -9
  9. package/INSTALL.zh-CN.md +41 -7
  10. package/README.md +31 -20
  11. package/README.zh-CN.md +29 -19
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/consumer-contract-vectors.json +7 -7
  14. package/adapters/claude/bin/error-codes.json +1 -1
  15. package/adapters/claude/bin/foundation-resource-binding.json +1 -1
  16. package/adapters/claude/bin/prebuild-manifest.json +8 -4
  17. package/adapters/claude/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  18. package/adapters/claude/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  19. package/adapters/claude/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  20. package/adapters/claude/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  21. package/adapters/claude/bin/registry.json +1 -1
  22. package/adapters/claude/bin/release-skill.bundle.mjs +3560 -1200
  23. package/adapters/claude/bin/rules.json +1 -1
  24. package/adapters/claude/data/hosts/cursor/host-descriptor.json +34 -0
  25. package/adapters/claude/data/hosts/registry.json +1 -0
  26. package/adapters/claude/schemas/release-plan.schema.json +255 -25
  27. package/adapters/claude/schemas/release-project.schema.json +228 -26
  28. package/adapters/claude/skills/release-finish/SKILL.md +17 -4
  29. package/adapters/claude/skills/release-help/SKILL.md +40 -39
  30. package/adapters/claude/src/schemas/host-descriptor.schema.json +9 -2
  31. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  32. package/adapters/codex/bin/consumer-contract-vectors.json +7 -7
  33. package/adapters/codex/bin/error-codes.json +1 -1
  34. package/adapters/codex/bin/foundation-resource-binding.json +1 -1
  35. package/adapters/codex/bin/prebuild-manifest.json +8 -4
  36. package/adapters/codex/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  37. package/adapters/codex/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  38. package/adapters/codex/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  39. package/adapters/codex/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  40. package/adapters/codex/bin/registry.json +1 -1
  41. package/adapters/codex/bin/release-skill.bundle.mjs +3560 -1200
  42. package/adapters/codex/bin/rules.json +1 -1
  43. package/adapters/codex/data/hosts/cursor/host-descriptor.json +34 -0
  44. package/adapters/codex/data/hosts/registry.json +1 -0
  45. package/adapters/codex/schemas/release-plan.schema.json +255 -25
  46. package/adapters/codex/schemas/release-project.schema.json +228 -26
  47. package/adapters/codex/skills/release-finish/SKILL.md +17 -4
  48. package/adapters/codex/skills/release-help/SKILL.md +40 -39
  49. package/adapters/codex/src/schemas/host-descriptor.schema.json +9 -2
  50. package/adapters/cursor/.cursor-plugin/plugin.json +10 -0
  51. package/adapters/cursor/bin/consumer-contract-vectors.json +110 -0
  52. package/adapters/cursor/bin/error-codes.json +161 -0
  53. package/adapters/cursor/bin/foundation-legal/skill-family-contracts/LICENSE +202 -0
  54. package/adapters/cursor/bin/foundation-legal/skill-family-contracts/NOTICE +10 -0
  55. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/LICENSE +202 -0
  56. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/NOTICE +10 -0
  57. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES +142 -0
  58. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/LICENSE +202 -0
  59. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/NOTICE +10 -0
  60. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/native-NOTICE +2 -0
  61. package/adapters/cursor/bin/foundation-resource-binding.json +1 -0
  62. package/adapters/cursor/bin/kernel-protocol.json +60 -0
  63. package/adapters/cursor/bin/license-texts/Apache-2.0.txt +201 -0
  64. package/adapters/cursor/bin/license-texts/MIT.txt +21 -0
  65. package/adapters/cursor/bin/prebuild-manifest.json +83 -0
  66. package/adapters/cursor/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  67. package/adapters/cursor/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  68. package/adapters/cursor/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  69. package/adapters/cursor/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  70. package/adapters/cursor/bin/registry.json +347 -0
  71. package/adapters/cursor/bin/release-skill-local-finish.mjs +4 -0
  72. package/adapters/cursor/bin/release-skill.bundle.mjs +151806 -0
  73. package/adapters/cursor/bin/release-skill.mjs +54 -0
  74. package/adapters/cursor/bin/rules.json +104 -0
  75. package/adapters/cursor/bin/schemas/consumer-contract-vector.schema.json +149 -0
  76. package/adapters/cursor/data/hosts/claude/host-descriptor.json +45 -0
  77. package/adapters/cursor/data/hosts/codebuddy/host-descriptor.json +26 -0
  78. package/adapters/cursor/data/hosts/codex/host-descriptor.json +45 -0
  79. package/adapters/cursor/data/hosts/cursor/host-descriptor.json +34 -0
  80. package/adapters/cursor/data/hosts/deepseek-harness/host-descriptor.json +23 -0
  81. package/adapters/cursor/data/hosts/kimi-code/host-descriptor.json +36 -0
  82. package/adapters/cursor/data/hosts/qoder/host-descriptor.json +26 -0
  83. package/adapters/cursor/data/hosts/registry.json +14 -0
  84. package/adapters/cursor/data/hosts/workbuddy/host-descriptor.json +34 -0
  85. package/adapters/cursor/data/licensing/registry.json +211 -0
  86. package/adapters/cursor/data/licensing/schema.json +207 -0
  87. package/adapters/cursor/native/safe-write/binding.gyp +41 -0
  88. package/adapters/cursor/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  89. package/adapters/cursor/native/safe-write/prebuilds.json +24 -0
  90. package/adapters/cursor/native/safe-write/src/safe_write.cc +2032 -0
  91. package/adapters/cursor/schemas/.render-manifest.json +41 -0
  92. package/adapters/cursor/schemas/approval-record.schema.json +115 -0
  93. package/adapters/cursor/schemas/artifact-lock.schema.json +111 -0
  94. package/adapters/cursor/schemas/artifact-plan.schema.json +52 -0
  95. package/adapters/cursor/schemas/artifact-policy.schema.json +76 -0
  96. package/adapters/cursor/schemas/evidence-event-v2.schema.json +164 -0
  97. package/adapters/cursor/schemas/evidence-event.schema.json +89 -0
  98. package/adapters/cursor/schemas/postpublish-approval-record.schema.json +47 -0
  99. package/adapters/cursor/schemas/release-plan.schema.json +2226 -0
  100. package/adapters/cursor/schemas/release-project.schema.json +1815 -0
  101. package/adapters/cursor/schemas/release-run.schema.json +777 -0
  102. package/adapters/cursor/skills/release-assess/SKILL.md +61 -0
  103. package/adapters/cursor/skills/release-config/SKILL.md +151 -0
  104. package/adapters/cursor/skills/release-docs/SKILL.md +120 -0
  105. package/adapters/cursor/skills/release-finish/SKILL.md +155 -0
  106. package/adapters/cursor/skills/release-help/SKILL.md +155 -0
  107. package/adapters/cursor/skills/release-marketplace/SKILL.md +157 -0
  108. package/adapters/cursor/skills/release-prepare/SKILL.md +136 -0
  109. package/adapters/cursor/skills/release-publish/SKILL.md +92 -0
  110. package/adapters/cursor/skills/release-reconcile/SKILL.md +81 -0
  111. package/adapters/cursor/skills/release-setup/SKILL.md +132 -0
  112. package/adapters/cursor/skills/release-verify/SKILL.md +110 -0
  113. package/adapters/cursor/src/schemas/adapter-build-manifest.schema.json +41 -0
  114. package/adapters/cursor/src/schemas/adapter-peer-verification-request.schema.json +54 -0
  115. package/adapters/cursor/src/schemas/adapter-peer-verification-result.schema.json +54 -0
  116. package/adapters/cursor/src/schemas/adapter-source.schema.json +47 -0
  117. package/adapters/cursor/src/schemas/audit-baseline-pin.schema.json +163 -0
  118. package/adapters/cursor/src/schemas/declared-read-surface-result.schema.json +61 -0
  119. package/adapters/cursor/src/schemas/engineering-baseline.schema.json +77 -0
  120. package/adapters/cursor/src/schemas/executable-identity-observation.schema.json +162 -0
  121. package/adapters/cursor/src/schemas/filesystem-root-binding.schema.json +14 -0
  122. package/adapters/cursor/src/schemas/filesystem-tree-observation.schema.json +71 -0
  123. package/adapters/cursor/src/schemas/fixed-set-publication-manifest.schema.json +108 -0
  124. package/adapters/cursor/src/schemas/fixed-set-publication-receipt.schema.json +148 -0
  125. package/adapters/cursor/src/schemas/host-capability-fact.schema.json +31 -0
  126. package/adapters/cursor/src/schemas/host-descriptor.schema.json +144 -0
  127. package/adapters/cursor/src/schemas/host-operation-plan.schema.json +57 -0
  128. package/adapters/cursor/src/schemas/host-operation-receipt.schema.json +81 -0
  129. package/adapters/cursor/src/schemas/host-probe-result.schema.json +30 -0
  130. package/adapters/cursor/src/schemas/host-registry.schema.json +18 -0
  131. package/adapters/cursor/src/schemas/host-verification-request.schema.json +67 -0
  132. package/adapters/cursor/src/schemas/host-verification-result.schema.json +149 -0
  133. package/adapters/cursor/src/schemas/managed-file-lock.schema.json +77 -0
  134. package/adapters/cursor/src/schemas/migration-manifest.schema.json +412 -0
  135. package/adapters/cursor/src/schemas/observation-scope.schema.json +91 -0
  136. package/adapters/cursor/src/schemas/operation-request.schema.json +58 -0
  137. package/adapters/cursor/src/schemas/operation-result.schema.json +130 -0
  138. package/adapters/cursor/src/schemas/platform-difference-registry.schema.json +110 -0
  139. package/adapters/cursor/src/schemas/plugin-verification-request.schema.json +499 -0
  140. package/adapters/cursor/src/schemas/plugin-verification-result.schema.json +1217 -0
  141. package/adapters/cursor/src/schemas/profile-adoption-declaration.schema.json +111 -0
  142. package/adapters/cursor/src/schemas/profile-descriptor.schema.json +99 -0
  143. package/adapters/cursor/src/schemas/project-manifest.schema.json +67 -0
  144. package/adapters/cursor/src/schemas/project-profile.schema.json +25 -0
  145. package/adapters/cursor/src/schemas/public-boundary-declaration.schema.json +73 -0
  146. package/adapters/cursor/src/schemas/report-binding.schema.json +42 -0
  147. package/adapters/cursor/src/schemas/report-model.schema.json +308 -0
  148. package/adapters/cursor/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  149. package/adapters/cursor/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  150. package/adapters/cursor/src/schemas/source-authority-receipt.schema.json +31 -0
  151. package/adapters/cursor/src/schemas/state-event-envelope.schema.json +38 -0
  152. package/adapters/cursor/src/schemas/state-snapshot-metadata.schema.json +25 -0
  153. package/adapters/cursor/src/schemas/structured-scan-policy.schema.json +97 -0
  154. package/adapters/cursor/src/schemas/surface-scan-policy.schema.json +42 -0
  155. package/adapters/cursor/src/schemas/timeout-policy.schema.json +24 -0
  156. package/adapters/cursor/src/schemas/token-estimate-record.schema.json +75 -0
  157. package/adapters/cursor/src/schemas/token-estimate-result.schema.json +43 -0
  158. package/adapters/cursor/src/schemas/watchdog-termination-envelope.schema.json +156 -0
  159. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  160. package/adapters/kimi/bin/consumer-contract-vectors.json +7 -7
  161. package/adapters/kimi/bin/error-codes.json +1 -1
  162. package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
  163. package/adapters/kimi/bin/prebuild-manifest.json +8 -4
  164. package/adapters/kimi/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  165. package/adapters/kimi/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  166. package/adapters/kimi/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  167. package/adapters/kimi/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  168. package/adapters/kimi/bin/registry.json +1 -1
  169. package/adapters/kimi/bin/release-skill.bundle.mjs +3560 -1200
  170. package/adapters/kimi/bin/rules.json +1 -1
  171. package/adapters/kimi/data/hosts/cursor/host-descriptor.json +34 -0
  172. package/adapters/kimi/data/hosts/registry.json +1 -0
  173. package/adapters/kimi/schemas/release-plan.schema.json +255 -25
  174. package/adapters/kimi/schemas/release-project.schema.json +228 -26
  175. package/adapters/kimi/skills/release-finish/SKILL.md +17 -4
  176. package/adapters/kimi/skills/release-help/SKILL.md +40 -39
  177. package/adapters/kimi/src/schemas/host-descriptor.schema.json +9 -2
  178. package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
  179. package/adapters/qoder/bin/consumer-contract-vectors.json +7 -7
  180. package/adapters/qoder/bin/error-codes.json +1 -1
  181. package/adapters/qoder/bin/foundation-resource-binding.json +1 -1
  182. package/adapters/qoder/bin/prebuild-manifest.json +8 -4
  183. package/adapters/qoder/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  184. package/adapters/qoder/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  185. package/adapters/qoder/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  186. package/adapters/qoder/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  187. package/adapters/qoder/bin/registry.json +1 -1
  188. package/adapters/qoder/bin/release-skill.bundle.mjs +3560 -1200
  189. package/adapters/qoder/bin/rules.json +1 -1
  190. package/adapters/qoder/data/hosts/cursor/host-descriptor.json +34 -0
  191. package/adapters/qoder/data/hosts/registry.json +1 -0
  192. package/adapters/qoder/schemas/release-plan.schema.json +255 -25
  193. package/adapters/qoder/schemas/release-project.schema.json +228 -26
  194. package/adapters/qoder/skills/release-finish/SKILL.md +17 -4
  195. package/adapters/qoder/skills/release-help/SKILL.md +40 -39
  196. package/adapters/qoder/src/schemas/host-descriptor.schema.json +9 -2
  197. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  198. package/adapters/workbuddy/bin/consumer-contract-vectors.json +7 -7
  199. package/adapters/workbuddy/bin/error-codes.json +1 -1
  200. package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
  201. package/adapters/workbuddy/bin/prebuild-manifest.json +8 -4
  202. package/adapters/workbuddy/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  203. package/adapters/workbuddy/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  204. package/adapters/workbuddy/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  205. package/adapters/workbuddy/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  206. package/adapters/workbuddy/bin/registry.json +1 -1
  207. package/adapters/workbuddy/bin/release-skill.bundle.mjs +3560 -1200
  208. package/adapters/workbuddy/bin/rules.json +1 -1
  209. package/adapters/workbuddy/data/hosts/cursor/host-descriptor.json +34 -0
  210. package/adapters/workbuddy/data/hosts/registry.json +1 -0
  211. package/adapters/workbuddy/schemas/release-plan.schema.json +255 -25
  212. package/adapters/workbuddy/schemas/release-project.schema.json +228 -26
  213. package/adapters/workbuddy/skills/release-finish/SKILL.md +17 -4
  214. package/adapters/workbuddy/skills/release-help/SKILL.md +40 -39
  215. package/adapters/workbuddy/src/schemas/host-descriptor.schema.json +9 -2
  216. package/bin/consumer-contract-vectors.json +7 -7
  217. package/bin/error-codes.json +1 -1
  218. package/bin/foundation-resource-binding.json +1 -1
  219. package/bin/prebuild-manifest.json +8 -4
  220. package/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  221. package/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  222. package/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  223. package/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  224. package/bin/registry.json +1 -1
  225. package/bin/release-skill-cli.mjs +25 -1
  226. package/bin/release-skill.bundle.mjs +3560 -1200
  227. package/bin/rules.json +1 -1
  228. package/data/hosts/cursor/host-descriptor.json +34 -0
  229. package/data/hosts/registry.json +1 -0
  230. package/package.json +7 -5
  231. package/platform-manifest.json +75 -9
  232. package/schemas/release-plan.schema.json +255 -25
  233. package/schemas/release-project.schema.json +228 -26
  234. package/scripts/sync-public-files.mjs +3 -22
  235. package/skills/release-finish/SKILL.md +17 -4
  236. package/skills/release-help/SKILL.md +40 -39
  237. package/skills-src/release-finish/SKILL.md +17 -4
  238. package/skills-src/release-help/SKILL.md +40 -39
  239. package/src/adapters/contract.mjs +1 -0
  240. package/src/adapters/plugin-marketplace.mjs +201 -9
  241. package/src/commands/post-release-local.mjs +290 -34
  242. package/src/commands/prepare.mjs +74 -9
  243. package/src/commands/publish.mjs +4 -1
  244. package/src/commands/ship.mjs +2 -0
  245. package/src/commands/verify.mjs +73 -0
  246. package/src/core/checkpoints.mjs +5 -2
  247. package/src/core/config.mjs +1 -1
  248. package/src/core/foundation-host-verification.mjs +168 -0
  249. package/src/core/plan.mjs +19 -1
  250. package/src/core/postpublish.mjs +9 -1
  251. package/src/core/run-retention.mjs +1 -1
  252. package/src/core/surface-host-bindings.mjs +1 -0
  253. package/src/core/verification-gates.mjs +1 -1
  254. package/src/platforms/registry.mjs +225 -16
  255. package/src/producers/build-adapters.mjs +21 -26
  256. package/src/producers/foundation-resource-projection.mjs +3 -3
  257. package/src/schemas/host-descriptor.schema.json +9 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "skill-family.contracts.rules",
4
- "contractsVersion": "1.16.0",
4
+ "contractsVersion": "1.18.0",
5
5
  "budget": {
6
6
  "firstVersionMax": 20,
7
7
  "absoluteMax": 30,
@@ -0,0 +1,34 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "skill-family.host-descriptor",
4
+ "hostId": "cursor",
5
+ "displayName": "Cursor",
6
+ "support": "manual",
7
+ "maturity": "developer-preview",
8
+ "sourceAliases": [],
9
+ "verification": {
10
+ "driverId": "cursor-agent-print-v1",
11
+ "authStrategy": "existing-user-state",
12
+ "credentialMutation": "host-managed"
13
+ },
14
+ "pathCategories": [
15
+ {
16
+ "id": "cursor-project-skills",
17
+ "role": "skill-root",
18
+ "scope": "project",
19
+ "anchor": "project-root",
20
+ "relPath": ".cursor/skills"
21
+ }
22
+ ],
23
+ "probeCapabilities": [
24
+ "cli",
25
+ "version",
26
+ "payload",
27
+ "registry",
28
+ "discover",
29
+ "enabled",
30
+ "reload",
31
+ "smoke",
32
+ "uninstall"
33
+ ]
34
+ }
@@ -4,6 +4,7 @@
4
4
  "hosts": [
5
5
  "claude",
6
6
  "codex",
7
+ "cursor",
7
8
  "kimi-code",
8
9
  "workbuddy",
9
10
  "codebuddy",
@@ -402,7 +402,9 @@
402
402
  "claude-plugin",
403
403
  "codex-plugin",
404
404
  "kimi-plugin",
405
- "codebuddy-plugin"
405
+ "codebuddy-plugin",
406
+ "qoder-plugin",
407
+ "cursor-plugin"
406
408
  ]
407
409
  },
408
410
  "package": {
@@ -547,7 +549,10 @@
547
549
  "description": "首次 standalone-index 发布的人工索引停点;仅显式 opt-in 时启用"
548
550
  },
549
551
  "marketplaceIndexSha": {
550
- "type": ["string", "null"],
552
+ "type": [
553
+ "string",
554
+ "null"
555
+ ],
551
556
  "pattern": "^[0-9a-f]{40}$",
552
557
  "description": "最终市场索引提交 SHA;首次 bootstrap prepare 阶段必须保持 null,verify 仅记录实际观察值"
553
558
  },
@@ -574,6 +579,47 @@
574
579
  "selectedEntry": {
575
580
  "type": "object",
576
581
  "description": "冻结的唯一选中市场条目(standalone-index 专用)"
582
+ },
583
+ "hostVerificationContract": {
584
+ "type": "object",
585
+ "description": "项目级单 Skill 宿主原生验证的冻结领域绑定;进程与工作区合同由 Foundation 管理",
586
+ "additionalProperties": false,
587
+ "properties": {
588
+ "hostId": {
589
+ "const": "cursor"
590
+ },
591
+ "payloadDigest": {
592
+ "type": "string",
593
+ "pattern": "^[a-f0-9]{64}$"
594
+ },
595
+ "manifestRelativePath": {
596
+ "type": "string",
597
+ "pattern": "^skills/[a-z0-9][a-z0-9-]*/SKILL\\.md$"
598
+ },
599
+ "entrySkill": {
600
+ "type": "string",
601
+ "pattern": "^[a-z0-9][a-z0-9-]*$"
602
+ },
603
+ "contractVersion": {
604
+ "const": 1
605
+ },
606
+ "scenario": {
607
+ "$ref": "#/definitions/cursorHostScenario"
608
+ }
609
+ },
610
+ "required": [
611
+ "hostId",
612
+ "payloadDigest",
613
+ "manifestRelativePath",
614
+ "entrySkill",
615
+ "contractVersion",
616
+ "scenario"
617
+ ]
618
+ },
619
+ "timeoutMs": {
620
+ "type": "integer",
621
+ "minimum": 30000,
622
+ "maximum": 900000
577
623
  }
578
624
  },
579
625
  "allOf": [
@@ -599,7 +645,8 @@
599
645
  "type": {
600
646
  "enum": [
601
647
  "claude-plugin",
602
- "codex-plugin"
648
+ "codex-plugin",
649
+ "qoder-plugin"
603
650
  ]
604
651
  }
605
652
  }
@@ -627,6 +674,55 @@
627
674
  ]
628
675
  }
629
676
  },
677
+ {
678
+ "if": {
679
+ "properties": {
680
+ "type": {
681
+ "const": "cursor-plugin"
682
+ }
683
+ }
684
+ },
685
+ "then": {
686
+ "required": [
687
+ "entrySkill",
688
+ "hostVerificationContract"
689
+ ],
690
+ "not": {
691
+ "anyOf": [
692
+ {
693
+ "required": [
694
+ "marketplace"
695
+ ]
696
+ },
697
+ {
698
+ "required": [
699
+ "marketplaceSource"
700
+ ]
701
+ },
702
+ {
703
+ "required": [
704
+ "marketplaceRepo"
705
+ ]
706
+ },
707
+ {
708
+ "required": [
709
+ "marketplaceSourceType"
710
+ ]
711
+ },
712
+ {
713
+ "required": [
714
+ "marketplaceIndexPath"
715
+ ]
716
+ },
717
+ {
718
+ "required": [
719
+ "firstReleaseBootstrap"
720
+ ]
721
+ }
722
+ ]
723
+ }
724
+ }
725
+ },
630
726
  {
631
727
  "if": {
632
728
  "properties": {
@@ -650,7 +746,8 @@
650
746
  "claude-plugin",
651
747
  "codex-plugin",
652
748
  "kimi-plugin",
653
- "codebuddy-plugin"
749
+ "codebuddy-plugin",
750
+ "qoder-plugin"
654
751
  ]
655
752
  }
656
753
  }
@@ -665,7 +762,8 @@
665
762
  "claude-plugin",
666
763
  "codex-plugin",
667
764
  "kimi-plugin",
668
- "codebuddy-plugin"
765
+ "codebuddy-plugin",
766
+ "qoder-plugin"
669
767
  ]
670
768
  },
671
769
  "marketplaceSourceType": {
@@ -692,7 +790,8 @@
692
790
  "claude-plugin",
693
791
  "codex-plugin",
694
792
  "kimi-plugin",
695
- "codebuddy-plugin"
793
+ "codebuddy-plugin",
794
+ "qoder-plugin"
696
795
  ]
697
796
  },
698
797
  "marketplaceSourceType": {
@@ -948,7 +1047,10 @@
948
1047
  "const": 0
949
1048
  },
950
1049
  "preparedAt": {
951
- "type": ["string", "null"],
1050
+ "type": [
1051
+ "string",
1052
+ "null"
1053
+ ],
952
1054
  "description": "Deterministic freeze timestamp of the prepare run that produced this receipt (production: the baseline HEAD commit committer date in canonical UTC form; non-production: null). Never a wall-clock sample, so identical sources freeze byte-identical receipts."
953
1055
  },
954
1056
  "exitCode": {
@@ -1037,6 +1139,7 @@
1037
1139
  "codex-marketplace-install",
1038
1140
  "kimi-marketplace-install",
1039
1141
  "codebuddy-marketplace-install",
1142
+ "qoder-marketplace-install",
1040
1143
  "set-default-branch"
1041
1144
  ]
1042
1145
  },
@@ -1310,7 +1413,8 @@
1310
1413
  "claude-plugin",
1311
1414
  "codex-plugin",
1312
1415
  "kimi-plugin",
1313
- "codebuddy-plugin"
1416
+ "codebuddy-plugin",
1417
+ "qoder-plugin"
1314
1418
  ]
1315
1419
  }
1316
1420
  }
@@ -1602,42 +1706,111 @@
1602
1706
  }
1603
1707
  }
1604
1708
  ],
1605
- "allOf": [{
1606
- "if": { "required": ["localHostUpdate"] },
1607
- "then": {
1608
- "required": ["hooks"],
1609
- "properties": {
1610
- "hooks": {
1611
- "contains": { "type": "object", "required": ["phase"], "properties": { "phase": { "const": "postVerify" } } }
1709
+ "allOf": [
1710
+ {
1711
+ "if": {
1712
+ "required": [
1713
+ "localHostUpdate"
1714
+ ]
1715
+ },
1716
+ "then": {
1717
+ "required": [
1718
+ "hooks"
1719
+ ],
1720
+ "properties": {
1721
+ "hooks": {
1722
+ "contains": {
1723
+ "type": "object",
1724
+ "required": [
1725
+ "phase"
1726
+ ],
1727
+ "properties": {
1728
+ "phase": {
1729
+ "const": "postVerify"
1730
+ }
1731
+ }
1732
+ }
1733
+ }
1612
1734
  }
1613
1735
  }
1614
1736
  }
1615
- }]
1737
+ ]
1616
1738
  },
1617
1739
  "planLocalHostUpdate": {
1618
1740
  "type": "object",
1619
1741
  "additionalProperties": false,
1620
- "required": ["plugin", "hosts", "hub"],
1742
+ "required": [
1743
+ "plugin",
1744
+ "hosts",
1745
+ "hub"
1746
+ ],
1621
1747
  "properties": {
1622
- "plugin": { "type": "string", "minLength": 1, "pattern": ".*\\S.*" },
1748
+ "plugin": {
1749
+ "type": "string",
1750
+ "minLength": 1,
1751
+ "pattern": ".*\\S.*"
1752
+ },
1623
1753
  "hosts": {
1624
1754
  "type": "array",
1625
1755
  "minItems": 1,
1626
1756
  "uniqueItems": true,
1627
- "items": { "type": "string", "enum": ["claude", "codex", "kimi", "codebuddy", "workbuddy", "qoder"] }
1757
+ "items": {
1758
+ "type": "string",
1759
+ "enum": [
1760
+ "claude",
1761
+ "codex",
1762
+ "kimi",
1763
+ "codebuddy",
1764
+ "workbuddy",
1765
+ "qoder",
1766
+ "cursor"
1767
+ ]
1768
+ }
1628
1769
  },
1629
- "hub": { "$ref": "#/definitions/planLocalHostHub" }
1770
+ "hub": {
1771
+ "$ref": "#/definitions/planLocalHostHub"
1772
+ },
1773
+ "cursor": {
1774
+ "$ref": "#/definitions/cursorLocalPlugin"
1775
+ }
1776
+ },
1777
+ "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"] } } }]
1778
+ },
1779
+ "cursorLocalPlugin": {
1780
+ "type": "object",
1781
+ "additionalProperties": false,
1782
+ "required": ["sourcePath"],
1783
+ "properties": {
1784
+ "sourcePath": { "type": "string", "pattern": "^(?!/)(?!.*\\\\)(?!.*:)(?!.*\\u0000)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*//)(?!.*\\/$).+$" },
1785
+ "dependencyInstall": { "const": "npm-ci-ignore-scripts" }
1630
1786
  }
1631
1787
  },
1632
1788
  "planLocalHostHub": {
1633
1789
  "type": "object",
1634
1790
  "additionalProperties": false,
1635
- "required": ["name", "repo", "ref"],
1791
+ "required": [
1792
+ "name",
1793
+ "repo",
1794
+ "ref"
1795
+ ],
1636
1796
  "properties": {
1637
- "name": { "type": "string", "minLength": 1, "pattern": ".*\\S.*" },
1638
- "githubHost": { "type": "string", "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9.-]*[A-Za-z0-9])?$" },
1639
- "repo": { "type": "string", "pattern": "^[A-Za-z0-9._-]+\\/[A-Za-z0-9._-]+$" },
1640
- "ref": { "type": "string", "pattern": "^refs\\/heads\\/[A-Za-z0-9][A-Za-z0-9._-]*(?:\\/[A-Za-z0-9][A-Za-z0-9._-]*)*$" }
1797
+ "name": {
1798
+ "type": "string",
1799
+ "minLength": 1,
1800
+ "pattern": ".*\\S.*"
1801
+ },
1802
+ "githubHost": {
1803
+ "type": "string",
1804
+ "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9.-]*[A-Za-z0-9])?$"
1805
+ },
1806
+ "repo": {
1807
+ "type": "string",
1808
+ "pattern": "^[A-Za-z0-9._-]+\\/[A-Za-z0-9._-]+$"
1809
+ },
1810
+ "ref": {
1811
+ "type": "string",
1812
+ "pattern": "^refs\\/heads\\/[A-Za-z0-9][A-Za-z0-9._-]*(?:\\/[A-Za-z0-9][A-Za-z0-9._-]*)*$"
1813
+ }
1641
1814
  }
1642
1815
  },
1643
1816
  "planPostPublishHook": {
@@ -1922,6 +2095,63 @@
1922
2095
  }
1923
2096
  }
1924
2097
  ]
2098
+ },
2099
+ "cursorHostScenario": {
2100
+ "type": "object",
2101
+ "additionalProperties": false,
2102
+ "required": [
2103
+ "workloadDocument",
2104
+ "fixtureFiles",
2105
+ "protectedWorkspaceFiles",
2106
+ "platformManifest",
2107
+ "effectivePrompt",
2108
+ "expectedResult"
2109
+ ],
2110
+ "properties": {
2111
+ "workloadDocument": {
2112
+ "type": "string",
2113
+ "minLength": 1
2114
+ },
2115
+ "fixtureFiles": {
2116
+ "$ref": "#/definitions/cursorScenarioFiles"
2117
+ },
2118
+ "protectedWorkspaceFiles": {
2119
+ "$ref": "#/definitions/cursorScenarioFiles"
2120
+ },
2121
+ "platformManifest": {
2122
+ "type": "object"
2123
+ },
2124
+ "effectivePrompt": {
2125
+ "type": "string",
2126
+ "minLength": 1,
2127
+ "pattern": "^[^\\u0000]*$"
2128
+ },
2129
+ "expectedResult": {
2130
+ "type": "string"
2131
+ }
2132
+ }
2133
+ },
2134
+ "cursorScenarioFiles": {
2135
+ "type": "array",
2136
+ "minItems": 1,
2137
+ "items": {
2138
+ "type": "object",
2139
+ "additionalProperties": false,
2140
+ "required": [
2141
+ "path",
2142
+ "content"
2143
+ ],
2144
+ "properties": {
2145
+ "path": {
2146
+ "type": "string",
2147
+ "minLength": 1,
2148
+ "pattern": "^(?!/)(?!.*\\\\)(?!.*:)(?!.*\\u0000)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*(?:^|/)\\.cursor(?:/|$))(?!.*//)(?!.*\\/$).+$"
2149
+ },
2150
+ "content": {
2151
+ "type": "string"
2152
+ }
2153
+ }
2154
+ }
1925
2155
  }
1926
2156
  },
1927
2157
  "allOf": [