@wix/agent-skills 1.33.1 → 1.35.0

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 (619) hide show
  1. package/README.md +3 -0
  2. package/package.json +1 -1
  3. package/skills/wix-export/SKILL.md +83 -0
  4. package/skills/wix-harmony-editor/.publish-manifest.json +8 -0
  5. package/skills/wix-harmony-editor/COPY-SITE.md +494 -0
  6. package/skills/wix-harmony-editor/SKILL.md +317 -0
  7. package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +249 -0
  8. package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +225 -0
  9. package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +89 -0
  10. package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +76 -0
  11. package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +212 -0
  12. package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +44 -0
  13. package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +45 -0
  14. package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +53 -0
  15. package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +76 -0
  16. package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +16 -0
  17. package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +150 -0
  18. package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +27 -0
  19. package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +56 -0
  20. package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +211 -0
  21. package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +29 -0
  22. package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +92 -0
  23. package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +56 -0
  24. package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +73 -0
  25. package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +67 -0
  26. package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +102 -0
  27. package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +40 -0
  28. package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +191 -0
  29. package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +61 -0
  30. package/skills/wix-harmony-editor/scripts/launch.sh +359 -0
  31. package/skills/wix-headless/SKILL.md +7 -2
  32. package/skills/wix-headless/references/CAPABILITIES.md +6 -1
  33. package/skills/wix-headless/references/DISCOVERY.md +2 -1
  34. package/skills/wix-headless/references/SDK_HANDOFF.md +6 -1
  35. package/skills/wix-headless/references/SEED.md +3 -2
  36. package/skills/wix-headless/references/SETUP.md +1 -0
  37. package/skills/wix-headless/references/inline-recipes/experience-donations.md +102 -0
  38. package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +146 -0
  39. package/skills/wix-headless/references/inline-recipes/setup-donations.md +15 -0
  40. package/skills/wix-headless/references/managed/CREATE.md +1 -1
  41. package/skills/wix-headless-kit/SKILL.md +110 -21
  42. package/skills/wix-headless-kit/guides/api-run.md +15 -13
  43. package/skills/wix-headless-kit/guides/existing-site.md +31 -0
  44. package/skills/wix-headless-kit/guides/migration.md +49 -17
  45. package/skills/wix-headless-kit/install/agents-md.mjs +1 -1
  46. package/skills/wix-headless-kit/install/context.mjs +61 -6
  47. package/skills/wix-headless-kit/install/pins.json +1 -1
  48. package/skills/wix-headless-kit/install/setup.mjs +107 -12
  49. package/skills/wix-headless-replatform/.publish-manifest.json +8 -0
  50. package/skills/wix-headless-replatform/SKILL.md +116 -0
  51. package/skills/wix-headless-replatform/agents/openai.yaml +6 -0
  52. package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +43 -0
  53. package/skills/wix-headless-replatform/references/extraction-schema.md +187 -0
  54. package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +137 -0
  55. package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +41 -0
  56. package/skills/wix-headless-replatform/references/output-contract.md +93 -0
  57. package/skills/wix-headless-replatform/references/post-build-gap-contract.md +125 -0
  58. package/skills/wix-headless-replatform/references/qa-checklist.md +83 -0
  59. package/skills/wix-headless-replatform/references/safety.md +19 -0
  60. package/skills/wix-headless-replatform/references/ui-normalization-contract.md +70 -0
  61. package/skills/wix-headless-replatform/references/workflow.md +157 -0
  62. package/skills/wix-headless-replatform/registry/README.md +20 -0
  63. package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +28 -0
  64. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +54 -0
  65. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +60 -0
  66. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +48 -0
  67. package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +21 -0
  68. package/skills/wix-headless-replatform/registry/registry.json +36 -0
  69. package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +32 -0
  70. package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +62 -0
  71. package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +64 -0
  72. package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +42 -0
  73. package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +73 -0
  74. package/skills/wix-headless-replatform/schemas/build-plan.schema.json +10 -0
  75. package/skills/wix-headless-replatform/schemas/candidate.schema.json +19 -0
  76. package/skills/wix-headless-replatform/schemas/common.schema.json +33 -0
  77. package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +10 -0
  78. package/skills/wix-headless-replatform/schemas/decision-request.schema.json +10 -0
  79. package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +28 -0
  80. package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +34 -0
  81. package/skills/wix-headless-replatform/schemas/final-report.schema.json +10 -0
  82. package/skills/wix-headless-replatform/schemas/foundation.schema.json +11 -0
  83. package/skills/wix-headless-replatform/schemas/metadata.schema.json +11 -0
  84. package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +17 -0
  85. package/skills/wix-headless-replatform/schemas/page-capture.schema.json +11 -0
  86. package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +33 -0
  87. package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +11 -0
  88. package/skills/wix-headless-replatform/schemas/unit.schema.json +40 -0
  89. package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +844 -0
  90. package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +163 -0
  91. package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +42 -0
  92. package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +228 -0
  93. package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +87 -0
  94. package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +505 -0
  95. package/skills/wix-headless-replatform/scripts/discover-urls.mjs +142 -0
  96. package/skills/wix-headless-replatform/scripts/extract-assets.mjs +140 -0
  97. package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +637 -0
  98. package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +1903 -0
  99. package/skills/wix-headless-replatform/scripts/extract-page.mjs +2461 -0
  100. package/skills/wix-headless-replatform/scripts/extract-seo.mjs +25 -0
  101. package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +63 -0
  102. package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +126 -0
  103. package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +180 -0
  104. package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +98 -0
  105. package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +103 -0
  106. package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +176 -0
  107. package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +261 -0
  108. package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +25 -0
  109. package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +342 -0
  110. package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +140 -0
  111. package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +22 -0
  112. package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +143 -0
  113. package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +288 -0
  114. package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +266 -0
  115. package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +111 -0
  116. package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +570 -0
  117. package/skills/wix-headless-replatform/scripts/lib/common.mjs +329 -0
  118. package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +121 -0
  119. package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +282 -0
  120. package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +61 -0
  121. package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +374 -0
  122. package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +243 -0
  123. package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +1139 -0
  124. package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +326 -0
  125. package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +184 -0
  126. package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +396 -0
  127. package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +168 -0
  128. package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +10 -0
  129. package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +194 -0
  130. package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +348 -0
  131. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +141 -0
  132. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +43 -0
  133. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +18 -0
  134. package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +64 -0
  135. package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +31 -0
  136. package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +358 -0
  137. package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +25 -0
  138. package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +39 -0
  139. package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +107 -0
  140. package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +96 -0
  141. package/skills/wix-headless-replatform/scripts/site-clone.mjs +658 -0
  142. package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +29 -0
  143. package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +669 -0
  144. package/skills/wix-headless-replatform/scripts/visual-qa.mjs +370 -0
  145. package/skills/wix-headless-templates/donations/INSTRUCTIONS.md +37 -24
  146. package/skills/wix-headless-templates/donations/app/components/donations/DonateForm.tsx +49 -23
  147. package/skills/wix-headless-templates/donations/app/components/donations/DonationReceipt.tsx +6 -5
  148. package/skills/wix-headless-templates/donations/app/components/donations/GoalProgress.tsx +5 -5
  149. package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +4 -4
  150. package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +7 -3
  151. package/skills/wix-headless-templates/donations/app/wix/donations/donation-store.ts +2 -2
  152. package/skills/wix-headless-templates/donations/app/wix/donations/donations-core.ts +12 -9
  153. package/skills/wix-headless-templates/donations/project/src/components/donations/DonateForm.tsx +49 -23
  154. package/skills/wix-headless-templates/donations/project/src/components/donations/DonationReceipt.tsx +6 -5
  155. package/skills/wix-headless-templates/donations/project/src/components/donations/GoalProgress.tsx +5 -5
  156. package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +4 -4
  157. package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +7 -3
  158. package/skills/wix-headless-templates/donations/project/src/wix/donations/donation-store.ts +2 -2
  159. package/skills/wix-headless-templates/donations/project/src/wix/donations/donations-core.ts +12 -9
  160. package/skills/wix-headless-templates/donations/rest/campaigns.ts +4 -4
  161. package/skills/wix-headless-templates/donations/rest/donate.ts +7 -3
  162. package/skills/wix-headless-templates/donations/seed/SEED.md +12 -7
  163. package/skills/wix-headless-templates/donations/tests/donation-contract.test.mjs +71 -0
  164. package/skills/wix-headless-templates/donations/tests/donation-form.test.cjs +137 -0
  165. package/skills/wix-headless-templates/restaurants/INSTRUCTIONS.md +28 -14
  166. package/skills/wix-headless-templates/restaurants/app/components/restaurants/OrderCartDrawer.tsx +87 -5
  167. package/skills/wix-headless-templates/restaurants/app/hooks/restaurants/useOrderCart.ts +9 -1
  168. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/order-store.ts +33 -4
  169. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering-core.ts +100 -5
  170. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering.ts +101 -15
  171. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/types.ts +35 -1
  172. package/skills/wix-headless-templates/restaurants/project/src/components/restaurants/OrderCartDrawer.tsx +87 -5
  173. package/skills/wix-headless-templates/restaurants/project/src/hooks/restaurants/useOrderCart.ts +9 -1
  174. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/order-store.ts +33 -4
  175. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering-core.ts +100 -5
  176. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering.ts +101 -15
  177. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/types.ts +35 -1
  178. package/skills/wix-headless-templates/restaurants/rest/ordering.ts +91 -14
  179. package/skills/wix-import/SKILL.md +90 -0
  180. package/skills/wix-manage/SKILL.md +14 -4
  181. package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +2 -0
  182. package/skills/wix-manage/references/dashboard-navigation/dashboard-navigation.md +2 -1
  183. package/skills/wix-manage/references/dashboard-navigation/routes.json +249 -0
  184. package/skills/wix-manage/references/donations/create-and-update-donation-campaigns.md +139 -0
  185. package/skills/wix-manage/references/events/events-dashboard-navigation.md +81 -0
  186. package/skills/wix-manage/references/seo/manage-content-plan.md +207 -222
  187. package/skills/wix-manage/references/sites/manage-oauth-apps.md +1 -0
  188. package/skills/wix-manage/references/sites/upload-static-site.md +128 -8
  189. package/skills/wix-readme/SKILL.md +166 -0
  190. package/skills/wix-replatform/.publish-manifest.json +5 -5
  191. package/skills/wix-replatform/CLI.md +162 -0
  192. package/skills/wix-replatform/README.md +52 -0
  193. package/skills/wix-replatform/SKILL.md +229 -684
  194. package/skills/wix-replatform/console/account.css +1 -0
  195. package/skills/wix-replatform/console/app.css +1 -0
  196. package/skills/wix-replatform/console/app.js +117 -0
  197. package/skills/wix-replatform/console/index.html +4 -0
  198. package/skills/wix-replatform/console/json.css +11 -0
  199. package/skills/wix-replatform/lib/agent-adapters/index.js +71 -0
  200. package/skills/wix-replatform/lib/app-page-routing.js +75 -0
  201. package/skills/wix-replatform/lib/artifact-freshness.js +11 -1
  202. package/skills/wix-replatform/lib/blocked-data-requests.js +427 -0
  203. package/skills/wix-replatform/lib/census-reconciliation.js +426 -0
  204. package/skills/wix-replatform/lib/completion-report.js +1393 -13
  205. package/skills/wix-replatform/lib/config-env.js +85 -11
  206. package/skills/wix-replatform/lib/confirmed-pictures.js +212 -0
  207. package/skills/wix-replatform/lib/dependency-readiness.js +423 -0
  208. package/skills/wix-replatform/lib/dependency-recovery.js +21 -0
  209. package/skills/wix-replatform/lib/destination-choice.js +163 -0
  210. package/skills/wix-replatform/lib/destination-handoff.js +62 -0
  211. package/skills/wix-replatform/lib/destination-http.js +81 -0
  212. package/skills/wix-replatform/lib/destination-route.js +98 -0
  213. package/skills/wix-replatform/lib/destination.js +919 -0
  214. package/skills/wix-replatform/lib/discovered-census.js +231 -0
  215. package/skills/wix-replatform/lib/discovered-set-status.js +255 -0
  216. package/skills/wix-replatform/lib/document-url-guard.js +203 -0
  217. package/skills/wix-replatform/lib/entity-qa-attestation.js +339 -0
  218. package/skills/wix-replatform/lib/entity-verification.js +18 -0
  219. package/skills/wix-replatform/lib/execution-capability.js +120 -0
  220. package/skills/wix-replatform/lib/execution-log.js +170 -0
  221. package/skills/wix-replatform/lib/execution-manifest.js +20 -2
  222. package/skills/wix-replatform/lib/execution-state.js +22 -0
  223. package/skills/wix-replatform/lib/expectations-ledger.js +96 -0
  224. package/skills/wix-replatform/lib/generated-plugin-handoff.js +140 -0
  225. package/skills/wix-replatform/lib/import-readiness-contract.js +23 -0
  226. package/skills/wix-replatform/lib/import-recovery.js +800 -6
  227. package/skills/wix-replatform/lib/imported-redirect-targets.js +608 -0
  228. package/skills/wix-replatform/lib/internal-link-reconciliation.js +166 -0
  229. package/skills/wix-replatform/lib/link-audit.js +173 -0
  230. package/skills/wix-replatform/lib/link-census.js +194 -0
  231. package/skills/wix-replatform/lib/link-plan.js +148 -0
  232. package/skills/wix-replatform/lib/link-verification.js +274 -0
  233. package/skills/wix-replatform/lib/link-write-journal.js +42 -0
  234. package/skills/wix-replatform/lib/local-state.js +869 -30
  235. package/skills/wix-replatform/lib/member-completion.js +658 -0
  236. package/skills/wix-replatform/lib/member-crosswalk.js +69 -0
  237. package/skills/wix-replatform/lib/member-outcome-registry.js +265 -0
  238. package/skills/wix-replatform/lib/migration-completion.js +311 -0
  239. package/skills/wix-replatform/lib/operator-identity.js +47 -0
  240. package/skills/wix-replatform/lib/orchestration-decisions.js +248 -0
  241. package/skills/wix-replatform/lib/orchestration-preflight.js +401 -19
  242. package/skills/wix-replatform/lib/orchestration-router.js +608 -32
  243. package/skills/wix-replatform/lib/orchestration-state.js +188 -12
  244. package/skills/wix-replatform/lib/order-reference-readiness.js +30 -0
  245. package/skills/wix-replatform/lib/payments-outcome-registry.js +200 -0
  246. package/skills/wix-replatform/lib/plugin-cms-fallback.js +618 -0
  247. package/skills/wix-replatform/lib/preservation-approval-stamp.js +54 -0
  248. package/skills/wix-replatform/lib/product-media-deferral.js +96 -0
  249. package/skills/wix-replatform/lib/progress-log.js +19 -3
  250. package/skills/wix-replatform/lib/read-back-approval.js +184 -0
  251. package/skills/wix-replatform/lib/read-back-comparison.js +136 -0
  252. package/skills/wix-replatform/lib/read-back-contract.js +243 -0
  253. package/skills/wix-replatform/lib/read-back-extract.js +118 -0
  254. package/skills/wix-replatform/lib/read-back-gate.js +734 -0
  255. package/skills/wix-replatform/lib/read-back-reads.js +94 -0
  256. package/skills/wix-replatform/lib/read-back-state.js +107 -0
  257. package/skills/wix-replatform/lib/read-back-summary.js +81 -0
  258. package/skills/wix-replatform/lib/rerun-conflicts.js +334 -0
  259. package/skills/wix-replatform/lib/run-controller.js +401 -0
  260. package/skills/wix-replatform/lib/seo-outcome-registry.js +45 -0
  261. package/skills/wix-replatform/lib/setup-verification.js +148 -0
  262. package/skills/wix-replatform/lib/source-access.js +231 -0
  263. package/skills/wix-replatform/lib/source-coverage.js +1130 -0
  264. package/skills/wix-replatform/lib/source-secrets.js +277 -0
  265. package/skills/wix-replatform/lib/structured-link-patch.js +59 -0
  266. package/skills/wix-replatform/lib/task-state.js +110 -0
  267. package/skills/wix-replatform/lib/url-preservation-report.js +319 -0
  268. package/skills/wix-replatform/lib/url-preservation-state.js +349 -1
  269. package/skills/wix-replatform/lib/url-redirect-plan.js +728 -0
  270. package/skills/wix-replatform/lib/url-verification.js +315 -0
  271. package/skills/wix-replatform/lib/user-action-effects.js +42 -0
  272. package/skills/wix-replatform/lib/user-actions.js +264 -0
  273. package/skills/wix-replatform/lib/website-handoff.js +1220 -0
  274. package/skills/wix-replatform/lib/wix-client-callers.js +54 -0
  275. package/skills/wix-replatform/lib/wix-dashboard-url.js +35 -0
  276. package/skills/wix-replatform/lib/write-verification-state.js +92 -0
  277. package/skills/wix-replatform/lib/write-verification.js +274 -0
  278. package/skills/wix-replatform/resources/rp-destination/SKILL.md +137 -0
  279. package/skills/wix-replatform/resources/rp-discovery/SKILL.md +189 -16
  280. package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +47 -0
  281. package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +869 -29
  282. package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +70 -0
  283. package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +195 -29
  284. package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +442 -0
  285. package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +112 -0
  286. package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +143 -0
  287. package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +244 -0
  288. package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +2082 -38
  289. package/skills/wix-replatform/resources/rp-mapper/SKILL.md +528 -11
  290. package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +303 -0
  291. package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +88 -0
  292. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +6 -5
  293. package/skills/wix-replatform/resources/rp-preflight/SKILL.md +40 -0
  294. package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +55 -0
  295. package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +60 -0
  296. package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +89 -0
  297. package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +36 -0
  298. package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +123 -0
  299. package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +124 -0
  300. package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +522 -0
  301. package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +56 -0
  302. package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +91 -0
  303. package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +255 -0
  304. package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +80 -10
  305. package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +44 -0
  306. package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +3 -0
  307. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
  308. package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +21 -1
  309. package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +66 -0
  310. package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +153 -0
  311. package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +394 -0
  312. package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +200 -0
  313. package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +34 -0
  314. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +44 -0
  315. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +1470 -0
  316. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +446 -0
  317. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +474 -0
  318. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +879 -0
  319. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +426 -0
  320. package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +24 -0
  321. package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +18 -0
  322. package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +40 -0
  323. package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +76 -0
  324. package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +51 -0
  325. package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +35 -0
  326. package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +20 -0
  327. package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +18 -0
  328. package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +31 -0
  329. package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +21 -0
  330. package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +21 -0
  331. package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +30 -0
  332. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +150 -0
  333. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +36 -0
  334. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +48 -0
  335. package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +20 -0
  336. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +8 -0
  337. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +6 -0
  338. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +8 -0
  339. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +8 -0
  340. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +12 -0
  341. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +6 -0
  342. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +13 -0
  343. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +13 -0
  344. package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +73 -0
  345. package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +13 -0
  346. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +693 -0
  347. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +283 -0
  348. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +191 -0
  349. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +115 -0
  350. package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +201 -0
  351. package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +146 -0
  352. package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +736 -22
  353. package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +73 -0
  354. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +115 -0
  355. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +91 -0
  356. package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +440 -0
  357. package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +125 -0
  358. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +252 -0
  359. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +183 -0
  360. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +333 -0
  361. package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +426 -0
  362. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +400 -0
  363. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +633 -0
  364. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +1127 -0
  365. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +194 -0
  366. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +100 -0
  367. package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +157 -0
  368. package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +234 -0
  369. package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +101 -0
  370. package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +755 -0
  371. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +1074 -0
  372. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +149 -0
  373. package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +25 -0
  374. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +204 -9
  375. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +186 -0
  376. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +1422 -0
  377. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +343 -0
  378. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +262 -26
  379. package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +272 -0
  380. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +373 -0
  381. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +101 -0
  382. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +81 -0
  383. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +128 -0
  384. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +18 -0
  385. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +104 -0
  386. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +44 -0
  387. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +49 -0
  388. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +94 -0
  389. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +863 -0
  390. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +52 -0
  391. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +161 -0
  392. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +180 -0
  393. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +286 -0
  394. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +79 -0
  395. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +120 -0
  396. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +128 -0
  397. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +88 -0
  398. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +80 -0
  399. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +46 -0
  400. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +55 -0
  401. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +99 -0
  402. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +55 -0
  403. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +160 -0
  404. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +81 -0
  405. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +60 -0
  406. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +74 -0
  407. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +75 -0
  408. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +60 -0
  409. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +44 -0
  410. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +57 -0
  411. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +141 -0
  412. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +54 -0
  413. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +158 -0
  414. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +97 -0
  415. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +86 -0
  416. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +90 -0
  417. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +51 -0
  418. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +103 -0
  419. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +1668 -33
  420. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +273 -0
  421. package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +11 -0
  422. package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +13 -0
  423. package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +446 -32
  424. package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +36 -0
  425. package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +38 -2
  426. package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +322 -0
  427. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +70 -0
  428. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +19 -9
  429. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +42 -8
  430. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +54 -8
  431. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +66 -10
  432. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +38 -7
  433. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +332 -0
  434. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +75 -0
  435. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +181 -0
  436. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +130 -0
  437. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +180 -0
  438. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +161 -0
  439. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +15 -4
  440. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +39 -7
  441. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +47 -8
  442. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +7 -1
  443. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +204 -0
  444. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +17 -4
  445. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +159 -15
  446. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +80 -12
  447. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +48 -8
  448. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +306 -0
  449. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +30 -7
  450. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +171 -0
  451. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +182 -0
  452. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +129 -0
  453. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +192 -0
  454. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +123 -0
  455. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +60 -12
  456. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +112 -0
  457. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +191 -0
  458. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +140 -13
  459. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +383 -18
  460. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +122 -0
  461. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +98 -0
  462. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +86 -0
  463. package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +128 -0
  464. package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +38 -0
  465. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +73 -0
  466. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +107 -0
  467. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +89 -0
  468. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +118 -0
  469. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +93 -0
  470. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +86 -0
  471. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +56 -0
  472. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +121 -0
  473. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +134 -0
  474. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +41 -0
  475. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +50 -0
  476. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +87 -0
  477. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +130 -0
  478. package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +914 -24
  479. package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +41 -0
  480. package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +14 -4
  481. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +45 -8
  482. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +41 -7
  483. package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +119 -0
  484. package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +13 -3
  485. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +41 -7
  486. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +82 -0
  487. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +77 -0
  488. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +165 -13
  489. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +41 -0
  490. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +46 -0
  491. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +137 -0
  492. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +133 -0
  493. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +7 -0
  494. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +36 -0
  495. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +71 -0
  496. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +67 -0
  497. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +72 -0
  498. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +74 -0
  499. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +69 -0
  500. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +61 -0
  501. package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +28 -1
  502. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +109 -0
  503. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +73 -0
  504. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +148 -0
  505. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +91 -0
  506. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +79 -0
  507. package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +32 -0
  508. package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +49 -0
  509. package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +103 -0
  510. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +203 -0
  511. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +27 -10
  512. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +119 -0
  513. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +111 -0
  514. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +52 -8
  515. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +214 -10
  516. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +93 -13
  517. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +111 -0
  518. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +52 -10
  519. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +145 -14
  520. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +84 -0
  521. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +178 -0
  522. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +87 -0
  523. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +106 -0
  524. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +64 -0
  525. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +119 -0
  526. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +94 -0
  527. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +113 -0
  528. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +65 -0
  529. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +165 -0
  530. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +60 -0
  531. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +201 -0
  532. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +306 -0
  533. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +229 -0
  534. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +55 -0
  535. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +715 -0
  536. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +567 -0
  537. package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +73 -0
  538. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +194 -0
  539. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +133 -0
  540. package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +13 -4
  541. package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +491 -0
  542. package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +104 -0
  543. package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +673 -0
  544. package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +453 -2
  545. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +119 -0
  546. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +566 -0
  547. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +249 -0
  548. package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +63 -0
  549. package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +187 -0
  550. package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +64 -0
  551. package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +1027 -0
  552. package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +90 -0
  553. package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +420 -0
  554. package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +177 -0
  555. package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +151 -0
  556. package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +723 -0
  557. package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +353 -0
  558. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +1437 -0
  559. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +354 -0
  560. package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +134 -0
  561. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +221 -0
  562. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +248 -0
  563. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +86 -3
  564. package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +231 -0
  565. package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +28 -0
  566. package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +14 -0
  567. package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +34 -0
  568. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +166 -15
  569. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +19 -2
  570. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +4079 -257
  571. package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +3 -0
  572. package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +150 -0
  573. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +40 -2
  574. package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +6 -1
  575. package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +148 -8
  576. package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +83 -15
  577. package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +1119 -215
  578. package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +318 -0
  579. package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +2 -2
  580. package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +106 -4
  581. package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +94 -0
  582. package/skills/wix-replatform/scripts/census-reconciliation.js +25 -0
  583. package/skills/wix-replatform/scripts/cms-fallback.js +89 -0
  584. package/skills/wix-replatform/scripts/discovered-census.js +26 -0
  585. package/skills/wix-replatform/scripts/discovered-set-status.js +33 -0
  586. package/skills/wix-replatform/scripts/entity-qa-attestation.js +130 -0
  587. package/skills/wix-replatform/scripts/execution-health-check.js +415 -0
  588. package/skills/wix-replatform/scripts/execution-manifest-validate.js +1 -1
  589. package/skills/wix-replatform/scripts/execution-state-prepare.js +1 -1
  590. package/skills/wix-replatform/scripts/expectations-ledger.js +44 -0
  591. package/skills/wix-replatform/scripts/import-contract-verify.js +183 -0
  592. package/skills/wix-replatform/scripts/internal-link-audit.js +90 -0
  593. package/skills/wix-replatform/scripts/item-seo-tags-verify.js +205 -0
  594. package/skills/wix-replatform/scripts/migration-completion.js +76 -0
  595. package/skills/wix-replatform/scripts/orchestration-preflight.js +21 -2
  596. package/skills/wix-replatform/scripts/orchestration-route.js +32 -1
  597. package/skills/wix-replatform/scripts/orchestration-state.js +146 -10
  598. package/skills/wix-replatform/scripts/read-back-gate.js +175 -0
  599. package/skills/wix-replatform/scripts/replatform-console.js +146 -0
  600. package/skills/wix-replatform/scripts/replatform.js +436 -0
  601. package/skills/wix-replatform/scripts/source-secrets.js +77 -0
  602. package/skills/wix-replatform/scripts/url-redirects.js +286 -0
  603. package/skills/wix-replatform/scripts/user-action.js +58 -0
  604. package/skills/wix-replatform/scripts/website-handoff-generate.js +64 -0
  605. package/skills/wix-replatform/scripts/wix-dashboard-url.js +54 -0
  606. package/skills/wix-replatform/scripts/wix-destination.js +143 -0
  607. package/skills/wix-replatform/scripts/wix-headless-scaffold.js +762 -0
  608. package/skills/wix-vibe-headless/SKILL.md +7 -3
  609. package/skills/wix-vibe-headless/install/deploy.cjs +61 -34
  610. package/skills/wix-vibe-headless/platforms/base44.md +1 -0
  611. package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +88 -0
  612. package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +112 -0
  613. package/skills/wix-vibe-headless/references/donations/seed/SEED.md +11 -0
  614. package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +258 -0
  615. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +5 -2
  616. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +4 -1
  617. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +67 -3
  618. package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +4 -3
  619. package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +0 -330
@@ -0,0 +1,146 @@
1
+ ---
2
+ name: "How to Code Donations"
3
+ description: Read Wix Donations campaigns and accept one-time or recurring donations through Cart V2 and a Headless redirect session. Covers numeric cart amounts, omitted one-time frequency, donor selections, misleading catalog errors and staged verification; does not create campaigns or prescribe hosting.
4
+ ---
5
+ # Accept a donation on a Headless site
6
+
7
+ Use existing Wix Donations campaigns; setup/editing belongs to
8
+ [the management recipe](../../../wix-manage/references/donations/create-and-update-donation-campaigns.md).
9
+ Read the [donor-experience guidance](experience-donations.md) when building
10
+ the UI. Resolve sibling links locally when installed; otherwise read the same repository path under
11
+ `https://www.wix.com/skills/`. This contract is independent of framework and hosting.
12
+
13
+ ## 1. Read the campaign as the donor will
14
+
15
+ Use one visitor identity per browser session; reuse the existing auth/transport. A public OAuth client
16
+ ID is not a secret; API keys, app secrets and owner tokens never belong in the browser. Confirm the
17
+ client targets the supplied content site. Do not require donor login or provision a replacement site.
18
+
19
+ | Need | REST call and minimal body | SDK equivalent |
20
+ | --- | --- | --- |
21
+ | Discover campaigns | `POST https://www.wixapis.com/donation-campaigns/v2/donation-campaigns/query` · `{ "query": { "filter": { "archived": false }, "cursorPaging": { "limit": 100 } } }` | `donationCampaigns.queryDonationCampaigns().eq('archived', false).limit(100).find()` |
22
+ | Campaign detail | `GET https://www.wixapis.com/donation-campaigns/v2/donation-campaigns/<ID>` | `donationCampaigns.getDonationCampaign(id)` |
23
+ | Goal metrics, only with a goal and permitted access | `GET https://www.wixapis.com/donation-campaigns/v2/donation-campaigns/<ID>/metrics` | `donationCampaigns.getDonationCampaignMetrics(id)` |
24
+
25
+ REST returns `donationCampaigns` / `donationCampaign`; SDK queries return `items`, SDK entities use
26
+ `_id`. Continue query paging with the returned cursor. Resolve detail routes from live IDs, not a
27
+ seed-time list; missing/archived campaigns are unavailable, not a fallback to the first campaign.
28
+ Offer giving only when `status === 'COLLECTING'` and not archived. Reaching a goal does not close a
29
+ campaign if it allows further donations. A refused query is an error, not an empty campaign list.
30
+
31
+ Render from `donationFrequencies`, `predefinedDonationAmounts[].price` and `.description`,
32
+ `customAmountEnabled` / `customAmountOptions`, `commentsEnabled`, `askDonorCoverFee`, and optional
33
+ `campaignGoal`. Currency is the site's default; use formatted API values or a verified currency code,
34
+ never assume USD. A metrics failure must not invent a raised total, donor count or currency.
35
+ Campaign story copy is site-authored; the entity has no story or slug.
36
+
37
+ Carry an explicitly chosen giving frequency through discovery and campaign links to the form, but
38
+ only when that campaign offers it. Retain later donor edits. Keep a short-lived, site/visitor/campaign-
39
+ scoped draft (preset/custom amount, cadence, fee, note) across refresh and checkout abandonment; notes
40
+ never belong in query strings or logs. Restore and revalidate against live settings before allowing
41
+ checkout. Do not clear the draft merely because a return URL was visited; see the shared experience
42
+ reference for recovery and accessible form requirements. This is UI state, not an extra Wix API.
43
+
44
+ Docs: [query](https://dev.wix.com/docs/api-reference/business-solutions/donations/donation-campaigns/query-donation-campaigns),
45
+ [get](https://dev.wix.com/docs/api-reference/business-solutions/donations/donation-campaigns/get-donation-campaign),
46
+ [metrics and permissions](https://dev.wix.com/docs/api-reference/business-solutions/donations/donation-campaigns/get-donation-campaign-metrics).
47
+ For SDK shapes read their `.md?apiView=SDK` views. Modules: `donationCampaigns` from `@wix/donations`,
48
+ `cartV2` from `@wix/ecom`, `redirects` from `@wix/redirects`, on the project's existing SDK client or
49
+ ambient auth. REST-only projects do not install an SDK just for this flow.
50
+
51
+ ## 2. Build the catalog reference correctly
52
+
53
+ **Campaign prices are decimal strings; cart `options.amount` must be a JSON number.** Convert and
54
+ validate before the request. `ONE_TIME` belongs to the campaign/UI enum; **omit `frequency` from
55
+ the cart options for one-time giving**. Only `WEEK`, `MONTH`, `YEAR` are recurring cart values.
56
+
57
+ ```js
58
+ const amount = Number(selectedAmount);
59
+ if (!Number.isFinite(amount) || amount <= 0) throw new Error('Enter a positive donation amount.');
60
+ // Before this: validate against the selected campaign's presets/custom limits and offered frequency.
61
+ const catalogItems = [{
62
+ quantity: 1,
63
+ catalogReference: {
64
+ appId: '333b456e-dd48-4d6b-b32b-9fd48d74e163',
65
+ catalogItemId: campaignId,
66
+ options: {
67
+ amount,
68
+ ...(frequency !== 'ONE_TIME' ? { frequency } : {}),
69
+ ...(askDonorCoverFee && donorOptedIn ? { donorCoveringFees: true } : {}),
70
+ },
71
+ },
72
+ }];
73
+ ```
74
+
75
+ Validate a nonempty amount first: `Number('')` is zero, not a donor selection. Honor the campaign's
76
+ allowed choices. Put an enabled donor message in `cart.note` (Cart V2 limit 1,000 characters), not
77
+ invented catalog options. Fee coverage adds the documented 2.9% **through the flag**; send the base
78
+ donation amount, not a locally inflated amount plus the flag. Recurring coverage applies per charge.
79
+ Do not create custom-priced items to bypass campaign rules.
80
+ [Donation catalog-reference contract](https://dev.wix.com/docs/api-reference/business-solutions/donations/donation-campaigns/e-commerce-integration-with-donation-campaigns).
81
+
82
+ ## 3. Create a fresh Cart V2, then a redirect session
83
+
84
+ Use the same visitor identity throughout. Keep this separate from the shopper's current merchandise
85
+ cart. New Cart V2 flows have **no separate Create Checkout call**; the returned cart ID is the ID
86
+ handed to `ecomCheckout.checkoutId`. Do not mix in the V1 create-checkout-from-cart step.
87
+ [Cart V2 migration](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/purchase-flow/cart-v2/migration-guide).
88
+
89
+ | Step | REST request | Result |
90
+ | --- | --- | --- |
91
+ | Create cart | `POST https://www.wixapis.com/ecom/v2/carts` · `{ "cart": { "source": { "channelType": "WEB" } }, "catalogItems": [...] }` (the numeric reference above; optional `cart.note`) | `cart.id` |
92
+ | Inspect calculated totals during verification | `POST https://www.wixapis.com/ecom/v2/carts/<CART_ID>/calculate` · `{}` | `cart` and `summary`; inspect the donation line, currency, calculated amounts and issues |
93
+ | Create redirect session | `POST https://www.wixapis.com/_api/redirects-api/v1/redirect-session` · `{ "ecomCheckout": { "checkoutId": "<CART_ID>" }, "callbacks": { "postFlowUrl": "<ORIGIN>/donate/<ID>", "thankYouPageUrl": "<ORIGIN>/donate/thank-you" } }` | `redirectSession.fullUrl` |
94
+
95
+ SDK: `cartV2.createCart({ cart: { source: { channelType: 'WEB' }, ...(note ? { note } : {}) }, catalogItems })`
96
+ returns a cart with `_id`; pass it to `redirects.createRedirectSession` with the same body as above.
97
+ Navigate the **full document** to the exact returned URL (`window.location.assign(fullUrl)`), not an
98
+ SPA router, iframe, guessed checkout URL or manually created order.
99
+
100
+ Use actual, reachable callback routes on the deployed origin; the external origin must be allowed
101
+ on the OAuth client. `postFlowUrl` is also used on abandonment: it is not a paid signal. A success
102
+ callback may carry `orderId`; confirm order/payment state through an authorized read before stating
103
+ that a donation was paid. Never grant owner access just to populate a public thank-you page.
104
+
105
+ Docs: [create cart](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/purchase-flow/cart-v2/create-cart),
106
+ [calculate](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/purchase-flow/cart-v2/calculate-cart),
107
+ [redirect session](https://dev.wix.com/docs/api-reference/business-management/headless/redirects/create-redirect-session).
108
+ On a Kit build, call its shipped `donationCheckoutUrl` / form instead of rebuilding this sequence.
109
+
110
+ ## 4. Diagnose the failed stage, not a guessed cause
111
+
112
+ - `ITEM_NOT_FOUND_IN_CATALOG`: first inspect the exact donation app ID, campaign ID, **numeric**
113
+ `options.amount`, and one-time frequency omission. Check the campaign on the same site/identity.
114
+ The error alone is not proof of a missing campaign, a missing app, or a premium requirement.
115
+ - Keep status, application error code/body and failing stage available to the developer, with tokens,
116
+ checkout-session URLs and donor data redacted. Give the donor a recoverable inline message. Never
117
+ replace every error with an unexplained generic failure or convert failures to empty/success states.
118
+ - Keep the form disabled while creating the cart/session. Do not run both add-to-current-cart and
119
+ donate handlers on the same action. Do not silently retry cart creation after a timeout or redirect
120
+ failure; inspect/reuse the known cart when possible rather than duplicating the action.
121
+ - Distinguish API handoff from payment acceptance. Cart/session creation can succeed before live
122
+ payments are enabled. A payments-capable plan and connected, eligible provider are separate
123
+ go-live checks; recurring donations also need recurring support. Do not hardcode either “premium
124
+ is never required” or “every checkout error means upgrade”.
125
+ [Payment setup](https://support.wix.com/en/article/wix-donations-adding-and-setting-up-wix-donations).
126
+
127
+ ## 5. Verify before handoff
128
+
129
+ For a build accepting donations, run a bounded API smoke test with an **anonymous visitor token**,
130
+ not the owner's token: read a real campaign → create a cart with one numeric donation line → calculate
131
+ and inspect it → create the redirect session. Use the exact requests above with `curl --fail-with-body`,
132
+ `Authorization: <VISITOR_TOKEN>` and `Content-Type: application/json`; mint that identity, when needed,
133
+ with `POST https://www.wixapis.com/oauth2/token`, body
134
+ `{ "clientId": "<PUBLIC_CLIENT_ID>", "grantType": "anonymous" }` → `access_token` / `refresh_token`.
135
+ Confirm permission for this test before creating its cart; do not seed or mutate campaigns to make
136
+ the test pass. Stop at the failing stage and preserve the sanitized response; never loop blind retries.
137
+
138
+ Check one-time and an offered recurring selection, custom bounds and correction, fee on/off when
139
+ offered, and notes when enabled. Local/mocked checks do not prove live API permissions. In a browser,
140
+ check discovery and form first screens at desktop, 390px and 320px widths, plus keyboard/error behavior.
141
+ Follow a monthly entry through cause selection; confirm its cadence, then cancel/back from checkout
142
+ and refresh to verify the donor's choices survive without implying payment. Confirm hosted checkout
143
+ shows the intended cause, amount, currency and cadence; a resized desktop viewport alone does not
144
+ verify the mobile checkout. **Do not submit a payment** without
145
+ explicit authorization for that transaction and amount. Handoff states which levels passed (API,
146
+ hosted checkout, payment/return), what was blocked, and which setup remains; no mandatory report file.
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: "Set Up Donations"
3
+ description: Set up Wix Donations campaigns through the shared management recipe; reuse existing campaigns and keep configuration separate from the donor-facing implementation.
4
+ ---
5
+ # Set up Donations
6
+
7
+ Read [Create and Update Donation Campaigns](../../../wix-manage/references/donations/create-and-update-donation-campaigns.md)
8
+ and execute its read-before-write flow with this project's owner-authorized credentials and site ID.
9
+ If the sibling skill is not installed, read
10
+ `https://www.wix.com/skills/wix-manage/references/donations/create-and-update-donation-campaigns.md`.
11
+
12
+ Reuse the supplied site's campaigns. Only create/edit the causes and settings the user approved;
13
+ do not manufacture a goal, deadline or impact claim. Keep any created campaign IDs only for setup
14
+ verification/media attachment; the frontend discovers campaigns live. The donation form and checkout
15
+ are [How to Code Donations](how-to-code-donations.md), not this setup operation.
@@ -108,7 +108,7 @@ Either way, `CONTENT.md` §1 (the business's category must read literally above
108
108
  a page a first-time visitor can't identify isn't done yet, regardless of voice.
109
109
 
110
110
  **If a loaded vertical ships an experience overlay** — `references/inline-recipes/experience-<vertical>.md`
111
- (today: `experience-store.md`) — read it after `DESIGN.md`/`CONTENT.md`. It carries that vertical's own
111
+ (today: `experience-store.md`, `experience-donations.md`) — read it after `DESIGN.md`/`CONTENT.md`. It carries that vertical's own
112
112
  design and copy bar (what its surfaces must show, how to derive the direction from its content); the
113
113
  general files stay the floor.
114
114
 
@@ -86,19 +86,74 @@ doesn't express — or once the site exists and the work turns to managing or ex
86
86
  content seed) — the index fills within about half a minute of the install. Playbook:
87
87
  `templates/shared/capabilities/site-search/INSTRUCTIONS.md`.
88
88
 
89
+ ### The scripts
90
+
91
+ `<SKILL_ROOT>/install/` holds plain Node scripts, no build step, each with a header comment that
92
+ says what it does and how it is called. They are the deterministic steps of the run: each copies,
93
+ composes, installs or seeds, and prints one JSON object (or one JSON event per line) saying what it
94
+ found and did. Read any of them when you want to know what a step does before running it, or when a
95
+ step's output surprises you; the templates' seed modules are the reference for the Wix calls a
96
+ vertical needs, in the order that works.
97
+
98
+ | Script | Does |
99
+ |---|---|
100
+ | `templates.mjs` | Finds the shipped code (the `wix-headless-templates` skill beside this one), or fetches it once as a sparse clone; prints its folder. |
101
+ | `context.mjs` | Reads `wix.config.json` and `.env.local`, pulls the env on the CLI route when it is missing, and prints the folder's shape, the deploy site and the content site, the publisher (`cli` or `plugin`), whether npm reaches the registry, and whether the upload tool's S3 host answers from this shell (`carrier.s3`). Changes nothing. |
102
+ | `setup.mjs` | One call from the folder and the brief to a project ready for the brand layer: scaffolds (or, with `--site --app`, copies the composed template and writes the config and env), deploys the vertical's code, writes the agent config files, starts the install, and seeds a site it created. |
103
+ | `attach.mjs` | `setup.mjs` for a site that already exists: does what `wix create` does after creating one (OAuth app, hosting, env, `wix.config.json`) against the site id given, then scaffolds, deploys and installs; seeds only with `--plan`; with `--hosting self`, puts the given origins on the OAuth app's allow-list instead of Wix hosting. |
104
+ | `deploy.mjs` | Composes a vertical's code layers into the project for the stack (`astro`, `react`, `lib`, `static`), adds its dependencies, and keeps the lock valid for `npm ci` (`lock.mjs`). |
105
+ | `install.mjs` | The one dependency install: decides none, `npm install` or `npm ci` from the lock and what `node_modules` already holds; writes `.install-exit`. |
106
+ | `bootstrap.mjs` | CLI route only: checks the Wix CLI and runs the device-code login, one JSON event per line. |
107
+ | `check.mjs` | Compares this installed skill and its templates with the repository they came from; read-only, prints the commands that would update. |
108
+ | `agents-md.mjs`, `env-ignore.mjs` | Write a new project's `AGENTS.md`, `CLAUDE.md` and `.gemini/settings.json`; keep `.env.local` out of git. |
109
+ | `proc.mjs`, `background.mjs`, `pins.json` | npm and npx started the same way on every OS; the detached install and seed; the pinned CLI and template versions. |
110
+ | `templates/<vertical>/seed/seed-*.mjs`, `read-site.mjs` | The vertical's seed from a plan, and a read of what the site already holds. `SEED.md` beside them is the plan's contract. |
111
+
89
112
  ## The run
90
113
 
91
- Needed throughout: Node ≥ 22.12 (Astro 7; the Wix CLI alone runs on 20.11), git, a logged-in Wix CLI (`npx @wix/cli@latest whoami`;
92
- `npx @wix/cli@latest login` is a device-code flow: surface the URL and code to the user, never
93
- read tokens into context), and the two companion skills installed beside this one, `wix-docs`
94
- and `wix-manage`. `node <SKILL_ROOT>/install/bootstrap.mjs` checks the CLI and runs the login
95
- when there is none; the cold-start page, `https://www.wix.com/skills/headless-cold-start/headless-kit.md`,
96
- gets a machine with none of this, the skills included, to that point. In a folder that
114
+ Needed throughout: Node ≥ 24.18, git, the two companion skills installed beside this one,
115
+ `wix-docs` and `wix-manage`, and one of two ways to Wix. `node <SKILL_ROOT>/install/context.mjs`
116
+ prints which one this machine has, as `publisher`:
117
+
118
+ - **`plugin`** — no Wix CLI session on this machine; the Wix MCP's tools are in your tool list
119
+ (`ExecuteWixAPI`, `UploadHeadlessWebsiteFiles`: a Wix plugin or connector, connected); and `npm`
120
+ reaches the registry, so the kit runs here. The MCP carries the user's login. The site is provisioned through `ExecuteWixAPI` with the recipe
121
+ `wix-manage/references/sites/create-headless-site.md` (the provision call returns the
122
+ `metaSiteId` and the site's OAuth client `appId`); step 3's setup takes both as `--site` and
123
+ `--app` and runs no CLI; the seed is an `ExecuteWixAPI` script written from the vertical's
124
+ `SEED.md` (`guides/api-run.md` section 4); the release is `npx astro build`, then the build
125
+ uploaded with `UploadHeadlessWebsiteFiles` (step 5), attached in one call where the client shows
126
+ `attachments` as a local path, or in two calls with `curl` to the URLs the first returns, from a
127
+ shell that reaches the internet (the URLs are on Amazon S3; `curl -sI -m 25 https://s3.amazonaws.com`
128
+ answers with S3's own headers where they work, `x-amz-request-id` and usually `Server: AmazonS3`,
129
+ and a sandbox limited to a few hosts gets a proxy's refusal with neither). The tool releases the build to the site's Wix hosting, stores the project's source in the
130
+ site's Code Store repository, and returns the live URL. The plugin route asks for no login.
131
+ **The carrier is settled before the build**, from `context.mjs`'s `carrier.s3` and from whether
132
+ the client hands `attachments` over as files (the tool's `attachments` description names the
133
+ clients that do): with neither, the Astro build has no way to the site and the run is
134
+ `guides/api-run.md`, the site, the apps and the seed through `ExecuteWixAPI` and the frontend as
135
+ a few small static pages dropped in the tool's `files` form, written against the kit's REST
136
+ twins and cores as reference (its step 5); the compose is not run, since every file it writes
137
+ would have to be written out as text.
138
+ - **`cli`** — where the Wix MCP is not connected, or a Wix CLI session is already on this machine:
139
+ a logged-in Wix CLI (`npx @wix/cli@latest whoami`; `npx @wix/cli@latest login` is a
140
+ device-code flow: surface the URL and code to the user, never read tokens into context).
141
+ `node <SKILL_ROOT>/install/bootstrap.mjs` checks the CLI and runs the login when there is none;
142
+ `wix create`, `wix env pull` and `wix release` do what the steps below say.
143
+
144
+ The cold-start page, `https://www.wix.com/skills/headless-cold-start/headless-kit.md`, gets a
145
+ machine with none of this, the skills included, to that point. The four skills this run reads
146
+ (`wix-headless-kit`, `wix-headless-templates`, `wix-docs`, `wix-manage`) are on disk after that
147
+ install (`.agents/skills/`, or a plugin's folder), or served by the client's skill tool (text to
148
+ read, not files: the scripts and the templates run only from disk), or online at
149
+ `https://www.wix.com/skills/<skill>/<path>`, where `<skill>.manifest.json` lists every file with its
150
+ size and a folder's `_content` returns its files at once; `<SKILL_ROOT>` below is the kit's folder
151
+ on disk. In a folder that
97
152
  already holds a `wix.config.json`, `node <SKILL_ROOT>/install/context.mjs` first: it runs
98
- `wix env pull` when `.env.local` is missing and prints the folder's **shape** (`folder.shape`, the
99
- cases of step 3, with the `next` for each) and the two identities a project has — the deploy site
100
- (the config, where `wix release` goes) and the content site (the env, whose app the SDK client runs
101
- as and whose dashboard manages the business). They are one site, except on a **migration preview**
153
+ `wix env pull` when `.env.local` is missing (on the CLI route) and prints the folder's **shape**
154
+ (`folder.shape`, the cases of step 3, with the `next` for each) and the two identities a project
155
+ has — the deploy site (the config, where the release goes) and the content site (the env, whose
156
+ app the SDK client runs as and whose dashboard manages the business). They are one site, except on a **migration preview**
102
157
  (`guides/migration.md`), where the env names the site being migrated. Every script here reads that
103
158
  context; the site a call targets is never guessed from the config alone. Then fetch the shipped
104
159
  code once: `node <SKILL_ROOT>/install/templates.mjs`. It prints the folder; the `templates/…`
@@ -191,10 +246,10 @@ only after an explicit yes, never automatically. Step 5 ends with the same self-
191
246
 
192
247
  | the folder holds | shape | what setup does | seeded by setup |
193
248
  |---|---|---|---|
194
- | nothing, or loose files (a CSV, a brief) | **empty** → create | `wix create` with the vertical's composed template, here; `--business-name` names the site | **yes**, from `--plan` |
249
+ | nothing, or loose files (a CSV, a brief) | **empty** → create | `wix create` with the vertical's composed template, here; `--business-name` names the site. On the plugin route, `--site <metaSiteId> --app <appId>`: the ids the provision call returned for a new site, or, for a site that exists with no project (a dropped site), its id and the companion app's id from `get-or-create` (`guides/existing-site.md`); the composed template is copied in and `wix.config.json` and `.env.local` written for that site, no CLI | **yes**, from `--plan`, on the CLI route. On the plugin route setup takes no `--plan` and seeds nothing: the plan is seeded through `ExecuteWixAPI` (`guides/api-run.md` section 4) |
195
250
  | a frontend, no config (a `package.json`, or `index.html` at the root: someone's Astro, Vite, Next, plain HTML) | **project** → adopt | `init` in place gives it a new, empty site, then deploys; `--stack` from step 1 is required; make the project what that stack needs on Wix hosting (step 1) before or right after | **yes**, from `--plan` |
196
251
  | a config whose `.env.local` declares an active editor migration (`EDITOR_MIGRATION_STATUS=ACTIVE`), with or without the blank Astro starter the download carries | **migration** → migrate | the shipped code into the starter (or the composed template around a bare config), deployed with the migrated site's app as the client, the install starts; `ready_for_brand_layer` says `mode: "migrate"`, the parent as `siteId`, the child as `deploySiteId` (`guides/migration.md`) | no, ever |
197
- | a config, no frontend | **config-only** → refuses | the site exists and has no frontend yet: `attach.mjs` (below) takes the site from the config, reuses its hosting, scaffolds and deploys. That config is what `init` leaves behind, and `init` always creates a site: this site was made for this run and is empty | **yes**: draft the plan as for create, then `attach.mjs --plan` |
252
+ | a config, no frontend | **config-only** → refuses | the site exists and has no frontend yet: on the CLI route `attach.mjs` (below) takes the site from the config, reuses its hosting, scaffolds and deploys; on the plugin route `setup.mjs --site --app` with the config's ids, in an empty folder, then the build released by `UploadHeadlessWebsiteFiles` (`guides/existing-site.md`). That config is what `init` leaves behind, and `init` always creates a site: this site was made for this run and is empty | **yes**: draft the plan as for create, then `attach.mjs --plan` |
198
253
  | a config and a frontend (a `package.json`, or `index.html` inside the folder `site.outputDirectory` names) | **wix-project** → refuses | iterate: never scaffold, `init` or reseed. `deploy.mjs <vertical…> --stack <stack>` adds a solution (the client id comes from `.env.local`, the config as the fallback), then one install, `node <SKILL_ROOT>/install/install.mjs` (nothing when `node_modules` already satisfies the lock); a change is file edits; then release | no |
199
254
  | a config, a `package.json`, `public/index.html` and no `src/pages/` (a site published through the drop flow, on its Wix Dev Machine) | **static-in-astro** → refuses | the pages stay plain files in `public/`: `deploy.mjs <vertical…> --stack static --out public` puts the REST layer in `public/js/wix/`, the pages are wired in place (reference mode), and no Astro pages are added; release with `build` then `release`, the URL stays | no |
200
255
  | a config and the CLI's blank Astro starter with no work of its own (`wix-astro-blank`, only the blank template's packages: a Dev Machine's never-released site, a bare `wix create`) | **blank-starter** → refuses | `attach.mjs --business-name <brand> --vertical <v…> [--plan plan.json]` on the config's site: the vertical's composed template takes the starter's place (its lockfile with it), the install and the seed start detached; build the brand layer while they run | **yes**, from `--plan`: the site was made for this run and is empty, unless `read-site.mjs` shows content |
@@ -226,7 +281,8 @@ only after an explicit yes, never automatically. Step 5 ends with the same self-
226
281
 
227
282
  `--vertical` is required and picks which shipped code deploys AND which seed runs. The
228
283
  `ready_for_brand_layer` event says `mode` (`create`, `adopt`, `migrate`, `published-static`),
229
- `shape`, the stack, and the `next` for that stack, including how it releases.
284
+ `shape`, the stack, `publisher` (`cli` or `plugin`), and the `next` for that stack, including how
285
+ it releases.
230
286
 
231
287
  setup scaffolds with `--skip-git`: it composes its own steps and leaves version control to
232
288
  you / the enclosing repo, so it does **not** create the scaffold's usual git repo + initial
@@ -256,6 +312,10 @@ only after an explicit yes, never automatically. Step 5 ends with the same self-
256
312
  A code change on an existing project is done when it is **released** (step 5) and the live
257
313
  URL shows it — not when a dev server or a local build shows it. A management change (a
258
314
  recipe against the site) needs no release; the frontend reads it live.
315
+ A site released through the upload tool keeps its source in its Code Store repository: a later
316
+ change, in any session, downloads it (`guides/existing-site.md`), edits, builds and uploads with
317
+ the downloaded revision as `expectedHeadRevisionId`. One site keeps one writer path: such a site
318
+ is not changed through `wix release` or a plain drop.
259
319
 
260
320
  4. **Design and build the presentation while the install finishes** — in the project dir from
261
321
  the `ready_for_brand_layer` event, per the vertical's `INSTRUCTIONS.md`: set the `@theme`
@@ -284,7 +344,34 @@ only after an explicit yes, never automatically. Step 5 ends with the same self-
284
344
  exit code is the result and its stdout is the JSON — wait on the process (a foreground run,
285
345
  or `wait` on its pid), not on a file. Then
286
346
  **build & release once** (managed), as the `next` of the `ready_for_brand_layer` event says
287
- for the stack: Astro → `npx @wix/cli@latest build` then `npx @wix/cli@latest release`;
347
+ for the stack and the publisher: Astro on the CLI route → `npx @wix/cli@latest build` then
348
+ `npx @wix/cli@latest release`; Astro on the plugin route → `npx astro build` from the project
349
+ root, then `UploadHeadlessWebsiteFiles` with the site's `siteId`, in one of two forms (the `next`
350
+ carries the zip commands, with Python's `zipfile` where there is no `zip` binary):
351
+ - **attached**, one call: the project zipped without `node_modules` (`.wix/build-metadata.json`
352
+ and `dist/` in it), passed as `attachments`. The build is released and the source in the same
353
+ zip is stored.
354
+ - **two calls**, from a shell that reaches the internet (the upload URLs are on Amazon S3:
355
+ `curl -sI -m 25 https://s3.amazonaws.com` answers with S3's own headers where they work,
356
+ `x-amz-request-id` and usually `Server: AmazonS3`; a sandbox limited to a few hosts gets a
357
+ proxy's refusal with neither, and cannot release a build this way): the build zip (`zip -qr build.zip dist .wix`) and the source zip, the project
358
+ without `node_modules`, `dist`, `.wix`, `.astro`, `.env*`, `.agents`
359
+ (`zip -qr source.zip . -x 'node_modules/*' 'dist/*' '.wix/*' '.astro/*' '.agents/*' '.env*' 'build.zip'`).
360
+ First `{ siteId, prepare: true, size }`, `size` being `wc -c < build.zip`: the reply gives a
361
+ `curl -X PUT ... --data-binary @build.zip "<putUrl>"`, one for the source zip when the site's
362
+ repository takes it, the repository's `headRevisionId`, and the exact second call. Run the
363
+ curls as given, then `{ siteId, uploadKey, sourceUploadId, expectedHeadRevisionId }`.
364
+
365
+ The service deploys, commits the source to the site's Code Store repository, then releases; a
366
+ refused commit releases nothing. `expectedHeadRevisionId` is the revision the project started
367
+ from: the one it was downloaded at, or for a project started in this run the `headRevisionId`
368
+ the prepare returned. Left out, the release works only on a repository with nothing in it yet;
369
+ otherwise it answers `EXPECTED_HEAD_REQUIRED` and releases nothing. A 409
370
+ `CODE_STORE_HEAD_CHANGED` means the repository moved since: download it again
371
+ (`guides/existing-site.md`), carry the change over, build and upload. A 404 on the second call
372
+ means the upload expired: prepare again. The result carries the live URL; a release replaces
373
+ static pages dropped on the site before, at the same URL.
374
+ Otherwise:
288
375
  React or another bundler → the project's own build, then `npx @wix/cli@latest release` of
289
376
  the build folder named in `wix.config.json` (deep URLs must answer 200 directly, step 1);
290
377
  static → `release` alone. If the install failed, run it once more and then build. Don't
@@ -293,8 +380,8 @@ only after an explicit yes, never automatically. Step 5 ends with the same self-
293
380
  site is released — close with the live URL and the dashboard link
294
381
  `https://manage.wix.com/dashboard/<siteId>` (the `siteId` of the `ready_for_brand_layer`
295
382
  event: on a migration preview that is the migrated site's dashboard, the release URL is the
296
- preview's, the original site is unchanged, and completing the migration is the user's next
297
- step in the Wix CLI once they approve — say all three). Tell the user how to put their own
383
+ preview's, the original site is unchanged, and you complete the migration once they
384
+ approve (`guides/migration.md`) — say all three). Tell the user how to put their own
298
385
  domain on the site, per the `wix-manage` recipe `references/domains/domain-search-purchase-and-connect.md`
299
386
  (installed beside this skill, else `https://www.wix.com/skills/wix-manage/references/domains/domain-search-purchase-and-connect.md`):
300
387
  bought through Wix, or one they already own. When the site takes money through
@@ -307,8 +394,8 @@ only after an explicit yes, never automatically. Step 5 ends with the same self-
307
394
  need a premium plan). Both are the owner's steps, not a defect in the site. When the run started
308
395
  from the owner's own pages, name what those pages promised that the released site does not do.
309
396
  **Copy the live URL verbatim from the
310
- `wix release` output — never retype it from memory** (a mistyped subdomain hands the user
311
- a 404). Before you sign off, run the feedback self-check over the whole session
397
+ release output (the CLI's, or the upload tool's result) — never retype it from memory** (a
398
+ mistyped subdomain hands the user a 404). Before you sign off, run the feedback self-check over the whole session
312
399
  (`guides/feedback.md`): anything that cost more turns than it should have, including what you
313
400
  recovered from silently, is signal; if anything qualifies, offer to relay it as you deliver the
314
401
  links, and send only after an explicit yes.
@@ -324,9 +411,11 @@ browser versus the server, the OAuth allow-list for a self-hosted origin, pre-re
324
411
  how to close such a run. A public site is still better served by managed Astro; say so when you
325
412
  close.
326
413
 
327
- Without a machine at all, or when the install, the CLI or the login is blocked where you are,
328
- read `<SKILL_ROOT>/guides/api-run.md`: the same run, step by step, as the Wix API calls the
329
- scripts make and the files beside this skill that carry the contracts.
414
+ Where the kit does not run (no route to npm, no Node), or when the install, the CLI or the login is
415
+ blocked where you are, read `<SKILL_ROOT>/guides/api-run.md`: the same run, step by step, as the Wix API calls the
416
+ scripts make and the files beside this skill that carry the contracts. On the plugin route the same
417
+ guide is the reference for the calls that go through `ExecuteWixAPI` (the provision call, the seed);
418
+ the build and the release are this skill's step 5.
330
419
 
331
420
  ## Verticals
332
421
 
@@ -1,8 +1,7 @@
1
1
  # The kit's run as Wix API calls
2
2
 
3
- Read when the commands this skill is built on cannot run where you are, or stopped: your shell
4
- can't reach Wix, there is no shell, or the install, the
5
- CLI or the login is blocked. Wix is then reachable through the Wix MCP: every call below is an
3
+ Read when the kit does not run where you are, or stopped: no Node, no route to npm (the install
4
+ and the build need it), no shell at all, or the install, the CLI or the login is blocked. Wix is then reachable through the Wix MCP: every call below is an
6
5
  `ExecuteWixAPI` call, and files reach the site through the upload recipe. With no Wix MCP tools in
7
6
  your tool list (a plugin's skills can be on disk while its Wix connector is not connected), ask the
8
7
  user to connect Wix to this chat first. It walks the run of
@@ -52,9 +51,11 @@ doesn't list is a wrong path; find the file there before writing anything in its
52
51
  hold, served or on disk, is current when its size in bytes matches the manifest's; a file whose size
53
52
  differs is read online.
54
53
 
55
- What such a run does not produce: the Astro build and its release. Those need a machine with the
56
- CLI. Everything else the kit does to a site, it does through calls you can make, the frontend
57
- included: step 5 ships it as static files.
54
+ What such a run does not produce: the Astro build. A build needs the kit running where you are (Node,
55
+ and `npm` reaching the registry); then the run is SKILL.md's plugin route (`setup.mjs --site --app`, `astro build`, the build released by
56
+ `UploadHeadlessWebsiteFiles`), and sections 2 to 4 here are the calls it makes through
57
+ `ExecuteWixAPI`. Everything else the kit does to a site, it does through calls you can make, the
58
+ frontend included: step 5 ships it as static files.
58
59
 
59
60
  ## 0. Identity
60
61
 
@@ -76,7 +77,7 @@ A brief that needs no solution (a game, a landing page, a tool) is a run of two
76
77
  ## 2. The site
77
78
 
78
79
  The CLI's `npm create @wix/new` is one call: `POST /headless-business-setup/v1/headless-business/provision`,
79
- with `origin: "drop"`, a name, and the solutions to install as `seedOptions`. The recipe
80
+ with `origin: "agent"` and a name. The recipe
80
81
  is `{MANAGE}/references/sites/create-headless-site.md`; it returns the `metaSiteId` and the
81
82
  site's OAuth client `appId`. Do not create a site any other way: a project from Create Project or
82
83
  a template is neither headless nor publishable, and a later run with a machine cannot attach to it.
@@ -124,9 +125,10 @@ half a run.
124
125
  A payment (a cart, a paid booking, a ticket, a plan, a donation) ends in Wix's hosted checkout,
125
126
  reached through a redirect session, and is wired on the first pass, payments connected or not.
126
127
 
127
- The Astro pages cannot be released here: that is a run with a machine and a CLI login, which
128
- attaches to this site (`guides/existing-site.md`) rather than making a new one. What ships from here
129
- is static files, dropped onto the site from step 2 through
128
+ The Astro pages are not built here: the kit does not run where you are. A later run where it does
129
+ takes this site (SKILL.md's plugin route with `--site --app`, or `guides/existing-site.md` with the
130
+ CLI) rather than making a new one; its release replaces the pages dropped here, at the same URL.
131
+ What ships from here is static files, dropped onto the site from step 2 through
130
132
  `{MANAGE}/references/sites/upload-static-site.md`: the Wix MCP's upload tool, or a script that
131
133
  downloads what the site serves, edits it and drops it back, so only what changed is written. Which
132
134
  files depends on whether the compose can run, and on what writing them costs: when files reach the
@@ -197,6 +199,6 @@ failing call is fixed first, on the site or in the page. The closing reports the
197
199
 
198
200
  ## 6. Closing
199
201
 
200
- SKILL.md step 5's closing, with two additions: the site id, so a run with a machine attaches to this
201
- site (`guides/existing-site.md`) instead of making a new one; and, when files were dropped, that a
202
- change re-drops the whole set.
202
+ SKILL.md step 5's closing, with two additions: the site id and the `appId`, so a run where the kit
203
+ runs takes this site (`setup.mjs --site --app`, or `guides/existing-site.md`) instead of making a new one;
204
+ and, when files were dropped, that a change re-drops the whole set.
@@ -10,6 +10,37 @@ part below applies there too, against the migrated site.) `<SKILL_ROOT>` is the
10
10
  in the folder `node <SKILL_ROOT>/install/templates.mjs` prints (`<templates>` below; SKILL.md, "The
11
11
  model").
12
12
 
13
+ **A site with a Code Store repository** (one released through the upload tool, in this session or
14
+ an earlier one): the project is there, and it is continued, not rebuilt. Its repository is the
15
+ managed project whose id is the site's app id: the `appId` in `wix.config.json` when the folder has
16
+ one, else `POST https://manage.wix.com/_api/companion-apps/v1/companion-apps/get-or-create` with
17
+ body `{}`, whose `companionApp.id` it is. Both calls go through `ExecuteWixAPI` in site scope
18
+ (`siteId` set); an account-scoped token is refused (403).
19
+
20
+ ```text
21
+ POST https://www.wixapis.com/codestore/v2/git-code-store-projects/<appId>/generate-download-url
22
+ {}
23
+ → { downloadUrl, revision: { id } }
24
+ ```
25
+
26
+ ```bash
27
+ curl -o project.zip "<downloadUrl>" # signed, 5 minutes, no Wix auth
28
+ unzip -q project.zip -d . && rm project.zip
29
+ node <SKILL_ROOT>/install/setup.mjs --vertical <vertical> --site <siteId> --app <appId>
30
+ ```
31
+
32
+ Keep `revision.id`: it is the release's `expectedHeadRevisionId`. The download has no `.env.local`;
33
+ setup writes it, installs when `node_modules` is missing, and scaffolds, deploys and seeds nothing.
34
+ Then edit, `npx astro build`, and upload as SKILL.md step 5 says, with that revision. A 404
35
+ (`NOT_FOUND`, `GIT_BRANCH_NOT_FOUND`) means the site has no project yet: a dropped site has none, its
36
+ pages live only in the drop. On the plugin route that is the create flow against this site: `get-or-create` above gives the
37
+ `appId`, then in an empty folder `node <SKILL_ROOT>/install/setup.mjs --vertical <vertical> --site
38
+ <siteId> --app <appId>`, build, and release through `UploadHeadlessWebsiteFiles` with the
39
+ `headRevisionId` the prepare returns (the drop's import commit, or none); the release replaces the
40
+ dropped pages at the same URL and stores the project. The site owns its content: read it first, and
41
+ seed only what the brief supplies or asks to add. On the CLI route the sections below apply, and the
42
+ first release creates the repository.
43
+
13
44
  **Read the site, then run attach.** First, one call tells you what
14
45
  the site is — its name, currency, and the Wix apps installed on it:
15
46
 
@@ -1,11 +1,12 @@
1
1
  # A migration preview: a site being moved to headless
2
2
 
3
- Read when setup reports `mode: "migrate"`, or when a folder holds a `wix.config.json` and
4
- `node <SKILL_ROOT>/install/context.mjs` prints `migration.active: true`. The brief is the prompt
5
- the Wix dashboard's Headless settings hand the owner after "Go Headless": download the project from
6
- `https://manage.wix.com/download-headless-business/<siteId>/download.zip`, the names of the apps
7
- the site already has, and the instruction not to probe, install or seed anything. The zip holds
8
- `wix.config.json` (the deploy site and its app) beside the CLI's blank Astro starter.
3
+ Read when setup reports `mode: "migrate"`, when a folder holds a `wix.config.json` and
4
+ `node <SKILL_ROOT>/install/context.mjs` prints `migration.active: true`, or when the user asks to
5
+ complete the migration (the dashboard's second prompt names `wix finalize-migration`). The brief is
6
+ the prompt the Wix dashboard's Headless settings hand the owner after "Go Headless": download the
7
+ project from `https://manage.wix.com/download-headless-business/<siteId>/download.zip`, the names of
8
+ the apps the site already has, and the instruction not to probe, install or seed anything. The zip
9
+ holds `wix.config.json` (the deploy site and its app) beside the CLI's blank Astro starter.
9
10
 
10
11
  **What `.env.local` says.** `wix env pull` copies the project's `prod` environment: the parent's
11
12
  `WIX_CLIENT_ID`, and the migration's own variables, `EDITOR_MIGRATION_STATUS` (`ACTIVE` while the
@@ -14,10 +15,10 @@ migration is under way, `COMPLETED` once the parent serves this frontend), `EDIT
14
15
  two; the shape is `migration` whenever the status is active, whatever else the folder holds.
15
16
 
16
17
  **Two sites, one project.** `wix.config.json` names a site created only to host the deployment:
17
- `wix release` goes there and nowhere else. `.env.local` (what `wix env pull` writes; setup and
18
- `context.mjs` pull it when it is missing) carries the credentials of the site being migrated, the
19
- **parent**, and says so. The parent owns everything the pages show and everything the business
20
- manages. So:
18
+ `wix release` goes there and nowhere else until completion repoints the config (below). `.env.local`
19
+ (what `wix env pull` writes; setup and `context.mjs` pull it when it is missing) carries the
20
+ credentials of the site being migrated, the **parent**, and says so. The parent owns everything the
21
+ pages show and everything the business manages. So:
21
22
 
22
23
  - **The SDK client is the parent's.** The Astro integration reads `WIX_CLIENT_ID` from the env and
23
24
  never the config; `deploy.mjs` copies the same value into `src/wix/config.ts` (react, lib) and
@@ -45,10 +46,41 @@ app, hosting and credentials came with the download; nothing is provisioned or r
45
46
 
46
47
  **The close.** The release is a **preview** on the deploy site. Close with the preview URL (copied
47
48
  from the `wix release` output), the parent's dashboard link, and the two facts: the original site
48
- is unchanged, and completing the migration, which makes the parent serve this frontend and retires
49
- the deploy site, is the user's next step once they approve the preview: the dashboard hands them
50
- a second prompt for it (`wix env pull`, `wix finalize-migration`, `wix build`, `wix release`, in
51
- that order). That step is not part of this skill and the command may not be in the installed CLI
52
- yet; do not invent one, do not run `wix release` against the parent, and do not edit
53
- `wix.config.json`. On every stack the code already carries the parent's client id,
54
- so completion needs no redeploy from here.
49
+ is unchanged, and completing the migration puts this frontend live on the parent and retires the
50
+ deploy site. Offer to complete it once they approve the preview.
51
+
52
+ ## Completing the migration
53
+
54
+ Run it once the user approves the preview and asks to go live, or pastes the dashboard's finalize
55
+ prompt: it switches the parent's live site to this frontend. The calls target the parent
56
+ (`migration.parentSiteId` from `context.mjs`).
57
+
58
+ 1. **Read the migration.**
59
+
60
+ ```bash
61
+ curl -sS "https://www.wixapis.com/headless-business-setup/v1/editor-migrations" \
62
+ -H "Authorization: $(npx -y @wix/cli@latest token --site <parentSiteId>)"
63
+ ```
64
+
65
+ `migration.phase` `ITERATING` → step 2; `MIGRATION_FINALIZING` or `COMPLETED` → step 3;
66
+ `PREPARING` → the preview release is not observed yet, read again shortly; anything else → stop
67
+ and report it with the dashboard link.
68
+
69
+ 2. **Accept it**, as the dashboard's Complete Migration button does. On
70
+ `STALE_MIGRATION_REVISION`, read again and resend.
71
+
72
+ ```bash
73
+ curl -sS -X POST "https://www.wixapis.com/headless-business-setup/v1/editor-migrations/prepare-commit" \
74
+ -H "Authorization: $(npx -y @wix/cli@latest token --site <parentSiteId>)" \
75
+ -H "Content-Type: application/json" \
76
+ -d '{"migrationId":"<migration.id>","expectedRevision":<migration.revision>}'
77
+ ```
78
+
79
+ 3. **Release to the parent.** `npx @wix/cli@latest finalize-migration` (`@wix/cli` 1.1.256 or later)
80
+ repoints `wix.config.json` to the parent, builds and releases. React and static projects have no such command: set
81
+ `wix.config.json`'s `appId` and `siteId` to `.env.local`'s `WIX_CLIENT_ID` and
82
+ `EDITOR_MIGRATION_PARENT_SITE_ID`, then build and release as in SKILL.md step 5.
83
+
84
+ Close with the parent's URL and its dashboard link, and say Wix finishes the switch on its side;
85
+ the dashboard notifies them when it is done. Later changes ship with a plain build and
86
+ `wix release`.
@@ -23,7 +23,7 @@ export function writeAgentsMd(projectDir, vars) {
23
23
  else {
24
24
  // {{MIGRATION}} is a paragraph on a migration preview (vars.migration = { parentSiteId, deploySiteId }), else nothing.
25
25
  const migration = vars.migration
26
- ? `\n\n**Under migration.** \`wix.config.json\` names site ${vars.migration.deploySiteId}, which only hosts this deployment; the site being migrated is ${vars.migration.parentSiteId} — its content is what the pages show and its dashboard (\`https://manage.wix.com/dashboard/${vars.migration.parentSiteId}\`) is where the business is managed. \`.env.local\` (\`wix env pull\`) carries that site's app: the SDK client and every admin, discovery and seed call run against it; only \`wix release\` goes to the deploy site. Completing the migration is a separate Wix CLI step, run by the user after approving the preview.`
26
+ ? `\n\n**Under migration.** \`wix.config.json\` names site ${vars.migration.deploySiteId}, which only hosts this deployment; the site being migrated is ${vars.migration.parentSiteId} — its content is what the pages show and its dashboard (\`https://manage.wix.com/dashboard/${vars.migration.parentSiteId}\`) is where the business is managed. \`.env.local\` (\`wix env pull\`) carries that site's app: the SDK client and every admin, discovery and seed call run against it; only \`wix release\` goes to the deploy site. Completing the migration, once the user approves the preview, follows \`.agents/skills/${vars.skill}/guides/migration.md\`.`
27
27
  : "";
28
28
  const text = readFileSync(TEMPLATE, "utf8").replace(/\{\{(\w+)\}\}/g, (_, k) => (k === "MIGRATION" ? migration : (vars[k.toLowerCase()] ?? "")));
29
29
  writeFileSync(agents, text); written.push("AGENTS.md");