@wix/agent-skills 1.33.1 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/README.md +3 -0
  2. package/package.json +1 -1
  3. package/skills/wix-export/SKILL.md +83 -0
  4. package/skills/wix-harmony-editor/.publish-manifest.json +8 -0
  5. package/skills/wix-harmony-editor/COPY-SITE.md +494 -0
  6. package/skills/wix-harmony-editor/SKILL.md +317 -0
  7. package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +249 -0
  8. package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +225 -0
  9. package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +89 -0
  10. package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +76 -0
  11. package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +212 -0
  12. package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +44 -0
  13. package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +45 -0
  14. package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +53 -0
  15. package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +76 -0
  16. package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +16 -0
  17. package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +150 -0
  18. package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +27 -0
  19. package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +56 -0
  20. package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +211 -0
  21. package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +29 -0
  22. package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +92 -0
  23. package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +56 -0
  24. package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +73 -0
  25. package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +67 -0
  26. package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +102 -0
  27. package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +40 -0
  28. package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +191 -0
  29. package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +61 -0
  30. package/skills/wix-harmony-editor/scripts/launch.sh +359 -0
  31. package/skills/wix-headless/SKILL.md +7 -2
  32. package/skills/wix-headless/references/CAPABILITIES.md +6 -1
  33. package/skills/wix-headless/references/DISCOVERY.md +2 -1
  34. package/skills/wix-headless/references/SDK_HANDOFF.md +6 -1
  35. package/skills/wix-headless/references/SEED.md +3 -2
  36. package/skills/wix-headless/references/SETUP.md +1 -0
  37. package/skills/wix-headless/references/inline-recipes/experience-donations.md +102 -0
  38. package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +146 -0
  39. package/skills/wix-headless/references/inline-recipes/setup-donations.md +15 -0
  40. package/skills/wix-headless/references/managed/CREATE.md +1 -1
  41. package/skills/wix-headless-kit/SKILL.md +110 -21
  42. package/skills/wix-headless-kit/guides/api-run.md +15 -13
  43. package/skills/wix-headless-kit/guides/existing-site.md +31 -0
  44. package/skills/wix-headless-kit/guides/migration.md +49 -17
  45. package/skills/wix-headless-kit/install/agents-md.mjs +1 -1
  46. package/skills/wix-headless-kit/install/context.mjs +61 -6
  47. package/skills/wix-headless-kit/install/pins.json +1 -1
  48. package/skills/wix-headless-kit/install/setup.mjs +107 -12
  49. package/skills/wix-headless-replatform/.publish-manifest.json +8 -0
  50. package/skills/wix-headless-replatform/SKILL.md +116 -0
  51. package/skills/wix-headless-replatform/agents/openai.yaml +6 -0
  52. package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +43 -0
  53. package/skills/wix-headless-replatform/references/extraction-schema.md +187 -0
  54. package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +137 -0
  55. package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +41 -0
  56. package/skills/wix-headless-replatform/references/output-contract.md +93 -0
  57. package/skills/wix-headless-replatform/references/post-build-gap-contract.md +125 -0
  58. package/skills/wix-headless-replatform/references/qa-checklist.md +83 -0
  59. package/skills/wix-headless-replatform/references/safety.md +19 -0
  60. package/skills/wix-headless-replatform/references/ui-normalization-contract.md +70 -0
  61. package/skills/wix-headless-replatform/references/workflow.md +157 -0
  62. package/skills/wix-headless-replatform/registry/README.md +20 -0
  63. package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +28 -0
  64. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +54 -0
  65. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +60 -0
  66. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +48 -0
  67. package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +21 -0
  68. package/skills/wix-headless-replatform/registry/registry.json +36 -0
  69. package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +32 -0
  70. package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +62 -0
  71. package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +64 -0
  72. package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +42 -0
  73. package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +73 -0
  74. package/skills/wix-headless-replatform/schemas/build-plan.schema.json +10 -0
  75. package/skills/wix-headless-replatform/schemas/candidate.schema.json +19 -0
  76. package/skills/wix-headless-replatform/schemas/common.schema.json +33 -0
  77. package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +10 -0
  78. package/skills/wix-headless-replatform/schemas/decision-request.schema.json +10 -0
  79. package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +28 -0
  80. package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +34 -0
  81. package/skills/wix-headless-replatform/schemas/final-report.schema.json +10 -0
  82. package/skills/wix-headless-replatform/schemas/foundation.schema.json +11 -0
  83. package/skills/wix-headless-replatform/schemas/metadata.schema.json +11 -0
  84. package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +17 -0
  85. package/skills/wix-headless-replatform/schemas/page-capture.schema.json +11 -0
  86. package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +33 -0
  87. package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +11 -0
  88. package/skills/wix-headless-replatform/schemas/unit.schema.json +40 -0
  89. package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +844 -0
  90. package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +163 -0
  91. package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +42 -0
  92. package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +228 -0
  93. package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +87 -0
  94. package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +505 -0
  95. package/skills/wix-headless-replatform/scripts/discover-urls.mjs +142 -0
  96. package/skills/wix-headless-replatform/scripts/extract-assets.mjs +140 -0
  97. package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +637 -0
  98. package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +1903 -0
  99. package/skills/wix-headless-replatform/scripts/extract-page.mjs +2461 -0
  100. package/skills/wix-headless-replatform/scripts/extract-seo.mjs +25 -0
  101. package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +63 -0
  102. package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +126 -0
  103. package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +180 -0
  104. package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +98 -0
  105. package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +103 -0
  106. package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +176 -0
  107. package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +261 -0
  108. package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +25 -0
  109. package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +342 -0
  110. package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +140 -0
  111. package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +22 -0
  112. package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +143 -0
  113. package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +288 -0
  114. package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +266 -0
  115. package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +111 -0
  116. package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +570 -0
  117. package/skills/wix-headless-replatform/scripts/lib/common.mjs +329 -0
  118. package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +121 -0
  119. package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +282 -0
  120. package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +61 -0
  121. package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +374 -0
  122. package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +243 -0
  123. package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +1139 -0
  124. package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +326 -0
  125. package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +184 -0
  126. package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +396 -0
  127. package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +168 -0
  128. package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +10 -0
  129. package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +194 -0
  130. package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +348 -0
  131. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +141 -0
  132. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +43 -0
  133. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +18 -0
  134. package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +64 -0
  135. package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +31 -0
  136. package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +358 -0
  137. package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +25 -0
  138. package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +39 -0
  139. package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +107 -0
  140. package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +96 -0
  141. package/skills/wix-headless-replatform/scripts/site-clone.mjs +658 -0
  142. package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +29 -0
  143. package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +669 -0
  144. package/skills/wix-headless-replatform/scripts/visual-qa.mjs +370 -0
  145. package/skills/wix-headless-templates/donations/INSTRUCTIONS.md +37 -24
  146. package/skills/wix-headless-templates/donations/app/components/donations/DonateForm.tsx +49 -23
  147. package/skills/wix-headless-templates/donations/app/components/donations/DonationReceipt.tsx +6 -5
  148. package/skills/wix-headless-templates/donations/app/components/donations/GoalProgress.tsx +5 -5
  149. package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +4 -4
  150. package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +7 -3
  151. package/skills/wix-headless-templates/donations/app/wix/donations/donation-store.ts +2 -2
  152. package/skills/wix-headless-templates/donations/app/wix/donations/donations-core.ts +12 -9
  153. package/skills/wix-headless-templates/donations/project/src/components/donations/DonateForm.tsx +49 -23
  154. package/skills/wix-headless-templates/donations/project/src/components/donations/DonationReceipt.tsx +6 -5
  155. package/skills/wix-headless-templates/donations/project/src/components/donations/GoalProgress.tsx +5 -5
  156. package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +4 -4
  157. package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +7 -3
  158. package/skills/wix-headless-templates/donations/project/src/wix/donations/donation-store.ts +2 -2
  159. package/skills/wix-headless-templates/donations/project/src/wix/donations/donations-core.ts +12 -9
  160. package/skills/wix-headless-templates/donations/rest/campaigns.ts +4 -4
  161. package/skills/wix-headless-templates/donations/rest/donate.ts +7 -3
  162. package/skills/wix-headless-templates/donations/seed/SEED.md +12 -7
  163. package/skills/wix-headless-templates/donations/tests/donation-contract.test.mjs +71 -0
  164. package/skills/wix-headless-templates/donations/tests/donation-form.test.cjs +137 -0
  165. package/skills/wix-headless-templates/restaurants/INSTRUCTIONS.md +28 -14
  166. package/skills/wix-headless-templates/restaurants/app/components/restaurants/OrderCartDrawer.tsx +87 -5
  167. package/skills/wix-headless-templates/restaurants/app/hooks/restaurants/useOrderCart.ts +9 -1
  168. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/order-store.ts +33 -4
  169. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering-core.ts +100 -5
  170. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering.ts +101 -15
  171. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/types.ts +35 -1
  172. package/skills/wix-headless-templates/restaurants/project/src/components/restaurants/OrderCartDrawer.tsx +87 -5
  173. package/skills/wix-headless-templates/restaurants/project/src/hooks/restaurants/useOrderCart.ts +9 -1
  174. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/order-store.ts +33 -4
  175. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering-core.ts +100 -5
  176. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering.ts +101 -15
  177. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/types.ts +35 -1
  178. package/skills/wix-headless-templates/restaurants/rest/ordering.ts +91 -14
  179. package/skills/wix-import/SKILL.md +90 -0
  180. package/skills/wix-manage/SKILL.md +14 -4
  181. package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +2 -0
  182. package/skills/wix-manage/references/dashboard-navigation/dashboard-navigation.md +2 -1
  183. package/skills/wix-manage/references/dashboard-navigation/routes.json +249 -0
  184. package/skills/wix-manage/references/donations/create-and-update-donation-campaigns.md +139 -0
  185. package/skills/wix-manage/references/events/events-dashboard-navigation.md +81 -0
  186. package/skills/wix-manage/references/seo/manage-content-plan.md +207 -222
  187. package/skills/wix-manage/references/sites/manage-oauth-apps.md +1 -0
  188. package/skills/wix-manage/references/sites/upload-static-site.md +128 -8
  189. package/skills/wix-readme/SKILL.md +166 -0
  190. package/skills/wix-replatform/.publish-manifest.json +5 -5
  191. package/skills/wix-replatform/CLI.md +162 -0
  192. package/skills/wix-replatform/README.md +52 -0
  193. package/skills/wix-replatform/SKILL.md +229 -684
  194. package/skills/wix-replatform/console/account.css +1 -0
  195. package/skills/wix-replatform/console/app.css +1 -0
  196. package/skills/wix-replatform/console/app.js +117 -0
  197. package/skills/wix-replatform/console/index.html +4 -0
  198. package/skills/wix-replatform/console/json.css +11 -0
  199. package/skills/wix-replatform/lib/agent-adapters/index.js +71 -0
  200. package/skills/wix-replatform/lib/app-page-routing.js +75 -0
  201. package/skills/wix-replatform/lib/artifact-freshness.js +11 -1
  202. package/skills/wix-replatform/lib/blocked-data-requests.js +427 -0
  203. package/skills/wix-replatform/lib/census-reconciliation.js +426 -0
  204. package/skills/wix-replatform/lib/completion-report.js +1393 -13
  205. package/skills/wix-replatform/lib/config-env.js +85 -11
  206. package/skills/wix-replatform/lib/confirmed-pictures.js +212 -0
  207. package/skills/wix-replatform/lib/dependency-readiness.js +423 -0
  208. package/skills/wix-replatform/lib/dependency-recovery.js +21 -0
  209. package/skills/wix-replatform/lib/destination-choice.js +163 -0
  210. package/skills/wix-replatform/lib/destination-handoff.js +62 -0
  211. package/skills/wix-replatform/lib/destination-http.js +81 -0
  212. package/skills/wix-replatform/lib/destination-route.js +98 -0
  213. package/skills/wix-replatform/lib/destination.js +919 -0
  214. package/skills/wix-replatform/lib/discovered-census.js +231 -0
  215. package/skills/wix-replatform/lib/discovered-set-status.js +255 -0
  216. package/skills/wix-replatform/lib/document-url-guard.js +203 -0
  217. package/skills/wix-replatform/lib/entity-qa-attestation.js +339 -0
  218. package/skills/wix-replatform/lib/entity-verification.js +18 -0
  219. package/skills/wix-replatform/lib/execution-capability.js +120 -0
  220. package/skills/wix-replatform/lib/execution-log.js +170 -0
  221. package/skills/wix-replatform/lib/execution-manifest.js +20 -2
  222. package/skills/wix-replatform/lib/execution-state.js +22 -0
  223. package/skills/wix-replatform/lib/expectations-ledger.js +96 -0
  224. package/skills/wix-replatform/lib/generated-plugin-handoff.js +140 -0
  225. package/skills/wix-replatform/lib/import-readiness-contract.js +23 -0
  226. package/skills/wix-replatform/lib/import-recovery.js +800 -6
  227. package/skills/wix-replatform/lib/imported-redirect-targets.js +608 -0
  228. package/skills/wix-replatform/lib/internal-link-reconciliation.js +166 -0
  229. package/skills/wix-replatform/lib/link-audit.js +173 -0
  230. package/skills/wix-replatform/lib/link-census.js +194 -0
  231. package/skills/wix-replatform/lib/link-plan.js +148 -0
  232. package/skills/wix-replatform/lib/link-verification.js +274 -0
  233. package/skills/wix-replatform/lib/link-write-journal.js +42 -0
  234. package/skills/wix-replatform/lib/local-state.js +869 -30
  235. package/skills/wix-replatform/lib/member-completion.js +658 -0
  236. package/skills/wix-replatform/lib/member-crosswalk.js +69 -0
  237. package/skills/wix-replatform/lib/member-outcome-registry.js +265 -0
  238. package/skills/wix-replatform/lib/migration-completion.js +311 -0
  239. package/skills/wix-replatform/lib/operator-identity.js +47 -0
  240. package/skills/wix-replatform/lib/orchestration-decisions.js +248 -0
  241. package/skills/wix-replatform/lib/orchestration-preflight.js +401 -19
  242. package/skills/wix-replatform/lib/orchestration-router.js +608 -32
  243. package/skills/wix-replatform/lib/orchestration-state.js +188 -12
  244. package/skills/wix-replatform/lib/order-reference-readiness.js +30 -0
  245. package/skills/wix-replatform/lib/payments-outcome-registry.js +200 -0
  246. package/skills/wix-replatform/lib/plugin-cms-fallback.js +618 -0
  247. package/skills/wix-replatform/lib/preservation-approval-stamp.js +54 -0
  248. package/skills/wix-replatform/lib/product-media-deferral.js +96 -0
  249. package/skills/wix-replatform/lib/progress-log.js +19 -3
  250. package/skills/wix-replatform/lib/read-back-approval.js +184 -0
  251. package/skills/wix-replatform/lib/read-back-comparison.js +136 -0
  252. package/skills/wix-replatform/lib/read-back-contract.js +243 -0
  253. package/skills/wix-replatform/lib/read-back-extract.js +118 -0
  254. package/skills/wix-replatform/lib/read-back-gate.js +734 -0
  255. package/skills/wix-replatform/lib/read-back-reads.js +94 -0
  256. package/skills/wix-replatform/lib/read-back-state.js +107 -0
  257. package/skills/wix-replatform/lib/read-back-summary.js +81 -0
  258. package/skills/wix-replatform/lib/rerun-conflicts.js +334 -0
  259. package/skills/wix-replatform/lib/run-controller.js +401 -0
  260. package/skills/wix-replatform/lib/seo-outcome-registry.js +45 -0
  261. package/skills/wix-replatform/lib/setup-verification.js +148 -0
  262. package/skills/wix-replatform/lib/source-access.js +231 -0
  263. package/skills/wix-replatform/lib/source-coverage.js +1130 -0
  264. package/skills/wix-replatform/lib/source-secrets.js +277 -0
  265. package/skills/wix-replatform/lib/structured-link-patch.js +59 -0
  266. package/skills/wix-replatform/lib/task-state.js +110 -0
  267. package/skills/wix-replatform/lib/url-preservation-report.js +319 -0
  268. package/skills/wix-replatform/lib/url-preservation-state.js +349 -1
  269. package/skills/wix-replatform/lib/url-redirect-plan.js +728 -0
  270. package/skills/wix-replatform/lib/url-verification.js +315 -0
  271. package/skills/wix-replatform/lib/user-action-effects.js +42 -0
  272. package/skills/wix-replatform/lib/user-actions.js +264 -0
  273. package/skills/wix-replatform/lib/website-handoff.js +1220 -0
  274. package/skills/wix-replatform/lib/wix-client-callers.js +54 -0
  275. package/skills/wix-replatform/lib/wix-dashboard-url.js +35 -0
  276. package/skills/wix-replatform/lib/write-verification-state.js +92 -0
  277. package/skills/wix-replatform/lib/write-verification.js +274 -0
  278. package/skills/wix-replatform/resources/rp-destination/SKILL.md +137 -0
  279. package/skills/wix-replatform/resources/rp-discovery/SKILL.md +189 -16
  280. package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +47 -0
  281. package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +869 -29
  282. package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +70 -0
  283. package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +195 -29
  284. package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +442 -0
  285. package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +112 -0
  286. package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +143 -0
  287. package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +244 -0
  288. package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +2082 -38
  289. package/skills/wix-replatform/resources/rp-mapper/SKILL.md +528 -11
  290. package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +303 -0
  291. package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +88 -0
  292. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +6 -5
  293. package/skills/wix-replatform/resources/rp-preflight/SKILL.md +40 -0
  294. package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +55 -0
  295. package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +60 -0
  296. package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +89 -0
  297. package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +36 -0
  298. package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +123 -0
  299. package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +124 -0
  300. package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +522 -0
  301. package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +56 -0
  302. package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +91 -0
  303. package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +255 -0
  304. package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +80 -10
  305. package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +44 -0
  306. package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +3 -0
  307. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
  308. package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +21 -1
  309. package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +66 -0
  310. package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +153 -0
  311. package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +394 -0
  312. package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +200 -0
  313. package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +34 -0
  314. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +44 -0
  315. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +1470 -0
  316. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +446 -0
  317. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +474 -0
  318. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +879 -0
  319. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +426 -0
  320. package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +24 -0
  321. package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +18 -0
  322. package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +40 -0
  323. package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +76 -0
  324. package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +51 -0
  325. package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +35 -0
  326. package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +20 -0
  327. package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +18 -0
  328. package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +31 -0
  329. package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +21 -0
  330. package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +21 -0
  331. package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +30 -0
  332. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +150 -0
  333. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +36 -0
  334. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +48 -0
  335. package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +20 -0
  336. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +8 -0
  337. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +6 -0
  338. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +8 -0
  339. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +8 -0
  340. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +12 -0
  341. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +6 -0
  342. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +13 -0
  343. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +13 -0
  344. package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +73 -0
  345. package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +13 -0
  346. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +693 -0
  347. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +283 -0
  348. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +191 -0
  349. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +115 -0
  350. package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +201 -0
  351. package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +146 -0
  352. package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +736 -22
  353. package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +73 -0
  354. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +115 -0
  355. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +91 -0
  356. package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +440 -0
  357. package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +125 -0
  358. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +252 -0
  359. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +183 -0
  360. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +333 -0
  361. package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +426 -0
  362. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +400 -0
  363. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +633 -0
  364. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +1127 -0
  365. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +194 -0
  366. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +100 -0
  367. package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +157 -0
  368. package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +234 -0
  369. package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +101 -0
  370. package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +755 -0
  371. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +1074 -0
  372. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +149 -0
  373. package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +25 -0
  374. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +204 -9
  375. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +186 -0
  376. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +1422 -0
  377. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +343 -0
  378. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +262 -26
  379. package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +272 -0
  380. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +373 -0
  381. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +101 -0
  382. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +81 -0
  383. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +128 -0
  384. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +18 -0
  385. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +104 -0
  386. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +44 -0
  387. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +49 -0
  388. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +94 -0
  389. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +863 -0
  390. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +52 -0
  391. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +161 -0
  392. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +180 -0
  393. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +286 -0
  394. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +79 -0
  395. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +120 -0
  396. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +128 -0
  397. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +88 -0
  398. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +80 -0
  399. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +46 -0
  400. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +55 -0
  401. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +99 -0
  402. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +55 -0
  403. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +160 -0
  404. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +81 -0
  405. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +60 -0
  406. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +74 -0
  407. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +75 -0
  408. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +60 -0
  409. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +44 -0
  410. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +57 -0
  411. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +141 -0
  412. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +54 -0
  413. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +158 -0
  414. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +97 -0
  415. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +86 -0
  416. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +90 -0
  417. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +51 -0
  418. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +103 -0
  419. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +1668 -33
  420. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +273 -0
  421. package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +11 -0
  422. package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +13 -0
  423. package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +446 -32
  424. package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +36 -0
  425. package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +38 -2
  426. package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +322 -0
  427. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +70 -0
  428. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +19 -9
  429. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +42 -8
  430. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +54 -8
  431. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +66 -10
  432. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +38 -7
  433. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +332 -0
  434. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +75 -0
  435. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +181 -0
  436. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +130 -0
  437. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +180 -0
  438. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +161 -0
  439. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +15 -4
  440. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +39 -7
  441. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +47 -8
  442. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +7 -1
  443. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +204 -0
  444. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +17 -4
  445. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +159 -15
  446. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +80 -12
  447. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +48 -8
  448. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +306 -0
  449. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +30 -7
  450. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +171 -0
  451. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +182 -0
  452. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +129 -0
  453. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +192 -0
  454. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +123 -0
  455. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +60 -12
  456. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +112 -0
  457. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +191 -0
  458. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +140 -13
  459. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +383 -18
  460. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +122 -0
  461. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +98 -0
  462. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +86 -0
  463. package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +128 -0
  464. package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +38 -0
  465. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +73 -0
  466. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +107 -0
  467. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +89 -0
  468. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +118 -0
  469. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +93 -0
  470. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +86 -0
  471. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +56 -0
  472. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +121 -0
  473. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +134 -0
  474. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +41 -0
  475. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +50 -0
  476. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +87 -0
  477. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +130 -0
  478. package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +914 -24
  479. package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +41 -0
  480. package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +14 -4
  481. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +45 -8
  482. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +41 -7
  483. package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +119 -0
  484. package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +13 -3
  485. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +41 -7
  486. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +82 -0
  487. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +77 -0
  488. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +165 -13
  489. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +41 -0
  490. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +46 -0
  491. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +137 -0
  492. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +133 -0
  493. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +7 -0
  494. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +36 -0
  495. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +71 -0
  496. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +67 -0
  497. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +72 -0
  498. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +74 -0
  499. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +69 -0
  500. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +61 -0
  501. package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +28 -1
  502. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +109 -0
  503. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +73 -0
  504. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +148 -0
  505. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +91 -0
  506. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +79 -0
  507. package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +32 -0
  508. package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +49 -0
  509. package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +103 -0
  510. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +203 -0
  511. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +27 -10
  512. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +119 -0
  513. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +111 -0
  514. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +52 -8
  515. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +214 -10
  516. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +93 -13
  517. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +111 -0
  518. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +52 -10
  519. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +145 -14
  520. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +84 -0
  521. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +178 -0
  522. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +87 -0
  523. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +106 -0
  524. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +64 -0
  525. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +119 -0
  526. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +94 -0
  527. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +113 -0
  528. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +65 -0
  529. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +165 -0
  530. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +60 -0
  531. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +201 -0
  532. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +306 -0
  533. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +229 -0
  534. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +55 -0
  535. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +715 -0
  536. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +567 -0
  537. package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +73 -0
  538. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +194 -0
  539. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +133 -0
  540. package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +13 -4
  541. package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +491 -0
  542. package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +104 -0
  543. package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +673 -0
  544. package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +453 -2
  545. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +119 -0
  546. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +566 -0
  547. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +249 -0
  548. package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +63 -0
  549. package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +187 -0
  550. package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +64 -0
  551. package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +1027 -0
  552. package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +90 -0
  553. package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +420 -0
  554. package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +177 -0
  555. package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +151 -0
  556. package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +723 -0
  557. package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +353 -0
  558. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +1437 -0
  559. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +354 -0
  560. package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +134 -0
  561. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +221 -0
  562. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +248 -0
  563. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +86 -3
  564. package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +231 -0
  565. package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +28 -0
  566. package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +14 -0
  567. package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +34 -0
  568. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +166 -15
  569. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +19 -2
  570. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +4079 -257
  571. package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +3 -0
  572. package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +150 -0
  573. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +40 -2
  574. package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +6 -1
  575. package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +148 -8
  576. package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +83 -15
  577. package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +1119 -215
  578. package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +318 -0
  579. package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +2 -2
  580. package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +106 -4
  581. package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +94 -0
  582. package/skills/wix-replatform/scripts/census-reconciliation.js +25 -0
  583. package/skills/wix-replatform/scripts/cms-fallback.js +89 -0
  584. package/skills/wix-replatform/scripts/discovered-census.js +26 -0
  585. package/skills/wix-replatform/scripts/discovered-set-status.js +33 -0
  586. package/skills/wix-replatform/scripts/entity-qa-attestation.js +130 -0
  587. package/skills/wix-replatform/scripts/execution-health-check.js +415 -0
  588. package/skills/wix-replatform/scripts/execution-manifest-validate.js +1 -1
  589. package/skills/wix-replatform/scripts/execution-state-prepare.js +1 -1
  590. package/skills/wix-replatform/scripts/expectations-ledger.js +44 -0
  591. package/skills/wix-replatform/scripts/import-contract-verify.js +183 -0
  592. package/skills/wix-replatform/scripts/internal-link-audit.js +90 -0
  593. package/skills/wix-replatform/scripts/item-seo-tags-verify.js +205 -0
  594. package/skills/wix-replatform/scripts/migration-completion.js +76 -0
  595. package/skills/wix-replatform/scripts/orchestration-preflight.js +21 -2
  596. package/skills/wix-replatform/scripts/orchestration-route.js +32 -1
  597. package/skills/wix-replatform/scripts/orchestration-state.js +146 -10
  598. package/skills/wix-replatform/scripts/read-back-gate.js +175 -0
  599. package/skills/wix-replatform/scripts/replatform-console.js +146 -0
  600. package/skills/wix-replatform/scripts/replatform.js +436 -0
  601. package/skills/wix-replatform/scripts/source-secrets.js +77 -0
  602. package/skills/wix-replatform/scripts/url-redirects.js +286 -0
  603. package/skills/wix-replatform/scripts/user-action.js +58 -0
  604. package/skills/wix-replatform/scripts/website-handoff-generate.js +64 -0
  605. package/skills/wix-replatform/scripts/wix-dashboard-url.js +54 -0
  606. package/skills/wix-replatform/scripts/wix-destination.js +143 -0
  607. package/skills/wix-replatform/scripts/wix-headless-scaffold.js +762 -0
  608. package/skills/wix-vibe-headless/SKILL.md +7 -3
  609. package/skills/wix-vibe-headless/install/deploy.cjs +61 -34
  610. package/skills/wix-vibe-headless/platforms/base44.md +1 -0
  611. package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +88 -0
  612. package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +112 -0
  613. package/skills/wix-vibe-headless/references/donations/seed/SEED.md +11 -0
  614. package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +258 -0
  615. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +5 -2
  616. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +4 -1
  617. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +67 -3
  618. package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +4 -3
  619. package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +0 -330
@@ -19,6 +19,7 @@ This skill translates source entities and fields into Wix targets. It should def
19
19
  - `migrations/<project>/source-profile.md` when available
20
20
  - `migrations/<project>/orchestration/checkpoints.json`
21
21
  - `migrations/<project>/orchestration/decisions.json`
22
+ - `migrations/<project>/discovery/source-coverage.json` (capabilities discovery could not capture)
22
23
  - any existing Wix target-model constraints supplied by the user
23
24
 
24
25
  Read **only** these canonical artifacts by default. Do not ingest the raw discovery dump
@@ -46,15 +47,60 @@ before:
46
47
  In addition to the project artifacts above, consult the relevant bundled adapter resource
47
48
  when the mapping depends on platform behavior that should not be guessed:
48
49
 
49
- - source-side read/entity semantics from `replatform/resources/rp-source-<platform>/SKILL.md`
50
- - Wix target constraints and domain behavior from `replatform/resources/rp-target-wix/SKILL.md`
50
+ - source-side read/entity semantics from `wix-replatform/resources/rp-source-<platform>/SKILL.md`
51
+ - Wix target constraints and domain behavior from `wix-replatform/resources/rp-target-wix/SKILL.md`
51
52
  - Wix target entity suitability from
52
- `replatform/resources/rp-target-wix/scripts/domain-knowledge.js`
53
+ `wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js`
53
54
 
54
55
  Treat those adapter resources as the authoritative home for platform knowledge. Do not
55
56
  copy source/Wix behavioral rules into the mapping plan as if they originated there; cite
56
57
  and apply them there.
57
58
 
59
+ ## Read-back field contract before mapping approval
60
+
61
+ For the gated Wix targets `order`, `member`, `contact` and `product`, every field-mapping row
62
+ must declare the exact `sourcePaths[]` it reads, canonical `writePath`, and `readPath` or a
63
+ specific `unverifiableReason`. Write array positions as `[]`. A populated `false` or `0` is
64
+ real data. In `mapping/entity-decisions/<entity>.json`, account for every populated source leaf
65
+ and intended target path with `fieldDispositions[]`: `{ kind: source | intended, path,
66
+ status: mapped | notMigrated, mappingRef }`. A mapped disposition names the actual mapping-row
67
+ ID or index; it cannot claim a path that row does not read or write.
68
+
69
+ Prepare a pure project-local module exporting `buildWrite(record)` from the mapping transforms;
70
+ it makes no request or write and is the same builder the generated importer will reuse.
71
+ Use an existing complete extract, or obtain it through the source adapter's read-only extraction
72
+ path before the review. These commands run from the installed skill directory:
73
+
74
+ ```sh
75
+ node scripts/read-back-gate.js contract <projectDir> --entity <entity>
76
+ node scripts/read-back-gate.js inventory <projectDir> --entity <entity> --extract <extractPath> --builder <builderModule> --source-key id
77
+ node scripts/read-back-gate.js validate <projectDir> --entity <entity>
78
+ ```
79
+
80
+ `contract` merges the checked-in intended fields, projection and domain digest into the same
81
+ entity decision's `readBackContract`; do not invent or relax that contract. `inventory` streams
82
+ NDJSON or a JSON array once and stores only source IDs, paths and counts in
83
+ `execution/read-back-inventory/<entity>.json`. A dotted source key is supported. Missing extracts
84
+ report `not-run`, never a pass. Exit `2` requires correction; before approval the only permissible
85
+ unresolved validation item is the missing identified approval for an explicitly reviewed
86
+ `notMigrated` path. All other contract, mapping, history and inventory failures must be fixed.
87
+
88
+ Before any Wix write, request mapping approval with the exact current SHA-256 references from
89
+ `lib/read-back-contract.js` `bindings(projectDir, entity)` for **all four** artifacts:
90
+ `mapping/mapping-plan.json`, `mapping/entity-decisions/<entity>.json`,
91
+ `mapping/mapping-resolution.json` and `execution/read-back-inventory/<entity>.json`.
92
+ The review shows left-out paths and affected record counts, never source values. Record approval
93
+ through the existing mapping user action so both answer entrypoints use the shared identified
94
+ approval writer. Populated omissions require a named signed-in human; explicit 1-click mode
95
+ cannot approve them automatically. After approval, rerun validation; it must pass before writes
96
+ and on every resume. Changes to any pinned artifact require fresh review. A previously attempted
97
+ unresolved path or observed loss cannot become an approved omission. Approved omissions produce
98
+ a separate merchant-acknowledgement action that must be completed before launch.
99
+
100
+ For every other target entity, declare `verificationKind` and a concrete `reason` through
101
+ `lib/read-back-gate.js`'s `declaration`; it is outside these four field gates and must never
102
+ be described as having passed them.
103
+
58
104
  ## Deterministic first — resolve before you reason
59
105
 
60
106
  **Do not author field mappings by hand when a vendor overlay already knows them.** Run the
@@ -122,9 +168,17 @@ overcharges every discounted product.
122
168
  5. Mark gaps where native Wix entities are insufficient — the resolver's `unsupportedTargets`
123
169
  already names them with reasons; carry those into the faithfulness ledger rather than restating.
124
170
  6. Identify requirements for custom collections, extended fields, references, media handling, and rich content normalization.
125
- 7. Save the mapping plan.
126
- 8. Write a concise user-review summary after the plan is complete.
127
- 9. Pause for a mapping review checkpoint before downstream setup/codegen work begins.
171
+ Every `extendedFields` write needs a matching `kind: "extendedFieldSchema"` setup requirement
172
+ with compact field intents (`key`, `fieldType`, `maxLength`, `permissionsPreset:
173
+ "migration-internal"`), never hand-written JSON Schema. Migration-owned fields use
174
+ `_user_fields`. Admitted targets: orders, products, and contacts (default `contacts-v5`; legacy
175
+ `contacts-v4` only by explicit choice). Other objects and nested subrecords go to CMS. Provisioning
176
+ a field does not decide whether a source field may be kept; that is a separate retention decision.
177
+ 7. Save the mapping plan, including the reviewed dependency associations below.
178
+ 8. Detect authored `blockedSourceDependencies` on the selected target entities, aggregate them
179
+ by `sourceEntityRef`, and write the blocked-data request state and review artifact below.
180
+ 9. Write a concise user-review summary after the plan is complete.
181
+ 10. Pause for a mapping review checkpoint before downstream setup/codegen work begins.
128
182
 
129
183
  ## Artifacts to create or update
130
184
 
@@ -135,9 +189,83 @@ overcharges every discounted product.
135
189
  - `migrations/<project>/mapping/review/mapping-gaps.json`
136
190
  - `migrations/<project>/mapping/review/mapping-plan.md`
137
191
  - `migrations/<project>/mapping/review/mapping-summary.md`
192
+ - `migrations/<project>/mapping/review/blocked-data-requests.md`
193
+ - `migrations/<project>/state/blocked-data-requests/<sourceEntityRef-slug>.json`
138
194
  - `migrations/<project>/orchestration/checkpoints.json`
139
195
  - `migrations/<project>/orchestration/approvals.json`
140
196
 
197
+ ## Target dependency associations
198
+
199
+ For every target dependency consumed by an import, emit
200
+ `dependencyBindings: [{ ref, censusIds: string[] }]` in `mapping/mapping-plan.json`.
201
+ Use canonical `domain/entity` refs and every contributing decision row in the current
202
+ discovered census, including excluded rows. Entity decisions retain their explicit
203
+ `targetRef` and `censusIds`, or the census's implicit `entity:<sourceEntity>` link.
204
+ Show these associations in the mapping review. Missing, ambiguous, duplicate or incomplete
205
+ associations return to mapping; never infer a target from a plugin name or a comment.
206
+
207
+ An excluded dependency is not ready merely because its entity was omitted from the plan.
208
+ Readiness uses the existing census reconciliation and its current identified human approval.
209
+ Every contributing row must be excluded and owner-approved for a whole target ref to be
210
+ `excluded-approved`. Mixed planned/excluded contributions remain mixed. Agent/provisional
211
+ acceptance and finalized-run review do not authorize new writes.
212
+
213
+ When a specific dependent field may be omitted or must defer for an excluded contribution,
214
+ put `dependencyFieldRules: [{ dependentRef, dependencyRef, path, action: "omit" | "defer" }]`
215
+ on that contribution's existing census-linked mapping gap. Render the exact rules in the
216
+ existing review and bind them to its existing hash-based approval. Entity exclusion alone
217
+ never authorizes dropping a field; absent or stale approval defers the affected record.
218
+
219
+ Shipping/tax setup prerequisites remain whole-task prerequisites. Map a single source
220
+ shipping line's title, cost and available delivery details. More than one line defers the
221
+ order with `order-multiple-shipping-lines` and a blocker gap. Select reference omission or
222
+ verified setup references only from the bundled field-level verification conclusions;
223
+ unverified shipping/tax fidelity keeps the affected order deferred. Never invent target
224
+ IDs, combine source lines without an approved disposition, or backfill existing orders.
225
+
226
+ ## Blocked source dependencies
227
+
228
+ Read only authored `blockedSourceDependencies[]` from selected target entity knowledge; never
229
+ infer a request from `db-only`, `admin-page-only`, or another channel by itself. Use the shared
230
+ `lib/blocked-data-requests.js` builder to aggregate one request per `sourceEntityRef`, appending
231
+ all dependent target entity/field rows. Resolve each source entity's `blocked[].fulfillment`
232
+ through `rp-source-wordpress/lib/blocked-data-handlers.js`; offer it only when its fixture
233
+ self-test passes. `structure-bridge-plugin` (wix-wp-plugin-v2) has no
234
+ manifest or readiness flag to check beyond that -- authorization is live (denylist +
235
+ `DESCRIBE`) at request time, not a build-time gate. This readiness check is the only
236
+ thing this stage does with a `structure-bridge-plugin` fulfillment: unlike `csv-upload`,
237
+ its actual data is never resolved through this file's `attemptFulfillment()`/snapshot
238
+ mechanism (that path is for a small, static, one-shot document) -- `rp-import-codegen`
239
+ generates a normal incremental reader for it instead, reusing the same `table`/
240
+ `sampleStructureRequest` metadata. See `rp-import-codegen`'s "`structure-bridge-plugin`
241
+ entities" section. Which credential that reader authenticates with depends on whether the
242
+ source site has WooCommerce (Application Password requires it; the migration key does not)
243
+ — `rp-source-wordpress/plugins/README.md`'s "Resolving a db-only capability" section.
244
+
245
+ **Plan structure-bridge-plugin entities with `lib/structure-bridge-planning.js`** before building blocked-data requests. Pass the canonical source entities as
246
+ `sourceEntities` as well as profiles to `planStructureBridgeEntities({ plugins, sourceEntities,
247
+ dataDir })`. Bound entities do not need a profile. Preserve their canonical reference and
248
+ `sourceMeta.extractionPlan` unchanged; do not reconstruct bindings from legacy sidecars.
249
+ For object-shaped source entities retain each object's key/reference while making the array.
250
+ `planStructureBridgeEntities({ plugins, sourceEntities, dataDir })`
251
+ turns each such entity that has `candidateTargetRefs[]` into an entity decision (target,
252
+ readiness, read variant, discovery artifacts). An entity without a candidate target is
253
+ returned in `blockedFieldSources` and stays on the blocked-data path above. Pass the selected
254
+ target entities through `partitionBlockedSourceDependencies(targets, decisions)` and give its
255
+ `targetEntities` to the blocked-data builder, so a planned entity is never also requested as
256
+ a blocked field. Then `writeStructureBridgePlanning(projectDir, decisions)` writes
257
+ `mapping/entity-decisions/<entity>.json` and the `mapping/mapping-plan.json` row. It refuses
258
+ after the mapping review is approved. A rerun refreshes only the fields planning owns and
259
+ keeps field mappings, transformations, relationships and other edits already on the row. An
260
+ EAV read plan that fails its integrity check is a pending reason. A `pending` decision goes to
261
+ the review gate like any other pending row.
262
+
263
+ Persist the request under `state/` as the authority and render
264
+ `mapping/review/blocked-data-requests.md` as a passive review section. This adds no new blocking
265
+ prompt. At an interactive mapping pause, set `askedInteractively: true` only if the request is
266
+ actually shown and a human can decline it. In 1-click mode set it to `false`; an unanswered
267
+ request remains `missing`, never `declined`, because the run did not pause to ask.
268
+
141
269
  ## Minimum contents of the mapping plan
142
270
 
143
271
  Include for each source entity:
@@ -149,6 +277,10 @@ Include for each source entity:
149
277
  - selected `targetRef`, `targetDomain`, `targetEntity`, `targetClassification`,
150
278
  `importReliability`, `preferredWrite`, and `knowledgeEvidence` when the decision uses a
151
279
  bundled domain entity record
280
+ - when `targetClassification` is `manual-mapping`: the entity's `manualSteps`
281
+ verbatim (prerequisite, actor-tagged steps, mechanism, evidence) instead of field
282
+ mappings/transformation/validation rules below — there is no transform to author, only a
283
+ runbook to carry over unchanged
152
284
  - primary key and deduplication strategy
153
285
  - field mapping table
154
286
  - transformation rules
@@ -224,6 +356,31 @@ Do not leave safe-mode contact replacement coverage implicit in field tables or
224
356
  JSON. A reviewer should be able to confirm from the review markdown which outbound
225
357
  email/phone fields will be replaced in safe mode.
226
358
 
359
+ ## Variant inventory is part of the catalog plan
360
+
361
+ For each source variant, plan either explicit stock (`inventoryTracked`, `inventoryQuantity`,
362
+ `inStock` canonical fields) or a named inventory gap. Use the source adapter's stock mapper;
363
+ stock flags, quantities, and backorders are different policies. Count every intended variant
364
+ before filtering gaps or failed product mappings. Carry that denominator into inventory
365
+ verification as `expectedCount`. A product count never stands in for inventory coverage.
366
+ Default-location stock is supported; any shared pool, multi-location allocation, preorder,
367
+ or fallback availability needs an explicit mapping decision. The target builder has no
368
+ implicit in-stock default. A legacy explicit `inStock` fallback must not override known
369
+ variant stock. Inventory verification remains required for deliberately excluded stock:
370
+ record the expected destination state and the gap rather than exempting the catalog audit.
371
+
372
+ ## Shipping delivery estimate from the merchant
373
+
374
+ When the merchant states a delivery time for a shipping zone in their own words, record it:
375
+
376
+ ```bash
377
+ node skills/wix-replatform/scripts/orchestration-state.js decide --project-dir <projectDir> --key shipping-delivery-estimate:<zoneId> --value "<text>" --source user
378
+ ```
379
+
380
+ Record it only from the merchant's own words. Never infer it, and never record it with
381
+ `deterministic_inference` or `prior_artifact`: the shipping stage ignores those and lists them,
382
+ so an inferred value can never become a checkout promise.
383
+
227
384
  ## Identity and deduplication rules
228
385
 
229
386
  Be explicit about the difference between a **source ID** and a **Wix target ID**.
@@ -243,6 +400,35 @@ Be explicit about the difference between a **source ID** and a **Wix target ID**
243
400
  field that stores the source ID. Otherwise say the source ID is **tracked** or
244
401
  **crosswalked**.
245
402
 
403
+ ### When the destination already exists, map against its LIVE schema
404
+
405
+ `WIX_SITE_STRATEGY=existing` means the target is not an empty site provisioned to this
406
+ mapping's shape — it is a site in use, with its own collections, fields and records. Map
407
+ against what is actually there:
408
+
409
+ - **Read the destination's current schema before proposing a target shape.** A collection
410
+ the site already has, with fields the owner added, is the target — not a new collection
411
+ that happens to fit the source better. Two collections holding the same entity is the
412
+ failure mode here, and it is one the owner has to untangle by hand.
413
+ - **A field that exists but does not match is a GAP, not a migration.** Record it in the
414
+ faithfulness ledger and surface it in the mapping summary; do not plan a schema change
415
+ to a live site, and never plan to drop or retype an existing field.
416
+ - **Every entity needs a natural key, not just a crosswalk entry.** The local crosswalk is
417
+ empty on the first import into a site that already has data, so dedupe has to fall back
418
+ to something the site itself carries — SKU, handle, slug, email. State that key per
419
+ entity in the mapping plan; without it the import cannot tell "already there" from "new"
420
+ and will duplicate the owner's catalog.
421
+ - **Ask whether to set `cmsMirror: "download-and-upload"`; do not set it unconditionally.**
422
+ CMS `ImportCrosswalk` stays optional even on an existing destination — it
423
+ requires the user to opt into site-local reference data, because Wix CMS quotas are
424
+ plan-based and shared across every custom collection on the site, and a mirror the size of
425
+ a large migration's crosswalk can consume a meaningful share of a lower-tier plan's quota.
426
+ When the user does opt in, note that the on-site `ImportCrosswalk` becomes the only record
427
+ of prior imports visible to a run that does not share this project's local state — that is
428
+ the reason to offer it, not a reason to default to it.
429
+ - **Say so in the mapping summary.** The user reviewing the plan must see that it targets a
430
+ site they already own, and which of their existing entities it expects to match.
431
+
246
432
  ## URL preservation policy
247
433
 
248
434
  For every in-scope source entity that appears on the public website, include an explicit
@@ -266,6 +452,16 @@ Minimum `urlPolicy` fields:
266
452
  validation or collision handling forces a change.
267
453
  - `redirectMode`: `record-if-different`, `manual-review`, or `none`.
268
454
 
455
+ When recording a base-path `manual_review` outcome, persist its concrete `reasonCodes`
456
+ and evidence in the existing base-path state, not only the status or an unexplained note.
457
+ If the sole issue is waiting for a destination route, use `target_route_unknown` (or the
458
+ existing `target_url_missing`, `pending_target_route`, `final_route_missing` reason).
459
+ The redirect planner can settle that uncertainty per exact source entity/final route.
460
+ Keep privacy, explicit operator restrictions and other causes distinct; a final destination
461
+ does not clear those. Include every applicable reason. Do not reclassify an unexplained
462
+ historical hold as routing-only merely because a convenient target exists; establish the
463
+ original reason from evidence or report the missing explanation for review.
464
+
269
465
  If the same source entity type has multiple public route shapes, record each observed
270
466
  route class separately instead of guessing one base path. Slugs are identity and SEO data,
271
467
  but slug preservation alone is not URL preservation; route/base-path intent must be
@@ -277,6 +473,24 @@ Mapping review artifacts must include a short `URL preservation` section listing
277
473
  - whether base paths should be preserved
278
474
  - entities whose target route is deferred to the website-builder phase
279
475
  - known slug normalization, collision, route, or redirect risks
476
+ - detected redirect providers (Redirection, Rank Math, Yoast Premium, server/CDN rules) with
477
+ their coverage status from `state/url-preservation/source-redirect-coverage.json`; an
478
+ `unreadable` or `unsupported` provider is an extraction gap the operator must see, never
479
+ an empty map
480
+
481
+ Source-authored redirect rules are URL obligations in their own right: an old address can
482
+ still receive traffic without being the address of any current page. Do not drop them
483
+ because they have no current entity, and do not reactivate disabled ones.
484
+
485
+ ## Product SEO
486
+
487
+ Map WooCommerce/Yoast product SEO to `product.seoEvidence` (per-field `override` / `inherit` /
488
+ `unknown`), never to `product.seoTitle`/`seoDescription`. Rendered `yoast_head_json`, `og_*`
489
+ and excerpts are not evidence and are never a fallback. Title and description are decided
490
+ separately. Unknown evidence is held for an explicit owner choice (acquire evidence, omit, or
491
+ materialize); the mapping never picks one. Canonical, robots, schema, social tags and focus
492
+ keyphrases are not written; list them in the mapping review as not migrated. SEO patterns are
493
+ never inferred from repeated rendered output.
280
494
 
281
495
  ## Verifying Wix APIs
282
496
 
@@ -291,16 +505,18 @@ product/media field should be sent as an external URL for Wix-side ingestion.
291
505
  For entity suitability, do not grep or paste whole domain files into the plan. Use:
292
506
 
293
507
  ```bash
294
- node skills/replatform/resources/rp-target-wix/scripts/domain-knowledge.js summarize-entities --refs <domain/entity,...>
508
+ node skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js summarize-entities --refs <domain/entity,...>
295
509
  ```
296
510
 
297
511
  Load full entity records only for selected candidates that materially affect the current
298
512
  project.
299
513
 
300
514
  - Verify enum **values**, not just names: every `Field.type` you assign must be a real
301
- member of the Create Data Collection `Type` enum. (Common trap: there is no `SLUG`
302
- type — a slug maps to a `TEXT` field. Never assign a guessed enum value and flag it
303
- `unverified`; resolve it or omit it.)
515
+ member of the Create Data Collection `Type` enum. Never assign a guessed enum value and
516
+ flag it `unverified`; resolve it or omit it. (`SLUG` **does** exist in that enum — it is
517
+ documented for dynamic page URLs. Prefer `TEXT` when the field carries a *preserved source*
518
+ slug as identity/SEO data, and `SLUG` only when the target itself generates the dynamic-page
519
+ URL from it; both are real choices, so do not record `SLUG` as unavailable.)
304
520
  - If a Wix tool surface such as Wix MCP is available in the runtime, use it as a fast
305
521
  verification aid for entity, field, enum, app, and setup names.
306
522
  - If no Wix tool surface is available, rely on `rp-target-wix`'s verified contracts plus
@@ -336,6 +552,174 @@ will not migrate cleanly, including:
336
552
  the missing writer. Use CMS only when no suitable native Wix entity exists, or when the
337
553
  native entity is rejected for fidelity/side-effect reasons.
338
554
 
555
+ **Mandatory trigger — plugin coverage.** Every row in `discovery/plugin-coverage.json` whose
556
+ status is not `migration-planned` must produce a `mapping/review/mapping-gaps.json` entry
557
+ carrying the capability, the status, and the row's user-facing impact line — and so must a
558
+ `migration-planned` row that is lossy or carries `blocked[]` entries. This is what makes
559
+ plugin loss visible: a capability the pipeline discovered but could not deliver has to reach
560
+ the execution-plan report, and the ledger is the only path there.
561
+
562
+ Each such entry must also carry a `severity`, because a plugin-heavy site produces far more
563
+ rows than it has real problems — on a 55-plugin store, 26 rows were "we don't recognise this
564
+ plugin", which would bury the entries that matter if they all read alike. Use the same
565
+ vocabulary as profile pitfalls:
566
+
567
+ | `severity` | Means | Typical rows |
568
+ | --- | --- | --- |
569
+ | `blocker` | data the user would care about is not coming across | `requires-development`; a `blocked[]` entry still unresolved or declined |
570
+ | `warning` | it migrates lossily, or we are not sure yet | `pending` (including `cannot-tell`); `migration-planned · via cms` where the source is semantically richer |
571
+ | `info` | accounted for, nothing lost that we know of | `no-need-to-migrate` with `basis: proposed`; `migration-planned · proposed` with no known loss |
572
+
573
+ The execution-plan report leads with `blocker` and `warning` and summarizes `info` as a count
574
+ with a pointer. Severity is a **rendering** aid, not permission to omit: every row still gets
575
+ an entry, so the audit trail stays complete and a mis-severitied row can be found later.
576
+
577
+ **Mandatory trigger — source coverage.** Every row in `discovery/source-coverage.json` needs
578
+ **exactly one** disposition, and `scripts/coverage-reconcile.js check <project>` exits 2 until it
579
+ has one (the router holds the run at mapping meanwhile):
580
+
581
+ - a `mapping/review/mapping-gaps.json` entry carrying the row's `coverageId` (the usual case:
582
+ severity `blocker` for an in-scope capability, with `recommendedHandling`); or
583
+ - a `sourceCoverage:<coverageId>` decision — `provided` when discovery was re-run and the entity
584
+ now exists in `source-schema.json`, `declined` when the user skipped it. Record it only with
585
+ `scripts/coverage-reconcile.js decide <project> --coverage-id <id> --value provided|declined`,
586
+ which also removes that row's gap entry in the same write; or
587
+ - for a quick adapter only, its own declared exclusion (already on the row).
588
+
589
+ Two dispositions for one row (two gap entries, a gap plus a decision, a declared exclusion plus
590
+ anything) fail as `disposition_conflict`; there is no precedence rule. A `provided` decision whose
591
+ entity is not in `source-schema.json` fails as `disposition_stale`. A gap may cite an existing
592
+ human gate, never create one: `gate: "exclusion"` with `gateEvidence: { register:
593
+ "no-migration-needed", capability }` only on an `adapter-excluded` row whose signed register entry
594
+ names that row's own capability, or `gate: "loss-accepted"` with `gateEvidence` naming a signed
595
+ register entry (`register`, `capability`) or the approved mapping review (`approval: "mapping"`).
596
+ Any other pairing fails as `gate_reason_mismatch`; a cited gate that does not exist fails as
597
+ `gate_missing`. Every outcome reaches the completion report; see `rp-execute-import`.
598
+
599
+ Additional plugin rules:
600
+
601
+ - Resolve targets from `sourceMeta.candidateTargetRefs[]` first, then
602
+ `domain-knowledge.js resolve-source`, then the target knowledge base's capability index
603
+ keyed on `sourceMeta.capability`.
604
+ - **Derived entities (`sourceMeta.recognized: false`) may only be mapped to a native Wix
605
+ entity when the domain knowledge confirms the capability.** Otherwise map them to CMS. The
606
+ proposed capability from discovery is recorded with `confidence: proposed`, never a
607
+ target decision — treating a guess as native is how a silent, lossy write happens.
608
+ - **Every capability, recognized or derived, needs its pairing written down: plugin details
609
+ against Wix details.** In `mapping/review/mapping-plan.md`, per capability: the source
610
+ entity and the fields it actually carries, the target entity and the fields it expects,
611
+ which source field lands in which target field, and which carry nowhere. In
612
+ `mapping/review/mapping-summary.md`, one line naming the source, the target, and the single
613
+ consequence that matters. For a derived capability, say in both that the mapping is
614
+ **proposed** rather than confirmed — a reviewer must be able to tell a guess from an
615
+ authored match. Without the pairing the user is approving a target name, not a mapping.
616
+ - A `no-need-to-migrate` row with `basis: proposed` (the agent's own reading, not a list
617
+ entry) is also listed in `mapping-summary.md` — automation deciding there is nothing to
618
+ move is a decision worth seeing.
619
+ - Carry each plugin entity's profile `pitfalls[]` into the plan, and surface `blocker`
620
+ severities in `mapping/review/mapping-summary.md`.
621
+ - **A capability read through a plugin-specific credential is disclosed up front.** When a
622
+ profile declares `credentials[]` (a plugin's own API key or secret, beyond the platform
623
+ admin credential — e.g. Subscriptions For WooCommerce's plugin-generated
624
+ `consumer_secret`), the capability's row in `mapping/review/mapping-plan.md` states the
625
+ credential prerequisite (what key, where the user finds or enables it in the source
626
+ admin), and `mapping-summary.md` carries one line listing every capability that will ask
627
+ for such a key. The user learns this at the mapping review, not first as a surprise
628
+ `blocked: credential` ask mid-run; the run-time collection still goes through the
629
+ standard batched blocked-and-recoverable ask.
630
+ - Any capability landing in CMS adds two setup implications to the summary: the **Wix Data app
631
+ install**, and **creating each collection** (no verified writer yet, so it is manual). A CMS
632
+ row presented without them reads as more automatic than it is.
633
+ - `requires-development` and `pending` rows belong in the summary's gaps section in plain
634
+ language, even though there is no mapping to make for them.
635
+ - A `targetClassification: "manual-mapping"` entity becomes a checklist item in
636
+ `mapping-summary.md`'s `Manual steps you need to complete` section (see "The manual-steps
637
+ section"), not a section of its own — one consolidated list is what makes the handover
638
+ readable, and a per-entity section splits it. Carry over its `manualSteps.steps[]` as a
639
+ numbered list under that item, not a one-line summary; the point is to hand over a runbook,
640
+ not to compress it. **Do not** put these rows in the pending/gaps section: unlike `pending`,
641
+ a manual-mapping row is a complete, decided mapping the moment it is authored with real
642
+ evidence — there is nothing left for a human to decide, only steps for the merchant to
643
+ execute. It needs no verdict at the review gate below.
644
+
645
+ **Mandatory step — pending rows are decided at the review gate.** The mapping review is the
646
+ single human gate and **the only exit from Pending**: every `pending` row is put to the user
647
+ for a decision, none may survive the gate undecided. Four verdicts, each with a producer:
648
+
649
+ - **"We can migrate it"** — record the chosen target and move the row to *Migration planned*
650
+ in the plan (its `confidence` stays `proposed` until a profile is authored) — when the
651
+ capability has no REST route, follow `rp-source-wordpress/plugins/README.md`'s "Resolving
652
+ a db-only capability" order (try wix-wp-plugin-v2's structure-bridge-plugin before
653
+ defaulting to a `user-file`/csv-upload ask) before authoring the profile.
654
+ - **"Nothing to move"** — the row becomes *No need to migrate* with `basis: decision` and the
655
+ user's stated reason as its `rationale`.
656
+ - **"Wix has no surface — build it first"** — the row becomes *Requires development*: write it
657
+ to `mapping/review/mapping-gaps.json` with severity `blocker`, emit an `api_gap` telemetry
658
+ event, and record the verdict in the human-signed register
659
+ (`plugins/requires-development.json`, `decidedBy` = the user) citing the recorded search.
660
+ - **"The surface exists, we did not know it"** — telemetry only (`source_plugin_coverage`
661
+ carries the decision); the profile or domain entity is authored between runs, never during
662
+ this one.
663
+
664
+ Record each decision in `orchestration/decisions.json`; blocked-row asks batched at discovery
665
+ use the key `pluginBlocker:<capability>:<kind>` with value `provided` or `declined`.
666
+
667
+ **Mandatory step — the CMS-fallback ask (recognized capabilities).** A profile never names a
668
+ CMS target. CMS is reachable for a recognized capability only when a human signed it as an
669
+ *eligible* fallback (`plugins/cms-fallback-eligible.json`) **and** this migration's merchant
670
+ approves it. Such a row arrives `pending` with `cmsFallback.eligible: true` and one of these
671
+ reasons; each is one more closed question on that pending row at the same review:
672
+
673
+ - `cms-fallback-awaiting-approval` / `cms-fallback-decision-stale` — ask: *approve archiving
674
+ these records in Wix CMS*, or *decline*. Show the row's record counts, the proposed
675
+ collection(s) (`cmsFallback.proposedTargetRefsByEntity`) and the `cmsFallback.featureLoss`
676
+ sentence **verbatim**. Never present CMS archival as restoring the plugin's feature. A stale
677
+ row's earlier answer (`cmsFallback.staleDecision`, or `invalidDecision` for a hand-edited or
678
+ malformed entry) no longer applies; ask again.
679
+ - `cms-fallback-declined` — already answered; nothing goes to CMS. It stays `pending`: offer
680
+ the ordinary pending verdicts above if the merchant wants to settle it another way.
681
+ Declining CMS is never recorded as accepted data loss, `no-need-to-migrate` or
682
+ `requires-development`.
683
+ - `cms-fallback-target-knowledge-unavailable` — not askable: Wix target knowledge failed to
684
+ load, so "nothing native fits" is unproven. Report it; rerun once it loads.
685
+
686
+ Record the answer only with the dedicated writer (the generic `decide` rejects the key):
687
+
688
+ ```bash
689
+ node skills/wix-replatform/scripts/orchestration-state.js decide-cms-fallback \
690
+ --project-dir <project> --capability <capability> --value approved|declined \
691
+ --approved-by "<the name or role the person gave>"
692
+ ```
693
+
694
+ It writes `pluginCmsFallback:<capability>` bound to the proposal on the coverage row
695
+ (`proposalDigest`), resets the mapping approval to pending, and the router then reclassifies
696
+ coverage and sends you back here to regenerate the plan. **One-click and unattended runs never
697
+ record this answer**: an agent-accepted mapping checkpoint leaves these rows pending, nothing is
698
+ written to CMS for them, and completion reports them. The writer itself refuses (exits
699
+ non-zero) whenever `automationMode` is `one_click`; do not work around it. A row that is `migration-planned · via cms`
700
+ with `cmsFallback.functionalityRestored: false` is CMS-by-approval; map it to exactly
701
+ `targetRefs` (the register's refs), and add the CMS setup implications below plus one
702
+ `mapping-summary.md` line with the `featureLoss` sentence.
703
+
704
+ `mapping-gaps.json` severities for these rows: every pending CMS-fallback row (awaiting, stale,
705
+ declined, target knowledge unavailable) is `warning`; an approved row is also `warning` (lossy by
706
+ definition) and carries the `featureLoss` sentence. Each `plugin-coverage.json`
707
+ `cmsFallbackDecisionIssues[]` entry (a malformed answer for a capability with no row) is one
708
+ `info` item. A row carrying `cmsFallbackDecisionIgnored` (a native target now resolves, or the
709
+ eligibility was removed) is reported with that reason so the earlier answer is visibly retired.
710
+
711
+ **Mandatory step — bind the plan to the coverage it was built from.** After writing
712
+ `mapping/mapping-plan.json`, stamp it (a no-op when the project has no plugin coverage):
713
+
714
+ ```bash
715
+ node skills/wix-replatform/scripts/cms-fallback.js stamp-plan --project-dir <project> --plan mapping
716
+ ```
717
+
718
+ This copies `discovery/plugin-coverage.json` `inputs.cmsFallbackDigest` into
719
+ `mapping-plan.json` `inputs.cmsFallbackDigest`. The router treats a plan without it, or with a
720
+ different one, as stale (`mapping_plan_stale_cms_fallback`) and routes back here, including on
721
+ one-click runs.
722
+
339
723
  **Mandatory trigger — hierarchical source taxonomy → flat Wix target.** When a source
340
724
  entity carries `"hierarchical": true` (or any `parent` self-relation) in
341
725
  `source-schema.json` and maps to a flat Wix target such as Blog categories, you **must**
@@ -354,6 +738,46 @@ Every selected entity whose domain knowledge includes `IMPORT_UNRELIABLE` must c
354
738
  `mapping/review/mapping-gaps.json` entry with the same fixed flag string, the selected
355
739
  `targetRef`, a project-specific summary, and the chosen fallback or review action.
356
740
 
741
+ **Mandatory check — every in-scope entity's dependencies are also in scope.** Run it directly, do
742
+ not re-derive it by reading prose:
743
+
744
+ ```bash
745
+ node skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js \
746
+ --check-scope <comma-separated domain/entity refs in the mapping plan>
747
+ ```
748
+
749
+ Pass only the plan's own selected refs — `checkScope` walks the `dependsOn` transitive closure
750
+ itself starting from that list, so do not pre-expand it by hand. It fails closed on three distinct,
751
+ named problems, any one of which is a gap the user must resolve at the gate before proceeding:
752
+
753
+ - **Unknown ref** — something in your selected list doesn't resolve to a real `domain/entity`
754
+ file (typo, stale ref). Fix the ref.
755
+ - **Missing dependency** — a reachable `dependsOn` has no selected producer. Resolve it
756
+ through an import task, bound setup steps, or the reviewed census exclusion path above. The structural scope checker must receive the full canonical dependency inventory, including refs assigned to setup or exclusion; including a ref in that inventory does not select an import entity or approve a disposition. Producer binding and current owner approval are checked separately before codegen/run.
757
+ Record the association and exact field rule where needed; a prose best-effort exception
758
+ cannot make an unresolved reference writable.
759
+ - **Unreviewed** — an entity reachable from your selection has never had `dependsOn` authored at
760
+ all (distinct from "reviewed, no dependencies"). `--list-missing-deps` shows the same backlog
761
+ outside the context of any one plan.
762
+
763
+ A clean `--check-scope` result means only this plan's own reachable set is fully reviewed and
764
+ in scope — it says nothing about entities outside that reachable set. `checkScope` walks from
765
+ your selected refs, not from the whole domain tree, so an unrelated entity with no `dependsOn`
766
+ authored at all stays invisible to this gate until some plan actually reaches it. Run
767
+ `--list-missing-deps` (unscoped, whole-repo) separately to see the standing backlog.
768
+
769
+ **As of this pass, only 19 of 62 entities in this repo have `dependsOn` authored** — expect to hit
770
+ **Unreviewed** on most real plans today, not just as an edge case. That is not this gate failing;
771
+ it is the gate doing its job on a knowledge base that is still mid-backfill. When it happens:
772
+ author `dependsOn` on the reachable entity now, as part of the mapping work you are already
773
+ doing — deciding a mapping plan already means knowing what that entity depends on, so this is
774
+ recording that decision, not new research — then re-run `--check-scope`. Do not treat Unreviewed as
775
+ a reason to skip the gate or fall back to reading prose by hand for that entity.
776
+
777
+ Do not expand the selection to the full transitively-reachable set by hand before calling
778
+ `--check-scope`. `checkScope` performs the walk itself; pass it your plan's actual selection and
779
+ nothing more.
780
+
357
781
  ## Default media scope
358
782
 
359
783
  Default to importing only media referenced by in-scope entities such as posts, products,
@@ -377,6 +801,9 @@ review without forcing the user through the full plan.
377
801
  The summary should:
378
802
 
379
803
  - explicitly say that full details live in `mapping/review/mapping-plan.md`
804
+ - **carry a `Manual steps you need to complete` section — required, always present, placed
805
+ immediately after the opening and ahead of the entity mappings.** See "The manual-steps
806
+ section" below; it is the one place the user learns what stays their job
380
807
  - list each in-scope source entity and its planned Wix target
381
808
  - call out the main gaps, lossy transformations, skipped entities, and `unverified`
382
809
  target paths from the faithfulness ledger
@@ -396,7 +823,11 @@ shape" from this file alone, then consult `mapping/review/mapping-plan.md` only
396
823
  Recommended structure:
397
824
 
398
825
  - one-sentence purpose / pointer to `mapping/review/mapping-plan.md`
826
+ - **`Manual steps you need to complete`** — required, in this position, never further down
399
827
  - `Source -> Wix targets`
828
+ - `Plugin coverage` (when the source reported plugins): one line per capability that is not
829
+ `migration-planned · confirmed`, in the user's terms, plus anything they must supply or
830
+ accept losing
400
831
  - `URL preservation`
401
832
  - `Main gaps / lossiness`
402
833
  - `Important setup implications`
@@ -406,6 +837,65 @@ Recommended structure:
406
837
  Do not restate full field tables or detailed transformation rules here unless a specific
407
838
  field-level issue is central to the approval decision.
408
839
 
840
+ ## The manual-steps section
841
+
842
+ The user can otherwise approve a migration without understanding what they still have to do
843
+ themselves. Payment setup, a domain/DNS cutover, add-on work, app installs and permissions
844
+ are scattered across setup notes, gaps and per-entity runbooks — or missing altogether. This
845
+ section is the single consolidated list, and it is **not** optional.
846
+
847
+ Write it as a **numbered checklist**, each item carrying:
848
+
849
+ - a clear **action title** and short instructions — what to do and where to do it
850
+ - **who must act**, when that is someone other than the user
851
+ - any **prerequisite**
852
+ - **what stays unavailable until it is done**
853
+ - **when it is needed**, which is also the sort order: before import → before launch →
854
+ optional follow-up
855
+
856
+ Mark an item optional only when skipping it genuinely is acceptable. Necessary redirect work
857
+ is not optional by default.
858
+
859
+ **Where the items come from.** Gather from the plan and the mapping inputs already in hand —
860
+ `manualSteps` on target entities, `setupRequirements`, `reconfigure-in-wix` hints in
861
+ `no-migration-needed.json`, actionable rows in the faithfulness ledger, and known
862
+ domain/launch requirements. Notification, consent and redirect follow-up belong here when it
863
+ is known at mapping time and needs the user to act.
864
+
865
+ **Coverage prompts, not a checklist to copy.** Include only work actually still needed for
866
+ this source, destination and plan:
867
+
868
+ | Manual action | What the user needs to know |
869
+ | --- | --- |
870
+ | Set up payments | Connect and activate the payment provider in Wix before taking payments. Payment setup is currently manual. |
871
+ | Connect the domain / change DNS | Follow the destination's domain-connection instructions at the domain provider when ready to switch the live site. Say that this changes where visitors go — never present it as an immediate pre-import task. |
872
+ | Finish product add-ons | Name the actual add-on behaviour that stays manual, the affected products or groups, and the agreed work to make it available. "Configure the add-on plugin" alone is not an instruction. |
873
+ | Complete other required setup | Applicable app installs, permission scopes, plans, CMS collections, sales-channel connections and other reconfiguration found during mapping. |
874
+
875
+ Where an action's details are not yet known, say what must be confirmed. Never invent a
876
+ setting, a screen or a step.
877
+
878
+ **Keep every step of an existing runbook.** A `manual-mapping` entity's `manualSteps.steps[]`
879
+ is carried in full under its checklist item — `prerequisite` as its own "before you start"
880
+ line, `mechanism` as "how it behaves once connected". A compressed runbook is not actionable.
881
+ List a shared setup action **once**, naming every capability it covers.
882
+
883
+ **Manual actions are not unresolved gaps.** A known manual procedure belongs here. An
884
+ unsupported feature, or an approach nobody has agreed yet, stays in the gaps/questions
885
+ section until there is an agreed action — detecting a plugin does not prove its behaviour can
886
+ be recreated by hand in Wix. If it needs development, say so in the gaps section; list a
887
+ manual workaround only once it is agreed. A gap that does have an actionable workaround may
888
+ link to its checklist item.
889
+
890
+ **Check the list before the summary goes to the user.** Reconcile it against the mapping plan,
891
+ the manual runbooks, `setupRequirements`, the actionable gaps and the known launch
892
+ requirements. Work the agent will perform automatically is **not** a user task and must not
893
+ appear. Refresh the section whenever the mapping changes.
894
+
895
+ **An empty list still gets the heading**, followed by exactly: `No manual steps identified for
896
+ this mapping.` A summary that omits the section, or leaves a known manual action only in
897
+ scattered setup or gap notes, fails review.
898
+
409
899
  ## Mapping review checkpoint
410
900
 
411
901
  Once both mapping artifacts exist, reset `orchestration/approvals.json` so
@@ -414,10 +904,27 @@ Once both mapping artifacts exist, reset `orchestration/approvals.json` so
414
904
 
415
905
  - this is a semantic review of what will be migrated where
416
906
  - the full technical detail remains in `mapping/review/mapping-plan.md`
907
+ - **what the user will still have to do by hand**, pointing at the summary's
908
+ `Manual steps you need to complete` section
417
909
  - downstream setup discovery and code generation will wait for acceptance
418
910
 
911
+ **Before presenting the checkpoint, run `scripts/coverage-reconcile.js check <project>`** and
912
+ resolve every failure it names; do not ask for approval of a plan it rejects.
913
+
914
+ **Before presenting the checkpoint, run the manual-steps coverage check** described in "The
915
+ manual-steps section": the section exists, every applicable manual action from the plan, the
916
+ runbooks, `setupRequirements` and the actionable gaps appears in it, nothing the agent
917
+ automates appears in it, and an empty set carries the explicit empty statement. A summary
918
+ presented for approval without that section is not ready for review, and this applies in
919
+ `1-click mode` too — the checkpoint is recorded as agent-accepted there, but the section is
920
+ still written.
921
+
419
922
  Do not proceed to `rp-setup-discovery` or `rp-import-codegen` until the user accepts this
420
- mapping review checkpoint, unless the user explicitly asks to continue provisionally.
923
+ mapping review checkpoint, unless the user explicitly asks to continue provisionally. In
924
+ explicit user-requested `1-click mode` (`automationMode=one_click`, `source=user`), still
925
+ write the same review artifacts, but record the checkpoint as accepted by the agent and
926
+ continue immediately. A missing mode or a non-user-authored `one_click` value is normal
927
+ interactive mode and must pause here; file upload does not imply one-click.
421
928
 
422
929
  ## Guardrails
423
930
 
@@ -428,3 +935,13 @@ mapping review checkpoint, unless the user explicitly asks to continue provision
428
935
  - Keep business rules explicit so `rp-import-codegen` can implement them deterministically.
429
936
  - Do not guess Wix field, enum, or app names when you cannot verify them. Mark them
430
937
  `unverified` and surface the risk before execution.
938
+
939
+ ## Discovered-set review and legacy approvals
940
+
941
+ Before presenting a standard-mode mapping review, run `node scripts/discovered-census.js build <projectDir>` and `node scripts/census-reconciliation.js build <projectDir>`. Fix structural errors only for the named census IDs. Each discovered entity, registered sub-part, capability and unlinked plugin needs exactly one assignment: plan `censusIds[]` or a gap `censusId` plus `disposition`. A parent entity never silently covers its sub-parts. Show the generated **Discovered set** section, including its unknown counts, exclusions and pending questions. Ask the owner each pending question; record answers as closed states, rebuild, and present that rebuilt review. Approving this review approves the listed exclusions; provisional and explicit 1-click agent approvals do not establish owner approval of exclusions.
942
+
943
+ The mapping approval user action must reference `{ "kind": "census-reconciliation", "path": "mapping/review/census-reconciliation.json", "sha256": "<current file SHA-256>" }` along with the summary. Let the approval scripts bind and persist the reference; never write a digest or approval directly. A stale answer must produce a fresh request. In explicit 1-click mode use `auto-approve`, leave cannot-tell rows pending, and report them as not decided after import.
944
+
945
+ For `mapping_approval_missing_census` or `mapping_approval_stale_census`, reset with `node scripts/orchestration-state.js approve --project-dir <projectDir> --type mapping --status pending`, rebuild from the existing discovery files, and present again. Explain once that this fresh review accounts for the complete discovered set; do not rerun discovery or imported records.
946
+
947
+ **When the router returns `reviewOnly: true`, the site must not change.** Keep the plan, gap list and `decisions.json` frozen, including on rejection; never run `coverage-reconcile.js decide`. Write assignments only in `mapping/review/finalized-census-assignments.json` (`planLinks` names existing plan rows; `gaps` names new decisions), then rebuild the census/reconciliation and approve through the normal scripts. A request to import newly discovered scope is `pending` with `reasonCode: import-after-finalization`; it stays open for a separate human decision and performs no import. Do not create a new plan version. Any `review_only_*` or `finalized_receipt_unverified` hold requires the Import Operator to inspect the named input; never route around it.