release-skill 0.9.16 → 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 (356) 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 +10 -0
  7. package/CHANGELOG.md +64 -0
  8. package/INSTALL.md +104 -9
  9. package/INSTALL.zh-CN.md +78 -7
  10. package/README.md +87 -32
  11. package/README.zh-CN.md +71 -30
  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 +4950 -1819
  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 +29 -15
  29. package/adapters/claude/skills/release-help/SKILL.md +40 -39
  30. package/adapters/claude/skills/release-verify/SKILL.md +2 -2
  31. package/adapters/claude/src/schemas/host-descriptor.schema.json +9 -2
  32. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  33. package/adapters/codex/bin/consumer-contract-vectors.json +7 -7
  34. package/adapters/codex/bin/error-codes.json +1 -1
  35. package/adapters/codex/bin/foundation-resource-binding.json +1 -1
  36. package/adapters/codex/bin/prebuild-manifest.json +8 -4
  37. package/adapters/codex/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  38. package/adapters/codex/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  39. package/adapters/codex/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  40. package/adapters/codex/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  41. package/adapters/codex/bin/registry.json +1 -1
  42. package/adapters/codex/bin/release-skill.bundle.mjs +4950 -1819
  43. package/adapters/codex/bin/rules.json +1 -1
  44. package/adapters/codex/data/hosts/cursor/host-descriptor.json +34 -0
  45. package/adapters/codex/data/hosts/registry.json +1 -0
  46. package/adapters/codex/schemas/release-plan.schema.json +255 -25
  47. package/adapters/codex/schemas/release-project.schema.json +228 -26
  48. package/adapters/codex/skills/release-finish/SKILL.md +29 -15
  49. package/adapters/codex/skills/release-help/SKILL.md +40 -39
  50. package/adapters/codex/skills/release-verify/SKILL.md +2 -2
  51. package/adapters/codex/src/schemas/host-descriptor.schema.json +9 -2
  52. package/adapters/cursor/.cursor-plugin/plugin.json +10 -0
  53. package/adapters/cursor/bin/consumer-contract-vectors.json +110 -0
  54. package/adapters/cursor/bin/error-codes.json +161 -0
  55. package/adapters/cursor/bin/foundation-legal/skill-family-contracts/LICENSE +202 -0
  56. package/adapters/cursor/bin/foundation-legal/skill-family-contracts/NOTICE +10 -0
  57. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/LICENSE +202 -0
  58. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/NOTICE +10 -0
  59. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES +142 -0
  60. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/LICENSE +202 -0
  61. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/NOTICE +10 -0
  62. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/native-NOTICE +2 -0
  63. package/adapters/cursor/bin/foundation-resource-binding.json +1 -0
  64. package/adapters/cursor/bin/kernel-protocol.json +60 -0
  65. package/adapters/cursor/bin/license-texts/Apache-2.0.txt +201 -0
  66. package/adapters/cursor/bin/license-texts/MIT.txt +21 -0
  67. package/adapters/cursor/bin/prebuild-manifest.json +83 -0
  68. package/adapters/cursor/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  69. package/adapters/cursor/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  70. package/adapters/cursor/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  71. package/adapters/cursor/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  72. package/adapters/cursor/bin/registry.json +347 -0
  73. package/adapters/cursor/bin/release-skill-local-finish.mjs +4 -0
  74. package/adapters/cursor/bin/release-skill.bundle.mjs +151806 -0
  75. package/adapters/cursor/bin/release-skill.mjs +54 -0
  76. package/adapters/cursor/bin/rules.json +104 -0
  77. package/adapters/cursor/bin/schemas/consumer-contract-vector.schema.json +149 -0
  78. package/adapters/cursor/data/hosts/claude/host-descriptor.json +45 -0
  79. package/adapters/cursor/data/hosts/codebuddy/host-descriptor.json +26 -0
  80. package/adapters/cursor/data/hosts/codex/host-descriptor.json +45 -0
  81. package/adapters/cursor/data/hosts/cursor/host-descriptor.json +34 -0
  82. package/adapters/cursor/data/hosts/deepseek-harness/host-descriptor.json +23 -0
  83. package/adapters/cursor/data/hosts/kimi-code/host-descriptor.json +36 -0
  84. package/adapters/cursor/data/hosts/qoder/host-descriptor.json +26 -0
  85. package/adapters/cursor/data/hosts/registry.json +14 -0
  86. package/adapters/cursor/data/hosts/workbuddy/host-descriptor.json +34 -0
  87. package/adapters/cursor/data/licensing/registry.json +211 -0
  88. package/adapters/cursor/data/licensing/schema.json +207 -0
  89. package/adapters/cursor/native/safe-write/binding.gyp +41 -0
  90. package/adapters/cursor/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  91. package/adapters/cursor/native/safe-write/prebuilds.json +24 -0
  92. package/adapters/cursor/native/safe-write/src/safe_write.cc +2032 -0
  93. package/adapters/cursor/schemas/.render-manifest.json +41 -0
  94. package/adapters/cursor/schemas/approval-record.schema.json +115 -0
  95. package/adapters/cursor/schemas/artifact-lock.schema.json +111 -0
  96. package/adapters/cursor/schemas/artifact-plan.schema.json +52 -0
  97. package/adapters/cursor/schemas/artifact-policy.schema.json +76 -0
  98. package/adapters/cursor/schemas/evidence-event-v2.schema.json +164 -0
  99. package/adapters/cursor/schemas/evidence-event.schema.json +89 -0
  100. package/adapters/cursor/schemas/postpublish-approval-record.schema.json +47 -0
  101. package/adapters/cursor/schemas/release-plan.schema.json +2226 -0
  102. package/adapters/cursor/schemas/release-project.schema.json +1815 -0
  103. package/adapters/cursor/schemas/release-run.schema.json +777 -0
  104. package/adapters/cursor/skills/release-assess/SKILL.md +61 -0
  105. package/adapters/cursor/skills/release-config/SKILL.md +151 -0
  106. package/adapters/cursor/skills/release-docs/SKILL.md +120 -0
  107. package/adapters/cursor/skills/release-finish/SKILL.md +155 -0
  108. package/adapters/cursor/skills/release-help/SKILL.md +155 -0
  109. package/adapters/cursor/skills/release-marketplace/SKILL.md +157 -0
  110. package/adapters/cursor/skills/release-prepare/SKILL.md +136 -0
  111. package/adapters/cursor/skills/release-publish/SKILL.md +92 -0
  112. package/adapters/cursor/skills/release-reconcile/SKILL.md +81 -0
  113. package/adapters/cursor/skills/release-setup/SKILL.md +132 -0
  114. package/adapters/cursor/skills/release-verify/SKILL.md +110 -0
  115. package/adapters/cursor/src/schemas/adapter-build-manifest.schema.json +41 -0
  116. package/adapters/cursor/src/schemas/adapter-peer-verification-request.schema.json +54 -0
  117. package/adapters/cursor/src/schemas/adapter-peer-verification-result.schema.json +54 -0
  118. package/adapters/cursor/src/schemas/adapter-source.schema.json +47 -0
  119. package/adapters/cursor/src/schemas/audit-baseline-pin.schema.json +163 -0
  120. package/adapters/cursor/src/schemas/declared-read-surface-result.schema.json +61 -0
  121. package/adapters/cursor/src/schemas/engineering-baseline.schema.json +77 -0
  122. package/adapters/cursor/src/schemas/executable-identity-observation.schema.json +162 -0
  123. package/adapters/cursor/src/schemas/filesystem-root-binding.schema.json +14 -0
  124. package/adapters/cursor/src/schemas/filesystem-tree-observation.schema.json +71 -0
  125. package/adapters/cursor/src/schemas/fixed-set-publication-manifest.schema.json +108 -0
  126. package/adapters/cursor/src/schemas/fixed-set-publication-receipt.schema.json +148 -0
  127. package/adapters/cursor/src/schemas/host-capability-fact.schema.json +31 -0
  128. package/adapters/cursor/src/schemas/host-descriptor.schema.json +144 -0
  129. package/adapters/cursor/src/schemas/host-operation-plan.schema.json +57 -0
  130. package/adapters/cursor/src/schemas/host-operation-receipt.schema.json +81 -0
  131. package/adapters/cursor/src/schemas/host-probe-result.schema.json +30 -0
  132. package/adapters/cursor/src/schemas/host-registry.schema.json +18 -0
  133. package/adapters/cursor/src/schemas/host-verification-request.schema.json +67 -0
  134. package/adapters/cursor/src/schemas/host-verification-result.schema.json +149 -0
  135. package/adapters/cursor/src/schemas/managed-file-lock.schema.json +77 -0
  136. package/adapters/cursor/src/schemas/migration-manifest.schema.json +412 -0
  137. package/adapters/cursor/src/schemas/observation-scope.schema.json +91 -0
  138. package/adapters/cursor/src/schemas/operation-request.schema.json +58 -0
  139. package/adapters/cursor/src/schemas/operation-result.schema.json +130 -0
  140. package/adapters/cursor/src/schemas/platform-difference-registry.schema.json +110 -0
  141. package/adapters/cursor/src/schemas/plugin-verification-request.schema.json +499 -0
  142. package/adapters/cursor/src/schemas/plugin-verification-result.schema.json +1217 -0
  143. package/adapters/cursor/src/schemas/profile-adoption-declaration.schema.json +111 -0
  144. package/adapters/cursor/src/schemas/profile-descriptor.schema.json +99 -0
  145. package/adapters/cursor/src/schemas/project-manifest.schema.json +67 -0
  146. package/adapters/cursor/src/schemas/project-profile.schema.json +25 -0
  147. package/adapters/cursor/src/schemas/public-boundary-declaration.schema.json +73 -0
  148. package/adapters/cursor/src/schemas/report-binding.schema.json +42 -0
  149. package/adapters/cursor/src/schemas/report-model.schema.json +308 -0
  150. package/adapters/cursor/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  151. package/adapters/cursor/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  152. package/adapters/cursor/src/schemas/source-authority-receipt.schema.json +31 -0
  153. package/adapters/cursor/src/schemas/state-event-envelope.schema.json +38 -0
  154. package/adapters/cursor/src/schemas/state-snapshot-metadata.schema.json +25 -0
  155. package/adapters/cursor/src/schemas/structured-scan-policy.schema.json +97 -0
  156. package/adapters/cursor/src/schemas/surface-scan-policy.schema.json +42 -0
  157. package/adapters/cursor/src/schemas/timeout-policy.schema.json +24 -0
  158. package/adapters/cursor/src/schemas/token-estimate-record.schema.json +75 -0
  159. package/adapters/cursor/src/schemas/token-estimate-result.schema.json +43 -0
  160. package/adapters/cursor/src/schemas/watchdog-termination-envelope.schema.json +156 -0
  161. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  162. package/adapters/kimi/bin/consumer-contract-vectors.json +7 -7
  163. package/adapters/kimi/bin/error-codes.json +1 -1
  164. package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
  165. package/adapters/kimi/bin/prebuild-manifest.json +8 -4
  166. package/adapters/kimi/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  167. package/adapters/kimi/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  168. package/adapters/kimi/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  169. package/adapters/kimi/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  170. package/adapters/kimi/bin/registry.json +1 -1
  171. package/adapters/kimi/bin/release-skill.bundle.mjs +4950 -1819
  172. package/adapters/kimi/bin/rules.json +1 -1
  173. package/adapters/kimi/data/hosts/cursor/host-descriptor.json +34 -0
  174. package/adapters/kimi/data/hosts/registry.json +1 -0
  175. package/adapters/kimi/schemas/release-plan.schema.json +255 -25
  176. package/adapters/kimi/schemas/release-project.schema.json +228 -26
  177. package/adapters/kimi/skills/release-finish/SKILL.md +29 -15
  178. package/adapters/kimi/skills/release-help/SKILL.md +40 -39
  179. package/adapters/kimi/skills/release-verify/SKILL.md +2 -2
  180. package/adapters/kimi/src/schemas/host-descriptor.schema.json +9 -2
  181. package/adapters/qoder/.qoder-plugin/plugin.json +10 -0
  182. package/adapters/qoder/bin/consumer-contract-vectors.json +110 -0
  183. package/adapters/qoder/bin/error-codes.json +161 -0
  184. package/adapters/qoder/bin/foundation-legal/skill-family-contracts/LICENSE +202 -0
  185. package/adapters/qoder/bin/foundation-legal/skill-family-contracts/NOTICE +10 -0
  186. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/LICENSE +202 -0
  187. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/NOTICE +10 -0
  188. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES +142 -0
  189. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/LICENSE +202 -0
  190. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/NOTICE +10 -0
  191. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/native-NOTICE +2 -0
  192. package/adapters/qoder/bin/foundation-resource-binding.json +1 -0
  193. package/adapters/qoder/bin/kernel-protocol.json +60 -0
  194. package/adapters/qoder/bin/license-texts/Apache-2.0.txt +201 -0
  195. package/adapters/qoder/bin/license-texts/MIT.txt +21 -0
  196. package/adapters/qoder/bin/prebuild-manifest.json +83 -0
  197. package/adapters/qoder/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  198. package/adapters/qoder/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  199. package/adapters/qoder/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  200. package/adapters/qoder/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  201. package/adapters/qoder/bin/registry.json +347 -0
  202. package/adapters/qoder/bin/release-skill-local-finish.mjs +4 -0
  203. package/adapters/qoder/bin/release-skill.bundle.mjs +151806 -0
  204. package/adapters/qoder/bin/release-skill.mjs +54 -0
  205. package/adapters/qoder/bin/rules.json +104 -0
  206. package/adapters/qoder/bin/schemas/consumer-contract-vector.schema.json +149 -0
  207. package/adapters/qoder/data/hosts/claude/host-descriptor.json +45 -0
  208. package/adapters/qoder/data/hosts/codebuddy/host-descriptor.json +26 -0
  209. package/adapters/qoder/data/hosts/codex/host-descriptor.json +45 -0
  210. package/adapters/qoder/data/hosts/cursor/host-descriptor.json +34 -0
  211. package/adapters/qoder/data/hosts/deepseek-harness/host-descriptor.json +23 -0
  212. package/adapters/qoder/data/hosts/kimi-code/host-descriptor.json +36 -0
  213. package/adapters/qoder/data/hosts/qoder/host-descriptor.json +26 -0
  214. package/adapters/qoder/data/hosts/registry.json +14 -0
  215. package/adapters/qoder/data/hosts/workbuddy/host-descriptor.json +34 -0
  216. package/adapters/qoder/data/licensing/registry.json +211 -0
  217. package/adapters/qoder/data/licensing/schema.json +207 -0
  218. package/adapters/qoder/native/safe-write/binding.gyp +41 -0
  219. package/adapters/qoder/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  220. package/adapters/qoder/native/safe-write/prebuilds.json +24 -0
  221. package/adapters/qoder/native/safe-write/src/safe_write.cc +2032 -0
  222. package/adapters/qoder/schemas/.render-manifest.json +41 -0
  223. package/adapters/qoder/schemas/approval-record.schema.json +115 -0
  224. package/adapters/qoder/schemas/artifact-lock.schema.json +111 -0
  225. package/adapters/qoder/schemas/artifact-plan.schema.json +52 -0
  226. package/adapters/qoder/schemas/artifact-policy.schema.json +76 -0
  227. package/adapters/qoder/schemas/evidence-event-v2.schema.json +164 -0
  228. package/adapters/qoder/schemas/evidence-event.schema.json +89 -0
  229. package/adapters/qoder/schemas/postpublish-approval-record.schema.json +47 -0
  230. package/adapters/qoder/schemas/release-plan.schema.json +2226 -0
  231. package/adapters/qoder/schemas/release-project.schema.json +1815 -0
  232. package/adapters/qoder/schemas/release-run.schema.json +777 -0
  233. package/adapters/qoder/skills/release-assess/SKILL.md +60 -0
  234. package/adapters/qoder/skills/release-config/SKILL.md +150 -0
  235. package/adapters/qoder/skills/release-docs/SKILL.md +119 -0
  236. package/adapters/qoder/skills/release-finish/SKILL.md +154 -0
  237. package/adapters/qoder/skills/release-help/SKILL.md +154 -0
  238. package/adapters/qoder/skills/release-marketplace/SKILL.md +156 -0
  239. package/adapters/qoder/skills/release-prepare/SKILL.md +135 -0
  240. package/adapters/qoder/skills/release-publish/SKILL.md +91 -0
  241. package/adapters/qoder/skills/release-reconcile/SKILL.md +80 -0
  242. package/adapters/qoder/skills/release-setup/SKILL.md +131 -0
  243. package/adapters/qoder/skills/release-verify/SKILL.md +109 -0
  244. package/adapters/qoder/src/schemas/adapter-build-manifest.schema.json +41 -0
  245. package/adapters/qoder/src/schemas/adapter-peer-verification-request.schema.json +54 -0
  246. package/adapters/qoder/src/schemas/adapter-peer-verification-result.schema.json +54 -0
  247. package/adapters/qoder/src/schemas/adapter-source.schema.json +47 -0
  248. package/adapters/qoder/src/schemas/audit-baseline-pin.schema.json +163 -0
  249. package/adapters/qoder/src/schemas/declared-read-surface-result.schema.json +61 -0
  250. package/adapters/qoder/src/schemas/engineering-baseline.schema.json +77 -0
  251. package/adapters/qoder/src/schemas/executable-identity-observation.schema.json +162 -0
  252. package/adapters/qoder/src/schemas/filesystem-root-binding.schema.json +14 -0
  253. package/adapters/qoder/src/schemas/filesystem-tree-observation.schema.json +71 -0
  254. package/adapters/qoder/src/schemas/fixed-set-publication-manifest.schema.json +108 -0
  255. package/adapters/qoder/src/schemas/fixed-set-publication-receipt.schema.json +148 -0
  256. package/adapters/qoder/src/schemas/host-capability-fact.schema.json +31 -0
  257. package/adapters/qoder/src/schemas/host-descriptor.schema.json +144 -0
  258. package/adapters/qoder/src/schemas/host-operation-plan.schema.json +57 -0
  259. package/adapters/qoder/src/schemas/host-operation-receipt.schema.json +81 -0
  260. package/adapters/qoder/src/schemas/host-probe-result.schema.json +30 -0
  261. package/adapters/qoder/src/schemas/host-registry.schema.json +18 -0
  262. package/adapters/qoder/src/schemas/host-verification-request.schema.json +67 -0
  263. package/adapters/qoder/src/schemas/host-verification-result.schema.json +149 -0
  264. package/adapters/qoder/src/schemas/managed-file-lock.schema.json +77 -0
  265. package/adapters/qoder/src/schemas/migration-manifest.schema.json +412 -0
  266. package/adapters/qoder/src/schemas/observation-scope.schema.json +91 -0
  267. package/adapters/qoder/src/schemas/operation-request.schema.json +58 -0
  268. package/adapters/qoder/src/schemas/operation-result.schema.json +130 -0
  269. package/adapters/qoder/src/schemas/platform-difference-registry.schema.json +110 -0
  270. package/adapters/qoder/src/schemas/plugin-verification-request.schema.json +499 -0
  271. package/adapters/qoder/src/schemas/plugin-verification-result.schema.json +1217 -0
  272. package/adapters/qoder/src/schemas/profile-adoption-declaration.schema.json +111 -0
  273. package/adapters/qoder/src/schemas/profile-descriptor.schema.json +99 -0
  274. package/adapters/qoder/src/schemas/project-manifest.schema.json +67 -0
  275. package/adapters/qoder/src/schemas/project-profile.schema.json +25 -0
  276. package/adapters/qoder/src/schemas/public-boundary-declaration.schema.json +73 -0
  277. package/adapters/qoder/src/schemas/report-binding.schema.json +42 -0
  278. package/adapters/qoder/src/schemas/report-model.schema.json +308 -0
  279. package/adapters/qoder/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  280. package/adapters/qoder/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  281. package/adapters/qoder/src/schemas/source-authority-receipt.schema.json +31 -0
  282. package/adapters/qoder/src/schemas/state-event-envelope.schema.json +38 -0
  283. package/adapters/qoder/src/schemas/state-snapshot-metadata.schema.json +25 -0
  284. package/adapters/qoder/src/schemas/structured-scan-policy.schema.json +97 -0
  285. package/adapters/qoder/src/schemas/surface-scan-policy.schema.json +42 -0
  286. package/adapters/qoder/src/schemas/timeout-policy.schema.json +24 -0
  287. package/adapters/qoder/src/schemas/token-estimate-record.schema.json +75 -0
  288. package/adapters/qoder/src/schemas/token-estimate-result.schema.json +43 -0
  289. package/adapters/qoder/src/schemas/watchdog-termination-envelope.schema.json +156 -0
  290. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  291. package/adapters/workbuddy/bin/consumer-contract-vectors.json +7 -7
  292. package/adapters/workbuddy/bin/error-codes.json +1 -1
  293. package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
  294. package/adapters/workbuddy/bin/prebuild-manifest.json +8 -4
  295. package/adapters/workbuddy/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  296. package/adapters/workbuddy/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  297. package/adapters/workbuddy/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  298. package/adapters/workbuddy/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  299. package/adapters/workbuddy/bin/registry.json +1 -1
  300. package/adapters/workbuddy/bin/release-skill.bundle.mjs +4950 -1819
  301. package/adapters/workbuddy/bin/rules.json +1 -1
  302. package/adapters/workbuddy/data/hosts/cursor/host-descriptor.json +34 -0
  303. package/adapters/workbuddy/data/hosts/registry.json +1 -0
  304. package/adapters/workbuddy/schemas/release-plan.schema.json +255 -25
  305. package/adapters/workbuddy/schemas/release-project.schema.json +228 -26
  306. package/adapters/workbuddy/skills/release-finish/SKILL.md +29 -15
  307. package/adapters/workbuddy/skills/release-help/SKILL.md +40 -39
  308. package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -2
  309. package/adapters/workbuddy/src/schemas/host-descriptor.schema.json +9 -2
  310. package/bin/consumer-contract-vectors.json +7 -7
  311. package/bin/error-codes.json +1 -1
  312. package/bin/foundation-resource-binding.json +1 -1
  313. package/bin/prebuild-manifest.json +8 -4
  314. package/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  315. package/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  316. package/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  317. package/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  318. package/bin/registry.json +1 -1
  319. package/bin/release-skill-cli.mjs +148 -6
  320. package/bin/release-skill.bundle.mjs +4950 -1819
  321. package/bin/rules.json +1 -1
  322. package/data/hosts/cursor/host-descriptor.json +34 -0
  323. package/data/hosts/registry.json +1 -0
  324. package/package.json +9 -5
  325. package/platform-manifest.json +140 -8
  326. package/references/02-project-config.md +9 -2
  327. package/schemas/release-plan.schema.json +255 -25
  328. package/schemas/release-project.schema.json +228 -26
  329. package/scripts/sync-public-files.mjs +3 -22
  330. package/skills/release-finish/SKILL.md +29 -15
  331. package/skills/release-help/SKILL.md +40 -39
  332. package/skills/release-verify/SKILL.md +2 -2
  333. package/skills-src/release-finish/SKILL.md +29 -15
  334. package/skills-src/release-help/SKILL.md +40 -39
  335. package/skills-src/release-verify/SKILL.md +2 -2
  336. package/src/adapters/contract.mjs +1 -0
  337. package/src/adapters/plugin-marketplace.mjs +201 -9
  338. package/src/commands/post-release-local.mjs +618 -53
  339. package/src/commands/prepare.mjs +74 -9
  340. package/src/commands/publish.mjs +4 -1
  341. package/src/commands/ship.mjs +2 -0
  342. package/src/commands/verify-records.mjs +467 -0
  343. package/src/commands/verify.mjs +73 -0
  344. package/src/core/checkpoints.mjs +5 -2
  345. package/src/core/config.mjs +1 -1
  346. package/src/core/foundation-host-verification.mjs +168 -0
  347. package/src/core/plan.mjs +19 -1
  348. package/src/core/postpublish.mjs +9 -1
  349. package/src/core/run-retention.mjs +1 -1
  350. package/src/core/run.mjs +1 -1
  351. package/src/core/surface-host-bindings.mjs +1 -0
  352. package/src/core/verification-gates.mjs +1 -1
  353. package/src/platforms/registry.mjs +225 -16
  354. package/src/producers/build-adapters.mjs +43 -25
  355. package/src/producers/foundation-resource-projection.mjs +3 -3
  356. package/src/schemas/host-descriptor.schema.json +9 -2
@@ -25,7 +25,7 @@ import { promisify } from 'node:util';
25
25
 
26
26
  const execFile = promisify(execFileCb);
27
27
 
28
- import { classifyPathInput, writeFileAtomic, withTemporaryWorkspace } from 'skill-family-harness-node';
28
+ import { classifyPathInput, writeFileAtomic, withTemporaryWorkspace, resolveContained, readFileStrict } from 'skill-family-harness-node';
29
29
  import { loadProjectConfig } from '../core/config.mjs';
30
30
  import { captureBaseline } from '../core/baseline.mjs';
31
31
  import { runHook } from '../core/hooks.mjs';
@@ -63,6 +63,7 @@ import {
63
63
  assertSelfBootstrapFacts,
64
64
  } from '../core/derived-artifact-gates.mjs';
65
65
  import { isFoundationPluginVerificationEligible } from '../core/foundation-plugin-verification.mjs';
66
+ import { assertCursorHostScenario } from '../core/foundation-host-verification.mjs';
66
67
  import { PKG_ROOT } from '../core/pkg-root.mjs';
67
68
  import { writeFrozenMarker, FROZEN_MARKER_FILENAME } from '../core/frozen-marker.mjs';
68
69
  import {
@@ -897,12 +898,21 @@ async function processSnapshots(config, root, evidence, runDir, production = fal
897
898
  }
898
899
 
899
900
  /** Validate Hub-backed plugin identities against the already frozen snapshot. */
900
- async function validateFrozenLocalHostUpdatePlugins(unitResults) {
901
- for (const { unit, manifest } of unitResults) {
901
+ async function validateFrozenLocalHostUpdatePlugins(unitResults, resolvedVersions) {
902
+ for (const [index, { unit, manifest }] of unitResults.entries()) {
902
903
  const declaration = unit.postPublish?.localHostUpdate;
903
904
  if (!declaration) continue;
905
+ if (declaration.hosts.includes('cursor')) {
906
+ const source = await resolveContained(manifest.outputDir, declaration.cursor.sourcePath);
907
+ const receipt = await readFileStrict(source, '.cursor-plugin/plugin.json', { encoding: 'utf8' });
908
+ const cursor = JSON.parse(receipt.content);
909
+ if (typeof cursor.name !== 'string' || !/^[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$/u.test(cursor.name)
910
+ || cursor.name !== declaration.plugin || cursor.version !== resolvedVersions[index]) {
911
+ throw new ReleaseError(GATE_FAILED, `unit "${unit.id}" Cursor local plugin manifest must match the frozen plugin name and target version`);
912
+ }
913
+ }
904
914
  const manifestEntries = (manifest.entries ?? [])
905
- .filter((entry) => /(?:^|\/)\.(?:claude|codex|kimi|codebuddy)-plugin\/plugin\.json$/u.test(entry.path));
915
+ .filter((entry) => /(?:^|\/)\.(?:claude|codex|kimi|codebuddy|qoder|cursor)-plugin\/plugin\.json$/u.test(entry.path));
906
916
  const identities = new Set();
907
917
  for (const entry of manifestEntries) {
908
918
  try {
@@ -1884,6 +1894,7 @@ export function buildExternalActions(unitResults, resolvedVersions, productionAs
1884
1894
  // Undeclared stays absent so legacy frozen plans remain byte-identical.
1885
1895
  const frozenUnitDists = frozenDistributions?.get(unit.id) ?? null;
1886
1896
  for (const platform of PLATFORMS) {
1897
+ if (platform.actionType === null) continue;
1887
1898
  const dist = frozenUnitDists
1888
1899
  ? frozenUnitDists.find((d) => d.type === platform.distributionType)
1889
1900
  : (unit.distributions ?? []).find((d) => d.type === platform.distributionType);
@@ -1896,6 +1907,10 @@ export function buildExternalActions(unitResults, resolvedVersions, productionAs
1896
1907
  // but no frozen ref/marketplaceCommitSha (production-only bindings),
1897
1908
  // keeping the two loops' shapes aligned for plan completeness.
1898
1909
  const externalMarketplace = dist.marketplaceRepo !== undefined && dist.marketplaceRepo !== null;
1910
+ const marketplaceSource = dist.marketplaceSource
1911
+ ?? (platform.id === 'qoder' && externalMarketplace
1912
+ ? `https://github.com/${dist.marketplaceRepo}.git`
1913
+ : undefined);
1899
1914
  // Normalized marketplace form: explicit mutually exclusive declaration.
1900
1915
  // bundled-family: marketplace and plugin live in the same repo.
1901
1916
  // standalone-index: external marketplace repo indexes a separate plugin repo.
@@ -1937,7 +1952,7 @@ export function buildExternalActions(unitResults, resolvedVersions, productionAs
1937
1952
  consumer: platform.id,
1938
1953
  plugin: dist.plugin,
1939
1954
  ...(dist.marketplace !== undefined ? { marketplace: dist.marketplace } : {}),
1940
- ...(dist.marketplaceSource !== undefined ? { marketplaceSource: dist.marketplaceSource } : {}),
1955
+ ...(marketplaceSource !== undefined ? { marketplaceSource } : {}),
1941
1956
  repo: externalMarketplace ? dist.marketplaceRepo : unit.publicRepo,
1942
1957
  version,
1943
1958
  entrySkill: dist.entrySkill,
@@ -1965,7 +1980,7 @@ export function buildExternalActions(unitResults, resolvedVersions, productionAs
1965
1980
  installed: true,
1966
1981
  plugin: dist.plugin,
1967
1982
  ...(dist.marketplace !== undefined ? { marketplace: dist.marketplace } : {}),
1968
- ...(dist.marketplaceSource !== undefined ? { marketplaceSource: dist.marketplaceSource } : {}),
1983
+ ...(marketplaceSource !== undefined ? { marketplaceSource } : {}),
1969
1984
  version,
1970
1985
  entrySkill: dist.entrySkill,
1971
1986
  ...(externalMarketplace ? { marketplaceLocation: 'external', repo: dist.marketplaceRepo } : {}),
@@ -2127,6 +2142,7 @@ export function buildExternalActions(unitResults, resolvedVersions, productionAs
2127
2142
  // entrySkillFound/manifestDigest expected). Marketplace identity follows
2128
2143
  // the distribution declaration, same as the non-production loop.
2129
2144
  for (const platform of PLATFORMS) {
2145
+ if (platform.actionType === null) continue;
2130
2146
  const dist = frozenUnitDists
2131
2147
  ? frozenUnitDists.find((d) => d.type === platform.distributionType)
2132
2148
  : (unit.distributions ?? []).find((d) => d.type === platform.distributionType);
@@ -2143,6 +2159,10 @@ export function buildExternalActions(unitResults, resolvedVersions, productionAs
2143
2159
  // bind this unit's own frozen snapshot — the payload authority is the unit
2144
2160
  // snapshot, unchanged. Inline form (no marketplaceRepo) is byte-identical.
2145
2161
  const externalMarketplace = dist.marketplaceRepo !== undefined && dist.marketplaceRepo !== null;
2162
+ const marketplaceSource = dist.marketplaceSource
2163
+ ?? (platform.id === 'qoder' && externalMarketplace
2164
+ ? `https://github.com/${dist.marketplaceRepo}.git`
2165
+ : undefined);
2146
2166
  const freeze = externalMarketplace ? externalFreezes.get(`${unit.id} ${dist.type}`) : null;
2147
2167
  // Normalized marketplace form: explicit mutually exclusive declaration.
2148
2168
  // All four platforms carry marketplaceForm and sourceDescriptor.
@@ -2181,7 +2201,7 @@ export function buildExternalActions(unitResults, resolvedVersions, productionAs
2181
2201
  consumer: platform.id,
2182
2202
  plugin: dist.plugin,
2183
2203
  ...(dist.marketplace !== undefined ? { marketplace: dist.marketplace } : {}),
2184
- ...(dist.marketplaceSource !== undefined ? { marketplaceSource: dist.marketplaceSource } : {}),
2204
+ ...(marketplaceSource !== undefined ? { marketplaceSource } : {}),
2185
2205
  repo: externalMarketplace ? dist.marketplaceRepo : unit.publicRepo,
2186
2206
  ref: externalMarketplace ? freeze.ref : resolvedTag,
2187
2207
  version: unitVersion,
@@ -2225,7 +2245,7 @@ export function buildExternalActions(unitResults, resolvedVersions, productionAs
2225
2245
  consumer: platform.id,
2226
2246
  plugin: dist.plugin,
2227
2247
  ...(dist.marketplace !== undefined ? { marketplace: dist.marketplace } : {}),
2228
- ...(dist.marketplaceSource !== undefined ? { marketplaceSource: dist.marketplaceSource } : {}),
2248
+ ...(marketplaceSource !== undefined ? { marketplaceSource } : {}),
2229
2249
  repo: externalMarketplace ? dist.marketplaceRepo : unit.publicRepo,
2230
2250
  version: unitVersion,
2231
2251
  ref: externalMarketplace ? freeze.ref : resolvedTag,
@@ -2613,6 +2633,35 @@ async function resolveDistributionManifestFacts(unitResults, resolvedVersions) {
2613
2633
  if (!platform || dist.type === 'npm') continue;
2614
2634
  const key = `${unit.id} ${dist.type}`;
2615
2635
 
2636
+ if (platform.installMethod === 'foundation-host-verification') {
2637
+ assertCursorHostScenario(dist.hostVerification);
2638
+ const entrySkillPath = resolve(snapshotDir, 'skills', dist.entrySkill, 'SKILL.md');
2639
+ let entrySkillStat;
2640
+ try {
2641
+ entrySkillStat = await lstat(entrySkillPath);
2642
+ } catch (err) {
2643
+ throw new ReleaseError(
2644
+ GATE_FAILED,
2645
+ `unit "${unit.id}" ${dist.type} entry skill "${dist.entrySkill}" is absent from the frozen payload`,
2646
+ { unitId: unit.id, distributionType: dist.type, cause: err.code },
2647
+ );
2648
+ }
2649
+ if (!entrySkillStat.isFile() || entrySkillStat.isSymbolicLink()) {
2650
+ throw new ReleaseError(
2651
+ GATE_FAILED,
2652
+ `unit "${unit.id}" ${dist.type} entry skill must be a regular non-symlink SKILL.md`,
2653
+ { unitId: unit.id, distributionType: dist.type },
2654
+ );
2655
+ }
2656
+ distributionFacts.set(key, {
2657
+ kind: 'host-verification',
2658
+ platform,
2659
+ entrySkill: dist.entrySkill,
2660
+ entrySkillRelativePath: `skills/${dist.entrySkill}/SKILL.md`,
2661
+ });
2662
+ continue;
2663
+ }
2664
+
2616
2665
  // 校验 marketplaceSourceType:从配置读取,不允许硬编码默认值
2617
2666
  const sourceTypeResult = validateMarketplaceSourceSelection(platform.id, dist, dist);
2618
2667
  if (!sourceTypeResult.valid) {
@@ -2829,6 +2878,7 @@ async function runPrepareSkillResourceClosureGate({
2829
2878
  (p) => p.distributionType === distribution.type,
2830
2879
  );
2831
2880
  if (!platform) continue;
2881
+ if (platform.installMethod === 'foundation-host-verification') continue;
2832
2882
  const frozenManifest = frozenManifestByDist.get(
2833
2883
  `${unit.id} ${distribution.type}`,
2834
2884
  );
@@ -2903,6 +2953,7 @@ async function runPrepareSkillResourceClosureGate({
2903
2953
  (p) => p.distributionType === distribution.type,
2904
2954
  );
2905
2955
  if (!platform) continue;
2956
+ if (platform.installMethod === 'foundation-host-verification') continue;
2906
2957
  expectedHosts.push(await normalizeHostId(platform.buildAdapter.name));
2907
2958
  }
2908
2959
  const hostCoverage = evaluateDeclaredHostSurfaceCoverage(
@@ -4267,7 +4318,7 @@ export async function prepareRelease(options) {
4267
4318
  const { unitResults, snapshotDigests } = await processSnapshots(
4268
4319
  selectedConfig, realRoot, evidence, runDir, production,
4269
4320
  );
4270
- await validateFrozenLocalHostUpdatePlugins(unitResults);
4321
+ await validateFrozenLocalHostUpdatePlugins(unitResults, resolvedVersions);
4271
4322
 
4272
4323
  // Snapshot gates always run on disposable writable copies. The public
4273
4324
  // snapshot authority is re-digested after every gate and is never exposed
@@ -4488,6 +4539,20 @@ export async function prepareRelease(options) {
4488
4539
  if (!platform || dist.type === 'npm') return dist;
4489
4540
  const key = `${unit.id} ${dist.type}`;
4490
4541
  const facts = distributionFacts.get(key);
4542
+ if (facts?.kind === 'host-verification') {
4543
+ const { hostVerification, ...frozenDistribution } = dist;
4544
+ return {
4545
+ ...frozenDistribution,
4546
+ hostVerificationContract: {
4547
+ contractVersion: 1,
4548
+ scenario: structuredClone(hostVerification),
4549
+ hostId: facts.platform.id,
4550
+ payloadDigest: productionAssets?.[idx]?.manifestDigest ?? manifest.snapshotDigest,
4551
+ manifestRelativePath: facts.entrySkillRelativePath,
4552
+ entrySkill: facts.entrySkill,
4553
+ },
4554
+ };
4555
+ }
4491
4556
 
4492
4557
  // includeMarketplaceEntry 代表"契约实际包含一条市场条目",
4493
4558
  // 不能只代表平台理论上支持市场条目。
@@ -662,6 +662,7 @@ export async function publishRelease(options) {
662
662
  for (const dist of frozenUnit?.distributions ?? []) {
663
663
  const platform = PLATFORMS.find((p) => p.distributionType === dist.type);
664
664
  if (!platform) continue;
665
+ if (platform.installMethod === 'foundation-host-verification') continue;
665
666
  const contract = dist.installationContract;
666
667
  if (!contract?.normalizedManifest) continue;
667
668
  const pluginRoot = pluginRootFromManifestRelativePath(contract.manifestRelativePath);
@@ -696,7 +697,9 @@ export async function publishRelease(options) {
696
697
  const expectedHosts = [];
697
698
  for (const distribution of frozenUnit?.distributions ?? []) {
698
699
  const platform = PLATFORMS.find((item) => item.distributionType === distribution.type);
699
- if (platform) expectedHosts.push(await normalizeHostId(platform.buildAdapter.name));
700
+ if (platform && platform.installMethod !== 'foundation-host-verification') {
701
+ expectedHosts.push(await normalizeHostId(platform.buildAdapter.name));
702
+ }
700
703
  }
701
704
  const hostCoverage = evaluateDeclaredHostSurfaceCoverage(
702
705
  expectedHosts,
@@ -220,6 +220,7 @@ const ACTION_TARGET_FIELDS = Object.freeze({
220
220
  'codex-marketplace-install': Object.freeze(['consumer', 'plugin', 'marketplace', 'repo', 'ref', 'version', 'entrySkill']),
221
221
  'kimi-marketplace-install': Object.freeze(['consumer', 'plugin', 'repo', 'ref', 'version', 'entrySkill']),
222
222
  'codebuddy-marketplace-install': Object.freeze(['consumer', 'plugin', 'repo', 'ref', 'version', 'entrySkill']),
223
+ 'qoder-marketplace-install': Object.freeze(['consumer', 'plugin', 'marketplace', 'repo', 'ref', 'version', 'entrySkill']),
223
224
  'set-default-branch': Object.freeze(['repo', 'oldBranch', 'newBranch', 'expectedNewBranchCommit']),
224
225
  });
225
226
 
@@ -705,6 +706,7 @@ export async function advanceShip(options = {}, injected = {}) {
705
706
  adapterRegistry: options.adapterRegistry,
706
707
  root,
707
708
  verificationGatesAuthorized: state.verificationGatesAuthorized === true,
709
+ cursorHostRuntime: options.cursorHostRuntime,
708
710
  });
709
711
  state = {
710
712
  ...state,