@wix/agent-skills 1.33.1 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/README.md +3 -0
  2. package/package.json +1 -1
  3. package/skills/wix-export/SKILL.md +83 -0
  4. package/skills/wix-harmony-editor/.publish-manifest.json +8 -0
  5. package/skills/wix-harmony-editor/COPY-SITE.md +494 -0
  6. package/skills/wix-harmony-editor/SKILL.md +317 -0
  7. package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +249 -0
  8. package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +225 -0
  9. package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +89 -0
  10. package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +76 -0
  11. package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +212 -0
  12. package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +44 -0
  13. package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +45 -0
  14. package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +53 -0
  15. package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +76 -0
  16. package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +16 -0
  17. package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +150 -0
  18. package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +27 -0
  19. package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +56 -0
  20. package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +211 -0
  21. package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +29 -0
  22. package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +92 -0
  23. package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +56 -0
  24. package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +73 -0
  25. package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +67 -0
  26. package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +102 -0
  27. package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +40 -0
  28. package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +191 -0
  29. package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +61 -0
  30. package/skills/wix-harmony-editor/scripts/launch.sh +359 -0
  31. package/skills/wix-headless/SKILL.md +7 -2
  32. package/skills/wix-headless/references/CAPABILITIES.md +6 -1
  33. package/skills/wix-headless/references/DISCOVERY.md +2 -1
  34. package/skills/wix-headless/references/SDK_HANDOFF.md +6 -1
  35. package/skills/wix-headless/references/SEED.md +3 -2
  36. package/skills/wix-headless/references/SETUP.md +1 -0
  37. package/skills/wix-headless/references/inline-recipes/experience-donations.md +102 -0
  38. package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +146 -0
  39. package/skills/wix-headless/references/inline-recipes/setup-donations.md +15 -0
  40. package/skills/wix-headless/references/managed/CREATE.md +1 -1
  41. package/skills/wix-headless-kit/SKILL.md +110 -21
  42. package/skills/wix-headless-kit/guides/api-run.md +15 -13
  43. package/skills/wix-headless-kit/guides/existing-site.md +31 -0
  44. package/skills/wix-headless-kit/guides/migration.md +49 -17
  45. package/skills/wix-headless-kit/install/agents-md.mjs +1 -1
  46. package/skills/wix-headless-kit/install/context.mjs +61 -6
  47. package/skills/wix-headless-kit/install/pins.json +1 -1
  48. package/skills/wix-headless-kit/install/setup.mjs +107 -12
  49. package/skills/wix-headless-replatform/.publish-manifest.json +8 -0
  50. package/skills/wix-headless-replatform/SKILL.md +116 -0
  51. package/skills/wix-headless-replatform/agents/openai.yaml +6 -0
  52. package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +43 -0
  53. package/skills/wix-headless-replatform/references/extraction-schema.md +187 -0
  54. package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +137 -0
  55. package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +41 -0
  56. package/skills/wix-headless-replatform/references/output-contract.md +93 -0
  57. package/skills/wix-headless-replatform/references/post-build-gap-contract.md +125 -0
  58. package/skills/wix-headless-replatform/references/qa-checklist.md +83 -0
  59. package/skills/wix-headless-replatform/references/safety.md +19 -0
  60. package/skills/wix-headless-replatform/references/ui-normalization-contract.md +70 -0
  61. package/skills/wix-headless-replatform/references/workflow.md +157 -0
  62. package/skills/wix-headless-replatform/registry/README.md +20 -0
  63. package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +28 -0
  64. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +54 -0
  65. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +60 -0
  66. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +48 -0
  67. package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +21 -0
  68. package/skills/wix-headless-replatform/registry/registry.json +36 -0
  69. package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +32 -0
  70. package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +62 -0
  71. package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +64 -0
  72. package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +42 -0
  73. package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +73 -0
  74. package/skills/wix-headless-replatform/schemas/build-plan.schema.json +10 -0
  75. package/skills/wix-headless-replatform/schemas/candidate.schema.json +19 -0
  76. package/skills/wix-headless-replatform/schemas/common.schema.json +33 -0
  77. package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +10 -0
  78. package/skills/wix-headless-replatform/schemas/decision-request.schema.json +10 -0
  79. package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +28 -0
  80. package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +34 -0
  81. package/skills/wix-headless-replatform/schemas/final-report.schema.json +10 -0
  82. package/skills/wix-headless-replatform/schemas/foundation.schema.json +11 -0
  83. package/skills/wix-headless-replatform/schemas/metadata.schema.json +11 -0
  84. package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +17 -0
  85. package/skills/wix-headless-replatform/schemas/page-capture.schema.json +11 -0
  86. package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +33 -0
  87. package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +11 -0
  88. package/skills/wix-headless-replatform/schemas/unit.schema.json +40 -0
  89. package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +844 -0
  90. package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +163 -0
  91. package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +42 -0
  92. package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +228 -0
  93. package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +87 -0
  94. package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +505 -0
  95. package/skills/wix-headless-replatform/scripts/discover-urls.mjs +142 -0
  96. package/skills/wix-headless-replatform/scripts/extract-assets.mjs +140 -0
  97. package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +637 -0
  98. package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +1903 -0
  99. package/skills/wix-headless-replatform/scripts/extract-page.mjs +2461 -0
  100. package/skills/wix-headless-replatform/scripts/extract-seo.mjs +25 -0
  101. package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +63 -0
  102. package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +126 -0
  103. package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +180 -0
  104. package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +98 -0
  105. package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +103 -0
  106. package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +176 -0
  107. package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +261 -0
  108. package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +25 -0
  109. package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +342 -0
  110. package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +140 -0
  111. package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +22 -0
  112. package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +143 -0
  113. package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +288 -0
  114. package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +266 -0
  115. package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +111 -0
  116. package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +570 -0
  117. package/skills/wix-headless-replatform/scripts/lib/common.mjs +329 -0
  118. package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +121 -0
  119. package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +282 -0
  120. package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +61 -0
  121. package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +374 -0
  122. package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +243 -0
  123. package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +1139 -0
  124. package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +326 -0
  125. package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +184 -0
  126. package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +396 -0
  127. package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +168 -0
  128. package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +10 -0
  129. package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +194 -0
  130. package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +348 -0
  131. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +141 -0
  132. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +43 -0
  133. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +18 -0
  134. package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +64 -0
  135. package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +31 -0
  136. package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +358 -0
  137. package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +25 -0
  138. package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +39 -0
  139. package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +107 -0
  140. package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +96 -0
  141. package/skills/wix-headless-replatform/scripts/site-clone.mjs +658 -0
  142. package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +29 -0
  143. package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +669 -0
  144. package/skills/wix-headless-replatform/scripts/visual-qa.mjs +370 -0
  145. package/skills/wix-headless-templates/donations/INSTRUCTIONS.md +37 -24
  146. package/skills/wix-headless-templates/donations/app/components/donations/DonateForm.tsx +49 -23
  147. package/skills/wix-headless-templates/donations/app/components/donations/DonationReceipt.tsx +6 -5
  148. package/skills/wix-headless-templates/donations/app/components/donations/GoalProgress.tsx +5 -5
  149. package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +4 -4
  150. package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +7 -3
  151. package/skills/wix-headless-templates/donations/app/wix/donations/donation-store.ts +2 -2
  152. package/skills/wix-headless-templates/donations/app/wix/donations/donations-core.ts +12 -9
  153. package/skills/wix-headless-templates/donations/project/src/components/donations/DonateForm.tsx +49 -23
  154. package/skills/wix-headless-templates/donations/project/src/components/donations/DonationReceipt.tsx +6 -5
  155. package/skills/wix-headless-templates/donations/project/src/components/donations/GoalProgress.tsx +5 -5
  156. package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +4 -4
  157. package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +7 -3
  158. package/skills/wix-headless-templates/donations/project/src/wix/donations/donation-store.ts +2 -2
  159. package/skills/wix-headless-templates/donations/project/src/wix/donations/donations-core.ts +12 -9
  160. package/skills/wix-headless-templates/donations/rest/campaigns.ts +4 -4
  161. package/skills/wix-headless-templates/donations/rest/donate.ts +7 -3
  162. package/skills/wix-headless-templates/donations/seed/SEED.md +12 -7
  163. package/skills/wix-headless-templates/donations/tests/donation-contract.test.mjs +71 -0
  164. package/skills/wix-headless-templates/donations/tests/donation-form.test.cjs +137 -0
  165. package/skills/wix-headless-templates/restaurants/INSTRUCTIONS.md +28 -14
  166. package/skills/wix-headless-templates/restaurants/app/components/restaurants/OrderCartDrawer.tsx +87 -5
  167. package/skills/wix-headless-templates/restaurants/app/hooks/restaurants/useOrderCart.ts +9 -1
  168. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/order-store.ts +33 -4
  169. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering-core.ts +100 -5
  170. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering.ts +101 -15
  171. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/types.ts +35 -1
  172. package/skills/wix-headless-templates/restaurants/project/src/components/restaurants/OrderCartDrawer.tsx +87 -5
  173. package/skills/wix-headless-templates/restaurants/project/src/hooks/restaurants/useOrderCart.ts +9 -1
  174. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/order-store.ts +33 -4
  175. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering-core.ts +100 -5
  176. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering.ts +101 -15
  177. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/types.ts +35 -1
  178. package/skills/wix-headless-templates/restaurants/rest/ordering.ts +91 -14
  179. package/skills/wix-import/SKILL.md +90 -0
  180. package/skills/wix-manage/SKILL.md +14 -4
  181. package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +2 -0
  182. package/skills/wix-manage/references/dashboard-navigation/dashboard-navigation.md +2 -1
  183. package/skills/wix-manage/references/dashboard-navigation/routes.json +249 -0
  184. package/skills/wix-manage/references/donations/create-and-update-donation-campaigns.md +139 -0
  185. package/skills/wix-manage/references/events/events-dashboard-navigation.md +81 -0
  186. package/skills/wix-manage/references/seo/manage-content-plan.md +207 -222
  187. package/skills/wix-manage/references/sites/manage-oauth-apps.md +1 -0
  188. package/skills/wix-manage/references/sites/upload-static-site.md +128 -8
  189. package/skills/wix-readme/SKILL.md +166 -0
  190. package/skills/wix-replatform/.publish-manifest.json +5 -5
  191. package/skills/wix-replatform/CLI.md +162 -0
  192. package/skills/wix-replatform/README.md +52 -0
  193. package/skills/wix-replatform/SKILL.md +229 -684
  194. package/skills/wix-replatform/console/account.css +1 -0
  195. package/skills/wix-replatform/console/app.css +1 -0
  196. package/skills/wix-replatform/console/app.js +117 -0
  197. package/skills/wix-replatform/console/index.html +4 -0
  198. package/skills/wix-replatform/console/json.css +11 -0
  199. package/skills/wix-replatform/lib/agent-adapters/index.js +71 -0
  200. package/skills/wix-replatform/lib/app-page-routing.js +75 -0
  201. package/skills/wix-replatform/lib/artifact-freshness.js +11 -1
  202. package/skills/wix-replatform/lib/blocked-data-requests.js +427 -0
  203. package/skills/wix-replatform/lib/census-reconciliation.js +426 -0
  204. package/skills/wix-replatform/lib/completion-report.js +1393 -13
  205. package/skills/wix-replatform/lib/config-env.js +85 -11
  206. package/skills/wix-replatform/lib/confirmed-pictures.js +212 -0
  207. package/skills/wix-replatform/lib/dependency-readiness.js +423 -0
  208. package/skills/wix-replatform/lib/dependency-recovery.js +21 -0
  209. package/skills/wix-replatform/lib/destination-choice.js +163 -0
  210. package/skills/wix-replatform/lib/destination-handoff.js +62 -0
  211. package/skills/wix-replatform/lib/destination-http.js +81 -0
  212. package/skills/wix-replatform/lib/destination-route.js +98 -0
  213. package/skills/wix-replatform/lib/destination.js +919 -0
  214. package/skills/wix-replatform/lib/discovered-census.js +231 -0
  215. package/skills/wix-replatform/lib/discovered-set-status.js +255 -0
  216. package/skills/wix-replatform/lib/document-url-guard.js +203 -0
  217. package/skills/wix-replatform/lib/entity-qa-attestation.js +339 -0
  218. package/skills/wix-replatform/lib/entity-verification.js +18 -0
  219. package/skills/wix-replatform/lib/execution-capability.js +120 -0
  220. package/skills/wix-replatform/lib/execution-log.js +170 -0
  221. package/skills/wix-replatform/lib/execution-manifest.js +20 -2
  222. package/skills/wix-replatform/lib/execution-state.js +22 -0
  223. package/skills/wix-replatform/lib/expectations-ledger.js +96 -0
  224. package/skills/wix-replatform/lib/generated-plugin-handoff.js +140 -0
  225. package/skills/wix-replatform/lib/import-readiness-contract.js +23 -0
  226. package/skills/wix-replatform/lib/import-recovery.js +800 -6
  227. package/skills/wix-replatform/lib/imported-redirect-targets.js +608 -0
  228. package/skills/wix-replatform/lib/internal-link-reconciliation.js +166 -0
  229. package/skills/wix-replatform/lib/link-audit.js +173 -0
  230. package/skills/wix-replatform/lib/link-census.js +194 -0
  231. package/skills/wix-replatform/lib/link-plan.js +148 -0
  232. package/skills/wix-replatform/lib/link-verification.js +274 -0
  233. package/skills/wix-replatform/lib/link-write-journal.js +42 -0
  234. package/skills/wix-replatform/lib/local-state.js +869 -30
  235. package/skills/wix-replatform/lib/member-completion.js +658 -0
  236. package/skills/wix-replatform/lib/member-crosswalk.js +69 -0
  237. package/skills/wix-replatform/lib/member-outcome-registry.js +265 -0
  238. package/skills/wix-replatform/lib/migration-completion.js +311 -0
  239. package/skills/wix-replatform/lib/operator-identity.js +47 -0
  240. package/skills/wix-replatform/lib/orchestration-decisions.js +248 -0
  241. package/skills/wix-replatform/lib/orchestration-preflight.js +401 -19
  242. package/skills/wix-replatform/lib/orchestration-router.js +608 -32
  243. package/skills/wix-replatform/lib/orchestration-state.js +188 -12
  244. package/skills/wix-replatform/lib/order-reference-readiness.js +30 -0
  245. package/skills/wix-replatform/lib/payments-outcome-registry.js +200 -0
  246. package/skills/wix-replatform/lib/plugin-cms-fallback.js +618 -0
  247. package/skills/wix-replatform/lib/preservation-approval-stamp.js +54 -0
  248. package/skills/wix-replatform/lib/product-media-deferral.js +96 -0
  249. package/skills/wix-replatform/lib/progress-log.js +19 -3
  250. package/skills/wix-replatform/lib/read-back-approval.js +184 -0
  251. package/skills/wix-replatform/lib/read-back-comparison.js +136 -0
  252. package/skills/wix-replatform/lib/read-back-contract.js +243 -0
  253. package/skills/wix-replatform/lib/read-back-extract.js +118 -0
  254. package/skills/wix-replatform/lib/read-back-gate.js +734 -0
  255. package/skills/wix-replatform/lib/read-back-reads.js +94 -0
  256. package/skills/wix-replatform/lib/read-back-state.js +107 -0
  257. package/skills/wix-replatform/lib/read-back-summary.js +81 -0
  258. package/skills/wix-replatform/lib/rerun-conflicts.js +334 -0
  259. package/skills/wix-replatform/lib/run-controller.js +401 -0
  260. package/skills/wix-replatform/lib/seo-outcome-registry.js +45 -0
  261. package/skills/wix-replatform/lib/setup-verification.js +148 -0
  262. package/skills/wix-replatform/lib/source-access.js +231 -0
  263. package/skills/wix-replatform/lib/source-coverage.js +1130 -0
  264. package/skills/wix-replatform/lib/source-secrets.js +277 -0
  265. package/skills/wix-replatform/lib/structured-link-patch.js +59 -0
  266. package/skills/wix-replatform/lib/task-state.js +110 -0
  267. package/skills/wix-replatform/lib/url-preservation-report.js +319 -0
  268. package/skills/wix-replatform/lib/url-preservation-state.js +349 -1
  269. package/skills/wix-replatform/lib/url-redirect-plan.js +728 -0
  270. package/skills/wix-replatform/lib/url-verification.js +315 -0
  271. package/skills/wix-replatform/lib/user-action-effects.js +42 -0
  272. package/skills/wix-replatform/lib/user-actions.js +264 -0
  273. package/skills/wix-replatform/lib/website-handoff.js +1220 -0
  274. package/skills/wix-replatform/lib/wix-client-callers.js +54 -0
  275. package/skills/wix-replatform/lib/wix-dashboard-url.js +35 -0
  276. package/skills/wix-replatform/lib/write-verification-state.js +92 -0
  277. package/skills/wix-replatform/lib/write-verification.js +274 -0
  278. package/skills/wix-replatform/resources/rp-destination/SKILL.md +137 -0
  279. package/skills/wix-replatform/resources/rp-discovery/SKILL.md +189 -16
  280. package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +47 -0
  281. package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +869 -29
  282. package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +70 -0
  283. package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +195 -29
  284. package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +442 -0
  285. package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +112 -0
  286. package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +143 -0
  287. package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +244 -0
  288. package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +2082 -38
  289. package/skills/wix-replatform/resources/rp-mapper/SKILL.md +528 -11
  290. package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +303 -0
  291. package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +88 -0
  292. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +6 -5
  293. package/skills/wix-replatform/resources/rp-preflight/SKILL.md +40 -0
  294. package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +55 -0
  295. package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +60 -0
  296. package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +89 -0
  297. package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +36 -0
  298. package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +123 -0
  299. package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +124 -0
  300. package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +522 -0
  301. package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +56 -0
  302. package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +91 -0
  303. package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +255 -0
  304. package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +80 -10
  305. package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +44 -0
  306. package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +3 -0
  307. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
  308. package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +21 -1
  309. package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +66 -0
  310. package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +153 -0
  311. package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +394 -0
  312. package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +200 -0
  313. package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +34 -0
  314. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +44 -0
  315. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +1470 -0
  316. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +446 -0
  317. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +474 -0
  318. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +879 -0
  319. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +426 -0
  320. package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +24 -0
  321. package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +18 -0
  322. package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +40 -0
  323. package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +76 -0
  324. package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +51 -0
  325. package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +35 -0
  326. package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +20 -0
  327. package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +18 -0
  328. package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +31 -0
  329. package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +21 -0
  330. package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +21 -0
  331. package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +30 -0
  332. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +150 -0
  333. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +36 -0
  334. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +48 -0
  335. package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +20 -0
  336. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +8 -0
  337. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +6 -0
  338. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +8 -0
  339. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +8 -0
  340. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +12 -0
  341. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +6 -0
  342. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +13 -0
  343. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +13 -0
  344. package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +73 -0
  345. package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +13 -0
  346. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +693 -0
  347. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +283 -0
  348. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +191 -0
  349. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +115 -0
  350. package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +201 -0
  351. package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +146 -0
  352. package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +736 -22
  353. package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +73 -0
  354. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +115 -0
  355. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +91 -0
  356. package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +440 -0
  357. package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +125 -0
  358. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +252 -0
  359. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +183 -0
  360. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +333 -0
  361. package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +426 -0
  362. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +400 -0
  363. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +633 -0
  364. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +1127 -0
  365. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +194 -0
  366. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +100 -0
  367. package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +157 -0
  368. package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +234 -0
  369. package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +101 -0
  370. package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +755 -0
  371. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +1074 -0
  372. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +149 -0
  373. package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +25 -0
  374. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +204 -9
  375. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +186 -0
  376. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +1422 -0
  377. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +343 -0
  378. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +262 -26
  379. package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +272 -0
  380. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +373 -0
  381. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +101 -0
  382. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +81 -0
  383. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +128 -0
  384. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +18 -0
  385. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +104 -0
  386. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +44 -0
  387. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +49 -0
  388. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +94 -0
  389. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +863 -0
  390. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +52 -0
  391. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +161 -0
  392. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +180 -0
  393. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +286 -0
  394. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +79 -0
  395. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +120 -0
  396. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +128 -0
  397. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +88 -0
  398. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +80 -0
  399. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +46 -0
  400. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +55 -0
  401. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +99 -0
  402. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +55 -0
  403. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +160 -0
  404. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +81 -0
  405. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +60 -0
  406. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +74 -0
  407. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +75 -0
  408. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +60 -0
  409. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +44 -0
  410. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +57 -0
  411. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +141 -0
  412. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +54 -0
  413. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +158 -0
  414. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +97 -0
  415. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +86 -0
  416. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +90 -0
  417. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +51 -0
  418. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +103 -0
  419. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +1668 -33
  420. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +273 -0
  421. package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +11 -0
  422. package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +13 -0
  423. package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +446 -32
  424. package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +36 -0
  425. package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +38 -2
  426. package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +322 -0
  427. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +70 -0
  428. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +19 -9
  429. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +42 -8
  430. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +54 -8
  431. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +66 -10
  432. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +38 -7
  433. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +332 -0
  434. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +75 -0
  435. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +181 -0
  436. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +130 -0
  437. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +180 -0
  438. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +161 -0
  439. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +15 -4
  440. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +39 -7
  441. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +47 -8
  442. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +7 -1
  443. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +204 -0
  444. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +17 -4
  445. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +159 -15
  446. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +80 -12
  447. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +48 -8
  448. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +306 -0
  449. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +30 -7
  450. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +171 -0
  451. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +182 -0
  452. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +129 -0
  453. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +192 -0
  454. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +123 -0
  455. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +60 -12
  456. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +112 -0
  457. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +191 -0
  458. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +140 -13
  459. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +383 -18
  460. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +122 -0
  461. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +98 -0
  462. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +86 -0
  463. package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +128 -0
  464. package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +38 -0
  465. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +73 -0
  466. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +107 -0
  467. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +89 -0
  468. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +118 -0
  469. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +93 -0
  470. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +86 -0
  471. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +56 -0
  472. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +121 -0
  473. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +134 -0
  474. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +41 -0
  475. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +50 -0
  476. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +87 -0
  477. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +130 -0
  478. package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +914 -24
  479. package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +41 -0
  480. package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +14 -4
  481. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +45 -8
  482. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +41 -7
  483. package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +119 -0
  484. package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +13 -3
  485. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +41 -7
  486. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +82 -0
  487. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +77 -0
  488. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +165 -13
  489. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +41 -0
  490. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +46 -0
  491. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +137 -0
  492. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +133 -0
  493. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +7 -0
  494. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +36 -0
  495. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +71 -0
  496. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +67 -0
  497. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +72 -0
  498. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +74 -0
  499. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +69 -0
  500. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +61 -0
  501. package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +28 -1
  502. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +109 -0
  503. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +73 -0
  504. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +148 -0
  505. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +91 -0
  506. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +79 -0
  507. package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +32 -0
  508. package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +49 -0
  509. package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +103 -0
  510. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +203 -0
  511. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +27 -10
  512. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +119 -0
  513. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +111 -0
  514. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +52 -8
  515. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +214 -10
  516. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +93 -13
  517. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +111 -0
  518. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +52 -10
  519. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +145 -14
  520. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +84 -0
  521. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +178 -0
  522. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +87 -0
  523. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +106 -0
  524. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +64 -0
  525. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +119 -0
  526. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +94 -0
  527. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +113 -0
  528. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +65 -0
  529. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +165 -0
  530. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +60 -0
  531. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +201 -0
  532. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +306 -0
  533. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +229 -0
  534. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +55 -0
  535. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +715 -0
  536. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +567 -0
  537. package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +73 -0
  538. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +194 -0
  539. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +133 -0
  540. package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +13 -4
  541. package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +491 -0
  542. package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +104 -0
  543. package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +673 -0
  544. package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +453 -2
  545. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +119 -0
  546. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +566 -0
  547. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +249 -0
  548. package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +63 -0
  549. package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +187 -0
  550. package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +64 -0
  551. package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +1027 -0
  552. package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +90 -0
  553. package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +420 -0
  554. package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +177 -0
  555. package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +151 -0
  556. package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +723 -0
  557. package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +353 -0
  558. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +1437 -0
  559. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +354 -0
  560. package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +134 -0
  561. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +221 -0
  562. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +248 -0
  563. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +86 -3
  564. package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +231 -0
  565. package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +28 -0
  566. package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +14 -0
  567. package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +34 -0
  568. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +166 -15
  569. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +19 -2
  570. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +4079 -257
  571. package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +3 -0
  572. package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +150 -0
  573. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +40 -2
  574. package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +6 -1
  575. package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +148 -8
  576. package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +83 -15
  577. package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +1119 -215
  578. package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +318 -0
  579. package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +2 -2
  580. package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +106 -4
  581. package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +94 -0
  582. package/skills/wix-replatform/scripts/census-reconciliation.js +25 -0
  583. package/skills/wix-replatform/scripts/cms-fallback.js +89 -0
  584. package/skills/wix-replatform/scripts/discovered-census.js +26 -0
  585. package/skills/wix-replatform/scripts/discovered-set-status.js +33 -0
  586. package/skills/wix-replatform/scripts/entity-qa-attestation.js +130 -0
  587. package/skills/wix-replatform/scripts/execution-health-check.js +415 -0
  588. package/skills/wix-replatform/scripts/execution-manifest-validate.js +1 -1
  589. package/skills/wix-replatform/scripts/execution-state-prepare.js +1 -1
  590. package/skills/wix-replatform/scripts/expectations-ledger.js +44 -0
  591. package/skills/wix-replatform/scripts/import-contract-verify.js +183 -0
  592. package/skills/wix-replatform/scripts/internal-link-audit.js +90 -0
  593. package/skills/wix-replatform/scripts/item-seo-tags-verify.js +205 -0
  594. package/skills/wix-replatform/scripts/migration-completion.js +76 -0
  595. package/skills/wix-replatform/scripts/orchestration-preflight.js +21 -2
  596. package/skills/wix-replatform/scripts/orchestration-route.js +32 -1
  597. package/skills/wix-replatform/scripts/orchestration-state.js +146 -10
  598. package/skills/wix-replatform/scripts/read-back-gate.js +175 -0
  599. package/skills/wix-replatform/scripts/replatform-console.js +146 -0
  600. package/skills/wix-replatform/scripts/replatform.js +436 -0
  601. package/skills/wix-replatform/scripts/source-secrets.js +77 -0
  602. package/skills/wix-replatform/scripts/url-redirects.js +286 -0
  603. package/skills/wix-replatform/scripts/user-action.js +58 -0
  604. package/skills/wix-replatform/scripts/website-handoff-generate.js +64 -0
  605. package/skills/wix-replatform/scripts/wix-dashboard-url.js +54 -0
  606. package/skills/wix-replatform/scripts/wix-destination.js +143 -0
  607. package/skills/wix-replatform/scripts/wix-headless-scaffold.js +762 -0
  608. package/skills/wix-vibe-headless/SKILL.md +7 -3
  609. package/skills/wix-vibe-headless/install/deploy.cjs +61 -34
  610. package/skills/wix-vibe-headless/platforms/base44.md +1 -0
  611. package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +88 -0
  612. package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +112 -0
  613. package/skills/wix-vibe-headless/references/donations/seed/SEED.md +11 -0
  614. package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +258 -0
  615. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +5 -2
  616. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +4 -1
  617. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +67 -3
  618. package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +4 -3
  619. package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +0 -330
@@ -0,0 +1,36 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "capabilities": [
4
+ {
5
+ "family": "store-product",
6
+ "frontendType": "headless",
7
+ "supported": true,
8
+ "key": "wix.stores.sub_pages.product",
9
+ "pageIdentifier": "product_page",
10
+ "pageIdentifierType": "tpaPageId",
11
+ "variable": "slug",
12
+ "readMethod": "url-mapper-writer-get",
13
+ "writeMethod": "url-mapper-writer-create",
14
+ "evidence": "Stores product URL Mapper pattern write and separate writer-side read-back verified; served routing remains unverified",
15
+ "request": {
16
+ "key": "wix.stores.sub_pages.product",
17
+ "urlMapping": {
18
+ "key": "wix.stores.sub_pages.product",
19
+ "pageIdentifier": "product_page",
20
+ "pageIdentifierType": "tpaPageId",
21
+ "mapping": "product/{{slug}}"
22
+ }
23
+ },
24
+ "readBackFixture": {
25
+ "key": "wix.stores.sub_pages.product",
26
+ "pageIdentifier": "product_page",
27
+ "pageIdentifierType": "tpaPageId",
28
+ "mapping": "product/{{slug}}"
29
+ }
30
+ }
31
+ ],
32
+ "unverifiedFamilies": [
33
+ "store-category", "blog-post", "blog-category", "blog-list", "bookings-service",
34
+ "bookings-list", "cart", "checkout", "other-app-pages", "portfolio", "builder-blog"
35
+ ]
36
+ }
@@ -4,10 +4,46 @@ This directory is the compact, machine-readable knowledge base for Wix target en
4
4
  suitability. Domain and entity files are the source of truth. `index.json` is generated
5
5
  from those files and checked in so mapper/codegen lookups stay token-cheap.
6
6
 
7
+ ## Docs reading contract
8
+
9
+ Authoring or materially editing entities in a domain starts with the domain's full docs menu,
10
+ never a keyword hit:
11
+
12
+ 1. Declare the domain's docs menu roots in `domain.json` `docsRoots[]`
13
+ (paths under `https://dev.wix.com/docs/`, e.g. `api-reference/business-solutions/events`).
14
+ A domain may span several roots (stores also owns the Coupons and Business Management → Tags
15
+ trees).
16
+ 2. Run `node scripts/docs-survey-sync.js <domain>` — it fetches each root's `.md` menu page and
17
+ writes the surface list into `domains/<domain>/docs-survey.json`. New surfaces arrive as
18
+ `unreviewed`, which fails validation.
19
+ 3. Triage every surface to one verdict: `claimed` (with `refs[]` that must resolve),
20
+ `not-importable` (reason required), `not-relevant` (reason required), or `gap`
21
+ (reason + tracking required). Every verdict carries `reviewedOn`.
22
+ 4. Any entity classified `native` / `native-plus-cms` must cite its `…-object` docs page in
23
+ `evidence[]` — the field-level facts live on the object, not the method list. A surface with
24
+ no object page anywhere (e.g. Comments, which has no REST reference) declares
25
+ `objectPageException` with the reason.
26
+
27
+ The validator enforces all of it; a domain with entities and no survey fails the build.
28
+
29
+ ### Service-plugin surfaces are not import paths — but they are not noise either
30
+
31
+ Every `Service Plugins` surface triages to `not-relevant`, because Wix calls *us*, so it can never
32
+ carry historical records. That verdict is right and it is also the easiest thing in this knowledge
33
+ base to misread: a service plugin cannot import data, but it **can supply a capability the
34
+ destination lacks**, which is exactly the category of gap that otherwise gets written up as "Wix
35
+ cannot do this."
36
+
37
+ That misreading has already cost this project a wrong answer twice on `ecom/discount-rule.json`.
38
+ Before writing a capability gap into a report, check **`SERVICE-PLUGINS.md`** in this directory: it
39
+ holds the escalation rule (native primitive first, always), the honest cost of a plugin, a complete
40
+ worked example, and a catalog of all 25 Wix service plugins with a per-plugin judgment on whether it
41
+ could close a migration gap.
42
+
7
43
  ## Maintenance
8
44
 
9
45
  - Edit only the affected `domains/<domain>/` subtree when changing domain-owned facts.
10
- - Keep long analysis in `research/import-api-suitability/`; entity files should contain
46
+ - Keep long analysis separate from the entity files; entity files should contain
11
47
  compact guidance and evidence links.
12
48
  - Use `preferredWrite.writerId` only for exported functions from
13
49
  `rp-target-wix/lib/wix-writers.js`. Use `null` for direct REST plans, setup work, or
@@ -17,5 +53,5 @@ from those files and checked in so mapper/codegen lookups stay token-cheap.
17
53
  - Regenerate and validate the index after edits:
18
54
 
19
55
  ```bash
20
- node skills/replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js --write-index
56
+ node skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js --write-index
21
57
  ```
@@ -0,0 +1,322 @@
1
+ # Wix service plugins — the fallback when no native primitive fits
2
+
3
+ A **service plugin** (formerly "SPI") inverts the usual direction: instead of us calling Wix,
4
+ **Wix calls us** during one of its own flows, waits for our answer, and continues based on it.
5
+ Wix's own phrasing is *"don't call us, we'll call you."*
6
+
7
+ - Concept: <https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/service-plugins/about-service-plugin-extensions>
8
+ - Full catalog: <https://dev.wix.com/docs/build-apps/get-started/overview/how-apps-extend-wix#service-plugins>
9
+
10
+ ## Why this file exists
11
+
12
+ Every service-plugin surface in every `docs-survey.json` was verdicted `not-relevant` with a
13
+ reason along the lines of *"an extension point the site implements, never an import path."*
14
+
15
+ **The "not an import path" half is correct. The implied "therefore useless to a migration" is
16
+ not.** `ecom/discount-rule.json` twice concluded that a WooCommerce buy-X-get-a-different-Y
17
+ discount and a bounded quantity tier were both unmappable. Both conclusions were wrong — but for
18
+ **two different reasons, which are worth keeping apart**:
19
+
20
+ | Source shape | Why it looked unmappable | What actually maps it |
21
+ |---|---|---|
22
+ | Buy X, get a **different** Y | The wrong axis was read: `QUANTITY_BASED` on `discountType`, when BOGO lives on `targetType` | **Native.** `targetType: BUY_X_GET_Y` + `buyXGetYInfo` — no service plugin involved |
23
+ | A **bounded** quantity tier (6-10) | A bounded `itemQuantityRange` leaves the rule unrenderable in the dashboard, and the open-ended fallback stacks | **A service plugin** — a Custom Discount Trigger answering yes/no per cart |
24
+
25
+ Only the second is a service-plugin story, and it is the worked example below. The first belongs to
26
+ rung 1 of the ladder — it is the case that proves *read the live enum off the server before
27
+ declaring a capability absent*. Conflating them would teach the wrong lesson for both.
28
+
29
+ A service plugin is never a way to *load records*. It is a way to **supply a capability the
30
+ destination lacks** — which is precisely the category of migration gap that otherwise gets written
31
+ up as "Wix cannot do this."
32
+
33
+ ## The decision rule
34
+
35
+ > **Native primitive first, always. A service plugin is the second choice, never the first.**
36
+
37
+ 1. **Find the native primitive.** Read the entity's own object page and, for enums, read the live
38
+ enum off the server's own validation error rather than a doc page — post a bogus value and let
39
+ `UnrecognizedEnumValidator` list the real members. `discount-rule.json`'s
40
+ `buy-x-get-y-is-supported-but-undocumented` pitfall exists because a capability that *was*
41
+ native looked absent in both the published schema and the docs example.
42
+ 2. **If the primitive exists but the shape is merely awkward, prefer native** — an extra rule per
43
+ tier, a bit more configuration, a field the merchant has to re-enter. Awkward is fine.
44
+
45
+ **Awkward is not the same as inexact, and the line is what a customer pays.** Ask: *does this
46
+ shape change who qualifies, or what they are charged?* A widened scope (variation ids resolving
47
+ up to their parent product, so every variant now qualifies) and a lossy field both **fail** that
48
+ test — they are approximations, not awkwardness, and they belong at rung 4 with the gap. An
49
+ earlier version of this list named "a widened scope" as a preferred native fallback; that was
50
+ wrong and it contradicted rung 4.
51
+ 3. **Only when the destination genuinely has no primitive** for a condition the source depends on,
52
+ consider a service plugin — and price it honestly using the cost list below.
53
+ 4. **If neither works, it is a real gap — and so is anything you had to approximate to make
54
+ "native" fit.** Record it with the source rule's exact values and say what changed. Never ship
55
+ an approximation silently: an approximated discount is worse than an absent one, because an
56
+ absent one is visible and a wrong one quietly charges the wrong amount.
57
+
58
+ ## What it costs — price this before choosing it
59
+
60
+ | Cost | Detail |
61
+ |---|---|
62
+ | **An app** | A service plugin only exists inside a Wix app. Scaffold with `wix generate` → Service Plugin in a Wix CLI project. |
63
+ | **Hosting** | The CLI route lets Wix host the endpoints (`wix release`). Self-hosted means you own an HTTPS endpoint and its uptime. |
64
+ | **Permanent production infrastructure** | This is the one that matters. The plugin is not a migration script that finishes — it is called on **every cart change, forever**. Uninstall the app and every rule depending on its triggers stops resolving. A migration deliverable that must stay running is a support commitment, not a one-off. |
65
+ | **A 3-second budget** | Several plugins document a hard response deadline; a timeout means Wix continues *without* your answer. Degradation is silent. |
66
+ | **⚠️ `wix release` publishes the site** | Verified live 2026-08-31: releasing an app version printed `Site published on …` and the storefront went from unpublished to HTTP 200. Never treat "the site is unpublished" as containment for anything, and check for unsafe-when-live state *before* releasing. |
67
+
68
+ ### One supported route: the Wix CLI, inside an app
69
+
70
+ **Build every service plugin with the Wix CLI as an app extension. That is the only route this
71
+ pipeline supports.**
72
+
73
+ Wix's own docs also describe a per-site **Velo** route and a self-hosted route. Neither is
74
+ available here:
75
+
76
+ - **Velo — not supported.** Do not propose it, do not scaffold it, and do not record it as a
77
+ lighter alternative even though it needs no app. It is out of the product regardless of whether
78
+ it would technically work for a single-site migration.
79
+ - **Self-hosted** means owning an HTTPS endpoint and its uptime. The CLI route has Wix host the
80
+ endpoints for you, which is why it is the default here.
81
+
82
+ So the concrete path is always: `wix generate` → Service Plugin → pick the extension → implement
83
+ the handlers → `wix release`.
84
+
85
+ ## Worked example — bounded quantity tiers (PROVEN END TO END, 2026-08-31)
86
+
87
+ **The gap.** WooCommerce `woo-discount-rules` expresses a bulk discount as mutually exclusive
88
+ quantity bands: 1-5 → 5% off, 6-10 → 10%, 11-15 → 15%, 16-20 → 20%, 21+ → 25%. Wix's native
89
+ `ITEM_QUANTITY_RANGE` trigger does accept `{from, to}`, but a **bounded** range leaves the rule
90
+ unrenderable in the merchant's Automatic Discounts editor. Falling back to open-ended `{from}` is
91
+ not equivalent: every lower tier stays true once you pass its minimum and Wix stacks them, so a
92
+ 21-item cart matched all five tiers for 5+10+15+20+25 = **75% off instead of 25%**. The tiers could
93
+ only ship inactive.
94
+
95
+ **The fix.** The Custom Discount Triggers service plugin answers a plain yes/no per cart, so a band
96
+ is expressible exactly and at most one tier is ever eligible.
97
+
98
+ - Plugin docs: <https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/discounts/custom-discount-triggers-integration-service-plugin/introduction>
99
+ - Add it with the CLI: <https://dev.wix.com/docs/build-apps/develop-your-app/develop-an-app-with-the-cli/supported-extensions/backend/service-plugins/add-service-plugin-extensions-with-the-wix-cli>
100
+
101
+ Scaffold it with `wix generate` → Service Plugin → **Ecom Discount Triggers**, which writes a
102
+ `<name>.ts` handler file and a `<name>.extension.ts` config file. Keep the decision logic in a third
103
+ file with no `@wix` import so it is unit-testable without a deployed app. **Both files below are
104
+ complete and copy-pasteable** — this is the whole implementation, not an excerpt.
105
+
106
+ `bands.ts` — the arithmetic and scope resolution:
107
+
108
+ ```ts
109
+ export type Band = { min: number; max: number | null; scopeKey: string | null };
110
+
111
+ const ID_PREFIX = 'bulk-qty-';
112
+
113
+ // Product ids per scope key. EMPTY when every listed band is storewide.
114
+ // Trigger ids cap at 100 chars and a product GUID is 36, so an id carries a short KEY,
115
+ // not the products — which makes a membership change a redeploy, unlike a bounds change.
116
+ export const SCOPES: Record<string, readonly string[]> = {};
117
+
118
+ export const LISTED_BANDS: Band[] = [
119
+ { min: 1, max: 5, scopeKey: null },
120
+ { min: 6, max: 10, scopeKey: null },
121
+ { min: 11, max: 15, scopeKey: null },
122
+ { min: 16, max: 20, scopeKey: null },
123
+ { min: 21, max: null, scopeKey: null },
124
+ ];
125
+
126
+ export const bandToId = (b: Band) =>
127
+ `${ID_PREFIX}${b.min}-${b.max === null ? 'plus' : b.max}${b.scopeKey ? `@${b.scopeKey}` : ''}`;
128
+
129
+ export const bandToName = (b: Band) =>
130
+ b.max === null ? `Cart has ${b.min} or more items` : `Cart has ${b.min}-${b.max} items`;
131
+
132
+ /** null for anything malformed OR naming a scope this deployment does not define — fail closed. */
133
+ export function parseTriggerId(id: string): Band | null {
134
+ if (!id.startsWith(ID_PREFIX)) return null;
135
+ const rest = id.slice(ID_PREFIX.length);
136
+ const at = rest.indexOf('@');
137
+ const scopeKey = at === -1 ? null : rest.slice(at + 1);
138
+ if (scopeKey !== null && !Object.prototype.hasOwnProperty.call(SCOPES, scopeKey)) return null;
139
+ const m = /^(\d+)-(\d+|plus)$/.exec(at === -1 ? rest : rest.slice(0, at));
140
+ if (!m) return null;
141
+ const min = Number(m[1]);
142
+ const max = m[2] === 'plus' ? null : Number(m[2]);
143
+ if (!Number.isSafeInteger(min) || min < 0) return null;
144
+ if (max !== null && (!Number.isSafeInteger(max) || max < min)) return null;
145
+ return { min, max, scopeKey };
146
+ }
147
+
148
+ export const bandContains = (b: Band, qty: number) =>
149
+ qty >= b.min && (b.max === null || qty <= b.max);
150
+
151
+ type CartLine = { quantity?: number | null; catalogReference?: { catalogItemId?: string | null } | null };
152
+
153
+ /** Units (not lines) that count toward this band, filtered to its scope first. */
154
+ export function eligibleQuantity(band: Band, lineItems: readonly CartLine[] = []): number {
155
+ const allowed = band.scopeKey === null ? null : new Set(SCOPES[band.scopeKey] ?? []);
156
+ return lineItems.reduce((sum, item) => {
157
+ if (allowed !== null) {
158
+ const id = item?.catalogReference?.catalogItemId;
159
+ if (!id || !allowed.has(id)) return sum;
160
+ }
161
+ return sum + (Number(item?.quantity) || 0);
162
+ }, 0);
163
+ }
164
+ ```
165
+
166
+ **The proof.** Deployed is not the same as working, so it was verified against live carts. With only
167
+ the 6-10 band active, three carts of the same single product were created, calculated, then deleted
168
+ (one unit priced P, so the only thing that varies is quantity):
169
+
170
+ | Cart | Gross | Discount | Result |
171
+ |---|---|---|---|
172
+ | 3 units | 3P | 0 | no discount — below the band ✅ |
173
+ | 7 units | 7P | **exactly 10% of 7P** | discounted, and the applied-discount `name` matched the 6-10 rule ✅ |
174
+ | 11 units | 11P | 0 | no discount — **above** the band ✅ |
175
+
176
+ **The 11-unit row is the one that matters.** Under the old open-ended `{from: 6}` shape it would
177
+ also have been discounted, so it is the only case that distinguishes the two implementations: it
178
+ proves the plugin is genuinely being consulted and that the band's upper bound holds. A passing
179
+ 7-unit case alone would have proved nothing. **Design the verification around the case that can
180
+ only pass if the new mechanism is live** — for a service plugin that usually means an input the old
181
+ behaviour would have answered differently.
182
+
183
+ Two required handlers. `listTriggers` is static and only feeds the dashboard dropdown;
184
+ `getEligibleTriggers` is called on every cart change with the cart's line items:
185
+
186
+ ```ts
187
+ import { customTriggers } from '@wix/ecom/service-plugins';
188
+ import { LISTED_BANDS, bandToId, bandToName, bandContains, parseTriggerId, eligibleQuantity } from './bands';
189
+
190
+ customTriggers.provideHandlers({
191
+ // NOTE `_id`, not `id` — see the SDK trap below.
192
+ listTriggers: async () => ({
193
+ customTriggers: LISTED_BANDS.map((band) => ({ _id: bandToId(band), name: bandToName(band) })),
194
+ }),
195
+
196
+ getEligibleTriggers: async ({ request }) => {
197
+ const lineItems = request.lineItems ?? [];
198
+ const eligibleTriggers = (request.triggers ?? []).flatMap((trigger) => {
199
+ const id = trigger.customTrigger?._id;
200
+ const identifier = trigger.identifier;
201
+ if (!id || !identifier) return [];
202
+ const band = parseTriggerId(id); // null if malformed OR an unknown scope
203
+ if (!band) return [];
204
+ // eligibleQuantity filters the cart to the band's scope BEFORE summing units —
205
+ // see point 0 below. Summing every line item is the scoped-rule bug.
206
+ if (!bandContains(band, eligibleQuantity(band, lineItems))) return [];
207
+ return [{ customTriggerId: id, identifier }]; // echo `identifier` back EXACTLY
208
+ });
209
+ return { eligibleTriggers };
210
+ },
211
+ });
212
+ ```
213
+
214
+ Each tier then becomes one ordinary `DiscountRule` pointing at the band:
215
+
216
+ ```jsonc
217
+ {
218
+ "trigger": {
219
+ "triggerType": "CUSTOM",
220
+ "customTrigger": { "id": "bulk-qty-6-10", "appId": "<your app id>" }
221
+ },
222
+ "discounts": { "values": [{ "targetType": "SPECIFIC_ITEMS", "discountType": "PERCENTAGE", "percentage": 10,
223
+ "specificItemsInfo": { "scopes": [ /* … */ ] } }] }
224
+ }
225
+ ```
226
+
227
+ ### Four things that generalize to any service plugin
228
+
229
+ 0. **⚠️ Encode the ELIGIBLE SET too, not just the thresholds.** `GetEligibleTriggersRequest`
230
+ carries the cart's line items and the trigger ids, but **not the discount rule's own
231
+ scope**. A handler that sums every line item therefore gets a product-scoped rule wrong:
232
+ for a tier scoped to product A, a cart of 3×A + 3×B sums to 6, activates a 6-10 band and
233
+ discounts A — while the source rule counted 3 eligible units and would not have fired.
234
+ Resolve the scope from the id and filter the cart **before** summing, and fail closed when
235
+ the id names a scope the deployment does not define. Trigger ids cap at 100 characters and
236
+ a product GUID is 36, so ids carry a short scope KEY that resolves to a product list in
237
+ code — which means changing a scope's membership is a redeploy, unlike changing a band's
238
+ bounds. Test the mixed-product cart explicitly; a single-product cart passes either way.
239
+ 1. **Encode parameters in the trigger/entity id** (`bulk-qty-6-10`, `bulk-qty-21-plus`) and parse
240
+ them at evaluation time. Re-cutting a tier then becomes a *data* edit with no redeploy, and the
241
+ listed set is presentation only.
242
+ 2. **Keep the decision logic in a module with no `@wix` import** so it is unit-testable without a
243
+ deployed app. The reference implementation's `bands.ts` carries 47 assertions including a
244
+ mutual-exclusivity sweep; the Wix wiring file holds no arithmetic at all.
245
+ 3. **Fail closed.** An unparseable id resolves to *not eligible*. A permissive default in a
246
+ discount plugin silently discounts every cart on the site.
247
+ 4. **Echo correlation fields back verbatim.** `identifier` is how Wix matches your answer to the
248
+ rule that asked. Returning only the id applies nothing, with no error.
249
+
250
+ ### The SDK trap, verified 2026-08-31
251
+
252
+ The SDK renames REST's `id` to `_id` — **inbound only**:
253
+
254
+ | | Field |
255
+ |---|---|
256
+ | `getEligibleTriggers` request | `triggers[].customTrigger._id` |
257
+ | `listTriggers` response | `customTriggers[]._id` |
258
+ | `getEligibleTriggers` response | `eligibleTriggers[].customTriggerId` — **not** renamed |
259
+ | `LineItem` | `quantity` — not renamed |
260
+
261
+ So a correct handler looks internally inconsistent. Writing `id` on the list side compiles clean in
262
+ plain JS and returns a trigger list Wix can never match — the discount just never applies and
263
+ nothing errors. Read `node_modules/@wix/auto_sdk_ecom_custom-triggers/build/cjs/interfaces-*.d.ts`
264
+ rather than the REST docs, and typecheck before releasing.
265
+
266
+ ## Catalog — all 25 service plugins
267
+
268
+ `Build` is Wix's own column: **CLI** = Wix can host it for you; **self** = self-managed only.
269
+ `Gap-closing?` is *our* judgment about whether it could make a migration faithful — only the
270
+ Discounts row has actually been used.
271
+
272
+ ### eCommerce / Stores
273
+
274
+ | Service plugin | Domain | Build | Gap-closing? |
275
+ |---|---|---|---|
276
+ | [Custom discount triggers](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/discounts/custom-discount-triggers-integration-service-plugin/introduction) | `ecom` | CLI | 🟢 **PROVEN** — bounded quantity bands, and any trigger condition Wix lacks |
277
+ | [Shipping rates](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/shipping-rates/shipping-rates-integration-service-plugin/introduction) | `ecom` | CLI | 🟡 Likely — the natural home for a source rate table Wix cannot express (see `shipping-option.json`; a free-shipping-over-threshold condition and per-shipping-class costs are both known to fail natively) |
278
+ | [Additional fees](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/additional-fees/additional-fees-service-plugin/introduction) | `ecom` | CLI | 🟡 Likely — source surcharges (handling, packaging, COD) with no Wix field |
279
+ | [Validations](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/validations/validations-integration-service-plugin/introduction) | `ecom` | CLI | 🟡 Likely — source purchase restrictions (members-only, min/max quantity, region blocks) |
280
+ | [Tax calculation](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-calculation-integration-service-plugin/introduction) | `tax` | CLI | 🟡 Possible — only if the source's tax logic exceeds Wix tax groups |
281
+ | [Tax groups](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups-integration-service-plugin/introduction) | `tax` | self | 🔴 Provider integration, not a migration path |
282
+ | [Catalog](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/catalogs/catalog-service-plugin/introduction) | `ecom` | CLI | 🔴 Makes an *external* catalog sellable on Wix. The opposite of a migration — it keeps data at the source |
283
+ | [Inventory](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/catalogs/inventory-service-plugin/introduction) | `ecom` | self | 🔴 Same — delegates stock to an external system |
284
+ | [Gift vouchers](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/payments/gift-cards/gift-cards-service-plugin/introduction) | `gift-cards` | CLI | 🟡 Worth a look — single-use bearer vouchers are commonly stranded, because Wix rejects a coupon carrying neither scope nor minimum. A voucher provider plugin may be the honest answer |
285
+ | [Memberships](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/payments/memberships/memberships-service-plugin/introduction) | `pricing-plans` | self | 🔴 Payment-provider integration |
286
+ | [Payment settings (3DS)](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/payments/payment-settings/payment-settings-integration-service-plugin/introduction) | `ecom` | CLI | 🔴 Payment configuration, never migrated |
287
+ | [Recommendations](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/other-services/recommendations/recommendations-service-plugin/introduction) | `ecom` | self | 🔴 Algorithm provider. Note: source upsell/cross-sell lists are *data* and belong on the product |
288
+ | [Product restrictions V3](https://dev.wix.com/docs/api-reference/business-solutions/stores/service-plugins/product-restrictions-v3/introduction) | `stores` | self | 🔴 For dropshipping/POD apps locking product fields |
289
+ | [Suppliers Hub marketplace provider](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/marketplace-provider-service-plugin/introduction) | `stores` | CLI | 🔴 Supplier catalog integration |
290
+
291
+ ### Bookings
292
+
293
+ | Service plugin | Domain | Build | Gap-closing? |
294
+ |---|---|---|---|
295
+ | [Booking policy](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policy-service-plugin/introduction) | `bookings` | CLI | 🟡 Likely — source cancellation/reschedule windows Wix policies cannot express |
296
+ | [Bookings validation](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-validation-service-plugin/introduction) | `bookings` | CLI | 🟡 Likely — source booking constraints |
297
+ | [Pricing integration](https://dev.wix.com/docs/api-reference/business-solutions/bookings/pricing/pricing-integration-service-plugin/introduction) | `bookings` | self | 🟡 Possible — source per-service pricing rules |
298
+ | [Availability time slots configuration](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/availability-time-slots-configuration-service-plugin/introduction) | `bookings` | CLI | 🟡 Possible — non-standard slot generation |
299
+
300
+ ### Everything else
301
+
302
+ | Service plugin | Domain | Build | Gap-closing? |
303
+ |---|---|---|---|
304
+ | [Form submissions](https://dev.wix.com/docs/api-reference/crm/forms/service-plugins/form-submissions-service-plugin/introduction) | `forms` | CLI | 🔴 Adds live validation. Does **not** accept historical submissions, so it cannot carry a source submission archive |
305
+ | [SEO keyword suggestions](https://dev.wix.com/docs/api-reference/business-management/marketing/seo/seo-keywords-suggestions-service-plugin/introduction) | `seo` | CLI | 🔴 Dashboard suggestions. Note: this is **not** a home for Yoast focus keyphrases (gap §8) — those are per-item data with nowhere to live |
306
+ | [External database](https://dev.wix.com/docs/api-reference/business-solutions/cms/external-databases/external-database-service-plugin/introduction) | `cms` | self | 🔴 Keeps data external. Directly opposed to migrating it in |
307
+ | [Automations action provider](https://dev.wix.com/docs/api-reference/business-management/automations/actions/action-provider-service-plugin/introduction) | — | self | 🔴 Out of scope |
308
+ | [Automations trigger provider](https://dev.wix.com/docs/api-reference/business-management/automations/triggers/trigger-provider-service-plugin/introduction) | — | self | 🔴 Out of scope |
309
+ | [Payments provider](https://dev.wix.com/docs/api-reference/business-management/payments/payment-service-provider-service-plugin/introduction) | — | self | 🔴 Payment gateways are re-established by the owner, never migrated |
310
+ | [App billing custom charges](https://dev.wix.com/docs/api-reference/app-management/app-billing/custom-charges-service-plugin/introduction) | — | self | 🔴 Out of scope |
311
+
312
+ ⚠️ **Only the Discounts row is verified.** Every 🟡 is a reasoned guess from reading the plugin's
313
+ own docs, not a live result. Before promising one to an owner, confirm the handler receives the
314
+ inputs your rule needs — that check is what made the discount case work: the decision hinged
315
+ entirely on `GetEligibleTriggersRequest` carrying `lineItems[].quantity`.
316
+
317
+ ## When you use one, write it down
318
+
319
+ A service plugin that closes a gap changes the entity's own knowledge file. Add a pitfall on the
320
+ affected entity (as `bounded-quantity-bands-need-a-custom-trigger-spi` does on
321
+ `ecom/discount-rule.json`), and add a row here with the verdict promoted from 🟡 to 🟢 plus a
322
+ pointer to the implementation.
@@ -0,0 +1,70 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "domain": "blog",
4
+ "fetchedAt": "2026-08-11",
5
+ "roots": [
6
+ "api-reference/business-solutions/blog"
7
+ ],
8
+ "surfaces": [
9
+ {
10
+ "id": "api-reference/business-solutions/blog/category",
11
+ "title": "Category",
12
+ "url": "https://dev.wix.com/docs/api-reference/business-solutions/blog/category",
13
+ "group": null,
14
+ "verdict": "claimed",
15
+ "refs": [
16
+ "blog/category"
17
+ ],
18
+ "reviewedOn": "2026-08-11"
19
+ },
20
+ {
21
+ "id": "api-reference/business-solutions/blog/draft-posts",
22
+ "title": "Draft Posts",
23
+ "url": "https://dev.wix.com/docs/api-reference/business-solutions/blog/draft-posts",
24
+ "group": null,
25
+ "verdict": "claimed",
26
+ "refs": [
27
+ "blog/post"
28
+ ],
29
+ "reviewedOn": "2026-08-11"
30
+ },
31
+ {
32
+ "id": "api-reference/business-solutions/blog/likes",
33
+ "title": "Likes",
34
+ "url": "https://dev.wix.com/docs/api-reference/business-solutions/blog/likes",
35
+ "group": null,
36
+ "verdict": "not-relevant",
37
+ "reason": "Post likes; WordPress has no post-like concept, no source capability maps.",
38
+ "reviewedOn": "2026-08-11"
39
+ },
40
+ {
41
+ "id": "api-reference/business-solutions/blog/posts-stats",
42
+ "title": "Posts & Stats",
43
+ "url": "https://dev.wix.com/docs/api-reference/business-solutions/blog/posts-stats",
44
+ "group": null,
45
+ "verdict": "not-importable",
46
+ "reason": "Read-only published-post queries and view stats; all writes go through Draft Posts (claimed by blog/post).",
47
+ "reviewedOn": "2026-08-11"
48
+ },
49
+ {
50
+ "id": "api-reference/business-solutions/blog/skills",
51
+ "title": "Skills",
52
+ "url": "https://dev.wix.com/docs/api-reference/business-solutions/blog/skills",
53
+ "group": null,
54
+ "verdict": "not-relevant",
55
+ "reason": "AI-skill documentation page, not a data surface.",
56
+ "reviewedOn": "2026-08-11"
57
+ },
58
+ {
59
+ "id": "api-reference/business-solutions/blog/tags",
60
+ "title": "Tags",
61
+ "url": "https://dev.wix.com/docs/api-reference/business-solutions/blog/tags",
62
+ "group": null,
63
+ "verdict": "claimed",
64
+ "refs": [
65
+ "blog/tag"
66
+ ],
67
+ "reviewedOn": "2026-08-11"
68
+ }
69
+ ]
70
+ }
@@ -1,19 +1,29 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "domain": "blog",
4
+ "dependsOnRequired": true,
5
+ "docsRoots": [
6
+ "api-reference/business-solutions/blog"
7
+ ],
4
8
  "displayName": "Wix Blog",
5
9
  "ownerHint": "Blog posts, categories, tags, authorship, and comments domain owners",
6
- "wixAppsRequired": ["Wix Blog"],
7
- "defaultImportOrder": ["category", "tag", "post", "comment"],
8
- "sideEffectNotes": ["Publishing imported posts may fire public publish side effects."],
10
+ "wixAppsRequired": [
11
+ "Wix Blog"
12
+ ],
13
+ "defaultImportOrder": [
14
+ "category",
15
+ "tag",
16
+ "post",
17
+ "comment"
18
+ ],
19
+ "sideEffectNotes": [
20
+ "Publishing imported posts may fire public publish side effects."
21
+ ],
9
22
  "evidence": [
10
23
  {
11
- "type": "repo-research",
12
- "path": "research/import-api-suitability/blog-cms-media.md"
13
- },
14
- {
15
- "type": "repo-research",
16
- "path": "research/source-entity-import-suitability-wordpress-woocommerce-wix.md"
24
+ "type": "domain-kb",
25
+ "path": "skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json",
26
+ "note": "per-field import-suitability rationale and evidence for this domain live on the entity files (category, tag, post, comment)"
17
27
  }
18
28
  ]
19
29
  }
@@ -3,6 +3,7 @@
3
3
  "domain": "blog",
4
4
  "entity": "category",
5
5
  "displayName": "Blog Category",
6
+ "capability": "content.blog-category",
6
7
  "target": {
7
8
  "classification": "native-plus-cms",
8
9
  "nativeEntity": "Blog Category",
@@ -10,9 +11,24 @@
10
11
  "idPolicy": "server-assigned",
11
12
  "crosswalkRequired": true
12
13
  },
14
+ "dependsOn": [],
13
15
  "sourceAliases": [
14
- { "sourceSystem": "wordpress", "sourceEntity": "category", "routes": ["/wp/v2/categories"], "confidence": "high" },
15
- { "sourceSystem": "wix", "sourceEntity": "blogCategory", "routes": ["Blog Categories"], "confidence": "high" }
16
+ {
17
+ "sourceSystem": "wordpress",
18
+ "sourceEntity": "category",
19
+ "routes": [
20
+ "/wp/v2/categories"
21
+ ],
22
+ "confidence": "high"
23
+ },
24
+ {
25
+ "sourceSystem": "wix",
26
+ "sourceEntity": "blogCategory",
27
+ "routes": [
28
+ "Blog Categories"
29
+ ],
30
+ "confidence": "high"
31
+ }
16
32
  ],
17
33
  "preferredWrite": {
18
34
  "surface": "Blog Categories",
@@ -23,15 +39,33 @@
23
39
  "bulk": false
24
40
  },
25
41
  "fallbacks": [
26
- { "classification": "cms", "when": "Use to preserve WordPress category hierarchy because Wix Blog categories are flat." }
42
+ {
43
+ "classification": "cms",
44
+ "when": "Use to preserve WordPress category hierarchy because Wix Blog categories are flat."
45
+ }
27
46
  ],
28
- "reliability": { "status": "partially-reliable", "flags": [] },
47
+ "reliability": {
48
+ "status": "partially-reliable",
49
+ "flags": []
50
+ },
29
51
  "pitfalls": [
30
- { "code": "flat-target", "severity": "warning", "summary": "Wix Blog categories are flat; WordPress hierarchy needs CMS shadowing if it matters." }
52
+ {
53
+ "code": "flat-target",
54
+ "severity": "warning",
55
+ "summary": "Wix Blog categories are flat; WordPress hierarchy needs CMS shadowing if it matters."
56
+ }
57
+ ],
58
+ "mappingGuidance": [
59
+ "Resolve category collisions and crosswalk IDs before writing posts."
60
+ ],
61
+ "setupRequirements": [
62
+ "Wix Blog app"
31
63
  ],
32
- "mappingGuidance": ["Resolve category collisions and crosswalk IDs before writing posts."],
33
- "setupRequirements": ["Wix Blog app"],
34
64
  "evidence": [
35
- { "type": "repo-research", "path": "research/import-api-suitability/blog-cms-media.md" }
65
+ {
66
+ "type": "wix-docs",
67
+ "url": "https://dev.wix.com/docs/api-reference/business-solutions/blog/category/category-object",
68
+ "note": "object page (docs-survey sweep 2026-08-11)"
69
+ }
36
70
  ]
37
71
  }