@wix/agent-skills 1.15.1 → 1.16.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 (322) hide show
  1. package/README.md +3 -7
  2. package/package.json +1 -1
  3. package/skills/wix-app/SKILL.md +4 -1
  4. package/skills/wix-app/references/APP_TOOLS.md +134 -0
  5. package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +1 -1
  6. package/skills/wix-app/references/DASHBOARD_PAGE.md +0 -10
  7. package/skills/wix-app/references/DATA_COLLECTION.md +1 -1
  8. package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +28 -9
  9. package/skills/wix-app/references/SERVICE_PLUGIN.md +12 -10
  10. package/skills/wix-app/references/app-tools/TOOLS.md +75 -0
  11. package/skills/wix-app/references/dashboard-page/DASHBOARD_API.md +2 -2
  12. package/skills/wix-app/references/editor-react-component/A11Y-REVIEW-REFERENCE.md +172 -0
  13. package/skills/wix-app/references/editor-react-component/A11Y-REVIEW.md +138 -0
  14. package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +23 -2
  15. package/skills/wix-app/references/editor-react-component/BRANDED-COMPONENTS.md +29 -0
  16. package/skills/wix-app/references/editor-react-component/COMPONENT-API.md +1 -1
  17. package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +27 -2
  18. package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +5 -3
  19. package/skills/wix-app/references/editor-react-component/DIRECTIONALITY.md +18 -1
  20. package/skills/wix-app/references/editor-react-component/PARTS.md +15 -2
  21. package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +2 -3
  22. package/skills/wix-app/references/service-plugin/BOOKINGS-STAFF-SORTING.md +13 -9
  23. package/skills/wix-app/references/service-plugin/DISCOUNT-TRIGGERS.md +4 -0
  24. package/skills/wix-app/references/service-plugin/GIFT-CARDS.md +4 -0
  25. package/skills/wix-app/references/service-plugin/PAYMENT-SETTINGS.md +3 -1
  26. package/skills/wix-app/references/service-plugin/SHIPPING-RATES.md +4 -0
  27. package/skills/wix-app/references/service-plugin/TOOLS_PROVIDER.md +54 -0
  28. package/skills/wix-app/references/stores/QUERY.md +32 -0
  29. package/skills/wix-docs/SKILL.md +35 -3
  30. package/skills/wix-headless/SKILL.md +3 -1
  31. package/skills/wix-headless/references/CONTENT.md +36 -0
  32. package/skills/wix-headless/references/DESIGN.md +54 -0
  33. package/skills/wix-headless/references/DISCOVERY.md +24 -0
  34. package/skills/wix-headless/references/IMAGE_GENERATION.md +10 -0
  35. package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +3 -2
  36. package/skills/wix-headless/references/inline-recipes/setup-online-store.md +32 -23
  37. package/skills/wix-headless/references/managed/CONNECT.md +1 -1
  38. package/skills/wix-headless/references/managed/CREATE.md +14 -0
  39. package/skills/wix-headless/references/managed/DEPLOYMENT.md +25 -0
  40. package/skills/wix-manage/SKILL.md +123 -7
  41. package/skills/wix-manage/references/analytics/analytics-dashboard-navigation.md +41 -0
  42. package/skills/wix-manage/references/app-installation/app-installation-dashboard-navigation.md +28 -0
  43. package/skills/wix-manage/references/blog/blog-dashboard-navigation.md +56 -0
  44. package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +31 -6
  45. package/skills/wix-manage/references/bookings/booking-service-policy-setup.md +3 -1
  46. package/skills/wix-manage/references/bookings/bookings-dashboard-navigation.md +63 -0
  47. package/skills/wix-manage/references/bookings/diagnose-availability-issues.md +10 -1
  48. package/skills/wix-manage/references/cms/cms-dashboard-navigation.md +44 -0
  49. package/skills/wix-manage/references/cms/cms-data-items-crud.md +31 -3
  50. package/skills/wix-manage/references/cms/cms-publishing-flow.md +287 -0
  51. package/skills/wix-manage/references/cms/cms-schema-management.md +27 -1
  52. package/skills/wix-manage/references/contacts/contacts-dashboard-navigation.md +46 -0
  53. package/skills/wix-manage/references/contacts/create-a-contact.md +82 -0
  54. package/skills/wix-manage/references/contacts/update-a-contact.md +119 -0
  55. package/skills/wix-manage/references/dashboard-navigation/dashboard-navigation.md +82 -0
  56. package/skills/wix-manage/references/dashboard-navigation/routes.json +1733 -0
  57. package/skills/wix-manage/references/domains/domains-dashboard-navigation.md +32 -0
  58. package/skills/wix-manage/references/ecommerce/ecom-pricing.md +4 -4
  59. package/skills/wix-manage/references/ecommerce/ecom-shipping.md +1 -1
  60. package/skills/wix-manage/references/ecommerce/gift-cards/ecom-gift-cards-goal-sell-gift-cards.md +338 -0
  61. package/skills/wix-manage/references/ecommerce/pricing-promotions/ecom-pricing-create-discount-rule.md +42 -78
  62. package/skills/wix-manage/references/ecommerce/pricing-promotions/ecom-pricing-flow-bundle-and-save.md +1 -1
  63. package/skills/wix-manage/references/ecommerce/pricing-promotions/ecom-pricing-flow-stock-mover.md +1 -1
  64. package/skills/wix-manage/references/ecommerce/pricing-promotions/ecom-pricing-flow-upsell-boost.md +1 -1
  65. package/skills/wix-manage/references/ecommerce/recommend-ecommerce-strategy.md +90 -92
  66. package/skills/wix-manage/references/events/create-wix-event.md +176 -0
  67. package/skills/wix-manage/references/events/manage-wix-events.md +174 -0
  68. package/skills/wix-manage/references/forms/forms-dashboard-navigation.md +44 -0
  69. package/skills/wix-manage/references/get-paid/get-paid-dashboard-navigation.md +52 -0
  70. package/skills/wix-manage/references/google-ads/billing-and-payment.md +80 -0
  71. package/skills/wix-manage/references/google-ads/create-performance-max-campaign.md +212 -0
  72. package/skills/wix-manage/references/google-ads/get-campaign-suggestions.md +110 -0
  73. package/skills/wix-manage/references/google-ads/google-ads-dashboard-navigation.md +25 -0
  74. package/skills/wix-manage/references/google-ads/install-and-create-account.md +155 -0
  75. package/skills/wix-manage/references/google-ads/manage-campaign-lifecycle.md +63 -0
  76. package/skills/wix-manage/references/google-ads/query-campaign-analytics.md +155 -0
  77. package/skills/wix-manage/references/marketing/marketing-dashboard-navigation.md +52 -0
  78. package/skills/wix-manage/references/pricing-plans/create-and-update-pricing-plans.md +99 -1
  79. package/skills/wix-manage/references/pricing-plans/pricing-plans-dashboard-navigation.md +45 -0
  80. package/skills/wix-manage/references/restaurants/restaurants-dashboard-navigation.md +68 -0
  81. package/skills/wix-manage/references/restaurants/wix-restaurants-setup.md +94 -125
  82. package/skills/wix-manage/references/site-properties/change-payment-currency-site-properties.md +48 -9
  83. package/skills/wix-manage/references/site-properties/site-properties-dashboard-navigation.md +31 -0
  84. package/skills/wix-manage/references/sites/create-headless-site.md +52 -0
  85. package/skills/wix-manage/references/sites/create-site-from-template.md +2 -25
  86. package/skills/wix-manage/references/sites/site-import.md +163 -190
  87. package/skills/wix-manage/references/sites/sites-dashboard-navigation.md +29 -0
  88. package/skills/wix-manage/references/stores/add-store-pages-to-site.md +17 -1
  89. package/skills/wix-manage/references/stores/find-products-query-and-search-catalog-v3.md +26 -8
  90. package/skills/wix-manage/references/stores/stores-dashboard-navigation.md +65 -0
  91. package/skills/wix-manage/references/stores/update-product-with-options.md +39 -7
  92. package/skills/wix-replatform/.publish-manifest.json +8 -0
  93. package/skills/wix-replatform/SKILL.md +693 -0
  94. package/skills/wix-replatform/lib/artifact-freshness.js +215 -0
  95. package/skills/wix-replatform/lib/completion-report.js +200 -0
  96. package/skills/wix-replatform/lib/config-env.js +59 -0
  97. package/skills/wix-replatform/lib/execution-manifest.js +185 -0
  98. package/skills/wix-replatform/lib/execution-state.js +173 -0
  99. package/skills/wix-replatform/lib/import-recovery.js +313 -0
  100. package/skills/wix-replatform/lib/local-state.js +642 -0
  101. package/skills/wix-replatform/lib/orchestration-preflight.js +143 -0
  102. package/skills/wix-replatform/lib/orchestration-router.js +122 -0
  103. package/skills/wix-replatform/lib/orchestration-state.js +455 -0
  104. package/skills/wix-replatform/lib/progress-log.js +224 -0
  105. package/skills/wix-replatform/lib/progress-log.sh +140 -0
  106. package/skills/wix-replatform/lib/url-preservation-state.js +391 -0
  107. package/skills/wix-replatform/resources/rp-discovery/SKILL.md +184 -0
  108. package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +529 -0
  109. package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +316 -0
  110. package/skills/wix-replatform/resources/rp-execute-setup/scripts/mint-token.sh +64 -0
  111. package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +1114 -0
  112. package/skills/wix-replatform/resources/rp-mapper/SKILL.md +430 -0
  113. package/skills/wix-replatform/resources/rp-mapper/lib/mapping-resolve.js +217 -0
  114. package/skills/wix-replatform/resources/rp-mapper/scripts/resolve-mapping.js +148 -0
  115. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +378 -0
  116. package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +183 -0
  117. package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +478 -0
  118. package/skills/wix-replatform/resources/rp-source-csv/lib/canonical-record.js +136 -0
  119. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
  120. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fingerprint.js +310 -0
  121. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-layout.js +1081 -0
  122. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-parse.js +618 -0
  123. package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +949 -0
  124. package/skills/wix-replatform/resources/rp-source-csv/source-schema.example.json +196 -0
  125. package/skills/wix-replatform/resources/rp-source-csv/vendors/bigcommerce.json +66 -0
  126. package/skills/wix-replatform/resources/rp-source-csv/vendors/magento.json +60 -0
  127. package/skills/wix-replatform/resources/rp-source-csv/vendors/shopify.json +95 -0
  128. package/skills/wix-replatform/resources/rp-source-csv/vendors/woocommerce.json +82 -0
  129. package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +256 -0
  130. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +249 -0
  131. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +444 -0
  132. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +774 -0
  133. package/skills/wix-replatform/resources/rp-source-wordpress/source-schema.example.json +71 -0
  134. package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +632 -0
  135. package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +330 -0
  136. package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +21 -0
  137. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +19 -0
  138. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +37 -0
  139. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +37 -0
  140. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +39 -0
  141. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +35 -0
  142. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +14 -0
  143. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +35 -0
  144. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +36 -0
  145. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +35 -0
  146. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +14 -0
  147. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +131 -0
  148. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +37 -0
  149. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +37 -0
  150. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +21 -0
  151. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +37 -0
  152. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +37 -0
  153. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +97 -0
  154. package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +528 -0
  155. package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +14 -0
  156. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +38 -0
  157. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +37 -0
  158. package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +13 -0
  159. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +37 -0
  160. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +53 -0
  161. package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +84 -0
  162. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +25 -0
  163. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +37 -0
  164. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +37 -0
  165. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +38 -0
  166. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +37 -0
  167. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +90 -0
  168. package/skills/wix-replatform/resources/rp-target-wix/lib/audit-summary.js +64 -0
  169. package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +141 -0
  170. package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +384 -0
  171. package/skills/wix-replatform/resources/rp-target-wix/lib/ndjson.js +260 -0
  172. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +238 -0
  173. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +237 -0
  174. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +238 -0
  175. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +2219 -0
  176. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +31 -0
  177. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js +100 -0
  178. package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +107 -0
  179. package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +344 -0
  180. package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +250 -0
  181. package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +1927 -0
  182. package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +83 -0
  183. package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +141 -0
  184. package/skills/wix-replatform/scripts/artifact-freshness.js +76 -0
  185. package/skills/wix-replatform/scripts/execution-manifest-validate.js +43 -0
  186. package/skills/wix-replatform/scripts/execution-state-prepare.js +128 -0
  187. package/skills/wix-replatform/scripts/orchestration-preflight.js +48 -0
  188. package/skills/wix-replatform/scripts/orchestration-route.js +46 -0
  189. package/skills/wix-replatform/scripts/orchestration-state.js +245 -0
  190. package/skills/wix-vibe-headless/SKILL.md +48 -25
  191. package/skills/wix-vibe-headless/install/deploy.cjs +95 -0
  192. package/skills/wix-vibe-headless/install/pin-agents-md.cjs +34 -0
  193. package/skills/wix-vibe-headless/platforms/README.md +8 -4
  194. package/skills/wix-vibe-headless/platforms/base44.md +133 -98
  195. package/skills/wix-vibe-headless/platforms/generic.md +99 -64
  196. package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +230 -119
  197. package/skills/wix-vibe-headless/references/blog/app/components/PostCard.jsx +43 -0
  198. package/skills/wix-vibe-headless/references/blog/app/components/PostChips.jsx +25 -0
  199. package/skills/wix-vibe-headless/references/blog/app/components/PostGrid.jsx +15 -0
  200. package/skills/wix-vibe-headless/references/blog/app/context/TaxonomyContext.jsx +35 -0
  201. package/skills/wix-vibe-headless/references/blog/app/hooks/usePostDetail.js +38 -0
  202. package/skills/wix-vibe-headless/references/blog/app/pages/Blog.jsx +40 -0
  203. package/skills/wix-vibe-headless/references/blog/app/pages/CategoryPage.jsx +54 -0
  204. package/skills/wix-vibe-headless/references/blog/app/pages/PostDetail.jsx +65 -0
  205. package/skills/wix-vibe-headless/references/blog/app/pages/TagPage.jsx +50 -0
  206. package/skills/wix-vibe-headless/references/blog/seed/SEED.md +103 -0
  207. package/skills/wix-vibe-headless/references/blog/seed/seed-blog.js +270 -0
  208. package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +260 -149
  209. package/skills/wix-vibe-headless/references/bookings/app/components/BookingForm.jsx +65 -0
  210. package/skills/wix-vibe-headless/references/bookings/app/components/ServiceCard.jsx +47 -0
  211. package/skills/wix-vibe-headless/references/bookings/app/components/ServiceGrid.jsx +13 -0
  212. package/skills/wix-vibe-headless/references/bookings/app/components/SlotPicker.jsx +126 -0
  213. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +108 -0
  214. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServices.js +58 -0
  215. package/skills/wix-vibe-headless/references/bookings/app/lib/serviceFacts.js +95 -0
  216. package/skills/wix-vibe-headless/references/bookings/app/pages/ServiceDetail.jsx +94 -0
  217. package/skills/wix-vibe-headless/references/bookings/app/pages/Services.jsx +89 -0
  218. package/skills/wix-vibe-headless/references/bookings/{wix-bookings-checkout.js → app/rest/wix-bookings-checkout.js} +1 -1
  219. package/skills/wix-vibe-headless/references/bookings/{wix-bookings-services.js → app/rest/wix-bookings-services.js} +87 -11
  220. package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +117 -0
  221. package/skills/wix-vibe-headless/references/bookings/seed/seed-bookings.js +333 -0
  222. package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +169 -147
  223. package/skills/wix-vibe-headless/references/cms/app/collection.config.js +31 -0
  224. package/skills/wix-vibe-headless/references/cms/app/lib/wixImage.js +18 -0
  225. package/skills/wix-vibe-headless/references/cms/{wix-cms.js → app/rest/wix-cms.js} +47 -2
  226. package/skills/wix-vibe-headless/references/cms/seed/SEED.md +145 -0
  227. package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +228 -131
  228. package/skills/wix-vibe-headless/references/events/app/components/CategoryFilter.jsx +23 -0
  229. package/skills/wix-vibe-headless/references/events/app/components/EventCard.jsx +43 -0
  230. package/skills/wix-vibe-headless/references/events/app/components/EventGrid.jsx +13 -0
  231. package/skills/wix-vibe-headless/references/events/app/components/EventRegistration.jsx +29 -0
  232. package/skills/wix-vibe-headless/references/events/app/components/RsvpForm.jsx +57 -0
  233. package/skills/wix-vibe-headless/references/events/app/components/TicketPicker.jsx +78 -0
  234. package/skills/wix-vibe-headless/references/events/app/hooks/useEventDetail.js +27 -0
  235. package/skills/wix-vibe-headless/references/events/app/hooks/useEventsList.js +54 -0
  236. package/skills/wix-vibe-headless/references/events/app/hooks/useRsvpForm.js +40 -0
  237. package/skills/wix-vibe-headless/references/events/app/hooks/useTicketing.js +81 -0
  238. package/skills/wix-vibe-headless/references/events/app/pages/EventDetail.jsx +48 -0
  239. package/skills/wix-vibe-headless/references/events/app/pages/Events.jsx +36 -0
  240. package/skills/wix-vibe-headless/references/events/{wix-events-browse.js → app/rest/wix-events-browse.js} +1 -1
  241. package/skills/wix-vibe-headless/references/events/seed/SEED.md +107 -0
  242. package/skills/wix-vibe-headless/references/events/seed/seed-events.js +251 -0
  243. package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +276 -188
  244. package/skills/wix-vibe-headless/references/members/app/components/LoginForm.jsx +101 -0
  245. package/skills/wix-vibe-headless/references/members/app/components/MemberMenu.jsx +33 -0
  246. package/skills/wix-vibe-headless/references/members/app/components/RequireAuth.jsx +21 -0
  247. package/skills/wix-vibe-headless/references/members/app/components/SocialButtons.jsx +29 -0
  248. package/skills/wix-vibe-headless/references/members/app/context/MemberContext.jsx +54 -0
  249. package/skills/wix-vibe-headless/references/members/app/hooks/useLoginForm.js +77 -0
  250. package/skills/wix-vibe-headless/references/members/app/pages/Account.jsx +36 -0
  251. package/skills/wix-vibe-headless/references/members/app/pages/Callback.jsx +32 -0
  252. package/skills/wix-vibe-headless/references/members/app/pages/Login.jsx +35 -0
  253. package/skills/wix-vibe-headless/references/members/{wix-members-auth.js → app/rest/wix-members-auth.js} +6 -3
  254. package/skills/wix-vibe-headless/references/members/install/Register.jsx +22 -0
  255. package/skills/wix-vibe-headless/references/members/seed/SEED.md +22 -0
  256. package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +233 -104
  257. package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionCard.jsx +31 -0
  258. package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionGrid.jsx +15 -0
  259. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectCard.jsx +39 -0
  260. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectGrid.jsx +15 -0
  261. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectMedia.jsx +29 -0
  262. package/skills/wix-vibe-headless/references/portfolio/app/hooks/useCollectionProjects.js +35 -0
  263. package/skills/wix-vibe-headless/references/portfolio/app/hooks/usePortfolioGallery.js +27 -0
  264. package/skills/wix-vibe-headless/references/portfolio/app/hooks/useProjectDetail.js +25 -0
  265. package/skills/wix-vibe-headless/references/portfolio/app/pages/CollectionPage.jsx +39 -0
  266. package/skills/wix-vibe-headless/references/portfolio/app/pages/Portfolio.jsx +27 -0
  267. package/skills/wix-vibe-headless/references/portfolio/app/pages/ProjectDetail.jsx +60 -0
  268. package/skills/wix-vibe-headless/references/portfolio/seed/SEED.md +94 -0
  269. package/skills/wix-vibe-headless/references/portfolio/seed/seed-portfolio.js +236 -0
  270. package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +240 -117
  271. package/skills/wix-vibe-headless/references/pricing-plans/app/components/OrderCard.jsx +35 -0
  272. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanCard.jsx +48 -0
  273. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanGrid.jsx +16 -0
  274. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanPrice.jsx +35 -0
  275. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/useMyPlans.js +25 -0
  276. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlanDetail.js +28 -0
  277. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlans.js +30 -0
  278. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/MyPlans.jsx +30 -0
  279. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/PlanDetail.jsx +53 -0
  280. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/Plans.jsx +28 -0
  281. package/skills/wix-vibe-headless/references/pricing-plans/seed/SEED.md +86 -0
  282. package/skills/wix-vibe-headless/references/pricing-plans/seed/seed-pricing-plans.js +251 -0
  283. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +248 -124
  284. package/skills/wix-vibe-headless/references/restaurants/app/components/ItemDialog.jsx +81 -0
  285. package/skills/wix-vibe-headless/references/restaurants/app/components/MenuItemCard.jsx +71 -0
  286. package/skills/wix-vibe-headless/references/restaurants/app/components/MenuList.jsx +43 -0
  287. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartButton.jsx +21 -0
  288. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +60 -0
  289. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +63 -0
  290. package/skills/wix-vibe-headless/references/restaurants/app/hooks/useItemOrder.js +32 -0
  291. package/skills/wix-vibe-headless/references/restaurants/app/hooks/useReservation.js +73 -0
  292. package/skills/wix-vibe-headless/references/restaurants/app/pages/Menu.jsx +28 -0
  293. package/skills/wix-vibe-headless/references/restaurants/app/pages/Reservations.jsx +102 -0
  294. package/skills/wix-vibe-headless/references/restaurants/seed/SEED.md +180 -0
  295. package/skills/wix-vibe-headless/references/restaurants/seed/seed-restaurants.js +452 -0
  296. package/skills/wix-vibe-headless/references/shared/app/components/WixManageBanner.jsx +56 -0
  297. package/skills/wix-vibe-headless/references/shared/{wix-client.js → app/rest/wix-client.js} +6 -8
  298. package/skills/wix-vibe-headless/references/shared/app/rest/wix-config.js +6 -0
  299. package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +263 -157
  300. package/skills/wix-vibe-headless/references/storefront/app/components/CartButton.jsx +20 -0
  301. package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +150 -0
  302. package/skills/wix-vibe-headless/references/storefront/app/components/ProductCard.jsx +167 -0
  303. package/skills/wix-vibe-headless/references/storefront/app/components/ProductGallery.jsx +51 -0
  304. package/skills/wix-vibe-headless/references/storefront/app/components/ProductGrid.jsx +54 -0
  305. package/skills/wix-vibe-headless/references/storefront/app/components/VariantPicker.jsx +119 -0
  306. package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +71 -0
  307. package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +109 -0
  308. package/skills/wix-vibe-headless/references/storefront/app/hooks/useShop.js +98 -0
  309. package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +27 -0
  310. package/skills/wix-vibe-headless/references/storefront/app/pages/ProductDetail.jsx +139 -0
  311. package/skills/wix-vibe-headless/references/storefront/app/pages/Shop.jsx +75 -0
  312. package/skills/wix-vibe-headless/references/storefront/{wix-store-cart.js → app/rest/wix-store-cart.js} +1 -1
  313. package/skills/wix-vibe-headless/references/storefront/{wix-store-catalog.js → app/rest/wix-store-catalog.js} +20 -1
  314. package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +111 -0
  315. package/skills/wix-vibe-headless/references/storefront/seed/seed-store.js +299 -0
  316. /package/skills/wix-vibe-headless/references/blog/{wix-blog.js → app/rest/wix-blog.js} +0 -0
  317. /package/skills/wix-vibe-headless/references/events/{wix-events-registration.js → app/rest/wix-events-registration.js} +0 -0
  318. /package/skills/wix-vibe-headless/references/portfolio/{wix-portfolio.js → app/rest/wix-portfolio.js} +0 -0
  319. /package/skills/wix-vibe-headless/references/pricing-plans/{wix-pricing-plans.js → app/rest/wix-pricing-plans.js} +0 -0
  320. /package/skills/wix-vibe-headless/references/restaurants/{wix-restaurants-menu.js → app/rest/wix-restaurants-menu.js} +0 -0
  321. /package/skills/wix-vibe-headless/references/restaurants/{wix-restaurants-ordering.js → app/rest/wix-restaurants-ordering.js} +0 -0
  322. /package/skills/wix-vibe-headless/references/restaurants/{wix-restaurants-reservations.js → app/rest/wix-restaurants-reservations.js} +0 -0
@@ -22,7 +22,7 @@ layer: config
22
22
 
23
23
  ## Critical: `discounts` structure
24
24
 
25
- **The API always returns the full normalized structure.** Never assume a simplified form. Each discount entry looks like:
25
+ **The API always returns the full normalized structure**, `values` wrapper included. Never assume a simplified form. Each entry of `discounts.values` looks like:
26
26
 
27
27
  ```json
28
28
  {
@@ -38,14 +38,12 @@ layer: config
38
38
  }
39
39
  ]
40
40
  },
41
- "discount": {
42
- "discountType": "PERCENTAGE",
43
- "percentage": 20
44
- }
41
+ "discountType": "PERCENTAGE",
42
+ "percentage": 20
45
43
  }
46
44
  ```
47
45
 
48
- When updating a rule, always use the `discounts` array as returned from the query/get, modifying only the specific fields you need. **Do not reconstruct from scratch unless creating a new rule.**
46
+ When updating a rule, always reuse the `discounts.values` entries as returned from the query/get, modifying only the specific fields you need. **Do not reconstruct from scratch unless creating a new rule.**
49
47
 
50
48
  ---
51
49
 
@@ -53,8 +51,6 @@ When updating a rule, always use the `discounts` array as returned from the quer
53
51
 
54
52
  **Endpoint**: `POST https://www.wixapis.com/ecom/v1/discount-rules/query`
55
53
 
56
- > **Paging**: This API uses **cursor paging** (`cursorPaging`), not offset paging. Using `paging` instead of `cursorPaging` will fail.
57
-
58
54
  **Request** — list all rules:
59
55
  ```json
60
56
  {
@@ -93,7 +89,7 @@ Filterable fields: `id`, `name`, `active`, `revision`, `created_date`, `updated_
93
89
  "start": "2026-06-01T00:00:00.000Z",
94
90
  "end": "2026-08-31T23:59:59.000Z"
95
91
  },
96
- "discounts": [
92
+ "discounts": { "values": [
97
93
  {
98
94
  "targetType": "SPECIFIC_ITEMS",
99
95
  "specificItemsInfo": {
@@ -107,12 +103,10 @@ Filterable fields: `id`, `name`, `active`, `revision`, `created_date`, `updated_
107
103
  }
108
104
  ]
109
105
  },
110
- "discount": {
111
- "discountType": "PERCENTAGE",
112
- "percentage": 10
113
- }
106
+ "discountType": "PERCENTAGE",
107
+ "percentage": 10
114
108
  }
115
- ]
109
+ ] }
116
110
  }
117
111
  ],
118
112
  "pagingMetadata": {
@@ -170,7 +164,7 @@ When a discount *isn't* applying as expected, see [Troubleshoot: Discount Not Ap
170
164
  "start": "2026-05-01T00:00:00.000Z",
171
165
  "end": "2026-05-03T23:59:59.000Z"
172
166
  },
173
- "discounts": [
167
+ "discounts": { "values": [
174
168
  {
175
169
  "targetType": "SPECIFIC_ITEMS",
176
170
  "specificItemsInfo": {
@@ -184,15 +178,10 @@ When a discount *isn't* applying as expected, see [Troubleshoot: Discount Not Ap
184
178
  }
185
179
  ]
186
180
  },
187
- "discount": {
188
- "discountType": "PERCENTAGE",
189
- "percentage": 20
190
- }
181
+ "discountType": "PERCENTAGE",
182
+ "percentage": 20
191
183
  }
192
- ],
193
- "settings": {
194
- "appliesTo": "ALL_ITEMS"
195
- }
184
+ ] }
196
185
  }
197
186
  }
198
187
  ```
@@ -203,7 +192,7 @@ When a discount *isn't* applying as expected, see [Troubleshoot: Discount Not Ap
203
192
  "discountRule": {
204
193
  "name": "Summer Collection Sale",
205
194
  "active": true,
206
- "discounts": [
195
+ "discounts": { "values": [
207
196
  {
208
197
  "targetType": "SPECIFIC_ITEMS",
209
198
  "specificItemsInfo": {
@@ -220,15 +209,10 @@ When a discount *isn't* applying as expected, see [Troubleshoot: Discount Not Ap
220
209
  }
221
210
  ]
222
211
  },
223
- "discount": {
224
- "discountType": "PERCENTAGE",
225
- "percentage": 15
226
- }
212
+ "discountType": "PERCENTAGE",
213
+ "percentage": 15
227
214
  }
228
- ],
229
- "settings": {
230
- "appliesTo": "ALL_ITEMS"
231
- }
215
+ ] }
232
216
  }
233
217
  }
234
218
  ```
@@ -243,7 +227,7 @@ When a discount *isn't* applying as expected, see [Troubleshoot: Discount Not Ap
243
227
  "discountRule": {
244
228
  "name": "$5 Off Selected Items",
245
229
  "active": true,
246
- "discounts": [
230
+ "discounts": { "values": [
247
231
  {
248
232
  "targetType": "SPECIFIC_ITEMS",
249
233
  "specificItemsInfo": {
@@ -258,15 +242,10 @@ When a discount *isn't* applying as expected, see [Troubleshoot: Discount Not Ap
258
242
  }
259
243
  ]
260
244
  },
261
- "discount": {
262
- "discountType": "FIXED_AMOUNT",
263
- "fixedAmount": "5.00"
264
- }
245
+ "discountType": "FIXED_AMOUNT",
246
+ "fixedAmount": "5.00"
265
247
  }
266
- ],
267
- "settings": {
268
- "appliesTo": "ALL_ITEMS"
269
- }
248
+ ] }
270
249
  }
271
250
  }
272
251
  ```
@@ -287,7 +266,7 @@ Always fetch the rule first (via Get or Query), then modify only the fields you
287
266
  "discountRule": {
288
267
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
289
268
  "revision": "1",
290
- "discounts": [
269
+ "discounts": { "values": [
291
270
  {
292
271
  "targetType": "SPECIFIC_ITEMS",
293
272
  "specificItemsInfo": {
@@ -301,12 +280,10 @@ Always fetch the rule first (via Get or Query), then modify only the fields you
301
280
  }
302
281
  ]
303
282
  },
304
- "discount": {
305
- "discountType": "PERCENTAGE",
306
- "percentage": 25
307
- }
283
+ "discountType": "PERCENTAGE",
284
+ "percentage": 25
308
285
  }
309
- ]
286
+ ] }
310
287
  },
311
288
  "mask": { "paths": ["discounts"] }
312
289
  }
@@ -330,8 +307,8 @@ Always fetch the rule first (via Get or Query), then modify only the fields you
330
307
 
331
308
  The safe pattern for "find a rule by name and update its percentage":
332
309
 
333
- 1. Query with name filter → get the rule's `id`, `revision`, and `discounts` array
334
- 2. Modify only the `discount.percentage` inside each discount entry, keeping all other fields intact
310
+ 1. Query with name filter → get the rule's `id`, `revision`, and `discounts.values` entries
311
+ 2. Modify only `percentage` on each entry, keeping all other fields intact
335
312
  3. PATCH with the modified `discounts` and `mask: { paths: ["discounts"] }`
336
313
 
337
314
  **Step 5a — Query by name**:
@@ -349,29 +326,27 @@ Extract from response: `discountRules[0].id`, `discountRules[0].revision`, `disc
349
326
 
350
327
  **Step 5b — Update percentage** (modify the returned discounts in-place):
351
328
 
352
- Take the `discounts` array from the query response and update only `discount.percentage` on each entry:
329
+ Take the `discounts.values` entries from the query response and update only `percentage` on each entry:
353
330
  ```json
354
331
  PATCH https://www.wixapis.com/ecom/v1/discount-rules/{id}
355
332
  {
356
333
  "discountRule": {
357
334
  "id": "<id from query>",
358
335
  "revision": "<revision from query>",
359
- "discounts": [
336
+ "discounts": { "values": [
360
337
  {
361
338
  "targetType": "SPECIFIC_ITEMS",
362
339
  "specificItemsInfo": { "<scopes unchanged from query response>" },
363
- "discount": {
364
- "discountType": "PERCENTAGE",
365
- "percentage": 10
366
- }
340
+ "discountType": "PERCENTAGE",
341
+ "percentage": 10
367
342
  }
368
- ]
343
+ ] }
369
344
  },
370
345
  "mask": { "paths": ["discounts"] }
371
346
  }
372
347
  ```
373
348
 
374
- > **Important**: Copy `targetType`, `specificItemsInfo.scopes` verbatim from the query response — do not reconstruct them. Only change `discount.discountType` and `discount.percentage`/`discount.fixedAmount`.
349
+ > **Important**: Copy `targetType`, `specificItemsInfo.scopes` verbatim from the query response — do not reconstruct them. Only change `discountType` and `percentage`/`fixedAmount`, keeping them at the entry root.
375
350
 
376
351
  ---
377
352
 
@@ -403,12 +378,11 @@ To delete permanently:
403
378
  | `active` | Yes | Whether the rule is currently applied |
404
379
  | `activeTimeInfo.start` | No | ISO 8601 start time. Omit for immediate activation |
405
380
  | `activeTimeInfo.end` | No | ISO 8601 end time. Omit for no expiration |
406
- | `discounts[].targetType` | Yes | Always `"SPECIFIC_ITEMS"` for standard rules |
407
- | `discounts[].specificItemsInfo.scopes[]` | Yes | Array of scope objects — see Scope types below |
408
- | `discounts[].discount.discountType` | Yes | `"PERCENTAGE"` or `"FIXED_AMOUNT"` or `"FIXED_PRICE"` |
409
- | `discounts[].discount.percentage` | If PERCENTAGE | Integer 1-100 |
410
- | `discounts[].discount.fixedAmount` | If FIXED_AMOUNT | Decimal string (e.g., `"5.00"`) |
411
- | `settings.appliesTo` | Yes on create | Always `"ALL_ITEMS"` |
381
+ | `discounts.values[].targetType` | Yes | Always `"SPECIFIC_ITEMS"` for standard rules |
382
+ | `discounts.values[].specificItemsInfo.scopes[]` | Yes | Array of scope objects — see Scope types below |
383
+ | `discounts.values[].discountType` | Yes | `"PERCENTAGE"` or `"FIXED_AMOUNT"` or `"FIXED_PRICE"` — at the entry root, not inside a `discount` object |
384
+ | `discounts.values[].percentage` | If PERCENTAGE | Number 0.1-100 |
385
+ | `discounts.values[].fixedAmount` | If FIXED_AMOUNT | Decimal string (e.g., `"5.00"`) |
412
386
  | `revision` | On update/delete | Must match current value — fetch first |
413
387
  | `mask.paths[]` | On update | Recommended — list fields being changed (e.g., `["discounts"]`, `["active"]`) |
414
388
 
@@ -488,9 +462,9 @@ The recommendation's `scope` field maps to the API's internal scope structure. T
488
462
 
489
463
  | Recommendation `discountType` | API field to set | Value format |
490
464
  |---|---|---|
491
- | `PERCENTAGE` | `discount.percentage` | Integer (e.g., `15`) |
492
- | `FIXED_AMOUNT` | `discount.fixedAmount` | String (e.g., `"5.00"`) |
493
- | `FIXED_PRICE` | `discount.fixedPrice` | String (e.g., `"29.99"`) |
465
+ | `PERCENTAGE` | `discounts.values[].percentage` | Integer (e.g., `15`) |
466
+ | `FIXED_AMOUNT` | `discounts.values[].fixedAmount` | String (e.g., `"5.00"`) |
467
+ | `FIXED_PRICE` | `discounts.values[].fixedPrice` | String (e.g., `"29.99"`) |
494
468
 
495
469
  All discount entries use `targetType: "SPECIFIC_ITEMS"` with the scope wrapped in `specificItemsInfo.scopes[]`.
496
470
 
@@ -580,18 +554,6 @@ Triggers determine WHEN the discount activates. They are built from the recommen
580
554
  | `endDate` is a date string | Convert to ISO 8601 timestamp: `activeTimeInfo.end` |
581
555
  | `endDate` is empty `""` | Omit `activeTimeInfo.end` — rule has no expiration |
582
556
 
583
- ### Settings
584
-
585
- All recommendation-created rules use these fixed settings:
586
- ```json
587
- {
588
- "settings": {
589
- "appliesTo": "ALL_ITEMS",
590
- "indexOptIn": true
591
- }
592
- }
593
- ```
594
-
595
557
  ---
596
558
 
597
559
  ## Error Handling
@@ -601,6 +563,8 @@ All recommendation-created rules use these fixed settings:
601
563
  | `DISCOUNT_RULE_NOT_FOUND` | The discount rule ID doesn't exist | Re-query discount rules to get current IDs |
602
564
  | `REVISION_MISMATCH` | The `revision` doesn't match the current version | Re-fetch the rule to get the latest revision, then retry |
603
565
  | `INVALID_DISCOUNT_TYPE` | Unsupported discount type | Use `PERCENTAGE` or `FIXED_AMOUNT` |
566
+ | `Expected an object` (400) | `discounts` sent as a bare array | Wrap the entries — `"discounts": { "values": [ … ] }` |
567
+ | `DISCOUNT_TYPE_AND_DISCOUNT_VALUE_MISMATCH` | `discountType` and the value field nested inside a `discount` object | Move both to the discount entry root, alongside `targetType` |
604
568
  | Both `productIds` and `categoryIds` set | Scope mutual exclusivity violation | Use only one: ITEMS with productIds OR CATEGORY with categoryIds |
605
569
  | `productIds` empty when scope is ITEMS | Missing required IDs | Query products and provide at least 1 product UUID |
606
570
  | `categoryIds` empty when scope is CATEGORY | Missing required IDs | Call getCategoryIds to convert category names to GUIDs |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "Flow: Bundle and Save"
3
- description: BUNDLE_AND_SAVE sub-flow — load [Goal: Drive Cross-Sells] FIRST (it owns classification and routing); this is a sub-step, NOT a direct entry from README.
3
+ description: "BUNDLE_AND_SAVE sub-flow — load [Goal: Drive Cross-Sells] FIRST (it owns classification and routing); this is a sub-step, NOT a direct entry from README."
4
4
  ---
5
5
  # Flow: Bundle & Save Campaign
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "Flow: Stock Mover"
3
- description: Stock-mover clearance sub-flow — load [Goal: Clear Inventory] FIRST (it owns the routing); this is a sub-step.
3
+ description: "Stock-mover clearance sub-flow — load [Goal: Clear Inventory] FIRST (it owns the routing); this is a sub-step."
4
4
  ---
5
5
  # Flow: Stock Mover Clearance
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "Flow: Upsell Boost"
3
- description: UPSELL_BOOST sub-flow — load [Goal: Increase AOV] FIRST (it owns classification and routing); this is a sub-step, NOT a direct entry from README.
3
+ description: "UPSELL_BOOST sub-flow — load [Goal: Increase AOV] FIRST (it owns classification and routing); this is a sub-step, NOT a direct entry from README."
4
4
  ---
5
5
  # Flow: Upsell Boost Campaign
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "Recommend: eCommerce Strategy"
3
- description: Unified eCommerce recommendation skill — analyzes site data across ALL domains (discounts, shipping, and future domains) and generates up to 5 actionable recommendations. Single entry point for any "help my business" request. Tracking is built-in.
3
+ description: "Unified eCommerce recommendation skill — analyzes site data across ALL domains (discounts, shipping, and future domains) and generates up to 5 actionable recommendations. Entry point for requests about earning more from the visitors a store already has: sales, promotions, discounts, coupons, clearance, holiday deals, AOV, shipping. Out of scope — traffic acquisition (SEO, ads, social, content); route \"grow my traffic\" requests to marketing instead. Tracking is built-in."
4
4
  layer: R
5
5
  references:
6
6
  - name: "API: Recommendation Tracking"
@@ -21,19 +21,25 @@ references:
21
21
  - name: "Setup: Coupons"
22
22
  path: ecommerce/setup-coupons.md
23
23
  load: false
24
+ - name: "Goal: Sell Gift Cards"
25
+ path: ecommerce/gift-cards/ecom-gift-cards-goal-sell-gift-cards.md
26
+ load: false
24
27
  ---
25
28
  # Recommend: eCommerce Strategy
26
29
 
30
+ > 🚫 **Out of scope — traffic acquisition.** This skill recommends discounts and shipping only: levers that earn more from the visitors a store already has. If the merchant is asking how to *grow* traffic — SEO, ads, social, content — stop here and route them to marketing. Do NOT gather site data, do NOT generate recommendations, and do NOT report "missing required site data" — the request simply is not this skill's job.
31
+
27
32
  > ⛔ **MANDATORY PRE-STEP — do this BEFORE Step 1 (before any API call).**
28
33
  >
29
- > Classify the merchant's request and immediately call `ReadFullDocsArticle` on the matching goal skill. Do NOT gather data first — the goal skill tells you which metrics to pull and what guardrails to apply.
34
+ > Classify the merchant's request and immediately read the full article for the matching goal skill. Do NOT gather data first — the goal skill tells you which metrics to pull and what guardrails to apply.
30
35
  >
31
- > | Merchant intent | Goal to load |
36
+ > | Merchant intent | Goal to read |
32
37
  > |---|---|
33
- > | Holiday / event / date mentioned | `ReadFullDocsArticle` → [Goal: Seasonal Revenue](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-seasonal-revenue) |
34
- > | "increase AOV", "spend more", "upsell", "boost sales", generic sales improvement | `ReadFullDocsArticle` → [Goal: Increase AOV](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-increase-aov) |
35
- > | "clear inventory", "overstock", "clearance", "slow-moving" | `ReadFullDocsArticle` → [Goal: Clear Inventory](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-clear-inventory) |
36
- > | "bundle", "cross-sell", "buy together", "more items per order" | `ReadFullDocsArticle` → [Goal: Drive Cross-Sells](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-drive-cross-sells) |
38
+ > | Holiday / event / date mentioned | [Goal: Seasonal Revenue](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-seasonal-revenue) |
39
+ > | "increase AOV", "spend more", "upsell", "boost sales", generic sales improvement | [Goal: Increase AOV](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-increase-aov) |
40
+ > | "clear inventory", "overstock", "clearance", "slow-moving" | [Goal: Clear Inventory](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-clear-inventory) |
41
+ > | "bundle", "cross-sell", "buy together", "more items per order" | [Goal: Drive Cross-Sells](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-drive-cross-sells) |
42
+ > | "sell gift cards", "add a gift card", "gift card amounts / denominations" | [Goal: Sell Gift Cards](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-sell-gift-cards) |
37
43
  >
38
44
  > After loading the goal skill, continue from Step 1 below. The goal skill will instruct you to load the matching flow skill — follow those instructions too.
39
45
  >
@@ -49,8 +55,9 @@ references:
49
55
  3. **Execute every step in order.** Do not skip steps. Do not merge steps. Do not answer "in the meantime."
50
56
  4. **Use ONLY data returned by API calls.** Never substitute reasoning, general knowledge, or doc summaries for live data. Every number you cite in `reasoning` MUST come directly from an API response — do NOT assume, infer, or fabricate data.
51
57
  5. **If a call fails or is blocked, report the exact blocker.** Do not work around it with assumptions.
52
- 6. **All API calls use `CallWixSiteAPI`.** The internal tool names (getSiteData, getCatalogAnalytics, etc.) are NOT directly callable.
53
- 7. **Generate recommendations across ALL relevant domains** — not just discounts. Consider shipping, discounts, and any other domain that the data supports.
58
+ 6. **Issue every API call as an authenticated request in the merchant's site context, using exactly the endpoints given below.** The internal service method names (getSiteData, getCatalogAnalytics, etc.) are NOT directly callable — only these HTTP endpoints are.
59
+ 7. **Generate recommendations across ALL relevant domains** — not just discounts. Consider shipping, discounts, gift cards, and any other domain that the data supports.
60
+ 8. **NEVER present a recommendation you have not persisted.** `BatchCreate` (Step 8) is mandatory for every domain — discounts, shipping, gift cards — unless the merchant said `SKIP_TRACKING`. Presenting an unpersisted recommendation means the merchant cannot approve it, so the whole run is wasted. Do not treat Step 8 as a closing formality: it is the step that makes the output actionable.
54
61
 
55
62
  ---
56
63
 
@@ -58,7 +65,7 @@ references:
58
65
 
59
66
  **MANDATORY — do this first.**
60
67
 
61
- If you don't already have a `siteId`, call `ListWixSites` to find it.
68
+ If you don't already have a `siteId`, list the merchant's Wix sites to find it.
62
69
 
63
70
  If the merchant mentioned a site name, match it. If only one site exists, auto-select it. Store the `siteId` — every subsequent API call requires it.
64
71
 
@@ -70,15 +77,12 @@ If the merchant mentioned a site name, match it. If only one site exists, auto-s
70
77
 
71
78
  **MANDATORY — do NOT skip unless the user said `SKIP_TRACKING` or "don't track".**
72
79
 
73
- Query the tracking database for existing recommendations on this site:
80
+ Query the tracking database for existing recommendations on this site.
74
81
 
75
- ```
76
- CallWixSiteAPI(
77
- url: "https://manage.wix.com/_api/agentic-recommendations/v1/agentic-recommendations/query",
78
- method: "POST",
82
+ **Endpoint:** `POST https://manage.wix.com/_api/agentic-recommendations/v1/agentic-recommendations/query`
79
83
 
80
- body: { "query": { "filter": {}, "cursorPaging": { "limit": 50 } } }
81
- )
84
+ ```json
85
+ { "query": { "filter": {}, "cursorPaging": { "limit": 50 } } }
82
86
  ```
83
87
 
84
88
  **Use the returned history to inform your analysis:**
@@ -99,24 +103,21 @@ If the query returns empty results or fails, continue — this is a fresh sessio
99
103
 
100
104
  **MANDATORY API CALL — do not skip.**
101
105
 
102
- ```
103
- CallWixSiteAPI(
104
- url: "https://www.wix.com/wix-profile-client/v4/profile/metasite",
105
- method: "POST",
106
-
107
- body: {
108
- "fields": [
109
- "language",
110
- "merchant_business_country",
111
- "suggested_main_industry",
112
- "suggested_sub_industry",
113
- "last_30_days_distinct_visitors",
114
- "last_30_days_orders_count",
115
- "online_gpv_last_30_days",
116
- "payment_currency"
117
- ]
118
- }
119
- )
106
+ **Endpoint:** `POST https://www.wix.com/wix-profile-client/v4/profile/metasite`
107
+
108
+ ```json
109
+ {
110
+ "fields": [
111
+ "language",
112
+ "merchant_business_country",
113
+ "suggested_main_industry",
114
+ "suggested_sub_industry",
115
+ "last_30_days_distinct_visitors",
116
+ "last_30_days_orders_count",
117
+ "online_gpv_last_30_days",
118
+ "payment_currency"
119
+ ]
120
+ }
120
121
  ```
121
122
 
122
123
  **Available fields:**
@@ -181,6 +182,7 @@ Based on the merchant's request AND the site data, determine which domains to an
181
182
  |---|---|---|
182
183
  | **DISCOUNTS** | Merchant mentions sales, promotions, revenue, AOV, clearance, holidays, coupons. **Also activate if no specific domain is mentioned** (default). | Always — site data contains discount metrics |
183
184
  | **SHIPPING** | Merchant mentions shipping, delivery, checkout conversion, cart abandonment. **Also activate proactively** if site data suggests shipping issues. | High visitors + low orders may indicate shipping friction |
185
+ | **GIFT_CARDS** | **Explicit gift-card intent only** — the merchant mentions gift cards, gift vouchers, or gift card amounts. Do **not** activate this domain on a generic "boost my sales" request: it costs a gift-card-product lookup and a goal-skill load for a lever the merchant didn't ask about. | Merchant named gift cards |
184
186
 
185
187
  **Priority rule**: If the merchant mentions a specific holiday/event/date, the DISCOUNTS domain MUST use the **SEASONAL** strategy — even if other signals like "boost sales" or "increase revenue" could match other goals. Holidays are time-sensitive and take priority over general intent.
186
188
 
@@ -192,7 +194,7 @@ Based on the merchant's request AND the site data, determine which domains to an
192
194
 
193
195
  ## Step 4b: Load domain-specific goal skills
194
196
 
195
- **MANDATORY — load the matching goal skill(s) now using `ReadFullDocsArticle`.** These contain detailed strategy logic, KPIs, margin tiers, campaign window calculations, and guardrails that you MUST follow.
197
+ **MANDATORY — read the full article for the matching goal skill(s) now.** These contain detailed strategy logic, KPIs, margin tiers, campaign window calculations, and guardrails that you MUST follow.
196
198
 
197
199
  **For DISCOUNTS domain — classify the discount goal and load it:**
198
200
 
@@ -204,6 +206,8 @@ Based on the merchant's request AND the site data, determine which domains to an
204
206
  | BUNDLE_AND_SAVE | "bundle", "cross-sell", "buy together" | [Goal: Drive Cross-Sells](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-drive-cross-sells) |
205
207
  | Generic (no clear goal) | "boost sales", ambiguous | Default to SEASONAL if holiday nearby, else UPSELL_BOOST |
206
208
 
209
+ **For GIFT_CARDS domain — load [Goal: Sell Gift Cards](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-sell-gift-cards).** It owns the existing-product gate (a site supports only one gift card product), eligibility, denomination sizing from AOV / catalog prices, the expiry policy, and the mapping onto the real create call. Do not size gift card amounts without it.
210
+
207
211
  **For SHIPPING domain — load the same goal as discounts.** Shipping flows (free shipping threshold, rate optimization) serve the same business goals as discount flows. Load the matching discount goal above — it now includes shipping flow references.
208
212
 
209
213
  **The goal skill will instruct you to load flow and guardrail skills** — follow those instructions. This chain provides the detailed execution logic you need for high-quality recommendations.
@@ -225,8 +229,8 @@ Based on the merchant's request AND the site data, determine which domains to an
225
229
 
226
230
  **If unclear, ask:** "Would you like this to apply automatically to everyone, or as a coupon code?"
227
231
 
228
- **If COUPON is selected**, load the coupon setup reference with `ReadFullDocsArticle`:
229
- [Setup: Coupons](https://dev.wix.com/docs/api-reference/business-solutions/coupons)
232
+ **If COUPON is selected**, read the full article for the coupon setup reference:
233
+ [Pricing: Create Coupon](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/pricing-create-coupon)
230
234
 
231
235
  ---
232
236
 
@@ -238,15 +242,13 @@ Call both APIs concurrently:
238
242
 
239
243
  ### Call 1: GetCatalogAnalytics
240
244
 
245
+ **Endpoint:** `POST https://manage.wix.com/recommendations/v1/recommendations/get-catalog-analytics-tool`
246
+
241
247
  ```
242
- CallWixSiteAPI(
243
- url: "https://manage.wix.com/recommendations/v1/recommendations/get-catalog-analytics-tool",
244
- method: "POST",
245
- body: {
246
- "aggregates": <see table below>,
247
- "minMarginPct": 0.15
248
- }
249
- )
248
+ {
249
+ "aggregates": <see table below>,
250
+ "minMarginPct": 0.15
251
+ }
250
252
  ```
251
253
 
252
254
  Valid `aggregates` values: `op` ∈ `count|sum|avg|min|max|stddev|quantiles` · `field` ∈ `quantity|price|cost|profit|profitMargin|ordersCount` · `q` required only for `quantiles` (array of 0.0–1.0, max 20)
@@ -284,18 +286,16 @@ Valid `aggregates` values: `op` ∈ `count|sum|avg|min|max|stddev|quantiles` ·
284
286
 
285
287
  ### Call 2: GetProductCatalogData
286
288
 
289
+ **Endpoint:** `POST https://manage.wix.com/recommendations/v1/recommendations/get-product-catalog-data-tool`
290
+
287
291
  ```
288
- CallWixSiteAPI(
289
- url: "https://manage.wix.com/recommendations/v1/recommendations/get-product-catalog-data-tool",
290
- method: "POST",
291
- body: {
292
- "businessGoal": "<goal from Step 4>",
293
- "minMarginPct": 0.15,
294
- "catalogLimit": 30,
295
- "query": "<keywords from merchant request, or empty string>",
296
- "categoryNames": <category names if mentioned, or empty array>
297
- }
298
- )
292
+ {
293
+ "businessGoal": "<goal from Step 4>",
294
+ "minMarginPct": 0.15,
295
+ "catalogLimit": 30,
296
+ "query": "<keywords from merchant request, or empty string>",
297
+ "categoryNames": <category names if mentioned, or empty array>
298
+ }
299
299
  ```
300
300
 
301
301
  **Sort order applied server-side by `businessGoal`:**
@@ -331,12 +331,10 @@ CallWixSiteAPI(
331
331
 
332
332
  **Send only categories you plan to target — max 10 per call.**
333
333
 
334
- ```
335
- CallWixSiteAPI(
336
- url: "https://manage.wix.com/recommendations/v1/recommendations/get-category-ids-tool",
337
- method: "POST",
338
- body: { "categoryNames": ["<top category 1>", "<top category 2>"] }
339
- )
334
+ **Endpoint:** `POST https://manage.wix.com/recommendations/v1/recommendations/get-category-ids-tool`
335
+
336
+ ```json
337
+ { "categoryNames": ["<top category 1>", "<top category 2>"] }
340
338
  ```
341
339
 
342
340
  **Response:** `{ "categoryIds": ["a1b2c3d4-...", "b2c3d4e5-..."] }`
@@ -415,6 +413,10 @@ Analyze the site's shipping configuration using the rules below. All shipping re
415
413
 
416
414
  **Priority order:** CRITICAL blockers (no options, no coverage) → Conversion-linked (no free shipping, high rates) → Revenue opportunities (international, tiered pricing) → Configuration improvements (consolidate, add estimates).
417
415
 
416
+ ### Gift card recommendations (if GIFT_CARDS domain active)
417
+
418
+ [Goal: Sell Gift Cards](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/goal-sell-gift-cards) owns this domain end to end — the existing-product gate, denomination sizing, expiry policy, and at most one gift-card recommendation. Action type: `create_gift_card_product`.
419
+
418
420
  ### Cross-domain balance
419
421
 
420
422
  - If request is generic, aim for recommendations from **multiple domains** (e.g., 2-3 discount + 1-2 shipping)
@@ -435,6 +437,7 @@ Analyze the site's shipping configuration using the rules below. All shipping re
435
437
  8. **Rounding**: Discount percentages round to 5/10/15/20/25% unless merchant specified exact value.
436
438
  9. **Data-backed**: Every recommendation must reference specific data from API responses.
437
439
  10. **Domain labeled**: Every recommendation has the correct `domain` field.
440
+ 11. **Persisted**: Step 8 has run and every recommendation has an `id` from `BatchCreate`. **If you cannot point at that `id`, you are not finished — go do Step 8 now.** The only exceptions are `SKIP_TRACKING` or a `BatchCreate` call that failed, and a failure must be reported to the merchant, not passed over in silence.
438
441
 
439
442
  ---
440
443
 
@@ -442,36 +445,30 @@ Analyze the site's shipping configuration using the rules below. All shipping re
442
445
 
443
446
  **MANDATORY — do NOT skip unless the user said `SKIP_TRACKING`.**
444
447
 
445
- Before calling BatchCreate, load the tracking recipe to get the exact request body shape:
448
+ Before calling BatchCreate, read the full article for the tracking recipe to get the exact request body shape:
449
+ [API: Recommendation Tracking](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/api-recommendation-tracking)
446
450
 
447
- ```
448
- ReadFullDocsArticle("https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/api-recommendation-tracking")
449
- ```
451
+ Then call BatchCreate to persist ALL recommendations as PROPOSED.
450
452
 
451
- Then call `BatchCreate` to persist ALL recommendations as PROPOSED:
453
+ **Endpoint:** `POST https://manage.wix.com/_api/agentic-recommendations/v1/agentic-recommendations/batch-create`
452
454
 
453
455
  ```
454
- CallWixSiteAPI(
455
- url: "https://manage.wix.com/_api/agentic-recommendations/v1/agentic-recommendations/batch-create",
456
- method: "POST",
457
-
458
- body: {
459
- "agenticRecommendations": [
460
- {
461
- "title": "<recommendation title>",
462
- "reasoning": "<recommendation reasoning>",
463
- "domain": "<discounts|shipping>",
464
- "urgency": "<CRITICAL|HIGH|MEDIUM|LOW>",
465
- "advice": {
466
- "action": "<action type>",
467
- "params": <params object>,
468
- "successCriteria": "<how to verify success>"
469
- }
456
+ {
457
+ "agenticRecommendations": [
458
+ {
459
+ "title": "<recommendation title>",
460
+ "reasoning": "<recommendation reasoning>",
461
+ "domain": "<discounts|shipping>",
462
+ "urgency": "<CRITICAL|HIGH|MEDIUM|LOW>",
463
+ "advice": {
464
+ "action": "<action type>",
465
+ "params": <params object>,
466
+ "successCriteria": "<how to verify success>"
470
467
  }
471
- ],
472
- "conversationId": "<conversationId>"
473
- }
474
- )
468
+ }
469
+ ],
470
+ "conversationId": "<conversationId>"
471
+ }
475
472
  ```
476
473
 
477
474
  **Save the `id` and `revision` from each result.** Include them in the output.
@@ -513,7 +510,7 @@ If BatchCreate fails, report the error and include recommendations without track
513
510
  "endDate": "2026-05-26"
514
511
  }
515
512
  },
516
- "success_criteria": "15% discount applied site-wide for orders above $250 during Memorial Weekend"
513
+ "successCriteria": "15% discount applied site-wide for orders above $250 during Memorial Weekend"
517
514
  }
518
515
  }
519
516
  ]
@@ -524,17 +521,17 @@ If BatchCreate fails, report the error and include recommendations without track
524
521
 
525
522
  | Field | Rule |
526
523
  |---|---|
527
- | `id` | GUID from tracking BatchCreate response (omit if tracking skipped/failed) |
524
+ | `id` | GUID from the tracking `BatchCreate` response. **Required** — an output with no `id` means Step 8 never ran, which is a failed run. Omit only when the merchant said `SKIP_TRACKING`, or when `BatchCreate` failed and you say so explicitly. |
528
525
  | `title` | Short, actionable. Max 200 chars. Always English. |
529
526
  | `reasoning` | **Must reference which API call returned the data.** Always English. |
530
- | `domain` | `"discounts"` or `"shipping"` (future: `"gift_cards"`, `"taxes"`) |
527
+ | `domain` | `"discounts"`, `"shipping"`, or `"gift_cards"` (future: `"taxes"`) |
531
528
  | `urgency` | `CRITICAL`, `HIGH`, `MEDIUM`, or `LOW` |
532
529
  | `mechanism` | `AUTOMATIC` or `COUPON`. From Step 4c. Only for discounts domain. |
533
530
  | `name` | Marketing headline, 2-5 words. Translate to site `language` if not English. |
534
531
  | `why` | 1-2 sentences with specific data points from API responses. Translate to site `language`. |
535
532
  | `code` | Only for COUPON mechanism. Memorable code, max 20 chars (e.g., "SAVE15"). |
536
533
  | `scope` + IDs | For discounts: SITE = both empty, CATEGORY = categoryIds only (max 3), ITEMS = productIds only (max 5). |
537
- | `success_criteria` | How to verify the recommendation was applied correctly |
534
+ | `successCriteria` | How to verify the recommendation was applied correctly |
538
535
 
539
536
  ### Valid action types by domain
540
537
 
@@ -542,6 +539,7 @@ If BatchCreate fails, report the error and include recommendations without track
542
539
  |---|---|
543
540
  | discounts | `apply_discount` |
544
541
  | shipping | `create_shipping_option`, `update_shipping_option`, `enable_backup_rate`, `activate_region` |
542
+ | gift_cards | `create_gift_card_product` |
545
543
 
546
544
  ---
547
545