@wix/agent-skills 1.35.1 → 1.36.1

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 (820) hide show
  1. package/package.json +8 -3
  2. package/skills/wix-app/references/CODE_QUALITY.md +1 -1
  3. package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +27 -29
  4. package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +1 -1
  5. package/skills/wix-app/references/editor-react-component/COMPONENT-CONTRACT.md +26 -25
  6. package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +12 -42
  7. package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +9 -20
  8. package/skills/wix-app/references/editor-react-component/MANIFEST-ERRORS.md +5 -4
  9. package/skills/wix-app/references/editor-react-component/PARTS.md +1 -1
  10. package/skills/wix-app/references/editor-react-component/PROPS-VS-CSS.md +1 -1
  11. package/skills/wix-app/references/editor-react-component/VECTOR-ART.md +95 -0
  12. package/skills/wix-app/references/editor-react-component/VISUAL-QUALITY.md +39 -0
  13. package/skills/wix-docs/references/CALLING.md +1 -1
  14. package/skills/wix-headless-kit/guides/api-run.md +1 -1
  15. package/skills/wix-headless-kit/install/pins.json +1 -1
  16. package/skills/wix-headless-templates/blog/seed/seed-blog.mjs +1 -1
  17. package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +0 -1
  18. package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +1 -1
  19. package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +0 -1
  20. package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +1 -1
  21. package/skills/wix-headless-templates/donations/rest/campaigns.ts +0 -1
  22. package/skills/wix-headless-templates/donations/rest/donate.ts +1 -1
  23. package/skills/wix-headless-templates/events/seed/seed-events.mjs +1 -1
  24. package/skills/wix-headless-templates/faq/INSTRUCTIONS.md +1 -1
  25. package/skills/wix-headless-templates/faq/app/wix/faq/faq.ts +2 -2
  26. package/skills/wix-headless-templates/faq/project/src/wix/faq/faq.ts +2 -2
  27. package/skills/wix-headless-templates/faq/rest/faq.ts +2 -2
  28. package/skills/wix-headless-templates/faq/seed/SEED.md +1 -1
  29. package/skills/wix-headless-templates/faq/seed/read-site.mjs +1 -1
  30. package/skills/wix-headless-templates/faq/seed/seed-faq.mjs +5 -5
  31. package/skills/wix-headless-templates/forms/app/wix/forms/forms.ts +2 -2
  32. package/skills/wix-headless-templates/forms/app/wix/forms/submissions.ts +2 -2
  33. package/skills/wix-headless-templates/forms/project/src/wix/forms/forms.ts +2 -2
  34. package/skills/wix-headless-templates/forms/project/src/wix/forms/submissions.ts +2 -2
  35. package/skills/wix-headless-templates/members/seed/read-site.mjs +1 -1
  36. package/skills/wix-headless-templates/pricing-plans/app/wix/pricing-plans/plan-access.ts +1 -1
  37. package/skills/wix-headless-templates/pricing-plans/project/src/wix/pricing-plans/plan-access.ts +1 -1
  38. package/skills/wix-headless-templates/pricing-plans/rest/plan-access.ts +1 -1
  39. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/menu.ts +0 -1
  40. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/menu.ts +0 -1
  41. package/skills/wix-headless-templates/restaurants/rest/menu.ts +0 -1
  42. package/skills/wix-headless-templates/shared/rest/client.ts +1 -1
  43. package/skills/wix-headless-templates/shared/seed/site.mjs +2 -1
  44. package/skills/wix-manage/SKILL.md +3 -3
  45. package/skills/wix-manage/references/cms/cms-data-items-crud.md +78 -1
  46. package/skills/wix-manage/references/google-ads/create-performance-max-campaign.md +11 -11
  47. package/skills/wix-manage/references/google-ads/get-campaign-suggestions.md +0 -1
  48. package/skills/wix-manage/references/google-ads/install-and-create-account.md +0 -1
  49. package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +20 -51
  50. package/skills/wix-manage/references/marketing/generate-and-publish-marketing-plan.md +4 -4
  51. package/skills/wix-manage/references/rich-content/ricos-converter-service.md +1 -1
  52. package/skills/wix-base44-connector/SKILL.md +0 -437
  53. package/skills/wix-base44-connector/references/CAPABILITY_MAP.md +0 -78
  54. package/skills/wix-base44-connector/scripts/utils.cjs +0 -466
  55. package/skills/wix-export/SKILL.md +0 -83
  56. package/skills/wix-harmony-editor/.publish-manifest.json +0 -8
  57. package/skills/wix-harmony-editor/COPY-SITE.md +0 -494
  58. package/skills/wix-harmony-editor/SKILL.md +0 -317
  59. package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +0 -249
  60. package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +0 -225
  61. package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +0 -89
  62. package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +0 -76
  63. package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +0 -212
  64. package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +0 -44
  65. package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +0 -45
  66. package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +0 -53
  67. package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +0 -76
  68. package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +0 -16
  69. package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +0 -150
  70. package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +0 -27
  71. package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +0 -56
  72. package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +0 -211
  73. package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +0 -29
  74. package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +0 -92
  75. package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +0 -56
  76. package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +0 -73
  77. package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +0 -67
  78. package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +0 -102
  79. package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +0 -40
  80. package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +0 -191
  81. package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +0 -61
  82. package/skills/wix-harmony-editor/scripts/launch.sh +0 -359
  83. package/skills/wix-headless/SKILL.md +0 -151
  84. package/skills/wix-headless/references/AI_FEATURES.md +0 -178
  85. package/skills/wix-headless/references/CAPABILITIES.md +0 -117
  86. package/skills/wix-headless/references/CONTENT.md +0 -36
  87. package/skills/wix-headless/references/DESIGN.md +0 -55
  88. package/skills/wix-headless/references/DISCOVERY.md +0 -80
  89. package/skills/wix-headless/references/DOC_DISCOVERY.md +0 -43
  90. package/skills/wix-headless/references/FEEDBACK.md +0 -129
  91. package/skills/wix-headless/references/IMAGE_GENERATION.md +0 -80
  92. package/skills/wix-headless/references/SDK_HANDOFF.md +0 -108
  93. package/skills/wix-headless/references/SEED.md +0 -74
  94. package/skills/wix-headless/references/SETUP.md +0 -60
  95. package/skills/wix-headless/references/astro.md +0 -98
  96. package/skills/wix-headless/references/inline-recipes/experience-donations.md +0 -102
  97. package/skills/wix-headless/references/inline-recipes/experience-store.md +0 -49
  98. package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +0 -196
  99. package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +0 -590
  100. package/skills/wix-headless/references/inline-recipes/how-to-code-bookings.md +0 -279
  101. package/skills/wix-headless/references/inline-recipes/how-to-code-cms.md +0 -163
  102. package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +0 -146
  103. package/skills/wix-headless/references/inline-recipes/how-to-code-events.md +0 -203
  104. package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +0 -696
  105. package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +0 -124
  106. package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +0 -160
  107. package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +0 -118
  108. package/skills/wix-headless/references/inline-recipes/how-to-code-portfolio.md +0 -132
  109. package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +0 -126
  110. package/skills/wix-headless/references/inline-recipes/how-to-code-rentals.md +0 -254
  111. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +0 -191
  112. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +0 -213
  113. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurants.md +0 -161
  114. package/skills/wix-headless/references/inline-recipes/setup-blog.md +0 -175
  115. package/skills/wix-headless/references/inline-recipes/setup-bookings.md +0 -232
  116. package/skills/wix-headless/references/inline-recipes/setup-cms.md +0 -200
  117. package/skills/wix-headless/references/inline-recipes/setup-donations.md +0 -15
  118. package/skills/wix-headless/references/inline-recipes/setup-events.md +0 -196
  119. package/skills/wix-headless/references/inline-recipes/setup-forms.md +0 -288
  120. package/skills/wix-headless/references/inline-recipes/setup-online-store.md +0 -214
  121. package/skills/wix-headless/references/inline-recipes/setup-portfolio.md +0 -155
  122. package/skills/wix-headless/references/inline-recipes/setup-pricing-plans.md +0 -229
  123. package/skills/wix-headless/references/inline-recipes/setup-rentals.md +0 -254
  124. package/skills/wix-headless/references/inline-recipes/setup-restaurant-experiences.md +0 -73
  125. package/skills/wix-headless/references/inline-recipes/setup-restaurant-orders.md +0 -197
  126. package/skills/wix-headless/references/inline-recipes/setup-restaurant-reservations.md +0 -136
  127. package/skills/wix-headless/references/inline-recipes/setup-restaurants.md +0 -152
  128. package/skills/wix-headless/references/managed/AUTHENTICATION.md +0 -71
  129. package/skills/wix-headless/references/managed/CONNECT.md +0 -74
  130. package/skills/wix-headless/references/managed/CREATE.md +0 -149
  131. package/skills/wix-headless/references/managed/DEPLOYMENT.md +0 -104
  132. package/skills/wix-headless/references/non-astro.md +0 -59
  133. package/skills/wix-headless/references/self-managed/AUTHENTICATION.md +0 -22
  134. package/skills/wix-headless/references/self-managed/DEPLOYMENT.md +0 -15
  135. package/skills/wix-headless/references/stripe/AUTHENTICATION.md +0 -55
  136. package/skills/wix-headless/references/stripe/DEPLOYMENT.md +0 -71
  137. package/skills/wix-headless/scripts/bootstrap.mjs +0 -156
  138. package/skills/wix-headless-replatform/.publish-manifest.json +0 -8
  139. package/skills/wix-headless-replatform/SKILL.md +0 -116
  140. package/skills/wix-headless-replatform/agents/openai.yaml +0 -6
  141. package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +0 -43
  142. package/skills/wix-headless-replatform/references/extraction-schema.md +0 -187
  143. package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +0 -137
  144. package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +0 -41
  145. package/skills/wix-headless-replatform/references/output-contract.md +0 -93
  146. package/skills/wix-headless-replatform/references/post-build-gap-contract.md +0 -125
  147. package/skills/wix-headless-replatform/references/qa-checklist.md +0 -83
  148. package/skills/wix-headless-replatform/references/safety.md +0 -19
  149. package/skills/wix-headless-replatform/references/ui-normalization-contract.md +0 -70
  150. package/skills/wix-headless-replatform/references/workflow.md +0 -157
  151. package/skills/wix-headless-replatform/registry/README.md +0 -20
  152. package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +0 -28
  153. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +0 -54
  154. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +0 -60
  155. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +0 -48
  156. package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +0 -21
  157. package/skills/wix-headless-replatform/registry/registry.json +0 -36
  158. package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +0 -32
  159. package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +0 -62
  160. package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +0 -64
  161. package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +0 -42
  162. package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +0 -73
  163. package/skills/wix-headless-replatform/schemas/build-plan.schema.json +0 -10
  164. package/skills/wix-headless-replatform/schemas/candidate.schema.json +0 -19
  165. package/skills/wix-headless-replatform/schemas/common.schema.json +0 -33
  166. package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +0 -10
  167. package/skills/wix-headless-replatform/schemas/decision-request.schema.json +0 -10
  168. package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +0 -28
  169. package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +0 -34
  170. package/skills/wix-headless-replatform/schemas/final-report.schema.json +0 -10
  171. package/skills/wix-headless-replatform/schemas/foundation.schema.json +0 -11
  172. package/skills/wix-headless-replatform/schemas/metadata.schema.json +0 -11
  173. package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +0 -17
  174. package/skills/wix-headless-replatform/schemas/page-capture.schema.json +0 -11
  175. package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +0 -33
  176. package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +0 -11
  177. package/skills/wix-headless-replatform/schemas/unit.schema.json +0 -40
  178. package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +0 -844
  179. package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +0 -163
  180. package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +0 -42
  181. package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +0 -228
  182. package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +0 -87
  183. package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +0 -505
  184. package/skills/wix-headless-replatform/scripts/discover-urls.mjs +0 -142
  185. package/skills/wix-headless-replatform/scripts/extract-assets.mjs +0 -140
  186. package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +0 -637
  187. package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +0 -1903
  188. package/skills/wix-headless-replatform/scripts/extract-page.mjs +0 -2461
  189. package/skills/wix-headless-replatform/scripts/extract-seo.mjs +0 -25
  190. package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +0 -63
  191. package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +0 -126
  192. package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +0 -180
  193. package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +0 -98
  194. package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +0 -103
  195. package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +0 -176
  196. package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +0 -261
  197. package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +0 -25
  198. package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +0 -342
  199. package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +0 -140
  200. package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +0 -22
  201. package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +0 -143
  202. package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +0 -288
  203. package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +0 -266
  204. package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +0 -111
  205. package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +0 -570
  206. package/skills/wix-headless-replatform/scripts/lib/common.mjs +0 -329
  207. package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +0 -121
  208. package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +0 -282
  209. package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +0 -61
  210. package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +0 -374
  211. package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +0 -243
  212. package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +0 -1139
  213. package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +0 -326
  214. package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +0 -184
  215. package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +0 -396
  216. package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +0 -168
  217. package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +0 -10
  218. package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +0 -194
  219. package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +0 -348
  220. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +0 -141
  221. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +0 -43
  222. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +0 -18
  223. package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +0 -64
  224. package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +0 -31
  225. package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +0 -358
  226. package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +0 -25
  227. package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +0 -39
  228. package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +0 -107
  229. package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +0 -96
  230. package/skills/wix-headless-replatform/scripts/site-clone.mjs +0 -658
  231. package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +0 -29
  232. package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +0 -669
  233. package/skills/wix-headless-replatform/scripts/visual-qa.mjs +0 -370
  234. package/skills/wix-import/SKILL.md +0 -90
  235. package/skills/wix-replatform/.publish-manifest.json +0 -8
  236. package/skills/wix-replatform/CLI.md +0 -162
  237. package/skills/wix-replatform/README.md +0 -52
  238. package/skills/wix-replatform/SKILL.md +0 -238
  239. package/skills/wix-replatform/console/account.css +0 -1
  240. package/skills/wix-replatform/console/app.css +0 -1
  241. package/skills/wix-replatform/console/app.js +0 -117
  242. package/skills/wix-replatform/console/index.html +0 -4
  243. package/skills/wix-replatform/console/json.css +0 -11
  244. package/skills/wix-replatform/lib/agent-adapters/index.js +0 -71
  245. package/skills/wix-replatform/lib/app-page-routing.js +0 -75
  246. package/skills/wix-replatform/lib/artifact-freshness.js +0 -225
  247. package/skills/wix-replatform/lib/blocked-data-requests.js +0 -427
  248. package/skills/wix-replatform/lib/census-reconciliation.js +0 -426
  249. package/skills/wix-replatform/lib/completion-report.js +0 -1580
  250. package/skills/wix-replatform/lib/config-env.js +0 -133
  251. package/skills/wix-replatform/lib/confirmed-pictures.js +0 -212
  252. package/skills/wix-replatform/lib/dependency-readiness.js +0 -423
  253. package/skills/wix-replatform/lib/dependency-recovery.js +0 -21
  254. package/skills/wix-replatform/lib/destination-choice.js +0 -163
  255. package/skills/wix-replatform/lib/destination-handoff.js +0 -62
  256. package/skills/wix-replatform/lib/destination-http.js +0 -81
  257. package/skills/wix-replatform/lib/destination-route.js +0 -98
  258. package/skills/wix-replatform/lib/destination.js +0 -919
  259. package/skills/wix-replatform/lib/discovered-census.js +0 -231
  260. package/skills/wix-replatform/lib/discovered-set-status.js +0 -255
  261. package/skills/wix-replatform/lib/document-url-guard.js +0 -203
  262. package/skills/wix-replatform/lib/entity-qa-attestation.js +0 -339
  263. package/skills/wix-replatform/lib/entity-verification.js +0 -18
  264. package/skills/wix-replatform/lib/execution-capability.js +0 -120
  265. package/skills/wix-replatform/lib/execution-log.js +0 -170
  266. package/skills/wix-replatform/lib/execution-manifest.js +0 -203
  267. package/skills/wix-replatform/lib/execution-state.js +0 -195
  268. package/skills/wix-replatform/lib/expectations-ledger.js +0 -96
  269. package/skills/wix-replatform/lib/generated-plugin-handoff.js +0 -140
  270. package/skills/wix-replatform/lib/import-readiness-contract.js +0 -23
  271. package/skills/wix-replatform/lib/import-recovery.js +0 -1107
  272. package/skills/wix-replatform/lib/imported-redirect-targets.js +0 -608
  273. package/skills/wix-replatform/lib/internal-link-reconciliation.js +0 -166
  274. package/skills/wix-replatform/lib/link-audit.js +0 -173
  275. package/skills/wix-replatform/lib/link-census.js +0 -194
  276. package/skills/wix-replatform/lib/link-plan.js +0 -148
  277. package/skills/wix-replatform/lib/link-verification.js +0 -274
  278. package/skills/wix-replatform/lib/link-write-journal.js +0 -42
  279. package/skills/wix-replatform/lib/local-state.js +0 -1481
  280. package/skills/wix-replatform/lib/member-completion.js +0 -658
  281. package/skills/wix-replatform/lib/member-crosswalk.js +0 -69
  282. package/skills/wix-replatform/lib/member-outcome-registry.js +0 -265
  283. package/skills/wix-replatform/lib/migration-completion.js +0 -311
  284. package/skills/wix-replatform/lib/operator-identity.js +0 -47
  285. package/skills/wix-replatform/lib/orchestration-decisions.js +0 -248
  286. package/skills/wix-replatform/lib/orchestration-preflight.js +0 -525
  287. package/skills/wix-replatform/lib/orchestration-router.js +0 -698
  288. package/skills/wix-replatform/lib/orchestration-state.js +0 -631
  289. package/skills/wix-replatform/lib/order-reference-readiness.js +0 -30
  290. package/skills/wix-replatform/lib/payments-outcome-registry.js +0 -200
  291. package/skills/wix-replatform/lib/plugin-cms-fallback.js +0 -618
  292. package/skills/wix-replatform/lib/preservation-approval-stamp.js +0 -54
  293. package/skills/wix-replatform/lib/product-media-deferral.js +0 -96
  294. package/skills/wix-replatform/lib/progress-log.js +0 -240
  295. package/skills/wix-replatform/lib/progress-log.sh +0 -140
  296. package/skills/wix-replatform/lib/read-back-approval.js +0 -184
  297. package/skills/wix-replatform/lib/read-back-comparison.js +0 -136
  298. package/skills/wix-replatform/lib/read-back-contract.js +0 -243
  299. package/skills/wix-replatform/lib/read-back-extract.js +0 -118
  300. package/skills/wix-replatform/lib/read-back-gate.js +0 -734
  301. package/skills/wix-replatform/lib/read-back-reads.js +0 -94
  302. package/skills/wix-replatform/lib/read-back-state.js +0 -107
  303. package/skills/wix-replatform/lib/read-back-summary.js +0 -81
  304. package/skills/wix-replatform/lib/rerun-conflicts.js +0 -334
  305. package/skills/wix-replatform/lib/run-controller.js +0 -401
  306. package/skills/wix-replatform/lib/seo-outcome-registry.js +0 -45
  307. package/skills/wix-replatform/lib/setup-verification.js +0 -148
  308. package/skills/wix-replatform/lib/source-access.js +0 -231
  309. package/skills/wix-replatform/lib/source-coverage.js +0 -1130
  310. package/skills/wix-replatform/lib/source-secrets.js +0 -277
  311. package/skills/wix-replatform/lib/structured-link-patch.js +0 -59
  312. package/skills/wix-replatform/lib/task-state.js +0 -110
  313. package/skills/wix-replatform/lib/url-preservation-report.js +0 -319
  314. package/skills/wix-replatform/lib/url-preservation-state.js +0 -739
  315. package/skills/wix-replatform/lib/url-redirect-plan.js +0 -728
  316. package/skills/wix-replatform/lib/url-verification.js +0 -315
  317. package/skills/wix-replatform/lib/user-action-effects.js +0 -42
  318. package/skills/wix-replatform/lib/user-actions.js +0 -264
  319. package/skills/wix-replatform/lib/website-handoff.js +0 -1220
  320. package/skills/wix-replatform/lib/wix-client-callers.js +0 -54
  321. package/skills/wix-replatform/lib/wix-dashboard-url.js +0 -35
  322. package/skills/wix-replatform/lib/write-verification-state.js +0 -92
  323. package/skills/wix-replatform/lib/write-verification.js +0 -274
  324. package/skills/wix-replatform/resources/rp-destination/SKILL.md +0 -137
  325. package/skills/wix-replatform/resources/rp-discovery/SKILL.md +0 -357
  326. package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +0 -47
  327. package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +0 -1369
  328. package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +0 -70
  329. package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +0 -482
  330. package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +0 -442
  331. package/skills/wix-replatform/resources/rp-execute-setup/scripts/mint-token.sh +0 -64
  332. package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +0 -112
  333. package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +0 -143
  334. package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +0 -244
  335. package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +0 -3158
  336. package/skills/wix-replatform/resources/rp-mapper/SKILL.md +0 -947
  337. package/skills/wix-replatform/resources/rp-mapper/lib/mapping-resolve.js +0 -217
  338. package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +0 -303
  339. package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +0 -88
  340. package/skills/wix-replatform/resources/rp-mapper/scripts/resolve-mapping.js +0 -148
  341. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +0 -378
  342. package/skills/wix-replatform/resources/rp-preflight/SKILL.md +0 -40
  343. package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +0 -55
  344. package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +0 -60
  345. package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +0 -89
  346. package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +0 -36
  347. package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +0 -123
  348. package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +0 -124
  349. package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +0 -522
  350. package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +0 -56
  351. package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +0 -91
  352. package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +0 -255
  353. package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +0 -253
  354. package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +0 -44
  355. package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +0 -481
  356. package/skills/wix-replatform/resources/rp-source-csv/lib/canonical-record.js +0 -136
  357. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
  358. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fingerprint.js +0 -310
  359. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-layout.js +0 -1081
  360. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-parse.js +0 -618
  361. package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +0 -969
  362. package/skills/wix-replatform/resources/rp-source-csv/source-schema.example.json +0 -196
  363. package/skills/wix-replatform/resources/rp-source-csv/vendors/bigcommerce.json +0 -66
  364. package/skills/wix-replatform/resources/rp-source-csv/vendors/magento.json +0 -60
  365. package/skills/wix-replatform/resources/rp-source-csv/vendors/shopify.json +0 -95
  366. package/skills/wix-replatform/resources/rp-source-csv/vendors/woocommerce.json +0 -82
  367. package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +0 -66
  368. package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +0 -153
  369. package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +0 -394
  370. package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +0 -200
  371. package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +0 -34
  372. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +0 -44
  373. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +0 -1470
  374. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +0 -446
  375. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +0 -474
  376. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +0 -879
  377. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +0 -426
  378. package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +0 -24
  379. package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +0 -18
  380. package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +0 -40
  381. package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +0 -76
  382. package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +0 -51
  383. package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +0 -35
  384. package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +0 -20
  385. package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +0 -18
  386. package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +0 -31
  387. package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +0 -21
  388. package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +0 -21
  389. package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +0 -30
  390. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +0 -150
  391. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +0 -36
  392. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +0 -48
  393. package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +0 -20
  394. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +0 -8
  395. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +0 -6
  396. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +0 -8
  397. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +0 -8
  398. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +0 -12
  399. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +0 -6
  400. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +0 -13
  401. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +0 -13
  402. package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +0 -73
  403. package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +0 -13
  404. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +0 -693
  405. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +0 -283
  406. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +0 -191
  407. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +0 -115
  408. package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +0 -201
  409. package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +0 -146
  410. package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +0 -970
  411. package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +0 -73
  412. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +0 -115
  413. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +0 -91
  414. package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +0 -440
  415. package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +0 -125
  416. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +0 -252
  417. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +0 -183
  418. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +0 -333
  419. package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +0 -426
  420. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +0 -400
  421. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +0 -633
  422. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +0 -1127
  423. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +0 -194
  424. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +0 -100
  425. package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +0 -157
  426. package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +0 -234
  427. package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +0 -101
  428. package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +0 -755
  429. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +0 -1074
  430. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +0 -149
  431. package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +0 -25
  432. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +0 -444
  433. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +0 -186
  434. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +0 -1422
  435. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +0 -343
  436. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +0 -680
  437. package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +0 -272
  438. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +0 -373
  439. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +0 -101
  440. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +0 -81
  441. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +0 -128
  442. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +0 -18
  443. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +0 -104
  444. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +0 -44
  445. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +0 -49
  446. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +0 -94
  447. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +0 -863
  448. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +0 -52
  449. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +0 -161
  450. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +0 -180
  451. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +0 -286
  452. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +0 -79
  453. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +0 -120
  454. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +0 -128
  455. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +0 -88
  456. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +0 -80
  457. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +0 -46
  458. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +0 -55
  459. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +0 -99
  460. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +0 -55
  461. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +0 -160
  462. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +0 -81
  463. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +0 -60
  464. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +0 -74
  465. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +0 -75
  466. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +0 -60
  467. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +0 -44
  468. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +0 -57
  469. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +0 -141
  470. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +0 -54
  471. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +0 -158
  472. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +0 -97
  473. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +0 -86
  474. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +0 -90
  475. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +0 -51
  476. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +0 -103
  477. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +0 -2409
  478. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +0 -273
  479. package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +0 -11
  480. package/skills/wix-replatform/resources/rp-source-wordpress/source-schema.example.json +0 -71
  481. package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +0 -13
  482. package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +0 -1046
  483. package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +0 -36
  484. package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +0 -57
  485. package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +0 -322
  486. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +0 -70
  487. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +0 -29
  488. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +0 -71
  489. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +0 -83
  490. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +0 -95
  491. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +0 -66
  492. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +0 -332
  493. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +0 -75
  494. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +0 -181
  495. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +0 -130
  496. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +0 -180
  497. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +0 -161
  498. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +0 -25
  499. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +0 -67
  500. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +0 -75
  501. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +0 -41
  502. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +0 -204
  503. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +0 -27
  504. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +0 -275
  505. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +0 -105
  506. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +0 -77
  507. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +0 -306
  508. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +0 -44
  509. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +0 -171
  510. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +0 -182
  511. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +0 -129
  512. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +0 -192
  513. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +0 -123
  514. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +0 -85
  515. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +0 -112
  516. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +0 -191
  517. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +0 -164
  518. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +0 -462
  519. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +0 -122
  520. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +0 -98
  521. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +0 -86
  522. package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +0 -128
  523. package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +0 -38
  524. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +0 -73
  525. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +0 -107
  526. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +0 -89
  527. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +0 -118
  528. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +0 -93
  529. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +0 -86
  530. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +0 -56
  531. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +0 -121
  532. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +0 -134
  533. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +0 -41
  534. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +0 -50
  535. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +0 -87
  536. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +0 -130
  537. package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +0 -1418
  538. package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +0 -41
  539. package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +0 -24
  540. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +0 -75
  541. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +0 -71
  542. package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +0 -119
  543. package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +0 -23
  544. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +0 -71
  545. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +0 -82
  546. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +0 -77
  547. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +0 -205
  548. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +0 -41
  549. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +0 -46
  550. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +0 -137
  551. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +0 -133
  552. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +0 -7
  553. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +0 -36
  554. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +0 -71
  555. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +0 -67
  556. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +0 -72
  557. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +0 -74
  558. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +0 -69
  559. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +0 -61
  560. package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +0 -111
  561. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +0 -109
  562. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +0 -73
  563. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +0 -148
  564. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +0 -91
  565. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +0 -79
  566. package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +0 -32
  567. package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +0 -49
  568. package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +0 -103
  569. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +0 -203
  570. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +0 -42
  571. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +0 -119
  572. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +0 -111
  573. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +0 -81
  574. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +0 -241
  575. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +0 -118
  576. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +0 -111
  577. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +0 -79
  578. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +0 -221
  579. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +0 -84
  580. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +0 -178
  581. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +0 -87
  582. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +0 -106
  583. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +0 -64
  584. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +0 -119
  585. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +0 -94
  586. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +0 -113
  587. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +0 -65
  588. package/skills/wix-replatform/resources/rp-target-wix/lib/audit-summary.js +0 -64
  589. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +0 -165
  590. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +0 -60
  591. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +0 -201
  592. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +0 -306
  593. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +0 -229
  594. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +0 -55
  595. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +0 -715
  596. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +0 -567
  597. package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +0 -73
  598. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +0 -194
  599. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +0 -133
  600. package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +0 -150
  601. package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +0 -491
  602. package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +0 -104
  603. package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +0 -673
  604. package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +0 -835
  605. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +0 -119
  606. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +0 -566
  607. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +0 -249
  608. package/skills/wix-replatform/resources/rp-target-wix/lib/ndjson.js +0 -260
  609. package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +0 -63
  610. package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +0 -187
  611. package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +0 -64
  612. package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +0 -1027
  613. package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +0 -90
  614. package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +0 -420
  615. package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +0 -177
  616. package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +0 -151
  617. package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +0 -723
  618. package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +0 -353
  619. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +0 -1437
  620. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +0 -354
  621. package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +0 -134
  622. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +0 -221
  623. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +0 -248
  624. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +0 -321
  625. package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +0 -231
  626. package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +0 -28
  627. package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +0 -14
  628. package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +0 -34
  629. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +0 -388
  630. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +0 -255
  631. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +0 -6041
  632. package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +0 -3
  633. package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +0 -150
  634. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +0 -69
  635. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js +0 -100
  636. package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +0 -112
  637. package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +0 -484
  638. package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +0 -318
  639. package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +0 -2831
  640. package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +0 -318
  641. package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +0 -83
  642. package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +0 -243
  643. package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +0 -94
  644. package/skills/wix-replatform/scripts/artifact-freshness.js +0 -76
  645. package/skills/wix-replatform/scripts/census-reconciliation.js +0 -25
  646. package/skills/wix-replatform/scripts/cms-fallback.js +0 -89
  647. package/skills/wix-replatform/scripts/discovered-census.js +0 -26
  648. package/skills/wix-replatform/scripts/discovered-set-status.js +0 -33
  649. package/skills/wix-replatform/scripts/entity-qa-attestation.js +0 -130
  650. package/skills/wix-replatform/scripts/execution-health-check.js +0 -415
  651. package/skills/wix-replatform/scripts/execution-manifest-validate.js +0 -43
  652. package/skills/wix-replatform/scripts/execution-state-prepare.js +0 -128
  653. package/skills/wix-replatform/scripts/expectations-ledger.js +0 -44
  654. package/skills/wix-replatform/scripts/import-contract-verify.js +0 -183
  655. package/skills/wix-replatform/scripts/internal-link-audit.js +0 -90
  656. package/skills/wix-replatform/scripts/item-seo-tags-verify.js +0 -205
  657. package/skills/wix-replatform/scripts/migration-completion.js +0 -76
  658. package/skills/wix-replatform/scripts/orchestration-preflight.js +0 -67
  659. package/skills/wix-replatform/scripts/orchestration-route.js +0 -77
  660. package/skills/wix-replatform/scripts/orchestration-state.js +0 -381
  661. package/skills/wix-replatform/scripts/read-back-gate.js +0 -175
  662. package/skills/wix-replatform/scripts/replatform-console.js +0 -146
  663. package/skills/wix-replatform/scripts/replatform.js +0 -436
  664. package/skills/wix-replatform/scripts/source-secrets.js +0 -77
  665. package/skills/wix-replatform/scripts/url-redirects.js +0 -286
  666. package/skills/wix-replatform/scripts/user-action.js +0 -58
  667. package/skills/wix-replatform/scripts/website-handoff-generate.js +0 -64
  668. package/skills/wix-replatform/scripts/wix-dashboard-url.js +0 -54
  669. package/skills/wix-replatform/scripts/wix-destination.js +0 -143
  670. package/skills/wix-replatform/scripts/wix-headless-scaffold.js +0 -762
  671. package/skills/wix-vibe-headless/SKILL.md +0 -183
  672. package/skills/wix-vibe-headless/install/deploy.cjs +0 -221
  673. package/skills/wix-vibe-headless/install/pin-agents-md.cjs +0 -35
  674. package/skills/wix-vibe-headless/platforms/README.md +0 -26
  675. package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed-with-install.md +0 -127
  676. package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed.md +0 -121
  677. package/skills/wix-vibe-headless/platforms/base44-ecom-light.md +0 -87
  678. package/skills/wix-vibe-headless/platforms/base44.md +0 -148
  679. package/skills/wix-vibe-headless/platforms/generic.md +0 -132
  680. package/skills/wix-vibe-headless/references/_shared/nav/nav.tanstack.js +0 -30
  681. package/skills/wix-vibe-headless/references/_shared/routing.md +0 -86
  682. package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +0 -270
  683. package/skills/wix-vibe-headless/references/blog/app/components/PostCard.jsx +0 -43
  684. package/skills/wix-vibe-headless/references/blog/app/components/PostChips.jsx +0 -25
  685. package/skills/wix-vibe-headless/references/blog/app/components/PostGrid.jsx +0 -15
  686. package/skills/wix-vibe-headless/references/blog/app/context/TaxonomyContext.jsx +0 -35
  687. package/skills/wix-vibe-headless/references/blog/app/hooks/usePostDetail.js +0 -38
  688. package/skills/wix-vibe-headless/references/blog/app/pages/Blog.jsx +0 -40
  689. package/skills/wix-vibe-headless/references/blog/app/pages/CategoryPage.jsx +0 -54
  690. package/skills/wix-vibe-headless/references/blog/app/pages/PostDetail.jsx +0 -65
  691. package/skills/wix-vibe-headless/references/blog/app/pages/TagPage.jsx +0 -50
  692. package/skills/wix-vibe-headless/references/blog/app/rest/wix-blog.js +0 -217
  693. package/skills/wix-vibe-headless/references/blog/seed/SEED.md +0 -99
  694. package/skills/wix-vibe-headless/references/blog/seed/seed-blog.cjs +0 -269
  695. package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +0 -342
  696. package/skills/wix-vibe-headless/references/bookings/app/components/BookingForm.jsx +0 -65
  697. package/skills/wix-vibe-headless/references/bookings/app/components/RentalDurationPicker.jsx +0 -67
  698. package/skills/wix-vibe-headless/references/bookings/app/components/ServiceCard.jsx +0 -47
  699. package/skills/wix-vibe-headless/references/bookings/app/components/ServiceGrid.jsx +0 -13
  700. package/skills/wix-vibe-headless/references/bookings/app/components/SlotPicker.jsx +0 -126
  701. package/skills/wix-vibe-headless/references/bookings/app/hooks/useRentalDuration.js +0 -128
  702. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +0 -110
  703. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServices.js +0 -58
  704. package/skills/wix-vibe-headless/references/bookings/app/lib/serviceFacts.js +0 -95
  705. package/skills/wix-vibe-headless/references/bookings/app/pages/ServiceDetail.jsx +0 -94
  706. package/skills/wix-vibe-headless/references/bookings/app/pages/Services.jsx +0 -89
  707. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-checkout.js +0 -148
  708. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-rentals.js +0 -250
  709. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-services.js +0 -300
  710. package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +0 -154
  711. package/skills/wix-vibe-headless/references/bookings/seed/seed-bookings.cjs +0 -333
  712. package/skills/wix-vibe-headless/references/bookings/seed/seed-rentals.cjs +0 -267
  713. package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +0 -178
  714. package/skills/wix-vibe-headless/references/cms/app/collection.config.js +0 -31
  715. package/skills/wix-vibe-headless/references/cms/app/lib/wixImage.js +0 -18
  716. package/skills/wix-vibe-headless/references/cms/app/rest/wix-cms.js +0 -231
  717. package/skills/wix-vibe-headless/references/cms/seed/SEED.md +0 -145
  718. package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +0 -88
  719. package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +0 -112
  720. package/skills/wix-vibe-headless/references/donations/seed/SEED.md +0 -11
  721. package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +0 -258
  722. package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +0 -267
  723. package/skills/wix-vibe-headless/references/events/app/components/CategoryFilter.jsx +0 -23
  724. package/skills/wix-vibe-headless/references/events/app/components/EventCard.jsx +0 -43
  725. package/skills/wix-vibe-headless/references/events/app/components/EventGrid.jsx +0 -13
  726. package/skills/wix-vibe-headless/references/events/app/components/EventRegistration.jsx +0 -29
  727. package/skills/wix-vibe-headless/references/events/app/components/RsvpForm.jsx +0 -57
  728. package/skills/wix-vibe-headless/references/events/app/components/TicketPicker.jsx +0 -78
  729. package/skills/wix-vibe-headless/references/events/app/hooks/useEventDetail.js +0 -27
  730. package/skills/wix-vibe-headless/references/events/app/hooks/useEventsList.js +0 -54
  731. package/skills/wix-vibe-headless/references/events/app/hooks/useRsvpForm.js +0 -40
  732. package/skills/wix-vibe-headless/references/events/app/hooks/useTicketing.js +0 -81
  733. package/skills/wix-vibe-headless/references/events/app/pages/EventDetail.jsx +0 -48
  734. package/skills/wix-vibe-headless/references/events/app/pages/Events.jsx +0 -36
  735. package/skills/wix-vibe-headless/references/events/app/rest/wix-events-browse.js +0 -136
  736. package/skills/wix-vibe-headless/references/events/app/rest/wix-events-registration.js +0 -187
  737. package/skills/wix-vibe-headless/references/events/seed/SEED.md +0 -103
  738. package/skills/wix-vibe-headless/references/events/seed/seed-events.cjs +0 -251
  739. package/skills/wix-vibe-headless/references/forms/INSTRUCTIONS.md +0 -487
  740. package/skills/wix-vibe-headless/references/forms/app/hooks/useWixForm.js +0 -425
  741. package/skills/wix-vibe-headless/references/forms/app/lib/wix-form-schema-utils.js +0 -187
  742. package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms-submissions.js +0 -238
  743. package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms.js +0 -108
  744. package/skills/wix-vibe-headless/references/forms/seed/SEED.md +0 -1836
  745. package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +0 -328
  746. package/skills/wix-vibe-headless/references/members/app/components/LoginForm.jsx +0 -101
  747. package/skills/wix-vibe-headless/references/members/app/components/MemberMenu.jsx +0 -33
  748. package/skills/wix-vibe-headless/references/members/app/components/RequireAuth.jsx +0 -21
  749. package/skills/wix-vibe-headless/references/members/app/components/SocialButtons.jsx +0 -29
  750. package/skills/wix-vibe-headless/references/members/app/context/MemberContext.jsx +0 -54
  751. package/skills/wix-vibe-headless/references/members/app/hooks/useLoginForm.js +0 -77
  752. package/skills/wix-vibe-headless/references/members/app/pages/Account.jsx +0 -36
  753. package/skills/wix-vibe-headless/references/members/app/pages/Callback.jsx +0 -32
  754. package/skills/wix-vibe-headless/references/members/app/pages/Login.jsx +0 -35
  755. package/skills/wix-vibe-headless/references/members/app/rest/wix-members-auth.js +0 -390
  756. package/skills/wix-vibe-headless/references/members/install/Register.jsx +0 -22
  757. package/skills/wix-vibe-headless/references/members/seed/SEED.md +0 -21
  758. package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +0 -270
  759. package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionCard.jsx +0 -31
  760. package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionGrid.jsx +0 -15
  761. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectCard.jsx +0 -39
  762. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectGrid.jsx +0 -15
  763. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectMedia.jsx +0 -29
  764. package/skills/wix-vibe-headless/references/portfolio/app/hooks/useCollectionProjects.js +0 -35
  765. package/skills/wix-vibe-headless/references/portfolio/app/hooks/usePortfolioGallery.js +0 -27
  766. package/skills/wix-vibe-headless/references/portfolio/app/hooks/useProjectDetail.js +0 -25
  767. package/skills/wix-vibe-headless/references/portfolio/app/pages/CollectionPage.jsx +0 -39
  768. package/skills/wix-vibe-headless/references/portfolio/app/pages/Portfolio.jsx +0 -27
  769. package/skills/wix-vibe-headless/references/portfolio/app/pages/ProjectDetail.jsx +0 -60
  770. package/skills/wix-vibe-headless/references/portfolio/app/rest/wix-portfolio.js +0 -223
  771. package/skills/wix-vibe-headless/references/portfolio/seed/SEED.md +0 -90
  772. package/skills/wix-vibe-headless/references/portfolio/seed/seed-portfolio.cjs +0 -236
  773. package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +0 -280
  774. package/skills/wix-vibe-headless/references/pricing-plans/app/components/OrderCard.jsx +0 -35
  775. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanCard.jsx +0 -48
  776. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanGrid.jsx +0 -16
  777. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanPrice.jsx +0 -35
  778. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/useMyPlans.js +0 -25
  779. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlanDetail.js +0 -28
  780. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlans.js +0 -30
  781. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/MyPlans.jsx +0 -30
  782. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/PlanDetail.jsx +0 -53
  783. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/Plans.jsx +0 -28
  784. package/skills/wix-vibe-headless/references/pricing-plans/app/rest/wix-pricing-plans.js +0 -157
  785. package/skills/wix-vibe-headless/references/pricing-plans/seed/SEED.md +0 -82
  786. package/skills/wix-vibe-headless/references/pricing-plans/seed/seed-pricing-plans.cjs +0 -251
  787. package/skills/wix-vibe-headless/references/rentals/INSTRUCTIONS.md +0 -13
  788. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +0 -290
  789. package/skills/wix-vibe-headless/references/restaurants/app/components/ItemDialog.jsx +0 -81
  790. package/skills/wix-vibe-headless/references/restaurants/app/components/MenuItemCard.jsx +0 -71
  791. package/skills/wix-vibe-headless/references/restaurants/app/components/MenuList.jsx +0 -43
  792. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartButton.jsx +0 -21
  793. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +0 -72
  794. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +0 -66
  795. package/skills/wix-vibe-headless/references/restaurants/app/hooks/useItemOrder.js +0 -32
  796. package/skills/wix-vibe-headless/references/restaurants/app/hooks/useReservation.js +0 -73
  797. package/skills/wix-vibe-headless/references/restaurants/app/pages/Menu.jsx +0 -28
  798. package/skills/wix-vibe-headless/references/restaurants/app/pages/Reservations.jsx +0 -102
  799. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-menu.js +0 -224
  800. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +0 -218
  801. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-reservations.js +0 -107
  802. package/skills/wix-vibe-headless/references/restaurants/seed/SEED.md +0 -176
  803. package/skills/wix-vibe-headless/references/restaurants/seed/seed-restaurants.cjs +0 -452
  804. package/skills/wix-vibe-headless/references/shared/app/components/WixManageBanner.jsx +0 -56
  805. package/skills/wix-vibe-headless/references/shared/app/lib/nav.js +0 -9
  806. package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +0 -185
  807. package/skills/wix-vibe-headless/references/shared/app/rest/wix-config.js +0 -8
  808. package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +0 -471
  809. package/skills/wix-vibe-headless/references/storefront/app/components/CartButton.jsx +0 -20
  810. package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +0 -167
  811. package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +0 -83
  812. package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductCard.js +0 -104
  813. package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +0 -163
  814. package/skills/wix-vibe-headless/references/storefront/app/hooks/useShop.js +0 -83
  815. package/skills/wix-vibe-headless/references/storefront/app/hooks/useVariantOptions.js +0 -76
  816. package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +0 -64
  817. package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-cart.js +0 -176
  818. package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-catalog.js +0 -218
  819. package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +0 -174
  820. package/skills/wix-vibe-headless/references/storefront/seed/seed-store.cjs +0 -546
@@ -1,1369 +0,0 @@
1
- ---
2
- name: rp-execute-import
3
- description: >-
4
- Runs the generated extract/import pipeline and records execution results. Use when setup
5
- and codegen are complete and the user has approved the execution plan.
6
- ---
7
-
8
- # rp-execute-import
9
-
10
- Execute the generated migration pipeline and capture import results.
11
-
12
- ## Purpose
13
-
14
- This skill runs the generated extract/import pipeline for the active project once setup and code generation are complete.
15
-
16
- ## Required inputs
17
-
18
- - generated code under `migrations/<project>/src/`
19
- - `migrations/<project>/execution/execution-manifest.json`
20
- - `migrations/<project>/execution/llm-handoff.json`
21
- - `migrations/<project>/execution/review/import-plan.md`
22
- - `migrations/<project>/execution/review/code-safety-review.md` when `SAFE_MODE=true` or
23
- `DRY_RUN=true`
24
- - `migrations/<project>/setup/setup-verification.json`
25
-
26
- ## Preconditions
27
-
28
- Do not proceed until:
29
-
30
- - setup verification shows required items are passed or accepted; an unrecovered blocker
31
- halts to needs-user
32
- - reader, transform, and writer code exist for the intended entities
33
- - execution artifacts define batching, retries, checkpoints, and write order clearly
34
- - when `SAFE_MODE=true` or `DRY_RUN=true`, the post-codegen code-safety review exists and
35
- has been accepted before execution approval is sought
36
- - the **execution plan report has been presented and the user has accepted it** (see
37
- below). In explicit user-requested `1-click mode` (`automationMode=one_click`,
38
- `source=user`), the same report is still required, but it is recorded as accepted by the
39
- agent once all blockers/gaps are surfaced and no unresolved hard stop remains.
40
-
41
- Prefer the machine-readable execution artifacts above. `execution/review/import-plan.md`
42
- is a human-facing review artifact, not the primary execution contract.
43
-
44
- Before live import and again before final reporting, validate
45
- `execution/review/import-plan.freshness.json` with the deterministic freshness helper:
46
-
47
- ```bash
48
- node skills/wix-replatform/scripts/artifact-freshness.js check migrations/<project> \
49
- --domains-dir skills/wix-replatform/resources/rp-target-wix/domains \
50
- --delta execution/review/import-plan-delta.md
51
- ```
52
-
53
- If the check is stale, do not silently continue from the old approval text. Regenerate
54
- `execution/review/import-plan.md` or append and present
55
- `execution/review/import-plan-delta.md`; completion reports must reference the latest
56
- accepted plan or delta.
57
-
58
- ## Execution plan & user acceptance (required gate)
59
-
60
- This gate precedes **all** writes to the user's site — both `rp-execute-setup`
61
- provisioning and this import. Before writing anything, produce a human-readable
62
- **execution plan report** and obtain explicit user acceptance. Do not write anything until
63
- the user accepts. The report must show:
64
-
65
- - **Setup changes to be made first:** apps to install (Blog / Members / Wix-Data enabler),
66
- Wix Data enablement, and collections to create — so the user sees the site changes, not
67
- just the content writes.
68
- - **What will be imported and where:** each source entity → its Wix target (app or
69
- collection) with record counts — e.g. posts → Wix Blog (1088); episodes →
70
- `PodcastEpisodes` (86); categories/tags → Blog taxonomies; media → Media Manager (~1499).
71
- Make media reporting explicit:
72
- - referenced media imported through entity-native background ingestion
73
- - referenced media imported through Media Manager first
74
- - unattached media skipped by default unless explicitly in scope
75
- - **What will NOT migrate cleanly / needs manual action:** the lossy and blocked items,
76
- drawn from the mapping plan's faithfulness ledger and any `setup/setup-verification.json` items
77
- still manual or blocked — e.g. category hierarchy flattened, comments anonymized,
78
- drafts absent without auth, storage-plan upgrade required. **This must also include any
79
- target with no verified Wix primitive** — state whether it falls back to a generic CMS
80
- collection, to an `unverified`/best-effort runtime-derived call, or is skipped. Nothing
81
- unverified or lossy may be written without first appearing here for consent.
82
- Coupons follow the same native-first rule as other native Wix entities: prefer native
83
- Wix Coupons, and mention CMS fallback only for truly unsupported coupon semantics.
84
- - **Always state the analytics-data exclusion explicitly.** Historical analytics data —
85
- traffic / visitor stats accumulated on the source — is **out of scope** and is **not**
86
- imported (see "Out of scope" below). Call this out in the plan so the user knows before
87
- accepting that analytics data will not migrate; do not let it pass silently.
88
- - **Order & idempotency:** the write order and how re-runs dedupe. Be explicit that
89
- source IDs are the stable migration key, while many native Wix target IDs are
90
- server-assigned. The plan must state whether each entity re-run resolves via a
91
- client-controlled source-id field on the target or via the durable local
92
- `sourceId -> targetId` crosswalk. Local `state/crosswalk/crosswalk.ndjson` is the sole
93
- runtime authority for resume/idempotency — never CMS. The plan must state the crosswalk
94
- authority (`local`) and the mapper-selected CMS mirror mode (`none`, `download`, `upload`,
95
- or `download-and-upload`); CMS `ImportCrosswalk` is OPTIONAL by design, not a default,
96
- because Wix CMS quotas are plan-based and shared across every custom collection on the
97
- site — a large migration's full crosswalk can be many times a lower-tier plan's total item
98
- quota, so treating the mirror as mandatory risks spending site data capacity the migration
99
- has no business claiming by default. Only enable a mirror mode when the user opted into
100
- site-local reference data (see `rp-execute-setup` → "Import crosswalk CMS mirror").
101
- When a mirror mode other than `none` IS selected: provisioning the collection is not the
102
- same thing as keeping it in sync — a run can provision the
103
- collection at setup time and then never write to it again during import, leaving every
104
- entity's crosswalk invisible on the site itself until a one-time backfill catches it up.
105
- `rp-target-wix/lib/wix-writers.js`'s `syncImportCrosswalk` (batches of up to 1000 through
106
- `bulkSaveDataItems`, item id the row's own `sourceStableKey`, matching the approved
107
- download-side dedupe contract exactly — see the KNOWN, UNRESOLVED LIMITATION comment on
108
- `buildImportCrosswalkItem`: sourceStableKey is only unique within one migration, so two different projects against the same source system that happen to import the
109
- same entityType+sourceId still collide, and closing that gap needs its own approved
110
- identity/schema decision, not an ad hoc id prefix) is the primitive that keeps it current, and
111
- `rp-import-codegen` wires it in: a generated run with a mirror mode of `upload` or
112
- `download-and-upload` performs **exactly one snapshot pass, after the last entity write**,
113
- projecting the finished local crosswalk through `local-state.js`'s
114
- `crosswalkRowsToMirrorItemInputs` and uploading it with `syncImportCrosswalk`. The pass is
115
- never inline per entity and never a per-batch checkpoint: a mirror write riding alongside
116
- each record multiplies the calls the site absorbs during the run and makes a slow collection
117
- a drag on the import it only describes. With `none` or `download` the generated run touches
118
- the collection zero times — no reads, no writes, no empty pass reported as success — because
119
- site storage is a shared plan-based allowance and a large ledger can be a meaningful
120
- fraction of a smaller plan's whole quota.
121
- Never make native-entity import correctness
122
- depend on the mirror succeeding: a non-zero `totalFailures`, or a thrown transport error,
123
- marks the mirror step failed and is reported as a shortfall in the execution artifacts, while
124
- every imported record stays imported and the run itself is not failed.
125
- - **Destination and collisions — required whenever `WIX_SITE_STRATEGY=existing`.** Name
126
- the destination site, and say plainly that it is a site the user already owns and that
127
- this import will change it. Then quantify the overlap: for each entity type, how many
128
- source records match something already on the site (by crosswalk, then by the mapping's
129
- natural key), and what will happen to each — **skipped** or **augmented**, never replaced
130
- and never deleted. A user accepting "Migrate" on their live store is accepting these
131
- specific writes; a plan that reports only "120 products" is asking them to consent to
132
- something they cannot see. If the overlap cannot be computed before writing, say that
133
- too, and say what the import will do when it meets one.
134
- - **URL preservation:** for public routed entities, state that source URL artifacts will
135
- be captured locally under `state/url-preservation/`. List the public entity types whose
136
- base paths and slugs will be tracked, any entity whose target route is deferred to the
137
- website-builder phase, and whether redirects will be recorded as plans. The current
138
- import phase must say that redirects and site routing are **not applied**.
139
- Backend import stays plan-only: it records source URLs and source-authored redirect
140
- definitions (`node skills/wix-replatform/scripts/url-redirects.js sources`), then runs the
141
- offline `url-redirects.js report` and passes its projection
142
- (`execution/url-preservation-report.json`, status `pending_website_build` until final routes
143
- exist) as `completion-report.json.urlPreservation`. It never runs `apply` or `verify`, never
144
- probes the public website and never changes DNS; those are post-build helper operations the
145
- cutover step schedules.
146
- - **Notification mute.** State that site notifications will be muted before
147
- import when required by the resolved site strategy/config, and how the owner can later
148
- ask for an unmute. State that site notifications will be muted before migration writes
149
- begin when mute is in effect. For a **new site** this is a one-line
150
- factual disclosure (the mute is unconditional). For an **existing site that opted in**
151
- (`WIX_MUTE_NOTIFICATIONS=on`) the disclosure is **mandatory and prominent** and must
152
- state all three points:
153
- - all site notifications will be muted before migration writes begin;
154
- - visitor activity during the migration window (e.g. contact-form submissions,
155
- Back in Stock alerts) will **not** generate notifications;
156
- - the flow does **not** unmute automatically — after the migration the owner must
157
- re-enable notifications themselves, or simply ask the agent to unmute at any point.
158
-
159
- The owner accepting the plan is the consent for muting their live site. If the owner
160
- rejects the mute line, revert to the existing-site default (`off`) and regenerate the
161
- affected artifacts before seeking acceptance again.
162
-
163
- In explicit user-requested `1-click mode`, do not skip this report. Generate it, make sure it
164
- reflects the real setup changes / data writes / blockers, record it as accepted by the agent,
165
- and continue without waiting for a human response. A missing mode or a non-user-authored
166
- `one_click` value must follow the normal user-approval path.
167
-
168
- Persist this in `execution/review/import-plan.md` (or a sibling report). This is the defined approval
169
- checkpoint: the job pauses, surfaces the plan to the user, and resumes **only** on
170
- accept. Nothing is written before acceptance.
171
-
172
- If `SAFE_MODE=true` or `DRY_RUN=true`, this execution-plan approval gate comes only after
173
- the separate post-codegen code-safety review checkpoint has passed. Do not merge the two
174
- checkpoints into one prompt.
175
-
176
- ## Out of scope — analytics (future enhancement)
177
-
178
- **Do not attempt to import analytics data.** Historical traffic / visitor statistics —
179
- the accumulated analytics records on the source (page views, sessions, visitor counts,
180
- time-series reports) — are **not** part of the migration. Do not generate readers,
181
- transforms, or writers for them. (This is about the *data*, not analytics
182
- configuration/setup such as tracking tags — that is a separate concern and not what this
183
- exclusion covers.)
184
-
185
- - **Surface it before execute.** This exclusion must appear in the execution-plan report's
186
- "What will NOT migrate" list (see the gate above) so the user is told **before** they
187
- accept and we begin writing — not discovered afterward.
188
- - **Future enhancement.** Analytics migration is a deferred scope item, not a permanent
189
- limitation. If/when a faithful source→Wix analytics path exists, revisit and lift this
190
- exclusion. Until then, treat analytics as explicitly skipped.
191
-
192
- ## Execute the generated scripts — never an agentic MCP flow (required)
193
-
194
- The **import** is performed by **running the generated artifact** (`node` the project's
195
- entrypoint under `migrations/<project>/src/`), which writes to Wix via its own transport
196
- (`fetch` + injected credentials to `www.wixapis.com`, or the Wix client SDK). The agent
197
- **must not** perform the import writes itself by issuing per-record Wix MCP calls
198
- (`CallWixSiteAPI`) and hand-translating shapes.
199
-
200
- (Scope: this rule is **import-specific**. Setup execution (`rp-execute-setup`) may
201
- currently use the agent+MCP for provisioning writes — an interim decision, with other
202
- options still under discussion.)
203
-
204
- Why the import must run the artifact:
205
-
206
- - **Reproducibility & idempotency.** Re-runs, resume-from-checkpoint, write ordering, and
207
- dedup keyed by source ID live in the artifact. For native Wix entities whose target IDs
208
- are server-assigned, that means the artifact must maintain and consult the local
209
- `state/crosswalk/crosswalk.ndjson` authority. An agent reconstructing writes ad hoc
210
- bypasses all of it — a bulk, restartable data pipeline can't be driven by hand per
211
- record.
212
- - **Verified shapes.** The artifact calls `rp-target-wix`'s verified primitives. An agent
213
- rebuilding request bodies live re-opens the exact shape-bug class we eliminated
214
- (Ricos plugin enum case, oversized-HTML tag body, `heroImage.id`).
215
- - **MCP may be absent at runtime.** Interactively-authenticated MCP servers can be missing
216
- in headless/cron runs, so MCP can't be depended on as the write transport regardless of
217
- whether the runtime is a pure script-runner or an agent. Either way the writes should
218
- flow through the tested artifact, not be reconstructed by the model.
219
- - **Validation honesty.** Writing by hand via MCP leaves the artifact's own auth, request
220
- execution, async-media polling, retry, and checkpoint code unexercised — a green test
221
- then says nothing about the path real users get. The Wix MCP's role here is
222
- grounding/verification at codegen time and the one-time live contract test in
223
- `rp-target-wix`, **not** the import transport.
224
-
225
- Consequence for credentials: the artifact needs real Wix write credentials to run. If they
226
- are absent, **halt to needs-user** — do **not** substitute the agent's MCP account auth to
227
- "get the writes done." Missing credentials is a blocker to surface, not a path to route
228
- around.
229
-
230
- This skill should execute the machine import artifacts and generated entrypoints. It
231
- should not re-decide write strategy live when `execution/execution-manifest.json`
232
- already defines the ordered task graph and write contract.
233
-
234
- ## Config files
235
-
236
- Before running the generated entrypoint, verify the project-local config files exist and
237
- contain required values:
238
-
239
- - `migrations/<project>/config/wix.env`
240
- - `WIX_SITE_STRATEGY`
241
- - `WIX_SITE_ID`
242
- - `WIX_AUTH_TOKEN` or another generated-code-supported Wix auth key
243
- - `DRY_RUN`
244
- - `SAFE_MODE`
245
- - `SAFE_MODE_PHONE_NUMBER` when `SAFE_MODE` is enabled
246
- - `migrations/<project>/config/source.<platform>.env`
247
- - platform-specific source values, for example WordPress:
248
- `WP_BASE_URL`; `WP_USERNAME` and `WP_APPLICATION_PASSWORD` for authenticated REST
249
- reads; and `WMH2_MIGRATION_KEY` when the generated bridge reader selected signed auth
250
-
251
- The generated script should load these files and then allow process env to override them.
252
- `WIX_SITE_STRATEGY` is always required. `WIX_SITE_ID` is required before execution writes
253
- begin; if the strategy is `new` and the site has not been created yet, halt to needs-user
254
- and return to the site-creation step rather than assuming an existing-site flow. Never
255
- print secret values.
256
-
257
- `WIX_AUTH_TOKEN` is the canonical Wix auth key in project-local config. It may have been
258
- used earlier for account-level site creation and may also power site-level writes when
259
- the generated runtime supports that same key. If the generated import path needs a
260
- different Wix credential, name that key explicitly in the generated artifacts.
261
-
262
- If execution is blocked because a RePlatform `new site` + `headless` target was never
263
- created, route back to `resources/rp-destination/`, which scaffolds via
264
- `npm create @wix/new@latest headless`. The account-level Projects API is deprecated for
265
- this workflow (it produced non-headless sites).
266
-
267
- When the accepted next run is dry-run, missing or blank `WIX_AUTH_TOKEN` and
268
- `WIX_SITE_ID` are not blockers unless a local artifact requires the site ID as a stable
269
- namespace. Report them as `would_block_live`, do not mint a Wix CLI token for dry-run, and
270
- make the execution plan state that a later live run needs separate acceptance and valid
271
- credentials.
272
-
273
- If `DRY_RUN=true`, do not override it with `--no-dry-run` for setup probes, setup
274
- provisioning, demo-catalog cleanup, extraction-side verification against Wix, or import
275
- writes unless the user has explicitly approved leaving dry-run for that step or phase.
276
- Prefer to avoid that override when a dry-run artifact or report can be produced instead.
277
- The upstream new-site creation exception does not authorize this skill to make any other
278
- live Wix API call.
279
-
280
- Treat `migrations/<project>/config/*.env` as secret-bearing once they may contain real
281
- values. Do not inspect them with whole-file reads that print contents into tool output;
282
- check only existence and required-key status (`present`, `blank`, `missing`).
283
-
284
- For CLI-scaffolded headless sites, acquire the site write token from the scaffolded
285
- frontend folder with:
286
-
287
- ```bash
288
- npx @wix/cli@latest token --site "$WIX_SITE_ID"
289
- ```
290
-
291
- Persist the returned token as `WIX_AUTH_TOKEN` and send it as a Bearer token. The same Wix
292
- CLI account should create the site and mint this token.
293
-
294
- ## Workflow
295
-
296
- 1. Resolve the active project.
297
- 2. Review the machine execution artifacts and generated code; present the execution plan
298
- report and obtain acceptance (see above) before any write.
299
- 2b. **Precondition, not a step you can skip by not reading this line.** The import path checks
300
- that execution state was prepared and refuses to write without it. Prepare deterministic
301
- local execution state before any setup/import write:
302
-
303
- ```bash
304
- node skills/wix-replatform/scripts/execution-state-prepare.js migrations/<project>
305
- ```
306
-
307
- This validates `execution/execution-manifest.json`, initializes or validates
308
- `state/crosswalk/crosswalk.ndjson`, rebuilds crosswalk indexes, initializes
309
- `state/attempts/write-attempts.ndjson`, initializes `state/url-preservation/`
310
- artifacts when URL preservation is enabled, and blocks CMS mirror download flows unless
311
- local state is absent and explicit CMS mirror rows have been provided to seed it.
312
- 2d. Verify the generated import entrypoints satisfy the entry contract, before any entity
313
- write:
314
-
315
- ```bash
316
- node skills/wix-replatform/scripts/import-contract-verify.js migrations/<project>
317
- ```
318
-
319
- For a filtered run, pass its identical selection after `--` (for example
320
- `-- --entity <entity> --failed-only`). For selected bridge-backed entities/dependants,
321
- the verifier first checks actual generated wiring and helper versions against the
322
- committed emitter, before running any generated entrypoint. An unrelated native-only
323
- selection does not check another plugin's artifact readiness. Source preparation/full
324
- manifests are checked by the shared runtime at selected dispatch; missing preparation
325
- holds only affected scopes with existing Import Operator tasks. Follow
326
- `rp-source-wordpress/PLUGIN-READ-PLANS.md`; do not bypass those wrappers.
327
-
328
- This then spawns each generated import entrypoint with `--describe`, parses the single JSON
329
- object it prints, and checks it against the generated-importer contract. It writes no state
330
- and touches no target. A non-zero exit **aborts the import** and routes back to codegen —
331
- no degraded mode, no skip flag — naming every missing selection mode and every misplaced
332
- ledger path at once.
333
-
334
- The selective modes (`--entity`, `--source-type`, `--missing-only`, `--failed-only`,
335
- `--deferred-only`, `--unresolved-only`) are a **requirement on the generated importer**, not
336
- an operator option: an importer that cannot offer targeted recovery is one whose only
337
- recovery is an unfiltered full re-pass, which is how a journal ends up with several rows per
338
- record. The importer also checks itself, as the first statement of its `main()`; this step
339
- is what catches an importer that never emitted that check at all.
340
-
341
- 2c. Resolve every request under `state/blocked-data-requests/` with the shared
342
- `lib/blocked-data-requests.js` helper before normal extraction. Reuse a current immutable
343
- snapshot within `fulfillment.freshnessWindowHours` without probing the source. After the
344
- window, attempt exactly one refresh: write the next version on success; on failure keep the
345
- prior snapshot and mark it `stale: true`. With no snapshot, `csv-upload` checks and parses
346
- `expectedInputPath`, while `bridge-plugin` probes the live `/wp-json` namespace list and then
347
- calls `extractionRoute`; never check a local path for a bridge request. Reconciled data is
348
- merged into that capability's extraction input. Present-but-invalid or partial data is
349
- discarded and marked `invalid`; missing data uses the target entity's existing default.
350
- Never create `declined` unless a human explicitly declined during an interactive review.
351
- Stamp every write attempt using real blocked data with the snapshot version, extraction
352
- timestamp, and checksum it actually consumed.
353
- 3. Run a safe validation path first when possible, such as dry-run, sample batch, or read-only validation.
354
- For dry-run, invoke the same generated setup/import entrypoints with `DRY_RUN=true` or
355
- `--dry-run`. Do not use an agent/MCP hand-built substitute. The shared Wix runtime must
356
- skip Wix calls at `wix.send`, write `state/attempts/wix-request-captures.ndjson`, and
357
- keep placeholder target IDs out of `state/crosswalk/crosswalk.ndjson`.
358
- Do not switch to `--no-dry-run` unless the user explicitly approves leaving dry-run for
359
- that phase.
360
- If media import is in scope and source media URLs are local/private (`localhost`,
361
- `127.0.0.1`, Docker-only hosts, etc.), do not treat a successful dry-run as proof that
362
- live media import can work. Wix Media import fetches URLs from Wix servers, so the user
363
- must either expose the source through a public HTTPS tunnel or skip/defer media. This
364
- is optional and, as far as we know today, only affects media import.
365
- For Stores products carrying `subscriptionDetails`, the generated dry-run must execute
366
- the same transform path as live import and call the vendored
367
- `validateStoresProductSubscriptionDetails` helper before writes. Known contract
368
- failures such as missing cadence or an invalid required nested field are record-level
369
- preflight failures/deferred outcomes; they must be counted and reported without sending
370
- that record to Wix.
371
- If the run needs live Stores evidence during setup or recovery, use the shared
372
- verification CLI and persist its JSON artifact:
373
- `node skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js stores product-count --artifact migrations/<project>/execution/stores-product-count-verification.json`
374
- or `stores product-by-source-marker --marker-path <path> --marker-value <value>`.
375
- Do not write migration-local verification snippets for Stores product counts,
376
- source-marker lookups, subscription probes, or probe cleanup.
377
- 3b. **Clear the default demo catalog first — only when all three conditions hold.** A
378
- freshly provisioned Wix Stores catalog (and `wix-headless`'s seed) ships ~12 placeholder
379
- demo products + demo categories. Wiping them before importing is correct ONLY on a site
380
- you created on this turn from a live source — never as a general cleanup step. All three
381
- must hold; check them before deleting anything:
382
-
383
- 1. `WIX_SITE_STRATEGY=new`, **and**
384
- 2. the source is a **live site**, not supplied files (`sourceMode=files_only`), **and**
385
- 3. **you created the destination site on this turn.**
386
-
387
- Each one guards against a different way of destroying data that is not template seed:
388
-
389
- - **Existing site ⇒ never.** The catalog belongs to the owner; a bulk delete here is
390
- data loss this pipeline cannot undo.
391
- - **File-provided run ⇒ never, whatever the strategy.** File drops are recurring by
392
- design — they can accumulate onto one site over multiple runs, so wiping on drop 2..N
393
- would delete what an earlier drop imported, and the wipe cannot tell template seed
394
- from migrated data.
395
- - **A later turn ⇒ never.** This is the condition most likely to be missed: on turn two
396
- of a new-site run, `WIX_SITE_STRATEGY` still reads `new` and the source is still a
397
- live site, so only "did I create the destination on this turn" separates clearing the
398
- template's placeholders from deleting the previous turn's import.
399
-
400
- When in doubt, skip it — leaving a few template products behind is a cosmetic defect the
401
- owner can fix later; deleting their catalog is not recoverable. When all three hold,
402
- delete the default demo products and categories (keep the system `All Products`
403
- category) so the final store holds only the migrated data — otherwise a clean
404
- 100-product import reads as 112. Applies in both delivery modes.
405
- 4. **Run source extraction first** using the generated extraction entrypoint (for example
406
- `node src/extract/run-extract.js`). This step writes durable source files under the
407
- project and must complete before the write phase unless the extraction artifacts are
408
- already present and accepted for resume.
409
- 5. **Execute the import by running the generated import entrypoint** (for example
410
- `node src/import/run-import.js`) with credentials injected via config/env. The import
411
- must read from the extracted files on disk — not by re-reading the source into memory,
412
- and not by issuing writes through the agent/MCP.
413
- For targeted recovery, run the generated main import entrypoint with its selective
414
- resume flags rather than writing a migration-local one-off script:
415
- - `--entity <entity>`
416
- - `--source-type <subtype>`
417
- - `--missing-only`
418
- - `--failed-only`
419
- - `--deferred-only`
420
-
421
- `--missing-only`, `--failed-only`, and `--deferred-only` are mutually exclusive. The
422
- runner must print or persist the selected record set summary before writes begin. For
423
- native Wix entities, a local crosswalk hit must skip the create idempotently even if the
424
- record was selected earlier.
425
- If the execution manifest enables CMS mirror download, fetch CMS rows before this step
426
- and pass them to the deterministic state-preparation layer; the generated import may use
427
- only local crosswalk state after preparation succeeds.
428
- 5b. **App routes and internal links.** After relevant apps are
429
- installed, inspect/configure only the schema-backed per-family routes supported by
430
- `rp-target-wix` capability knowledge; store saved-state read-back under
431
- `state/url-preservation/app-page-routes.json`. After backend import, run the generated
432
- `internal-link-audit.js plan` input over the complete captured inventory. It performs
433
- local counting with no destination request or model call and writes
434
- `state/url-preservation/link-audit.json`. A backend-only run leaves destinations pending
435
- and unresolved occurrences without invented paths. Do not call the post-frontend
436
- `verify` entrypoint until the frontend exists. That step first makes at most 20 read-only
437
- calibration checks inside a two-minute sub-cap, records the estimate against the
438
- approved 30-minute live-work and 100,000 exception-review-token ceilings, then checks
439
- samples and destinations and invokes only compatible non-blog writers. Unknown or
440
- incompatible writer ownership blocks affected writes before mutation, while disjoint
441
- safe fields may proceed. Blog-post link writes remain pending until a dedicated writer
442
- can consume verified destinations through its checkpointed post-frontend lifecycle.
443
- Supply planned destination content revisions with containing record identities. The
444
- shared verifier applies structured patches once per logical record and field through
445
- its durable write journal; adapter callbacks supply revisioned read/write and rendered
446
- checks, not direct per-link repair. A budget hold survives re-planning and resumes only
447
- after the plan records the owner's decision reference and approved ceilings.
448
- Refresh the audit, completion report and website handoff after the post-frontend step
449
- and after affected source catch-up. Keep incomplete writer integration and unverified
450
- link coverage pending in those artifacts.
451
- 6. Use `lib/dependency-readiness.js` immediately before each dependent batch, including
452
- selective recovery. The generated importer binds its task, evaluates current readiness,
453
- and calls `gateBatch`; only its `send` payloads may reach a task-capability Wix client,
454
- carrying `sourceStableKey` and the current `readinessGrant`. A task-level unknown or
455
- unapproved exclusion stops before its first batch. A permitted partial per-record
456
- dependency defers only records whose required references are unresolved. Setup is
457
- all-or-nothing: every bound step must pass on the current destination before any
458
- setup-derived reference can resolve. An empty dependency passes only with a current
459
- complete zero-row extract and full task-pass evidence. Never infer readiness from task
460
- order, a success count, a crosswalk row alone, dry-run state, or prose best-effort consent.
461
- Capture compact reports, audit-log references, errors, retries, skipped records, and
462
- checkpoint information from the shared runtime outputs.
463
- Safe-mode outputs must be summarized by counts and paths only: include skipped
464
- safe-mode blocked record counts, the project-relative
465
- `state/safe-mode/blocked-records.ndjson` path when present, and the
466
- `state/safe-mode/email-replacements.ndjson` row count/path when replacement rows were
467
- written. Do not print original email addresses or phone numbers from the recovery
468
- ledger.
469
- 6b. **Reconcile bearer-voucher drift against a fresh source read — required, before cutover.**
470
- Run this after every write pass has finished and before anything declares the run
471
- complete. It is required whenever the accepted scope included coupons **and** the source
472
- carried at least one coupon with a usage limit. When neither holds, record
473
- `voucherReconciliation: "not-applicable"` in the completion report and do nothing else — a
474
- source with no usage-limited coupons still answers out loud, because silence and success look
475
- identical in a report.
476
-
477
- **Deadline: before cutover, while the source is still the system of record.** Two reasons,
478
- and together they are why running it late is the same as never running it:
479
-
480
- 1. the step compares a **fresh read of the source** against the target, and once the source
481
- stops being the system of record that fresh source read stops existing; and
482
- 2. the **target exposes no redemption count** for a coupon on any surface, so the question
483
- cannot be answered from the target alone afterwards.
484
-
485
- Miss the deadline and which codes were already spent becomes permanently unknowable, on an
486
- instrument made of money.
487
-
488
- **Use the shipped module, `rp-target-wix/lib/coupon-redemption-drift.js`.** A
489
- migration-local reimplementation of the classification, the plan, the request builder or the
490
- verification is forbidden: each one carries a trap that stays invisible until it costs money.
491
-
492
- 1. Re-read the source coupon rows **now** — never the discovery snapshot, which is precisely
493
- what went stale — and read each imported coupon back from the target.
494
- 2. Per import receipt: `classifyPostImportDrift({ receipt, freshCoupon, targetCoupon })`. It
495
- returns exactly five post-import outcomes: `voucher-drift-reconciled`,
496
- `voucher-drift-remedy-pending`, `voucher-source-row-missing`, `voucher-target-row-missing`
497
- and `voucher-target-state-unreadable`. An unsupported face-value precision is the boolean
498
- `verdict.facePrecisionUnsupported` riding alongside whichever of those five applies —
499
- wire on that flag; it is never `verdict.outcome`, so a branch for it in a
500
- `switch (verdict.outcome)` is a branch nothing can ever reach.
501
- 3. `buildVoucherDriftPlan({ verdicts, ordersByCouponCode, currency })` turns the verdicts into
502
- the owner-approval plan: `counts`, one `rows` entry per code carrying its face value, the
503
- orders that reference it and the proposed remedy, and `liability` — the money still live.
504
- The plan is `readOnly: true` and has no apply path, by construction. Run twice on the same
505
- inputs it produces the same plan.
506
- 4. **The owner rules per code, including in one-click mode.** One-click is a promise about how
507
- little the operator has to decide, never a licence to decide on the merchant's behalf about
508
- their money: deactivating a code a customer legitimately holds destroys value too, and the
509
- merchant might already have honoured a voucher off-system. Nothing in this step writes
510
- without an explicit per-code decision.
511
- 5. Build an approved remedy **only** with `buildRemedyRequest({ couponId, remedy, setTags })`.
512
- It emits the one request shape that actually writes — a specification carrying only the
513
- changed fields plus the matching field mask. **Never build the body from the coupon you
514
- just read:** the full specification alongside a narrow field mask is accepted with `200`,
515
- an empty body, and no write at all. Record the response status; do not interpret it.
516
- 6. Wait a settle, read the coupon back, and let
517
- `verifyRemedyApplied({ remedy, responseStatus, readBackAfterSettle, settleMs })` decide. A
518
- 2xx is not evidence. No read-back, a read-back that still shows the coupon live, and a
519
- read-back with no readable `active` flag are each `remedy-unverified` — reported unknown,
520
- never applied. For a deactivation, a coupon that does not read back at all is unknown too,
521
- never success.
522
-
523
- ⚠️ **This is not the coupon pass and must not be folded into it.** The coupon pass writes
524
- coupons; this step re-reads the source *afterwards*, which is the entire point. Run inside the
525
- import, it returns the answer the import already had.
526
-
527
- ⚠️ **It is not the rerun pass either** (see "Rerunning an import for new and modified
528
- records"). A rerun covers new and changed records; a voucher spent since the write is neither
529
- — nothing the rerun compares changed. They are separate obligations at an agreed cutover.
530
-
531
- ⚠️ **Expect to run this step more than once.** It is idempotent and safe at the end of every
532
- execution, but its deadline is cutover, so re-invoke it close to actual cutover. The
533
- completion record from the **last invocation before cutover** is the authoritative answer; an
534
- earlier `not-run` or `plan-pending-owner` is a warning that the obligation is still open, not
535
- a verdict that it was skipped.
536
-
537
- Record the result in `execution/completion-report.json` as `voucherReconciliation`, one of
538
- `not-applicable | reconciled | plan-pending-owner | remedied | not-run` (see "Completion
539
- report contract").
540
-
541
- 7. Save durable execution artifacts, including the authoritative completion artifact and
542
- deterministic user-facing completion summary.
543
-
544
- ## Contacts/Members disposition (safe-mode vs. real, live at the destination)
545
-
546
- LIVE-VERIFIED: when `SAFE_MODE=true` covers `crm/contact`, every created Contact carries a
547
- mock `replatform+contact_<id>@wix.com` email (see `mockEmailForEntity` in
548
- `rp-target-wix/lib/wix-writers.js`). What that means for login identity depends on whether
549
- `members/member` is itself a generated import target for this run, per `rp-import-codegen`'s
550
- member pass:
551
-
552
- - **`members/member` NOT in the generated scope:** the contact-import pass alone builds no
553
- Wix Members (`memberCrosswalk` is stubbed to always return `null` so order/blog author
554
- resolution has something safe to call), so no customer gets a real, usable login identity
555
- from this run at all — safe-mode or not. Promoting a contact to real-email-plus-Member is
556
- then a distinct, separate, later write (see `rp-target-wix/lib/wix-writers.js`'s
557
- `ensureMember` composite: read the contact's current revision, update its email/phone from
558
- the real source values only when the current email still matches the safe-mode mock
559
- pattern, then call `ensureMember` with the same real loginEmail so the created Member lands
560
- on that same contact rather than a duplicate).
561
- - **`members/member` IS in the generated scope:** the generated member pass runs `ensureMember`
562
- directly against each registered customer's REAL email in its own loop before order history,
563
- regardless of the `crm/contact` SAFE_MODE setting — that pass does not read or wait on the
564
- safe-mode mock email at all, it goes straight to `ensureMember({loginEmail: customer.email, ...})`.
565
- In this case customers DO get a real Member from the entity-import pass itself; a contact
566
- left on a safe-mode mock email from a separate `crm/contact` pass is not the same customer
567
- state as "no Member exists" and must not be reported as if it were.
568
-
569
- Do not state either version as the migration's blanket behavior without checking which one
570
- this run's actual generated scope produces.
571
-
572
- Two requirements follow, both non-negotiable when `crm/contact` is in scope:
573
-
574
- 1. **Ask before the contact import runs, in plain language — but only offer a choice the
575
- generated scope can actually honor, not by assuming a SAFE_MODE default:**
576
- - If `members/member` is NOT a generated target for this run: this pass never creates a
577
- Member either way (see above), so do not offer "create a Wix Member directly" as an
578
- option — that path does not exist without a member pass. Ask instead: "Import contacts
579
- with their real email now, or with temporary safe-mode emails for review first? Either
580
- way, no customer gets a Member or a login identity from this run alone — that is always
581
- a distinct, later step (add `members/member` to the scope, or run the separate
582
- promotion write afterward)." Record the answer in the execution plan/consent artifact
583
- next to the SAFE_MODE decision; do not let an unset `SAFE_MODE` env var (which defaults
584
- to `true`) decide this silently.
585
- - If `members/member` IS a generated target: do **not** offer the safe-mode-contacts
586
- choice at all. The member pass creates each registered customer's Member
587
- directly against their REAL email regardless of `crm/contact`'s own SAFE_MODE setting,
588
- and reconciles by that real loginEmail — a contact the SAFE_MODE pass created earlier
589
- under the mock email will not match it, so the member pass creates a SECOND, separate
590
- contact on the real email instead of landing on the existing one. This is a real
591
- duplicate-contact gap, not a hypothetical: the ordering rule needed to prevent it (never
592
- pre-create a safe-mode contact for someone who will become a member) is tracked as an
593
- open, unresolved decision, not something already implemented. Until that ordering is
594
- implemented, `crm/contact` must run in real-email mode whenever `members/member` is
595
- also in scope, and the plan must say so plainly rather than presenting a safe-mode
596
- choice it cannot deliver.
597
- 2. **Every completion/status summary that touches contacts must report the disposition
598
- explicitly and by count**, whichever path was chosen: how many contacts still carry a
599
- safe-mode temp email with no Member (and therefore need a follow-up promotion run before
600
- they have a real email on file or can log in), vs. how many were promoted to a real email
601
- + Member. A status report that only says "N contacts imported" without this breakdown is
602
- incomplete — the operator cannot tell from that alone whether any customer can currently be
603
- reached or log in.
604
-
605
- ## Email marketing consent
606
-
607
- When the source records a real per-record consent signal for marketing email (e.g. a
608
- WooCommerce order's checkout consent-checkbox meta, not mere presence as a customer), do not
609
- write it to Wix Email Subscriptions yet. `crm/email-subscription`'s `bulkUpsertEmailSubscriptions`
610
- writer (`rp-target-wix/lib/wix-writers.js`) is mechanically live-verified — keyed by email
611
- address, covers guest-checkout consent with no Contact behind it, sets a status only with no
612
- confirmation/marketing email triggered — but the entity's `preferredWrite.importSafe` stays
613
- `false` because two product decisions are still unresolved: how several orders for one email
614
- fold to a single subscription state (`order-scoped-consent-has-no-decided-fold-rule`), and
615
- whether Email Subscriptions or the separate Marketing Consent API is the authoritative write
616
- target (`email-subscriptions-vs-marketing-consent-api-unresolved`). Surface the gap and these
617
- two open questions to the user rather than deciding either one inside an import run; only
618
- proceed once both are resolved and `importSafe` reflects that.
619
-
620
- ## Rerunning an import for new and modified records
621
-
622
- The source keeps trading after an import finishes: newer records arrive, earlier
623
- records change, earlier failures are still missing. A rerun reuses the same project,
624
- destination, mapping, generated importer and crosswalk — it is not a fresh migration, and any
625
- mapping or scope change goes back through the existing gates.
626
-
627
- Catch-up may extend the end of the range to the new capture time. It does **not** pull older
628
- history the accepted scope excluded, and it does **not** propagate deletions.
629
-
630
- ⚠️ A rerun does **not** cover bearer-voucher drift, and must never be reported as having done
631
- so. A voucher spent at source since the import is neither a new record nor a changed one in
632
- anything `selectRerunRecords` compares. That obligation is workflow step 6b, it is separate,
633
- and it is deadlined at cutover.
634
-
635
- **Selection.** Refresh the agreed scope and bucket it against the crosswalk with
636
- `lib/import-recovery.js`'s `selectRerunRecords` — create missing, skip unchanged, update
637
- changed, and report `unknown` where there is no usable comparison evidence. The pre-existing
638
- `--missing-only` and `--failed-only` filters are **not** a delta between them: missing-only
639
- excludes every crosswalk hit, so a changed record is never seen, and failed-only only revisits
640
- what was already attempted. Read refreshed files covering the whole agreed scope; a
641
- modified-since optimization is allowed only when it still includes boundary records, older
642
- retries and unresolved decisions.
643
-
644
- **The version pair.** Every confirmed write records the source's version (`sourceVersionField`
645
- + `sourceVersion`, or a declared `sourceHash` fallback) and the Wix `targetRevision` returned by
646
- that write, via `nextCrosswalkBaseline`. A confirmed write that returns **no** revision does not
647
- advance the pair at all — **including a first create**. Half a pair is not a baseline: a source
648
- version saying "applied" with no revision leaves the next update with no concurrency guard, and
649
- on a re-write it would pair a new source version with a pre-write revision and self-conflict.
650
- Both reconcile instead. A linked record with no saved revision is likewise reported `unknown`
651
- rather than updated, which also covers legacy rows written before the pair existed. Treat both as opaque; never increment a revision
652
- locally. A failed, conflicted, dry-run or skipped write **must not** advance the pair — that is
653
- what keeps the record eligible for recovery instead of recorded as applied. Missing metadata on
654
- an old row is `unknown`, never "unchanged".
655
-
656
- **Conflicts are a user decision, including in one-click mode.** When Wix rejects an update
657
- because its revision moved, stop updating that record and show the user the error, the record,
658
- and the source changes proposed for it — `lib/rerun-conflicts.js` builds that review and
659
- classifies the error. Ask once per record, not per field. **Never silently fetch a newer
660
- revision and retry**; there is deliberately no such helper. Unrelated records continue; work
661
- depending on the unresolved update stays blocked.
662
-
663
- ⚠️ **The conflict-code list is incomplete by design.** Only `INVALID_REVISION` has been
664
- observed live (on a delivery profile). Products v3 and Contacts v5 conflict codes
665
- are **not** known, so they are absent rather than guessed. Two things keep that safe: the
666
- accepted mapping can declare an entity's real codes (`entityConflictCodes`), and an
667
- unrecognized 409 on a revision-carrying update classifies as `possible_revision_conflict` —
668
- which goes to a human, never to an auto-retry and never silently into an ordinary failure. When
669
- a real conflict code is observed, record it in the entity's declared codes and in
670
- `OBSERVED_REVISION_CONFLICT_CODES` with its evidence.
671
-
672
- On **override**, read the latest Wix record, show which values would be replaced, and write
673
- against the revision the user actually reviewed. A further conflict is another decision. On
674
- **keep**, leave Wix alone and record the choice against that exact source version and reviewed
675
- revision in the recovery log — never as a crosswalk baseline, because the source version was
676
- never applied — persist it through the recovery entry's `conflictDecisions[]` and read it back
677
- with `latestConflictDecisionFor`, so a later rerun does not re-ask a question the user already
678
- answered or silently overwrite what they chose to keep. `loadRecoveryLog` returns an **array**;
679
- pass it straight in. Do not report a kept change as imported,
680
- and do not retry it silently later.
681
-
682
- **Dependencies and safety.** Resolve contacts, products and other dependencies before their
683
- dependants. A record with an uncertain prior attempt (`deferred`, `needs_verification`,
684
- `succeeded_unverified`, `started`) is reconciled before it is written — `selectRerunRecords`
685
- routes it to `needsReconciliation` whether it is linked or not. Unlinked, an unconfirmed earlier
686
- write may already exist and creating again would duplicate it. **Linked, the danger is subtler:**
687
- if the previous write landed and the process died before saving its baseline, the saved revision
688
- is already stale, so re-sending it makes the importer collide with its own write and report that
689
- to the user as a merchant edit.
690
-
691
- Updates touch only the fields the accepted mapping covers and preserve unrelated Wix values.
692
- Each entity needs a verified update operation **and** conflict protection; without both,
693
- `updateSupportFor` returns `report_for_review` and the record is reported rather than pushed
694
- through a create/import operation. This is **enforced in code**, not only documented: the
695
- accepted mapping declares `{ writerId, revisionParam }` per entity, and an entity missing
696
- either is refused. It **fails closed** — a rerun that does not declare `targetEntityRef` at all
697
- gets `report_for_review` for every changed record, because an absent declaration is not evidence
698
- that an update is safe. The order family (`ecom/order` and its child entities) is denied outright
699
- with `neverFallBackToCreate` — Update Order exposes a restricted field set and no general
700
- revision parameter, and a same-id Import Order is an unguarded whole-body replacement that
701
- clears omitted fields.
702
-
703
- **Scope and deletions.** Pass the accepted scope as `inScope`; excluded records are reported
704
- `outOfScope` and never actioned. Deletions need no rule beyond the refreshed set: a record
705
- absent from the source is never iterated, so absence can never become a delete instruction.
706
-
707
- **Reporting.** Before writes, show the selected scope with counts of new, changed, unchanged
708
- and unresolved. Afterwards report created, updated, unchanged, kept-in-Wix-by-user-choice,
709
- conflicted, failed, blocked and out-of-scope, with errors and affected records. Unknown counts
710
- are not zero. Name the source capture time: a trading source may need another rerun or an
711
- agreed cutover.
712
-
713
- ## Required final report contents
714
-
715
- When execution finishes, the deterministic completion outputs must explicitly include:
716
-
717
- - the destination site's **dashboard URL**
718
- - the destination site's **editor URL** only when editor work was actually performed or
719
- the next required step is explicitly in the editor
720
- - the current **preview URL** only when public route/site verification is relevant to the
721
- completed work
722
- - whether store routes such as product/cart/checkout were verified or still unverified
723
- - URL preservation counts: base paths captured, URL ledger rows written, redirect plans
724
- recorded, unresolved public URLs, and manual-review URL rows
725
- - safe-mode counts: email fields replaced, phone fields replaced, records skipped with
726
- `SAFE_MODE_SUSPICIOUS_EMAIL`, and the project-relative safe-mode ledger paths. Do not
727
- include original email addresses or phone numbers.
728
- - dry-run counts when `dryRun: true`: requests built, Wix calls skipped, would create,
729
- would update, would delete, would require live lookup, and local validation failures.
730
- Do not report dry-run rows as created, updated, imported, installed, published, or
731
- verified in Wix.
732
- - blocked-data request outcomes from `completion-report.json`, including every dependent
733
- entity/field outcome, the worst-severity aggregate, whether a used snapshot is stale, and the
734
- exact snapshot version/extraction timestamp/checksum. A 1-click `missing` request must say the
735
- run did not pause to ask; an invalid input that fell back successfully is a warning, not a
736
- write failure.
737
- - an explicit statement that URL redirects/site routing were not applied in the current
738
- import phase when `urlPreservation.applyRedirects` is `false`, the old-link status from
739
- `completion-report.json.urlPreservation`, and that old emails and bookmarks may fail until
740
- redirects are applied and verified on the public domain
741
- - a plain-language distinction between:
742
- - **catalog/data imported successfully**
743
- - **website/homepage built successfully**
744
- - **the voucher-reconciliation answer — in every terminal report of a run whose accepted
745
- scope included coupons** (workflow step 6b). State in plain language which of
746
- `not-applicable`, `reconciled`, `plan-pending-owner`, `remedied` or `not-run` the run
747
- recorded, and say what it means: `plan-pending-owner` means money is still redeemable a
748
- second time on the merchant's live store and the owner has decisions outstanding per code;
749
- `not-run` means the step was due and did not happen, and that the answer expires at cutover
750
- because the fresh source read stops existing and the target exposes no redemption count.
751
- Never infer this from the coupon write counts — report the recorded field, and report a
752
- missing field as `not-run`.
753
- - **notification-mute state — in every terminal report** (completed, halted
754
- to needs-user, or aborted; an aborted run is exactly the case where the owner is least
755
- likely to remember the mute happened). Derive "was muted" **only from recorded state**
756
- — the `mute-site-notifications` item in `setup/setup-verification.json` and the import
757
- run's preflight log entries — never from strategy/config inference. When a successful
758
- mute is recorded, state in plain language that **all site notifications are currently
759
- muted** and stay muted until re-enabled; that the owner can **simply ask the agent to
760
- unmute them** (on request the agent calls `unmuteSiteNotifications` and confirms
761
- `muted: false` via `getSiteMuteState`); and how to re-enable manually. For existing
762
- sites this line is mandatory and prominent. If no successful mute is recorded, do not
763
- claim the site is muted — for a run where mute was in effect, that is a blocker that
764
- should already have stopped the import at the preflight.
765
-
766
- Do not report a successful catalog import as if it automatically means a finished
767
- website. If the homepage/root preview is still blank or no site shell has been built,
768
- say that explicitly in the final report.
769
-
770
- State the **delivery mode** explicitly (see `wix-replatform` → "Delivery mode"):
771
-
772
- - **`management` mode (default):** report that the deliverable is a **Wix-managed headless
773
- backend** — data migrated and manageable from the dashboard, with **no customer-facing
774
- website built (by design)**. Do not frame the missing storefront as an incomplete result.
775
- You may note that a storefront can be generated on request (website mode, via
776
- `wix-headless`), but do not build one unless the user asks.
777
- - **`website` mode:** report the **storefront URL** produced by `wix-headless` and confirm
778
- the released site serves the migrated catalog (not demo data).
779
-
780
- ## Inventory completion and resume
781
-
782
- Run the generated inventory reconciliation for new AND previously crosswalked products.
783
- Require the current inventory setup/canary receipt before stock writes, retaining the run's
784
- notification guard. After each batch persist stock outcomes separately from product success.
785
- If stock failed, resume only stock using existing product/variant IDs; never recreate a
786
- product or increment a quantity to recover it.
787
-
788
- Include `state/inventory-report.json` in the completion inputs: intended variant denominator,
789
- reconciled/created/updated, failed/unverified, and source decision-needed counts. Unknown stock
790
- and missing variants remain visible. Any unresolved inventory makes catalog completion partial;
791
- a product count or HTTP 200 cannot clear it. Compare source versus verified target availability
792
- per variant and summarize out-of-stock counts. A source with available variants cannot pass
793
- with an entirely unavailable target. Dry-run inventory outcomes are simulated, never live proof.
794
-
795
- ## Completion artifact authority
796
-
797
- At the end of the run, artifact authority should be explicit:
798
-
799
- 1. `execution-log.md` is authoritative for chronology and operator/debug context only
800
- 2. `execution/completion-report.json` is authoritative for final outcome
801
- 3. `execution/review/completion-summary.md` is the deterministic user-facing rendering of
802
- `execution/completion-report.json`
803
-
804
- This skill should not treat `execution-log.md` as the canonical source for final
805
- imported/skipped/failed counts when `completion-report.json` exists.
806
-
807
- That ordering is unchanged. What changed is that all four artifacts now actually get written,
808
- by shipped code, rather than being required by this document and produced by nothing:
809
-
810
- - `execution-log.md` — `appendExecutionLog(projectDir, entry)` in `lib/execution-log.js`.
811
- Append-only: a resumed or recovery pass adds entries and never truncates or regenerates the
812
- file, and every entry carries its own `runId` so a later pass's entries are distinguishable
813
- from the first pass's without reading timestamps. Append one entry per lifecycle event: each
814
- import step started and finished, every batch flush, every recovery pass, the completion
815
- write, and the handoff generation.
816
- - `execution/completion-report.json` and `execution/review/completion-summary.md` —
817
- `writeCompletionReport(projectDir, report)` in `lib/completion-report.js`. The summary is
818
- **rendered from the report object**, never composed independently and never derived from
819
- `execution-log.md`. The writer itself joins source coverage (below); pass it the report from
820
- `createCompletionReport` unchanged and never add `sourceCoverage` yourself — it refuses that.
821
- - `execution/live-import-summary.json` — `writeLiveImportSummary` in `lib/import-recovery.js`,
822
- called after **every batch**, not once at the end. See "Per-batch accounting" below.
823
-
824
- For order history, use the generated accounting block from `rp-import-codegen`: collect the
825
- final per-order stage outcomes with `collectOrderStageResiduals` and pass its rows to
826
- `createCompletionReport` before calling `writeCompletionReport`. Omitted stage accounting is
827
- refused for order reports. Persist these compact outcomes with batch accounting and restore
828
- them on resume; a retry is not a second imported order, and a recovered stage must replace
829
- its earlier failure. Check the saved report and summary for both the incomplete status and
830
- the affected source keys when any payment, refund, or invoice stage failed.
831
-
832
- `appendExecutionLog` is not a heartbeat. Liveness and progress output for watching a running
833
- script is `lib/progress-log.js`, writes to a caller-supplied path, and is a separate contract.
834
-
835
- ### Poll the health-check script, and redispatch on a stalled verdict
836
-
837
- Do not drive a long-running generated `run-import.js`/`run-extract.js` by raw `tail -n 1`
838
- alone once it has been launched. After dispatching the script, poll
839
- `skills/wix-replatform/scripts/execution-health-check.js <projectDir> [--script <name>]
840
- [--stale-after <duration>]` on an interval — default every 3 minutes; a shorter interval is
841
- fine for a small run — instead of, or in addition to, the raw last-line tail. The
842
- script reads `execution/progress.ndjson` and `execution/completion-report.json` and
843
- answers exactly one question: `healthy`, `stalled`, or `complete`.
844
-
845
- On a `stalled` verdict, treat it **exactly like a crashed process already found in
846
- `execution/progress.ndjson`** — the same recovery as any other abnormal exit: redispatch a
847
- fresh run from the last durable checkpoint. Never wait indefinitely on a subagent's own
848
- promised resume ("it will pick back up on its own") once the health check reports
849
- `stalled`; a subagent's own claim about its future behavior is not evidence, and what
850
- this check exists to catch is a healthy run mistaken for one that would
851
- never call back. A `healthy` verdict is not itself proof of eventual completion — keep
852
- polling on the same interval until the verdict is `complete` or `stalled`.
853
-
854
- Before redispatching on a `stalled` verdict, confirm the project's `run-import.js` (or
855
- `run-extract.js`) was actually generated with the heartbeat wrapping — a project
856
- codegen'd before this instruction existed may have entity-pass functions that never call
857
- `withHeartbeat`/`startHeartbeat` at all, in which case `stalled` reflects an instrumentation
858
- gap in that generated file, not the process. Grep the generated script for `withHeartbeat` /
859
- `startHeartbeat`; if a write loop is missing it, retrofit that loop the same way
860
- `rp-import-codegen/SKILL.md` describes for newly generated code before trusting the verdict
861
- enough to kill and redispatch.
862
-
863
- ### Entity-by-entity QA is mandatory before treating an import phase as done
864
-
865
- `wix-replatform`'s router requires a phase-level QA subagent at the end of the import phase
866
- (its "Route before acting" step 5). For import, that review must be entity-by-entity against
867
- the accepted mapping plan (`mapping/entity-decisions/*.json`), not a read of the top-level
868
- `status` field in `execution/completion-report.json` or a paragraph of prose asserting the run
869
- went well. A dedicated QA subagent — never the Developer subagent that produced the report,
870
- and never the routing agent's own read of the summary — must, for every mapped entity/subtype:
871
-
872
- - confirm its `completion-report.json` row reconciles (`imported + alreadyPresentByCrosswalk +
873
- deferred + failed == inScope`) and is backed by real rows in `state/attempts/write-attempts.ndjson`
874
- or `state/crosswalk/crosswalk.ndjson` — a bare counter with no corresponding ledger rows is a
875
- swallowed error, not a clean pass;
876
- - for any entity reported blocked, deferred, or skipped, independently re-verify the stated
877
- reason is still true right now (spot-check the live source data or the live destination API,
878
- not the report's own prose) — a blocked reason written on an earlier pass can go stale the
879
- moment its underlying cause is fixed elsewhere, and nothing re-checks it automatically;
880
- - treat "the user already decided to defer this" as a real answer only when a decision file
881
- actually records that choice; an assumption that a gap must be a deferred product decision,
882
- invented to explain why nothing ran, is not a substitute for checking.
883
-
884
- If QA finds a stale reason, an unverified blocked status, or a swallowed failure, it must
885
- demand a fresh Developer dispatch for that entity before the phase is reviewed — a plausible
886
- top-level status string never closes this out on its own. Repeat this full entity-by-entity
887
- pass after every resumed or recovery run, not only the first: a dispatch that fixes one
888
- entity's crash or slowness does not certify any other entity's completeness, and a phase
889
- already marked reviewed goes back to "needs review" the moment a later pass changes its
890
- completion report.
891
-
892
- **Finish the pass by writing the attestation, not by saying so in prose**. Once
893
- every mapped entity/subtype above has been checked, compile the per-entity results (the ten
894
- `completion-report.js` fields for a full-mode row, or `imported`/`skipped` for a quick-mode
895
- row, plus `blockedReasonsReverified` for any row with a blocked, deferred, failed, unresolved
896
- or skipped count) into a JSON array and run:
897
-
898
- ```
899
- node skills/wix-replatform/scripts/entity-qa-attestation.js <projectDir> \
900
- --entities-file <path to the compiled per-entity results> \
901
- --verified-by <QA subagent label>
902
- ```
903
-
904
- This computes the completion report's own digest, resolves the independent mapped-entity
905
- coverage source (`mapping/mapping-plan.json`, or `quick-mode/plan.json` for quick mode), and
906
- writes `execution/qa/entity-qa-attestation.json` only if it validates. Finalization
907
- (`orchestration-router.js` / `scripts/migration-completion.js`) now refuses without a fresh,
908
- complete attestation matching the report that is shipping — a missing, stale or failed
909
- attestation routes the run back to this pass, never to a silent "completed". A count the
910
- writer reports as mismatched is the same defect this section already requires: send that
911
- entity back to a fresh Developer dispatch, then re-run the full pass and the writer.
912
-
913
- ## Per-batch accounting
914
-
915
- Flush the run's accounting into the project after every batch, through the same shared writer
916
- that produces the final record. An importer that holds its counters until the end loses them to
917
- any interruption, and a long import redirected to a temporary file loses them to the shell; a
918
- run that dies halfway must still leave a truthful partial account.
919
-
920
- **Counts are held, never re-derived.** The figures come from the importer's own counters for the
921
- current run. A count recovered by re-reading the append-only attempt ledger afterwards sweeps in
922
- dry-run passes, retried batches and earlier recovery passes — that is how a run's counts inflate well past the number of records.
923
-
924
- ### Coverage check against the attempt journal
925
-
926
- Every `writeLiveImportSummary` flush that names a run id checks its held counters against that
927
- run's own rows in `state/attempts/write-attempts.ndjson`, and adds the result as `coverageCheck`
928
- on the written summary. The held counters are never replaced; a disagreement is reported, not
929
- hidden, and the write still completes.
930
-
931
- At the end of the run, pass the run's own `coverageCheck` to `createCompletionReport` — read it
932
- back from `execution/live-import-summary.json` and use it only when its `runId` equals the run
933
- being completed (`input.runId`); `live-import-summary.json` is one file shared by every run,
934
- so "the last `coverageCheck` in the file" is never a safe substitute for checking the run id. Also
935
- pass `coverageCheckExpected: true` whenever this run called `writeLiveImportSummary` with a run id
936
- at least once, so an omitted or rejected-run-id check is recognized as this run's own unresolved
937
- gap rather than silently ignored. This is opt-in: an existing importer that
938
- has not adopted this contract never sets `coverageCheckExpected`, and a missing check there changes
939
- nothing — do not set it for a project that never calls `writeLiveImportSummary` with a run id.
940
-
941
- Do not present a held count as confirmed before this check runs: `coverageCheck.status` is
942
- `"agrees"`, `"mismatch"`, or `"unchecked"`, and only `"agrees"` means the journal
943
- corroborates it.
944
-
945
- ## Reporting records that did not arrive
946
-
947
- Records that did not arrive go into four separate sections of the completion report, never
948
- merged into one list of issues, because they need four different responses:
949
-
950
- | Field | Meaning |
951
- | --- | --- |
952
- | `losses[]` | Permanent losses — the destination cannot represent the record and no retry changes that |
953
- | `exclusions[]` | Deliberate exclusions — we chose not to import these, with a count, a rationale, and whether an operator gate was recorded |
954
- | `unresolved[]` | Written to the destination but not mapped, or mapped but unaccounted |
955
- | `droppedFields[]` | The record arrived in a degraded form — the one that vanishes most easily, because the record count reconciles perfectly |
956
-
957
- Each section renders even when empty, with an explicit "None." An omitted section is
958
- indistinguishable from one nobody checked.
959
-
960
- Anything the operator must do by hand goes in `operatorActions[]`, which renders **above** the
961
- counts, each entry carrying a severity and a deadline reason.
962
-
963
- `writeCompletionReport` also appends source access that outlives the migration
964
- (`lib/source-access.js`). For a Shopify private-data run that connected, that is
965
- `shopify-staff-account-removal` (`high`, entity the store domain): the store owner removes the
966
- migration staff account after cutover and after the last Shopify read. It is listed on every
967
- report, including an otherwise complete one, until the Import Operator records the owner's
968
- confirmation with `rp-source-shopify` `scripts/shopify-session-check.js --confirm-staff-removal
969
- owner-removed-account`; when the record is unreadable or missing the action says so and
970
- `--repair-staff-access` rebuilds it as pending. It never changes the report's status.
971
-
972
- For a Shopify run with any `shopify:customer-<kind>`, `shopify:order-<kind>` or
973
- `shopify:customers-withheld-identity` coverage row, the writer also appends
974
- `shopify-withheld-details-export` (`high`). A loss disposition does not close it: Shopify still
975
- holds the only copy. After the final catch-up, the merchant exports customers and orders from
976
- Shopify Admin; **Requires Import Operator** to run `rp-source-shopify`'s
977
- `shopify-discovery.js --project <project> --confirm-withheld-export owner-exported`, regenerate
978
- the report and verify the action is gone. A later extract `readAt` or a new withheld row reopens
979
- it. The catch-up/checklist integration is not wired yet; the completion report is the
980
- current durable handoff.
981
-
982
- Shopify extract stop codes (`rp-source-shopify`), each a stop, never a retry loop. A source
983
- catch-up (rerun for new and modified records) runs `shopify-extract.js --catch-up`, which reads
984
- the whole store again in full; its **final re-read after Shopify activity stops** is a cutover
985
- task for the Import Operator (check that `data/source-extract/extract-manifest.json` is
986
- `complete` and every `readAt` is after the time activity stopped):
987
-
988
- | Code | Meaning / next step |
989
- | --- | --- |
990
- | `source_auth_expired` | The CLI session lapsed. The stopping script creates a `manual_action` (`stage: execution`); run the session check (with `--connect` if asked), answer it, and the extract resumes from its manifest. **Requires Import Operator** |
991
- | `shopify_throttled` | Shopify throttled one read on all 6 calls (31 s of backoff); re-run the extract later |
992
- | `shopify_bulk_overdue` | A Shopify bulk export is still preparing after 4 hours. The extract holds at `awaiting_user_action` (exit 3) with one `question` action: answer `wait` (4 more hours) or `abort`, then run `shopify-extract.js` again. No duplicate question is created on restart |
993
- | `shopify_bulk_overdue_aborted` | The operator answered `abort`: that dataset is `failed` with its `capture-failed` row `shopify:<entity>`; Shopify's operation is not cancelled. **Requires Import Operator**: `shopify-extract.js --retry-failed` reads it again |
994
- | `shopify_bulk_failed` | A bulk dataset failed twice, was refused with `ACCESS_DENIED` and an unattributed cause, or is still `failed` from an earlier start. The extract stops on every start until the operator runs `shopify-extract.js --retry-failed` after fixing the cause in the message; then record the coverage decision `provided` for `shopify:<entity>`, or show the merchant the row at mapping. **Requires Import Operator** |
995
- | `shopify_protected_fields_withheld` | A customer/order denial was re-probed with four ordinary 3-record reads and one or more error paths named a newly withheld kind, or a customer had no readable identity after projection. The new row is already upserted and promoted. Return through mapping for that exact coverageId; after mapping, the denied query resets with the narrower projection and finished queries do not rerun. A pathless or unrelated diagnostic uses `shopify_bulk_failed` instead and never narrows the projection |
996
- | `shopify_bulk_download_failed` | The bulk file could not be downloaded whole (wrong status, size, final newline or a line that does not parse; or expired links) after the bounded retries. Same recovery as `shopify_bulk_failed` |
997
- | `shopify_bulk_orphan_child` | A bulk file had a child row with no parent, or of a type the adapter does not fold. Same recovery; report it, because the bulk format may have changed |
998
- | `shopify_extract_count_short` | The extract received fewer customers or orders than Shopify's exact count. The row `shopify:customers` / `shopify:orders` goes back through mapping for the merchant's decision; `--retry-failed` reads the dataset again |
999
- | `shopify_extract_count_inexact` | Shopify gave only an "at least" count (or the count read failed). Never a pass: same row and recovery |
1000
- | `shopify_gift_card_codes_unreadable` | Gift cards first appeared during extract. `shopify:gift-card-codes` was added and promoted; return to mapping for its disposition before continuing |
1001
- | `shopify_gift_card_count_short` | The gift-card bulk read contains fewer cards created by its start than Shopify's exact count. The entry is `failed`; fix the cause and run `shopify-extract.js --retry-failed` for a new gated read. **Requires Import Operator** |
1002
- | `shopify_gift_card_count_inexact` | Shopify returned a non-`EXACT` count, rejected the read-bound filter, or the count still failed after its bounded retries. Same failed-entry recovery; never treat it as zero or nothing owed |
1003
- | `shopify_gift_card_amount_invalid` | A gift-card balance or initial value was not a plain decimal. The gated read failed before `done`; fix/report the source shape and use `--retry-failed` |
1004
- | `shopify_extract_store_mismatch` / `shopify_extract_files_missing` | The extract manifest belongs to another store, or says `complete` but its final files are gone (run `shopify-extract.js --catch-up`). Nothing was read or changed |
1005
- | `shopify_cli_node_unsupported` | Node.js older than 22.12: switch this terminal to Node.js 22.12 or later (for example the current LTS), check `node --version`, run the session check again. Nothing was installed or read. **Requires Import Operator** |
1006
- | `shopify_cli_version_changed` | The adapter's CLI is not 4.8.3; reinstall through the session check with `--install` (operator consent) |
1007
- | `shopify_cli_incompatible` | The adapter's CLI install is damaged; reinstall with `--install` |
1008
- | `shopify_api_version_unsupported` | Shopify no longer accepts the pinned API version; stop and report — moving the pin is a tested code change |
1009
-
1010
- ### CMS fallback for recognized plugin capabilities
1011
-
1012
- A recognized plugin capability reaches CMS only with a signed eligibility entry **and** this
1013
- migration's merchant approval (`pluginCmsFallback:<capability>`, recorded at the mapping
1014
- review). Apply only the CMS fallbacks the merchant approved; write nothing for pending or
1015
- declined ones; never delete or overwrite CMS data an earlier run wrote.
1016
-
1017
- **Write-time guard (before any CMS write of a recognized capability).** Run it with the
1018
- capability the plan is about to write, and write zero records for it unless it is allowed:
1019
-
1020
- ```bash
1021
- node skills/wix-replatform/scripts/cms-fallback.js guard --project-dir <project> --capability <capability>
1022
- ```
1023
-
1024
- Exit `2` means refused: the coverage row is not an approved CMS fallback, the approval fails
1025
- the shape check or no longer matches the register, or the current resolution digest differs
1026
- from the one in `plugin-coverage.json`, the mapping plan or the setup plan. Generated import
1027
- code may call `cmsFallbackWriteGuard(projectDir, { attempted })` from
1028
- `skills/wix-replatform/lib/plugin-cms-fallback.js` directly. The router is the primary gate;
1029
- this is defence in depth.
1030
-
1031
- **Completion.** Pass `cmsFallback: { coverage, refusals, writes, previousReport }` to
1032
- `createCompletionReport` — `coverage` is `discovery/plugin-coverage.json`, `refusals` the
1033
- guard's refusals, `writes` this run's CMS writes per approved capability
1034
- (`{ capability, collections[], count }`), `previousReport` the prior
1035
- `execution/completion-report.json` when one exists. It derives one operator action per case
1036
- and persists `cmsFallbackWrites` for the next run:
1037
-
1038
- | `code` | Severity | When |
1039
- | --- | --- | --- |
1040
- | `plugin-cms-fallback-feature-absent` | medium | an approved fallback: records archived in CMS; the plugin's feature is not restored — rebuild or replace it in Wix |
1041
- | `plugin-cms-fallback-undecided` | high when records exist | eligible but pending (awaiting, stale, quarantined, or target knowledge unavailable): records were not migrated |
1042
- | `plugin-cms-fallback-declined` | high when records exist | the merchant declined: records were not migrated |
1043
- | `plugin-cms-fallback-withdrawn` | high | CMS records written by an earlier run under an answer that no longer applies (declined, stale, superseded by a native target, no longer eligible): names the collection(s) and count; the Cutover Operator keeps or removes them by hand |
1044
- | `plugin-cms-fallback-write-refused` | high | the write-time guard refused a write. **Requires Import Operator:** rerun from the router so coverage and both plans are regenerated, then import again |
1045
-
1046
- Resolution stays split: a reconciled CMS collection resolves *storage* only; the
1047
- `feature-absent` item is resolved only by a manual check that the replacement feature works on
1048
- the Wix site.
1049
-
1050
- ## Cause attribution
1051
-
1052
- A failure carried into the completion report or the handoff takes one of exactly three shapes.
1053
- There is no fourth, and no bare free-text cause:
1054
-
1055
- | `causeConfidence` | Requires | Renders as |
1056
- | --- | --- | --- |
1057
- | `verified-source` | a named destination-side check that ruled the destination out, recorded with its result | the cause, followed by the check |
1058
- | `verified-target` | a named destination-side check that confirmed a destination or same-run cause | the cause, followed by the check |
1059
- | `unverified` | nothing | `cause unverified`, and **no cause text at all** |
1060
-
1061
- The check is recorded as `{ kind, target, result }`. An `unverified` row must not carry a
1062
- `cause` string — `writeCompletionReport` refuses one that does. A hypothesis printed next to the
1063
- word "unverified" is read as a finding by everyone skimming. A migration must not copy a source
1064
- defect forward, and it must equally not invent one: an unchecked "the source data is bad" costs
1065
- the merchant a trip into their old platform to fix data that was never broken, and it closes the
1066
- only investigation that would have found the real cause.
1067
-
1068
- ## Localhost media before live import
1069
-
1070
- When source media URLs are local/private, ask the user to choose one path before live
1071
- media writes:
1072
-
1073
- - Expose the source with a public HTTPS tunnel such as ngrok:
1074
-
1075
- ```bash
1076
- brew install ngrok
1077
- ngrok config add-authtoken "<YOUR_AUTHTOKEN>"
1078
- ngrok http 8090
1079
- export WP_BASE_URL=https://<id>.ngrok-free.app
1080
- ```
1081
-
1082
- - Or skip/defer media import and record the effect on hero images, galleries, downloadable
1083
- files, and other media-dependent references.
1084
-
1085
- Non-media entities may continue if the execution plan clearly excludes or defers media.
1086
-
1087
- ## Artifact to create or update
1088
-
1089
- - `migrations/<project>/execution-log.md`
1090
- - `migrations/<project>/execution/live-import-summary.json`
1091
- - `migrations/<project>/execution/completion-report.json`
1092
- - `migrations/<project>/execution/review/completion-summary.md`
1093
- - `migrations/<project>/execution/review/migration-handoff.md` and its
1094
- `migration-handoff.json` sidecar — the run's account of the migration, generated **after the
1095
- last write** from the final outcome record. `generatePostExecutionHandoff` refuses and returns
1096
- a typed reason when there is no `execution/completion-report.json`; it never writes a clean
1097
- document from the plan
1098
- - `migrations/<project>/execution/recovery-log.json` for every resumed, partial,
1099
- missing-only, failed-only, deferred-only, or unresolved-only run
1100
- - `migrations/<project>/execution/unresolved-writes.ndjson` — the re-read queue: one row per
1101
- record whose latest journal status is unresolved (`succeeded_unverified`, or a `started` row
1102
- with no terminal follow-on). A projection rebuilt from the attempt journal, never a source of
1103
- truth; deleting it loses nothing
1104
- - `migrations/<project>/state/attempts/write-attempts.ndjson` — the append-only per-record
1105
- ledger. Never rewritten, trimmed or rotated; a validation pass writes to
1106
- `state/sample/attempts/write-attempts.ndjson` instead and never opens this file
1107
- - audit/report artifacts emitted by the shared import runtime
1108
-
1109
- ## Dependency recovery and cutover handoff
1110
-
1111
- Read `execution/dependency-readiness.json` for task blockers, affected source keys and the
1112
- named recovery. The gate derives it from current site-bound task passes, latest attempt
1113
- outcomes, verified local mappings, setup receipt and approved census/field rules; editing
1114
- the projection cannot unlock writes. Preserve `state/readiness/task-passes.ndjson` across
1115
- resumes. Legacy or foreign-site evidence requires the named reconciliation/read-back.
1116
- Never adopt an unverified candidate ID or resend an order to repair dependency evidence.
1117
-
1118
- Retain record deferrals in the existing attempt journal and reference-fidelity/cardinality
1119
- gaps in `mapping/review/mapping-gaps.json`. Generate the shared completion report so its
1120
- `operatorActions` carry the affected work, prerequisites, next action, resolution evidence
1121
- and **Requires Import Operator** / **Copy prompt for Import Operator** instructions.
1122
- The Cutover Operator works on another machine: recovery requiring the original project
1123
- must name that role and prompt. Resolve the underlying producer/approval/reference,
1124
- reevaluate, then resume only eligible deferred records. These artifacts preserve the handoff;
1125
- future cutover UI ingestion is not yet wired.
1126
-
1127
- ## Recovery artifact contract
1128
-
1129
- Targeted recovery is a first-class import mode, not a side script. Every selective,
1130
- resumed, partial, missing-only, failed-only, deferred-only, or unresolved-only run must append one entry to
1131
- `execution/recovery-log.json` and update `execution/live-import-summary.json` through the
1132
- same shared summary writer used by the main import path.
1133
-
1134
- Each recovery entry must include:
1135
-
1136
- - recovery id
1137
- - run id — the id the importer minted at process start, so the entry is attributable to a pass
1138
- - timestamp
1139
- - selection filters
1140
- - reason
1141
- - records selected
1142
- - records attempted
1143
- - imported
1144
- - already present
1145
- - failed
1146
- - deferred
1147
- - unresolved — its own count, **never** summed into `failed`. A write whose outcome we do not
1148
- know is read back, not re-sent, and a recovery record that folds it into the failure count
1149
- reconciles arithmetically and is wrong
1150
- - crosswalk changes
1151
- - summary changes
1152
- - operator-visible outcome
1153
- - links to detailed logs
1154
-
1155
- Do not overwrite earlier recovery entries. Failed or deferred records from an earlier
1156
- attempt must remain visible after a later successful recovery; the newer recovery entry and
1157
- summary delta explain what changed.
1158
-
1159
- ## Shipping delivery estimates on a finished project
1160
-
1161
- Before the delivery-estimate fix, generated importers sent the delivery estimate under a name Wix drops, so
1162
- their shipping options show no delivery time. Earlier migrations are reported, **never edited**.
1163
- For a finished project whose importer predates that fix, run:
1164
-
1165
- ```bash
1166
- node skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js --project-dir <projectDir>
1167
- ```
1168
-
1169
- - It only reads Wix (GET); it never POSTs or PATCHes. It reads the crosswalk, the attempt
1170
- journal, `orchestration/decisions.json`, the extract if present, and Site Properties once.
1171
- - It writes `execution/shipping-estimates.json`, replaces the shipping `operatorActions` in
1172
- `execution/completion-report.json`, and regenerates the post-execution handoff.
1173
- - The only other local write is one crosswalk upsert when a recorded
1174
- `shipping-option-target-missing:<optionKey>` decision of `recreated:<id>` adopts a new id.
1175
- - Rerun it after a decision is recorded or a delivery time is entered in Business Manager. That is
1176
- how a finished project closes its shipping items.
1177
- - `--list <code>` prints every option recorded under that code, with no Wix call. Use it to relay
1178
- a list of more than 15 options to the Cutover Operator.
1179
-
1180
- ## Completion report contract
1181
-
1182
- This skill should expect the shared import runtime to emit a machine-readable completion
1183
- artifact and should preserve it as the primary post-run result.
1184
-
1185
- `execution/completion-report.json` should be the authoritative source for:
1186
-
1187
- - final run status:
1188
- `complete | complete_with_warnings | complete_with_recovered_records |
1189
- complete_with_deferred_records | incomplete_with_failures |
1190
- incomplete_with_mismatches | aborted`
1191
- - final completeness counts by entity and subtype: extracted, in-scope, attempted,
1192
- imported, already present by crosswalk, deferred, failed, skipped out of scope, and
1193
- unexpected skipped
1194
- - grouped skipped/deferred outcomes
1195
- - grouped failure outcomes
1196
- - mismatch rows where source, import, and crosswalk counts do not reconcile
1197
- - URL preservation summary counts and artifact paths when URL preservation is enabled
1198
- - `voucherReconciliation` — the answer to workflow step 6b, exactly one of:
1199
-
1200
- | Value | Meaning |
1201
- | --- | --- |
1202
- | `not-applicable` | the accepted scope excluded coupons, or the source carried no usage-limited coupon |
1203
- | `reconciled` | the step ran and every voucher reconciled |
1204
- | `plan-pending-owner` | a plan was produced and is awaiting the owner's decisions per code |
1205
- | `remedied` | approved remedies were applied and each was confirmed by a post-settle read-back |
1206
- | `not-run` | the step was due and did not run |
1207
-
1208
- There is no default. For a run whose scope included coupons, a **missing field reads as
1209
- `not-run`, never as `not-applicable`** — an absent answer is exactly the state this field
1210
- exists to make visible, and defaulting it to the benign value rebuilds the defect. `not-run`
1211
- and `plan-pending-owner` are named in the completion headline and raise the final status to
1212
- at least `complete_with_warnings` under the highest-severity rule below.
1213
- - dashboard/editor/preview destinations
1214
- - `sourceCoverage[]` and `sourceCoverageRecorded` (report schema v2) — what the source held
1215
- that was never captured. `writeCompletionReport` joins `discovery/source-coverage.json`,
1216
- `mapping/review/mapping-gaps.json` and `orchestration/decisions.json` by `coverageId` and folds
1217
- the result into the one status. An open row is a gated exclusion (no floor; one grouped
1218
- headline line), an ungated exclusion (`complete_with_warnings`), an accepted loss
1219
- (`incomplete_with_failures`), or unresolved data — auth-gated, unsupported, skipped by rule,
1220
- failed or declared-not-observed with a gap or a `declined` decision —
1221
- (`incomplete_with_mismatches`, one headline line per capability). In-scope auth-gated,
1222
- capture-failed and declared-not-observed rows also add a `high` `operatorActions[]` row: the
1223
- source is still the only copy. The writer refuses when a stamped project's coverage file is
1224
- missing or does not reconcile. A project whose `source-schema.json` has no
1225
- `sourceCoverageContract` stamp (discovery from before this contract) records
1226
- `sourceCoverageRecorded: false` and at least `complete_with_warnings`. Recovering a source
1227
- route or credential is Import Operator work before execution; the handoff's *Not migrated
1228
- from the source* section only tells the Cutover Operator what to recreate or confirm in Wix.
1229
- - artifact references for logs and diagnostics
1230
-
1231
- `execution/live-import-summary.json` should carry the same `entityCompleteness` accounting
1232
- contract during/after the live import so short imports are visible before any manual count
1233
- comparison. For every mapped entity/subtype row, the runtime must reconcile:
1234
-
1235
- ```text
1236
- imported + alreadyPresentByCrosswalk + deferred + failed == inScope
1237
- ```
1238
-
1239
- Any non-zero deferred, failed, or unexpected skipped count for an in-scope mapped entity
1240
- class must appear in the completion headline. Any mismatch must set the final status to
1241
- `incomplete_with_mismatches` unless the run was already `aborted`.
1242
-
1243
- When more than one status applies, choose the highest-severity status in this order:
1244
-
1245
- 1. `aborted`
1246
- 2. `incomplete_with_mismatches`
1247
- 3. `incomplete_with_failures`
1248
- 4. `complete_with_deferred_records`
1249
- 5. `complete_with_recovered_records`
1250
- 6. `complete_with_warnings`
1251
- 7. `complete`
1252
-
1253
- The user-facing completion summary should be rendered deterministically from that artifact.
1254
- The completion report should be produced from the runtime's in-memory counters for the
1255
- current `runId`, with audit-log aggregation used only as a verification/fallback path.
1256
- When audit events are read, filter by `runId`; never infer final counts by counting every
1257
- line in an append-only `import-audit.ndjson` that may include dry-runs, retries, and
1258
- previous recovery passes.
1259
-
1260
- ## Minimum execution log contents
1261
-
1262
- - run timestamp
1263
- - command or entrypoint used
1264
- - extracted source location / manifest used
1265
- - entities processed
1266
- - records read, transformed, written, skipped, failed
1267
- - retry behavior
1268
- - blocking errors
1269
- - follow-up remediation
1270
- - member activation status, when members are in scope (activation automation created and
1271
- enabled post-window? label waves applied — which label, how many contacts per wave?) —
1272
- see rp-target-wix members guidance; never mass-send set-password emails
1273
- - dashboard URL
1274
- - editor URL when relevant
1275
- - preview URL when relevant
1276
- - post-import route verification status (for example product/cart/checkout reachable or
1277
- not yet installed)
1278
- - URL preservation artifact paths and counts, including redirect plans and unresolved
1279
- public URLs
1280
- - explicit state classification: `catalog imported`, `site shell built`, or both
1281
- - references to machine-readable report and audit artifacts
1282
-
1283
- The execution log may mention outcome summaries, but it is not the authoritative source
1284
- for final imported/skipped/failed counts.
1285
-
1286
- ## Guardrails
1287
-
1288
- - **Import writes go through the executed artifact, not the agent.** Never perform import
1289
- writes via `CallWixSiteAPI`/MCP as a substitute for running the script. MCP is
1290
- verification-only here (see the section above). (Setup execution is out of scope for this
1291
- rule — see `rp-execute-setup`.)
1292
- - Prefer `execution/execution-manifest.json` over markdown when
1293
- deciding what to run.
1294
- - Prefer `execution/completion-report.json` over `execution-log.md` when reporting final
1295
- outcome to the user.
1296
- - Prefer `execution/recovery-log.json` over migration-local recovery scripts when
1297
- explaining targeted recovery outcomes.
1298
- - Prefer dry-runs or sample batches before full import.
1299
- - Stop on systemic mapping or write failures rather than amplifying bad writes.
1300
- - Preserve enough logging to support replay and debugging.
1301
-
1302
- ### On a destination the run did not create, the import is ADDITIVE — always
1303
-
1304
- Every rule below is unconditional when `WIX_SITE_STRATEGY=existing`. The site holds the
1305
- owner's live business data, and nothing in this pipeline can undo a bulk write.
1306
-
1307
- - **Never delete a pre-existing entity.** No products, categories, collections, posts,
1308
- media or coupons — not to clear a failed partial import, not to "start clean" before a
1309
- retry, not to resolve a collision. There is no reason good enough; a failed import is
1310
- recovered by re-running an idempotent one, not by clearing the target.
1311
- - **Never wipe the demo catalog.** That cleanup exists for a template's placeholder
1312
- products on a site this run just scaffolded (see `resources/rp-destination/`). On an
1313
- existing site those products are the owner's.
1314
- - **Skip, do not overwrite.** A record already present — by crosswalk, then by the
1315
- mapping's natural key — is skipped and counted as `skipped`, not rewritten. Only augment
1316
- a pre-existing entity when the plan the user accepted says so for that entity type.
1317
- **One narrow exception: a rerun's accepted update path.** A linked record whose
1318
- source version changed may be updated through its entity's verified update writer, carrying
1319
- the crosswalk's saved `targetRevision`. The crosswalk check still runs before every create;
1320
- what the exception replaces is only the blanket skip of linked records, and only for the
1321
- accepted update path. Matching a *pre-existing* Wix record by natural key never authorizes
1322
- updating it — that stays the collision policy above.
1323
- - **Never blank a field the source does not carry.** A source without a field means "no
1324
- information", not "empty" — writing the empty value deletes data the owner entered by
1325
- hand. Send partial updates; never a full replace built from source-only fields.
1326
- - **Report what was left alone.** The completion report must count `skipped` alongside
1327
- `imported` and `failed`, so the user can reconcile the plan's collision inventory against
1328
- what actually happened. "Nothing was touched here" is a result, not an omission.
1329
-
1330
- Default-location inventory completion requires both the Inventory item and the same Catalog variant to agree on availability. The reconciler checks this on fresh writes and no-write reruns. A Catalog disagreement or failed read stays unverified; retain it for recovery without blindly rewriting stock.
1331
-
1332
-
1333
- ## Contact/product verification before completion
1334
-
1335
- Execute generated contact/product callers through the shared verified import wrappers.
1336
- Use the verification-state loader to read `state/write-verification.json` plus atomic
1337
- batch checkpoints in `state/write-verification-journal/`. It replays committed checkpoints
1338
- after interruption; the final snapshot compacts them. Published crosswalks carry receipt
1339
- references, while expected/actual entities remain in protected verification state. Candidate IDs are recovery information, not usable mappings. A crosswalk hit
1340
- or a `--missing-only` selection still requires target identity/value verification.
1341
- Preserve uncertain write outcomes and reconcile before retrying; do not create again
1342
- because the response was lost. Never repair historical contamination by blanket clearing.
1343
-
1344
- Shared completion inputs must include `siteId`, each contact/product row's intended
1345
- `sourceKeys`, `verificationKind: "contact"` or `"product"` from the accepted mapping,
1346
- and `verification[entity]` from the wrapper. Declare `verificationKind: "none"` explicitly
1347
- for entities outside these comparators; an unknown name without a policy stays incomplete. Count-only completion cannot
1348
- satisfy these entities. Missing or conflicting evidence yields incomplete status and a
1349
- reconciliation action. Explicitly empty source sets have no data; empty reports cannot
1350
- cover a nonempty set. Quick Shopify separately records its product read-back results and
1351
- keeps stock permission failures partial and resumable; setup still does not write stock.
1352
-
1353
-
1354
- The mere presence of `state/.lock/` does not mean an importer is running. Each importer
1355
- owns a uniquely named PID/host claim there, and a resume automatically removes claims
1356
- whose local process is dead (including after SIGKILL). A live process continues to block
1357
- concurrent imports. For a claim from another host, an unrecognized legacy file, or a reused
1358
- PID, first confirm that its importer is stopped on the owning host, then remove only that
1359
- claim file and rerun the same command. Do not remove a live owner's claim or the whole state
1360
- folder. An empty legacy `.lock` directory needs no manual cleanup.
1361
-
1362
- A failed target read keeps the previous verified crosswalk mapping and receipt reference.
1363
- The current verification report remains partial, so that retained mapping does not turn a
1364
- failed read into a new completion claim. Revoke mappings when identity is contradicted;
1365
- value-only differences require the existing update/review flow.
1366
-
1367
- ## Discovered-set outcome handoff
1368
-
1369
- After writing the final completion report and before generating the post-execution handoff, run `node scripts/discovered-set-status.js build <projectDir>` in standard mode. It joins the approved discovered scope to actual outcomes, with unknown counts retained as unknown. Its Import Operator prompts stay in the handoff under Urgent Operator Actions; send those prompts to the Import Operator for recovery in the original migration environment. Do not resolve partial, failed, deferred or pending scope by ticking a manual acknowledgement. Only a merchant or Cutover Operator may record completed `manual-open` work through `scripts/discovered-set-status.js resolve`, with short evidence containing no record values. Quick mode keeps its existing path.