@wix/agent-skills 1.14.0 → 1.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/README.md +12 -1
  2. package/package.json +1 -1
  3. package/skills/README.md +23 -0
  4. package/skills/wix-app/SKILL.md +10 -2
  5. package/skills/wix-app/references/AUTO_PATTERNS_DASHBOARD.md +326 -0
  6. package/skills/wix-app/references/CODE_QUALITY.md +1 -0
  7. package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +124 -115
  8. package/skills/wix-app/references/DASHBOARD_PAGE.md +3 -0
  9. package/skills/wix-app/references/DATA_COLLECTION.md +5 -3
  10. package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +25 -9
  11. package/skills/wix-app/references/SITE_PLUGIN.md +1 -1
  12. package/skills/wix-app/references/STORES_VERSIONING.md +9 -211
  13. package/skills/wix-app/references/auto-patterns-dashboard/action-cell.md +115 -0
  14. package/skills/wix-app/references/auto-patterns-dashboard/app-config-structure.md +264 -0
  15. package/skills/wix-app/references/auto-patterns-dashboard/app-context.md +37 -0
  16. package/skills/wix-app/references/auto-patterns-dashboard/bulk-actions.md +86 -0
  17. package/skills/wix-app/references/auto-patterns-dashboard/collection-page-actions.md +119 -0
  18. package/skills/wix-app/references/auto-patterns-dashboard/collection-page.md +103 -0
  19. package/skills/wix-app/references/auto-patterns-dashboard/custom-actions-override.md +76 -0
  20. package/skills/wix-app/references/auto-patterns-dashboard/custom-columns-override.md +82 -0
  21. package/skills/wix-app/references/auto-patterns-dashboard/custom-components-override.md +89 -0
  22. package/skills/wix-app/references/auto-patterns-dashboard/custom-header-override.md +124 -0
  23. package/skills/wix-app/references/auto-patterns-dashboard/custom-sections-override.md +91 -0
  24. package/skills/wix-app/references/auto-patterns-dashboard/custom-slots-override.md +71 -0
  25. package/skills/wix-app/references/auto-patterns-dashboard/entity-page-actions.md +70 -0
  26. package/skills/wix-app/references/auto-patterns-dashboard/entity-page-view-actions.md +73 -0
  27. package/skills/wix-app/references/auto-patterns-dashboard/entity-page.md +98 -0
  28. package/skills/wix-app/references/auto-patterns-dashboard/example-patterns.json +278 -0
  29. package/skills/wix-app/references/auto-patterns-dashboard/pages-configuration.md +94 -0
  30. package/skills/wix-app/references/auto-patterns-dashboard/resolved-action.md +43 -0
  31. package/skills/wix-app/references/auto-patterns-dashboard/sdk-utilities.md +66 -0
  32. package/skills/wix-app/references/auto-patterns-dashboard/views.md +76 -0
  33. package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +5 -0
  34. package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +1 -14
  35. package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +151 -0
  36. package/skills/wix-app/references/editor-react-component/COMPONENT-API.md +54 -29
  37. package/skills/wix-app/references/editor-react-component/COMPONENT-CONFIGURATION.md +2 -2
  38. package/skills/wix-app/references/editor-react-component/COMPONENT-PREVIEW.md +57 -0
  39. package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +23 -105
  40. package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +127 -0
  41. package/skills/wix-app/references/editor-react-component/PARTS.md +2 -1
  42. package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +18 -16
  43. package/skills/wix-app/references/editor-react-component/REACT-PATTERNS.md +25 -53
  44. package/skills/wix-app/references/stores/CATEGORIES.md +22 -0
  45. package/skills/wix-app/references/stores/GET_PRODUCT.md +99 -0
  46. package/skills/wix-app/references/stores/INVENTORY.md +37 -0
  47. package/skills/wix-app/references/stores/QUERY.md +87 -0
  48. package/skills/wix-app/references/stores/WRITE.md +55 -0
  49. package/skills/wix-app/scripts/generate-auto-patterns.js +510 -0
  50. package/skills/wix-auth/SKILL.md +12 -0
  51. package/skills/wix-auth/references/device-flow.md +140 -0
  52. package/skills/wix-docs/SKILL.md +188 -0
  53. package/skills/wix-docs/references/API_SPEC_SEARCH.md +213 -0
  54. package/skills/wix-docs/references/EXTRACTING.md +120 -0
  55. package/skills/wix-headless/SKILL.md +89 -130
  56. package/skills/wix-headless/entry/bootstrap.mjs +93 -0
  57. package/skills/wix-headless/entry/skill.md +76 -0
  58. package/skills/wix-headless/references/AI_FEATURES.md +178 -0
  59. package/skills/wix-headless/references/CAPABILITIES.md +86 -0
  60. package/skills/wix-headless/references/DISCOVERY.md +34 -56
  61. package/skills/wix-headless/references/DOC_DISCOVERY.md +37 -0
  62. package/skills/wix-headless/references/FEEDBACK.md +129 -0
  63. package/skills/wix-headless/references/IMAGE_GENERATION.md +69 -0
  64. package/skills/wix-headless/references/SDK_HANDOFF.md +99 -0
  65. package/skills/wix-headless/references/SEED.md +45 -187
  66. package/skills/wix-headless/references/SETUP.md +32 -103
  67. package/skills/wix-headless/references/astro.md +98 -0
  68. package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +196 -0
  69. package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +236 -0
  70. package/skills/wix-headless/references/inline-recipes/how-to-code-bookings.md +279 -0
  71. package/skills/wix-headless/references/inline-recipes/how-to-code-cms.md +163 -0
  72. package/skills/wix-headless/references/inline-recipes/how-to-code-events.md +203 -0
  73. package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +222 -0
  74. package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +124 -0
  75. package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +160 -0
  76. package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +118 -0
  77. package/skills/wix-headless/references/inline-recipes/how-to-code-portfolio.md +132 -0
  78. package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +124 -0
  79. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +188 -0
  80. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +213 -0
  81. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurants.md +161 -0
  82. package/skills/wix-headless/references/inline-recipes/setup-blog.md +175 -0
  83. package/skills/wix-headless/references/inline-recipes/setup-bookings.md +232 -0
  84. package/skills/wix-headless/references/inline-recipes/setup-cms.md +200 -0
  85. package/skills/wix-headless/references/inline-recipes/setup-events.md +196 -0
  86. package/skills/wix-headless/references/inline-recipes/setup-forms.md +174 -0
  87. package/skills/wix-headless/references/inline-recipes/setup-online-store.md +192 -0
  88. package/skills/wix-headless/references/inline-recipes/setup-portfolio.md +155 -0
  89. package/skills/wix-headless/references/inline-recipes/setup-pricing-plans.md +229 -0
  90. package/skills/wix-headless/references/inline-recipes/setup-restaurant-experiences.md +73 -0
  91. package/skills/wix-headless/references/inline-recipes/setup-restaurant-orders.md +197 -0
  92. package/skills/wix-headless/references/inline-recipes/setup-restaurant-reservations.md +136 -0
  93. package/skills/wix-headless/references/inline-recipes/setup-restaurants.md +152 -0
  94. package/skills/wix-headless/references/managed/AUTHENTICATION.md +57 -0
  95. package/skills/wix-headless/references/managed/CONNECT.md +74 -0
  96. package/skills/wix-headless/references/managed/CREATE.md +130 -0
  97. package/skills/wix-headless/references/managed/DEPLOYMENT.md +79 -0
  98. package/skills/wix-headless/references/non-astro.md +59 -0
  99. package/skills/wix-headless/references/self-managed/AUTHENTICATION.md +22 -0
  100. package/skills/wix-headless/references/self-managed/DEPLOYMENT.md +15 -0
  101. package/skills/wix-headless/references/stripe/AUTHENTICATION.md +55 -0
  102. package/skills/wix-headless/references/stripe/DEPLOYMENT.md +71 -0
  103. package/skills/wix-manage/SKILL.md +29 -3
  104. package/skills/wix-manage/references/analytics/query-site-analytics.md +298 -0
  105. package/skills/wix-manage/references/app-installation/install-wix-apps.md +3 -0
  106. package/skills/wix-manage/references/bookings/create-and-update-booking-services.md +1 -1
  107. package/skills/wix-manage/references/bookings/create-booking-service-from-prompt.md +6 -5
  108. package/skills/wix-manage/references/bookings/create-course-service.md +30 -5
  109. package/skills/wix-manage/references/bookings/diagnose-availability-issues.md +299 -0
  110. package/skills/wix-manage/references/cms/cms-schema-management.md +6 -0
  111. package/skills/wix-manage/references/get-paid/how-to-setup-wix-payments.md +30 -7
  112. package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +517 -0
  113. package/skills/wix-manage/references/marketing/generate-and-publish-marketing-plan.md +218 -0
  114. package/skills/wix-manage/references/rich-content/author-ricos-rich-content.md +249 -0
  115. package/skills/wix-manage/references/sites/site-import.md +270 -0
  116. package/skills/wix-manage/references/stores/create-product-from-image.md +8 -6
  117. package/skills/wix-manage/references/stores/create-product-with-options-catalog-v3.md +57 -0
  118. package/skills/wix-vibe-headless/SKILL.md +142 -0
  119. package/skills/wix-vibe-headless/platforms/README.md +22 -0
  120. package/skills/wix-vibe-headless/platforms/base44.md +142 -0
  121. package/skills/wix-vibe-headless/platforms/generic.md +87 -0
  122. package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +128 -0
  123. package/skills/wix-vibe-headless/references/blog/wix-blog.js +217 -0
  124. package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +157 -0
  125. package/skills/wix-vibe-headless/references/bookings/wix-bookings-checkout.js +147 -0
  126. package/skills/wix-vibe-headless/references/bookings/wix-bookings-services.js +217 -0
  127. package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +154 -0
  128. package/skills/wix-vibe-headless/references/cms/wix-cms.js +186 -0
  129. package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +142 -0
  130. package/skills/wix-vibe-headless/references/events/wix-events-browse.js +136 -0
  131. package/skills/wix-vibe-headless/references/events/wix-events-registration.js +187 -0
  132. package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +211 -0
  133. package/skills/wix-vibe-headless/references/members/wix-members-auth.js +387 -0
  134. package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +111 -0
  135. package/skills/wix-vibe-headless/references/portfolio/wix-portfolio.js +223 -0
  136. package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +127 -0
  137. package/skills/wix-vibe-headless/references/pricing-plans/wix-pricing-plans.js +157 -0
  138. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +138 -0
  139. package/skills/wix-vibe-headless/references/restaurants/wix-restaurants-menu.js +224 -0
  140. package/skills/wix-vibe-headless/references/restaurants/wix-restaurants-ordering.js +156 -0
  141. package/skills/wix-vibe-headless/references/restaurants/wix-restaurants-reservations.js +107 -0
  142. package/skills/wix-vibe-headless/references/shared/wix-client.js +186 -0
  143. package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +164 -0
  144. package/skills/wix-vibe-headless/references/storefront/wix-store-cart.js +147 -0
  145. package/skills/wix-vibe-headless/references/storefront/wix-store-catalog.js +146 -0
  146. package/skills/wix-headless/references/BUILD-astro.md +0 -253
  147. package/skills/wix-headless/references/BUILD-own-build.md +0 -167
  148. package/skills/wix-headless/references/BUILD.md +0 -105
  149. package/skills/wix-headless/references/DESIGN_SYSTEM.md +0 -165
  150. package/skills/wix-headless/references/DISCOVERY-connect.md +0 -55
  151. package/skills/wix-headless/references/DISCOVERY-create.md +0 -238
  152. package/skills/wix-headless/references/PLAN-connect.md +0 -19
  153. package/skills/wix-headless/references/PLAN-create.md +0 -17
  154. package/skills/wix-headless/references/PLAN.md +0 -92
  155. package/skills/wix-headless/references/astro/blog/BLOG_PAGES.md +0 -300
  156. package/skills/wix-headless/references/astro/blog/BLOG_SETUP.md +0 -218
  157. package/skills/wix-headless/references/astro/bookings/COMPONENTS.md +0 -45
  158. package/skills/wix-headless/references/astro/bookings/SERVICES_PAGES.md +0 -77
  159. package/skills/wix-headless/references/astro/cms/CMS_FOUNDATIONS.md +0 -214
  160. package/skills/wix-headless/references/astro/cms/FAQ_KNOWLEDGE_BASE.md +0 -231
  161. package/skills/wix-headless/references/astro/cms/PORTFOLIO.md +0 -453
  162. package/skills/wix-headless/references/astro/cms/RESOURCE_LIBRARY.md +0 -354
  163. package/skills/wix-headless/references/astro/cms/TEAM_DIRECTORY.md +0 -299
  164. package/skills/wix-headless/references/astro/designer/INSTRUCTIONS.md +0 -351
  165. package/skills/wix-headless/references/astro/ecom/CART_PAGES.md +0 -119
  166. package/skills/wix-headless/references/astro/ecom/CART_WIRING.md +0 -103
  167. package/skills/wix-headless/references/astro/ecom/COMPONENTS_CSS.md +0 -132
  168. package/skills/wix-headless/references/astro/forms/CONTACT_FORM.md +0 -463
  169. package/skills/wix-headless/references/astro/gift-cards/COMPONENTS.md +0 -119
  170. package/skills/wix-headless/references/astro/gift-cards/PAGES.md +0 -129
  171. package/skills/wix-headless/references/astro/stores/BACK_IN_STOCK.md +0 -178
  172. package/skills/wix-headless/references/astro/stores/CATEGORY_PAGES.md +0 -85
  173. package/skills/wix-headless/references/astro/stores/COMPONENTS_CSS.md +0 -129
  174. package/skills/wix-headless/references/astro/stores/HOME_AND_NAV.md +0 -229
  175. package/skills/wix-headless/references/astro/stores/PRODUCT_PAGES.md +0 -215
  176. package/skills/wix-headless/references/astro/stores/SHARED_WIRING.md +0 -165
  177. package/skills/wix-headless/references/astro/templates/Layout.astro +0 -132
  178. package/skills/wix-headless/references/astro/templates/astro.config.mjs +0 -41
  179. package/skills/wix-headless/references/astro/templates/bookings/AvailabilityCalendar.tsx +0 -374
  180. package/skills/wix-headless/references/astro/templates/bookings/BookingForm.tsx +0 -136
  181. package/skills/wix-headless/references/astro/templates/bookings/SeoTags.astro +0 -25
  182. package/skills/wix-headless/references/astro/templates/bookings/ServiceBookingFlow.tsx +0 -71
  183. package/skills/wix-headless/references/astro/templates/bookings/ServiceCard.astro +0 -54
  184. package/skills/wix-headless/references/astro/templates/bookings/booking-confirmation.astro +0 -49
  185. package/skills/wix-headless/references/astro/templates/bookings/bookingDriver.ts +0 -245
  186. package/skills/wix-headless/references/astro/templates/bookings/components-bookings.css +0 -424
  187. package/skills/wix-headless/references/astro/templates/bookings/services/[slug].astro +0 -176
  188. package/skills/wix-headless/references/astro/templates/bookings/services/index.astro +0 -181
  189. package/skills/wix-headless/references/astro/templates/ecom/CartBadge.tsx +0 -84
  190. package/skills/wix-headless/references/astro/templates/ecom/CartView.tsx +0 -543
  191. package/skills/wix-headless/references/astro/templates/ecom/cart.astro +0 -13
  192. package/skills/wix-headless/references/astro/templates/ecom/components-ecom.css +0 -302
  193. package/skills/wix-headless/references/astro/templates/ecom/discounts.ts +0 -71
  194. package/skills/wix-headless/references/astro/templates/ecom/thank-you.astro +0 -24
  195. package/skills/wix-headless/references/astro/templates/gift-cards/GiftCardPurchase.tsx +0 -172
  196. package/skills/wix-headless/references/astro/templates/gift-cards/_home-teaser-snippet.astro +0 -42
  197. package/skills/wix-headless/references/astro/templates/gift-cards/_nav-snippet.astro +0 -11
  198. package/skills/wix-headless/references/astro/templates/gift-cards/components-gift-cards.css +0 -220
  199. package/skills/wix-headless/references/astro/templates/gift-cards/gift-cards.astro +0 -51
  200. package/skills/wix-headless/references/astro/templates/gift-cards/gift-cards.ts +0 -75
  201. package/skills/wix-headless/references/astro/templates/global.css +0 -288
  202. package/skills/wix-headless/references/astro/templates/stores/AddToCartButton.tsx +0 -77
  203. package/skills/wix-headless/references/astro/templates/stores/BackInStockForm.tsx +0 -176
  204. package/skills/wix-headless/references/astro/templates/stores/CategoryRail.astro +0 -69
  205. package/skills/wix-headless/references/astro/templates/stores/ProductCard.astro +0 -79
  206. package/skills/wix-headless/references/astro/templates/stores/ProductPurchase.tsx +0 -397
  207. package/skills/wix-headless/references/astro/templates/stores/SeoTags.astro +0 -21
  208. package/skills/wix-headless/references/astro/templates/stores/back-in-stock.ts +0 -67
  209. package/skills/wix-headless/references/astro/templates/stores/categories.ts +0 -155
  210. package/skills/wix-headless/references/astro/templates/stores/category/[slug].astro +0 -130
  211. package/skills/wix-headless/references/astro/templates/stores/components-stores.css +0 -400
  212. package/skills/wix-headless/references/astro/templates/stores/products/[slug].astro +0 -128
  213. package/skills/wix-headless/references/astro/templates/stores/products/index.astro +0 -101
  214. package/skills/wix-headless/references/blog/BLOG_CONTENT.md +0 -161
  215. package/skills/wix-headless/references/blog/INSTRUCTIONS.md +0 -32
  216. package/skills/wix-headless/references/bookings/FLOW.md +0 -246
  217. package/skills/wix-headless/references/bookings/INSTRUCTIONS.md +0 -95
  218. package/skills/wix-headless/references/bookings/SERVICES_DATA.md +0 -355
  219. package/skills/wix-headless/references/cms/CMS_FOUNDATIONS.md +0 -176
  220. package/skills/wix-headless/references/cms/INSTRUCTIONS.md +0 -71
  221. package/skills/wix-headless/references/commands/known-apps.json +0 -6
  222. package/skills/wix-headless/references/custom/CONNECTION_PLAN.md +0 -142
  223. package/skills/wix-headless/references/custom/INSTRUCTIONS.md +0 -88
  224. package/skills/wix-headless/references/custom/blog/WIRING.md +0 -52
  225. package/skills/wix-headless/references/custom/bookings/WIRING.md +0 -197
  226. package/skills/wix-headless/references/custom/cms/WIRING.md +0 -97
  227. package/skills/wix-headless/references/custom/ecom/WIRING.md +0 -67
  228. package/skills/wix-headless/references/custom/forms/WIRING.md +0 -101
  229. package/skills/wix-headless/references/custom/stores/WIRING.md +0 -80
  230. package/skills/wix-headless/references/ecom/INSTRUCTIONS.md +0 -59
  231. package/skills/wix-headless/references/forms/INSTRUCTIONS.md +0 -43
  232. package/skills/wix-headless/references/gift-cards/INSTRUCTIONS.md +0 -51
  233. package/skills/wix-headless/references/images/INSTRUCTIONS.md +0 -357
  234. package/skills/wix-headless/references/seed-recipes.md +0 -49
  235. package/skills/wix-headless/references/shared/AGENTS_MD.md +0 -47
  236. package/skills/wix-headless/references/shared/AUTHENTICATION.md +0 -108
  237. package/skills/wix-headless/references/shared/BUILD_NOISE.md +0 -8
  238. package/skills/wix-headless/references/shared/DESIGN_MD.md +0 -84
  239. package/skills/wix-headless/references/shared/DOCS_SEARCH.md +0 -41
  240. package/skills/wix-headless/references/shared/IMAGE_GENERATION.md +0 -186
  241. package/skills/wix-headless/references/shared/IMPLEMENTER.md +0 -206
  242. package/skills/wix-headless/references/shared/PRODUCTION_SHARP_EDGES.md +0 -97
  243. package/skills/wix-headless/references/shared/RETURN_CONTRACT.md +0 -143
  244. package/skills/wix-headless/references/shared/STYLING.md +0 -140
  245. package/skills/wix-headless/references/stores/INSTRUCTIONS.md +0 -126
  246. package/skills/wix-headless/references/stores/PRODUCT_CATALOG_DATA.md +0 -252
  247. package/skills/wix-headless/references/verticals/_schema.json +0 -74
  248. package/skills/wix-headless/references/verticals/_schema.md +0 -95
  249. package/skills/wix-headless/references/verticals/blog.md +0 -31
  250. package/skills/wix-headless/references/verticals/bookings.md +0 -41
  251. package/skills/wix-headless/references/verticals/cms.md +0 -30
  252. package/skills/wix-headless/references/verticals/ecom.md +0 -25
  253. package/skills/wix-headless/references/verticals/forms.md +0 -26
  254. package/skills/wix-headless/references/verticals/gift-cards.md +0 -24
  255. package/skills/wix-headless/references/verticals/stores.md +0 -33
  256. package/skills/wix-headless/scripts/check-manifest.mjs +0 -335
  257. package/skills/wix-headless/scripts/compose.mjs +0 -520
  258. package/skills/wix-headless/scripts/emit-design-tokens.mjs +0 -157
  259. package/skills/wix-headless/scripts/flatten.sh +0 -61
  260. package/skills/wix-headless/scripts/generate-images.mjs +0 -242
  261. package/skills/wix-headless/scripts/patch-decorative-slots.mjs +0 -154
  262. package/skills/wix-headless/scripts/plan-entity-image-waves.mjs +0 -190
  263. package/skills/wix-headless/scripts/scaffold.sh +0 -139
  264. package/skills/wix-headless/scripts/seed-utilities.sh +0 -93
  265. package/skills/wix-headless/scripts/write-decorative-json.mjs +0 -62
  266. package/skills/wix-headless/shared-utilities/analytics.ts +0 -40
  267. package/skills/wix-headless/shared-utilities/ricos.ts +0 -179
  268. package/skills/wix-headless/shared-utilities/wix-image.ts +0 -72
@@ -0,0 +1,74 @@
1
+ # Connect — wire an existing project to a managed Wix backend
2
+
3
+ **Managed only.** This flow runs when the project type is `managed` and the operation is
4
+ `connect` **or** `iterate` — a frontend project is already on disk (or a design URL was fetched into
5
+ CWD) and the user wants it hosted on Wix and powered by Wix Business Solutions. It attaches Wix to the
6
+ project (or reuses the existing connection when iterating), runs the shared backend flow, wires the UI
7
+ to that backend, builds, and releases. **The only difference for `iterate`** — the project is already
8
+ connected, so §1 skips `init` and reuses the existing `wix.config.json`.
9
+ **No Designer, no templates, no binding-map machinery** — `SDK_HANDOFF.md` is the wiring reference.
10
+
11
+ Run these in order:
12
+
13
+ ## 1 · Attach Wix to the project — skip if already connected
14
+
15
+ **If a `wix.config.json` (or `.wix/`) is already present, the project is already connected to Wix — this is the *iterate* case.** Do **not** run `init` again (it's for attaching a *new* Wix project). Read `./wix.config.json` → hold `SITE_ID` in scratch, and skip to §2.
16
+
17
+ > **Iterate is incremental.** An already-connected project may already be set up and/or seeded from a prior run. In §3–§4, **check current state before acting** — query installed apps before installing, check for already-seeded content before seeding (re-seeding duplicates it), and inspect existing wiring before adding. Do only the delta the new intent requires; leave the rest untouched.
18
+
19
+ Otherwise, attach Wix in place:
20
+
21
+ ```bash
22
+ CI=1 npm create @wix/new@latest init
23
+ ```
24
+
25
+ Run from the project directory. It creates `wix.config.json` (with the `siteId` and the headless
26
+ OAuth app) and registers the project's origin on that app. Read `./wix.config.json` → hold `SITE_ID`
27
+ in scratch.
28
+
29
+ **If the design was brought in from elsewhere** (a `.zip`/folder/file, or a fetched design-file URL),
30
+ place it into CWD **first** — unzip/copy/fetch the design's files into the working directory so it's the
31
+ project on disk — **then** `init`. An empty CWD plus a brought-in design is still `connect`, not create:
32
+ land the design, then attach Wix to it.
33
+
34
+ ## 2 · Authenticate
35
+
36
+ Per `references/managed/AUTHENTICATION.md` — `whoami`/login if needed, then mint the site token
37
+ (`$TOKEN`) for `$SITE_ID`.
38
+
39
+ ## 3 · Backend flow (shared)
40
+
41
+ - **`references/SETUP.md`** — install the apps the resolved `verticals[]` need.
42
+ - **`references/SEED.md`** — create the backend content (and, if `imagery` is on, attach entity images).
43
+
44
+ ## 4 · Wire the existing UI
45
+
46
+ **Read the frontend reference for *how to connect* first**, keyed on the brought project's framework:
47
+ an **Astro** project → **`references/astro.md`** (auto-auth, no client); **any other framework or a
48
+ static design** → **`references/non-astro.md`** (manual `OAuthStrategy` client). The chosen file carries
49
+ the connect mechanics and the framework caveats; **`references/SDK_HANDOFF.md`** carries the
50
+ per-capability packages, the SDK docs, and the seeded schema (all other content is queried live).
51
+
52
+ Connect the existing project to the live backend. Install the SDK packages the loaded verticals need;
53
+ then, with **additive** edits:
54
+ - bind seeded content into the regions that already exist (product grids, post lists, item pages…);
55
+ - add the connected feature the intent implies where it's missing (e.g. a contact/RSVP form, a cart);
56
+ - always guard SDK calls (try/catch + fallback) so a failed call never blanks the page.
57
+
58
+ A run must end with the site actually reading from / writing to Wix — `init` + `release` with nothing
59
+ wired is not an acceptable outcome. If `imagery` is on and a surface needs an image, generate it per
60
+ **`references/IMAGE_GENERATION.md`** (up to the per-run `imageCap`, Discovery §4); for any slot not
61
+ generated — off, over the cap, or a failure — render the **themed-block fallback** (a styled `div` on
62
+ the design tokens), never an empty or broken slot.
63
+
64
+ ## 5 · Build & release
65
+
66
+ **Release once, at the very end** — only after Setup (§3), Seed **including the entity-image attach** (`SEED.md` § "Entity images"), the UI wiring (§4), and any imagery are all complete. Don't `build && release` mid-flow to preview. **A re-release does not refresh backend content:** a headless frontend fetches seeded content and entity images at **runtime**, so they're not in the build output — changing a seeded entity or attaching an image after release is live on the next request with **no** re-publish. Re-release only when the **frontend build output** changed. A backend image that isn't showing is an attach-shape bug (`SEED.md` § "Entity images"), not a stale cache — don't re-release to clear one.
67
+
68
+ If the project has its own build (`package.json` with a `build` script), run `npm run build` and point
69
+ `wix.config.json`'s `site.outputDirectory` at the build output. A **static** site (no build) needs the
70
+ static-hosting fixes in **`references/managed/DEPLOYMENT.md`** — the entry file must be named
71
+ `index.html`, and `outputDirectory` must point at the directory holding it (init's `./dist` default is
72
+ wrong for static). Then finalize per **`references/managed/DEPLOYMENT.md`** (`npx @wix/cli@latest release` — Wix
73
+ publishes + registers the origin OOTB). Close with a short summary (apps installed, content seeded, what
74
+ was wired) and **both links — the live site URL and the site dashboard `https://manage.wix.com/dashboard/<SITE_ID>`** (see `managed/DEPLOYMENT.md` § "Give the user both links"; `<SITE_ID>` is the `siteId` in scratch), then run the feedback checkpoint (`managed/DEPLOYMENT.md` § "Before you sign off").
@@ -0,0 +1,130 @@
1
+ # Create — scaffold a new managed Wix Headless project
2
+
3
+ **Managed only.** This flow runs when the project type is `managed` and the operation is
4
+ `create` (an empty directory + a "build me a site" intent). It scaffolds a fresh Wix Headless
5
+ project, runs the shared backend flow against it, builds the frontend wired to that backend, and
6
+ releases. There is **no Designer and no template library** — the frontend is built ad-hoc to the
7
+ user's intent, using `SDK_HANDOFF.md` as the integration reference.
8
+
9
+ Run these in order:
10
+
11
+ ## 0 · Resolve the frontend framework
12
+
13
+ Default is **Astro** — the documented managed default. Set `frontendFramework` to a non-Astro
14
+ framework **only if the user names one**: "Vite", "React", "Vue", "Svelte", "Next", "plain HTML/static",
15
+ or any "not Astro / don't use Astro" phrasing. Never infer a framework the user didn't name
16
+ (`references/non-astro.md` Caveat N1). Hold `frontendFramework` in scratch — it selects the **scaffold
17
+ command (§1)**, the **wiring reference (§4)**, and the **build command (§5)**. Derive `<folder-name>` as
18
+ a lowercase, npm-safe name from the brand (lowercase letters, numbers, hyphens; starts with a letter or
19
+ number).
20
+
21
+ ## 1 · Scaffold the project
22
+
23
+ Branch on `frontendFramework` from §0. **Both** branches end with a `wix.config.json` (the Wix link:
24
+ `siteId` + private-app `appId`) in the project root — read it → hold `SITE_ID` (the `siteId`) in scratch.
25
+
26
+ ### Astro (default)
27
+
28
+ Run the **documented** create command (flags and rationale: `references/astro.md` §1):
29
+
30
+ ```bash
31
+ CI=1 npm create @wix/new@latest -- headless \
32
+ --folder-name <folder-name> \
33
+ --business-name "<Brand Name>" \
34
+ --site-template \
35
+ --skip-install \
36
+ --no-publish
37
+ ```
38
+
39
+ - The `--` separator is required. Bare `--site-template` (no value) keeps it on the **blank** starter —
40
+ the model owns design, so don't adopt a business template; a value, or omitting the flag, would
41
+ prompt and abort in a non-interactive shell.
42
+ - The command provisions the Wix site + private app and writes `wix.config.json`. It requires a
43
+ logged-in CLI session (step 2 handles login if needed).
44
+ - It creates the project in a **subdirectory named `<folder-name>`** — there is no in-place option, so
45
+ **`cd <folder-name>`** and run the rest of the flow from inside it (it's the project root, with the
46
+ single `.wix/`).
47
+ - `--skip-install` defers dependency install to step 4 (which adds the SDK package set); run
48
+ `npm install` there before building.
49
+
50
+ ### Non-Astro (a framework was named)
51
+
52
+ There is **no Wix scaffolder for a non-Astro site** (`non-astro.md` N1) — so scaffold the framework's
53
+ **own** project first, then `init` it onto Wix (two steps, in this order):
54
+
55
+ ```bash
56
+ # 1. the framework's OWN documented scaffolder — e.g. Vite + React:
57
+ npm create vite@latest <folder-name> -- --template react
58
+ cd <folder-name>
59
+ # 2. connect this folder to a fresh Wix headless project, IN PLACE:
60
+ CI=1 npm create @wix/new@latest init
61
+ ```
62
+
63
+ - Use the framework's documented create command (read its docs if unsure of the template flag) — Vite,
64
+ Next, SvelteKit, Vue, etc. For **plain static HTML** there's no scaffolder: create the folder and an
65
+ `index.html` yourself, then run `init`.
66
+ - `npm create @wix/new@latest init` runs **in place** (no new subdirectory, no Astro files added): it
67
+ signs you in, provisions the Wix site + private app, and writes `wix.config.json`
68
+ (`siteId`, `appId`, `site.outputDirectory: "./dist"`). It takes no flags. Run it **from inside**
69
+ `<folder-name>` *after* the framework scaffold exists.
70
+ - A static (no-build) frontend builds to no `dist` — fix `site.outputDirectory` per
71
+ `managed/DEPLOYMENT.md` ("Static frontends") before release.
72
+
73
+ ## 2 · Authenticate
74
+
75
+ Per `references/managed/AUTHENTICATION.md` — `whoami`/login if needed, then mint the site token
76
+ (`$TOKEN`) for `$SITE_ID`. (Scaffold already required a logged-in CLI session.)
77
+
78
+ ## 3 · Backend flow (shared)
79
+
80
+ Run the agnostic flow against the scaffolded site:
81
+ - **`references/SETUP.md`** — install the apps the resolved `verticals[]` need.
82
+ - **`references/SEED.md`** — create the backend content (and, if `imagery` is on, attach entity images).
83
+
84
+ ## 4 · Build the frontend (wired to the backend)
85
+
86
+ **Read the frontend reference for *how to connect* first — pick it by `frontendFramework` (§0):**
87
+
88
+ - **Astro** (default) → **`references/astro.md`**: managed-Astro auto-authenticates, so the frontend
89
+ creates **no client** (no `OAuthStrategy`, no `clientId`) — you `import { x } from "@wix/<pkg>"` and
90
+ call methods. astro.md also carries the load-bearing caveats (the always-on `astro.config.mjs`
91
+ integrations, SSR error guards, island hydration).
92
+ - **Non-Astro** → **`references/non-astro.md`**: the manual `OAuthStrategy` visitor-client path
93
+ (`createClient({ modules, auth: OAuthStrategy({ clientId }) })`), where `clientId` is the public
94
+ `appId` from the `wix.config.json` written by `init` (§1).
95
+
96
+ Then build the pages the user's intent calls for, **wired to the live backend**, using
97
+ **`references/SDK_HANDOFF.md`** for the per-capability packages, the SDK docs, and the seeded schema to
98
+ bind (collection/form names + field keys; all other content is queried live). Install the SDK packages the loaded verticals need, author the pages/components directly in the
99
+ project, and bind them to the live backend content. Keep it scoped to what was asked — no speculative pages.
100
+
101
+ > **`npm install` note (Astro):** always run **`npm install --ignore-scripts`**. Astro pulls `sharp`
102
+ > as an *optional* transitive dep for **local, build-time**
103
+ > image optimization this headless flow never uses (all imagery is remote Wix Media URLs served through
104
+ > plain `<img>`), and its from-source native build can fail and abort the whole install; `--ignore-scripts`
105
+ > skips that failing build up front. **Do not** use the deprecated `--no-optional` (silent no-op in modern
106
+ > npm — sharp still builds) or `--omit=optional` (sharp still resolves). A failed/absent `sharp` is
107
+ > **expected and harmless — never build, retry, or repair it, and never spend time diagnosing it**
108
+ > (`astro.md` Caveat A9).
109
+
110
+ If `imagery` is on and a surface needs an image (e.g. a homepage hero, an about-section visual),
111
+ generate it per **`references/IMAGE_GENERATION.md`** and use its `file.url` — up to the per-run
112
+ `imageCap` (Discovery §4). Generate only what the pages actually use. For any slot **not** generated
113
+ (imagery off, over the cap, or a generation failure), render the **themed-block fallback** — a styled
114
+ `div` on the site's design tokens — never an empty slot or a broken `<img>` (`IMAGE_GENERATION.md`).
115
+
116
+ ## 5 · Build & release
117
+
118
+ **Release once, at the very end.** Do **not** `build && release` mid-flow to "preview" progress. Reach this step only after **all** of the earlier work is done: Setup (§3), Seed **including the entity-image attach** (`SEED.md` § "Entity images" — pass-2 patches), the frontend wiring (§4), and any page imagery. A single release at the end is the target; each extra build+release cycle is wasted wall time.
119
+
120
+ **A re-release does not refresh backend content — don't reach for one to "fix" seeded data or images.** A headless frontend fetches seeded backend content **and entity images at runtime** (via the SDK / REST), so that content is *not* baked into the build output. If you change a seeded entity or attach an image **after** releasing, the live site already reflects it on the next request — there is nothing to re-publish. Re-release **only** when the **frontend build output itself** changed. In particular, a backend image that isn't showing is an **attach-shape bug** (wrong write shape → the entity has no image — see `SEED.md` § "Entity images" / the capability recipe's **Attach images** step), **not** a stale CDN cache; don't re-release to "clear a cache" for it.
121
+
122
+ Produce the build output, then finalize per **`references/managed/DEPLOYMENT.md`**
123
+ (`npx @wix/cli@latest release` — Wix publishes the site and registers the origin OOTB). The build step
124
+ depends on `frontendFramework` (§0):
125
+
126
+ - **Astro** → `npx @wix/cli@latest build`.
127
+ - **Non-Astro** → the framework's own build (e.g. `npm run build`); a static (no-build) site skips this.
128
+ `release` publishes whatever `site.outputDirectory` points at (default `./dist`).
129
+
130
+ Close with a short summary (apps installed, content seeded, pages built) and **both links — the live site URL and the site dashboard `https://manage.wix.com/dashboard/<SITE_ID>`** (see `managed/DEPLOYMENT.md` § "Give the user both links"; `<SITE_ID>` is the `siteId` in scratch), then run the feedback checkpoint (`managed/DEPLOYMENT.md` § "Before you sign off").
@@ -0,0 +1,79 @@
1
+ # Deployment — managed (Wix CLI release)
2
+
3
+ For a **managed** project, Wix owns the hosting, so finalizing the live site is a single command — Wix handles publishing the site **and** registering the deployed origin on the OAuth app **out of the box**. There are no manual publish or origin-registration calls (unlike the self-hosted types).
4
+
5
+ ## Release
6
+
7
+ From the project directory:
8
+
9
+ ```bash
10
+ CI=1 npx @wix/cli@latest release
11
+ ```
12
+
13
+ - Publishes whatever the managed project is configured to deploy to Wix's hosting/CDN, and brings the live site up.
14
+ - The deployed origin is registered on the OAuth app automatically — the frontend's visitor SDK calls are accepted from the live URL with no extra step.
15
+ - The published URL is printed on stdout (`Site published on <url>`).
16
+
17
+ ## Give the user both links — the live site **and** the dashboard
18
+
19
+ When you close the run, surface **two** links, not one:
20
+
21
+ 1. **The live site URL** — the `Site published on <url>` value from release above.
22
+ 2. **The site dashboard (Business Manager)** — `https://manage.wix.com/dashboard/<SITE_ID>`, where `<SITE_ID>` is the `siteId` held in scratch (read from `wix.config.json`). This is where the owner manages the site behind the headless frontend — view store orders, edit content, manage members, etc. **Always include it**: a headless site has no editor button, so without this link the owner has no obvious way back into their own backend, and the seeded content/apps look unreachable.
23
+
24
+ Present them plainly, e.g.:
25
+
26
+ ```
27
+ Live site: <published-url>
28
+ Dashboard: https://manage.wix.com/dashboard/<SITE_ID>
29
+ ```
30
+
31
+ ## Before you sign off — feedback checkpoint
32
+
33
+ This is the last step of the run — the natural point to check `../FEEDBACK.md`. Don't wait for the
34
+ user to complain: run a quick self-check over the whole session (not just this final step) — a
35
+ confusing API response, a doc that was wrong/missing, an extra retry, a workaround you had to invent,
36
+ anything that cost more turns than it should have. If anything qualifies, **offer** to relay it to Wix
37
+ as you deliver the links above; send only after an explicit yes.
38
+
39
+ ## Member login on a **non-Astro** frontend — register the callback URI (post-release)
40
+
41
+ **Only when the run has member login on a non-Astro SPA/static frontend using the Wix login page** (`inline-recipes/how-to-code-members-non-astro.md` — the `getAuthUrl` → `/callback` handshake). Astro's built-in `/api/auth/*` callback shapes are auto-registered; a **non-Astro SPA's own callback path is not** — and **login stays dead (4xx on the login redirect) until you register it**. This is a genuine gap `wix release` does *not* close for you.
42
+
43
+ - `release` auto-registers the deployed **origin** (`allowedRedirectDomains`) — that's the visitor-SDK/CORS surface (above). It does **not** register the member-login **callback URL** (`allowedRedirectUris`). These are two different fields; members needs **both**, and only the first is automatic.
44
+ - **This is a post-release step** — the callback URL embeds the deployed origin, which is unknown until `release` prints it. Do it right after release, once the URL is known.
45
+ - **⚠️ `allowedRedirectUris` IS writable via the API — do not conclude it's read-only/dashboard-only.** The `UpdateOAuthApp` reference may not list it among the obvious updatable fields, but a masked `PATCH` sets it. The trap is a **required field mask**: without `mask.paths` the `PATCH` returns `200` and **silently no-ops**.
46
+
47
+ ```bash
48
+ ID="<clientId>" # the OAuth app id == the public clientId
49
+ # 1) GET first and append — the PATCH REPLACES the array, so include what's already there:
50
+ curl -sS -w "\nHTTP_STATUS:%{http_code}" https://www.wixapis.com/oauth-app/v1/oauth-apps/$ID \
51
+ -H "Authorization: Bearer $TOKEN"
52
+ # 2) PATCH with the field mask (register BOTH the exact callback and the versioned-preview wildcard):
53
+ curl -sS -X PATCH https://www.wixapis.com/oauth-app/v1/oauth-apps/$ID \
54
+ -H "Authorization: Bearer $TOKEN" -H 'content-type: application/json' \
55
+ -w "\nHTTP_STATUS:%{http_code}" -d '{
56
+ "oAuthApp": { "id": "'"$ID"'",
57
+ "allowedRedirectUris": [ <existing…>, "https://<host>/callback", "https://*-<host>/callback" ] },
58
+ "mask": { "paths": ["allowedRedirectUris"] }
59
+ }'
60
+ ```
61
+
62
+ - Include **both** the exact URL **and** the `https://*-<host>/…` wildcard — Wix serves versioned preview subdomains. The callback path must match the recipe's `redirectUri` **exactly** (e.g. `window.location.origin + '/callback'`).
63
+ - `allowedRedirectDomains` and `allowedRedirectUris` can go in **one** `PATCH` (list both under `mask.paths`) if you ever need to set the origin by hand too.
64
+ - **If you're not the one deploying**, you can't know the domain — flag the member-login callback URI to the user to register, and note **login is dead until they do** (higher-stakes than the origin flag).
65
+
66
+ > **Custom-login** (`how-to-code-members-custom-login.md`) does **not** need this — `register`/`login` are direct API calls with no login-page redirect. Only `sendPasswordResetEmail`'s `redirectUri` and logout's return URL need allow-listing there.
67
+
68
+ ## Static frontends (no build step)
69
+
70
+ These two fixes are **Wix-hosting facts** — they apply to a connected **static** site (plain HTML, no bundler) on the managed path, and the docs are silent on both. A bundler SPA that builds to its own output directory doesn't need them.
71
+
72
+ - **The entry file must be named `index.html`.** Wix serves `index.html` at the site root. A brought-in design named anything else (e.g. `"My Design.html"`) **publishes "successfully" but 500s/404s at runtime**. Rename the entry to `index.html` **before** release and fix internal references to it.
73
+ - **`site.outputDirectory` must point at the directory holding `index.html`.** `init` writes `site.outputDirectory: "./dist"`, which assumes an SPA that *builds* to `dist`. A static site has no build, so `./dist` is wrong — set `outputDirectory` in `wix.config.json` to the directory that actually contains `index.html`, or `release` publishes but the live site 404s at root.
74
+
75
+ ## Transient errors
76
+
77
+ A release can hit transient infrastructure errors (`ECONNRESET`, `ETIMEDOUT`, `STATE_MISMATCH`, "try again shortly"). Retry the release serially up to **3×** with a short backoff. **Build failures are not retryable** — they're code bugs; fix the code, not the retry.
78
+
79
+ That's the whole of finalize for `managed` — no `site-publisher` call, and no `oauth-app` **origin** PATCH (the origin is auto-registered). The **one** exception is the member-login callback on a non-Astro frontend above — that `allowedRedirectUris` PATCH is manual and required.
@@ -0,0 +1,59 @@
1
+ # Non-Astro — the pinned docs to read *before* wiring a non-Astro frontend to Wix
2
+
3
+ This is the framework reference for any **non-Astro** frontend — React/Vue/Svelte/Vite SPA or plain static HTML. Astro stays the default (`astro.md`); read this when the user **names a framework** or **brings a non-Astro design**. Like `astro.md`, it's an **index of doc pages** with one-line "what it settles" notes, **then a Caveats section**. It carries **no design, templates, payloads, or per-framework code** — the model designs and writes the whole frontend; this file says only *how it connects*.
4
+
5
+ **This file is framework-axis only — it is mode-agnostic.** It is read in **both** the managed and self-managed flows, so it contains **no managed-vs-self-managed branching**: no `init` vs OAuth-app, no `wix release` vs external host, no `outputDirectory`, no `wix.config.json`. Anything that differs by *who hosts* lives in the project-type files (`managed/`, `self-managed/`) — you're already reading those in a known mode. Here is only what's **identical across both flows**: a non-Astro frontend talks to Wix through a manual `OAuthStrategy` visitor client + the SDK, the same way no matter who hosts it.
6
+
7
+ **The auth rule (the cross-skill boundary).** **Astro = auto-auth, no client. Non-Astro = manual client.** Unlike Astro, you create a client — `createClient({ modules, auth: OAuthStrategy({ clientId }) })`. For non-Astro this is the **documented, correct** model (the "Create a Client with OAuth" doc scopes itself to "frameworks other than Astro"). The `clientId` is the project's **public** OAuth client id — **not** a secret. **Where that id comes from is your flow's `AUTHENTICATION.md`** (managed: the `appId` in `wix.config.json`; self-managed: the OAuth app you created) — this file just *uses* it.
8
+
9
+ **Two sub-shapes, split on build — a framework fact, not a hosting fact:** **bundler SPA** (has a build step → `npm install` + `import`) vs **static HTML** (no build → load the SDK from a CDN). The caveats below split on that.
10
+
11
+ **How to use it.** Before authenticating or wiring data, read the pinned pages top-to-bottom — read-then-act, never invent a URL or a body from memory.
12
+
13
+ **URL form & how to read it.** Each link is the **`.md` twin** of a docs article. A page pinned here is **already curated — read it directly; don't re-discover it with search.** The two read paths take **different URL forms** — don't mix them:
14
+
15
+ - **`curl` the link — first priority. Fetch it as-is (keep the `.md`)** for raw markdown.
16
+ - **MCP doc tools — second priority** (discovery of a page this file doesn't pin, or a fallback if a fetch fails). Pass the URL *without* the `.md` suffix — `ReadFullDocsArticle` for the article pages here, `SearchWixSDKDocumentation` to reach SDK methods this file doesn't pin.
17
+ - **No MCP, or a shape not pinned anywhere → doc discovery** (`DOC_DISCOVERY.md`): a `curl` semantic search (`document_type: SDK`/`WIX_HEADLESS`) plus structured schema lookup, then read the hit's `.md?apiView=SDK`.
18
+
19
+ ---
20
+
21
+ ## 1 — Authenticate (the heart — manual client, identical in both flows)
22
+
23
+ | Page | What it settles |
24
+ |---|---|
25
+ | <https://dev.wix.com/docs/go-headless/self-managed-headless/authentication/oauth/create-a-client-for-authentication-with-oauth.md> | **The model.** Install `@wix/sdk` + the domain packages, then `createClient({ modules, auth: OAuthStrategy({ clientId }) })`. clientId only, **no secret in the frontend**. Explicitly scoped to "frameworks other than Astro." Create the client **once** and reuse it. |
26
+ | <https://dev.wix.com/docs/sdk/core-modules/sdk/oauth-strategy.md> | **`OAuthStrategy` reference** — visitor sessions (automatic) vs member flows (managed/custom/external); token + session methods; confirms `clientId` only. |
27
+ | <https://dev.wix.com/docs/go-headless/self-managed-headless/authentication/visitors/handle-visitors-using-the-js-sdk.md> | **Visitors & members via the JS SDK** — visitor token sessions out of the box, and member login when the site needs it. Members are **first-class** on the non-Astro path (not deferred). |
28
+ | <https://dev.wix.com/docs/go-headless/self-managed-headless/authentication/members/wix-login-page/wix-managed-login-using-the-js-sdk.md> | **Member login (Wix login page)** — the manual `OAuthStrategy` handshake: `generateOAuthData → getAuthUrl → parseFromUrl → getMemberTokens → setTokens`, `logout`, `loggedIn()`. Login *is* sign-up (the Wix page logs in or registers); member tokens are the **same shape** as visitor tokens (`role: member`), so they reuse the visitor session machinery — login just swaps the token set. **`clientId` only (no secret); the connected site must be PUBLISHED and the `redirectUri` must be an exact-match allow-listed URI, or `getAuthUrl` fails; default to the Wix login page** over custom/external. **Full frontend contract → Read `inline-recipes/how-to-code-members-non-astro.md`** (local — Read it, don't curl). **Only if the brief explicitly asks for a custom/branded login form or custom sign-up fields → Read `inline-recipes/how-to-code-members-custom-login.md`** instead (`client.auth.register`/`login`; works on any project type — pick by intent, not project type). |
29
+ | <https://dev.wix.com/docs/sdk/articles/set-up-a-client/about-the-wix-client.md> | **Confirms non-Astro *does* need a client** — the "when you need a client vs not" list; non-Astro (managed or self-managed) is on the "needs a client" side, the mirror of Astro. |
30
+
31
+ > **clientId source is deferred.** This file uses the `clientId`; it does **not** say where it comes from. That's `{managed,self-managed}/AUTHENTICATION.md` — managed reads `appId` from `wix.config.json`; self-managed uses the OAuth app you created. Don't re-mint or re-fetch it if the flow already provides it.
32
+
33
+ ## 2 — Frontend data access (identical in both flows)
34
+
35
+ All reads and writes go through the client from §1 — the SDK call shapes are framework-identical (the model adapts the idiom: React effect / Vue `onMounted` / Svelte store). For **which packages** a capability needs and the **SDK module docs** for each call shape, use `SDK_HANDOFF.md` §3 (the package map) — don't restate it here. For **what was seeded** and the IDs to bind, cross-link `SEED.md`; the frontend reads it with the visitor client.
36
+
37
+ | Page | What it settles |
38
+ |---|---|
39
+ | <https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/install-sdk-packages.md> | Installing `@wix/sdk` + domain packages and their current versions (bundler path). |
40
+
41
+ ## 3 — Build the frontend (framework fact, not hosting)
42
+
43
+ - **Bundler SPA** — produce the build output with the project's own `npm run build`.
44
+ - **Static HTML** — there is **no build**; the HTML *is* the deployable artifact.
45
+
46
+ This file **stops at "produce the build output."** *Where that output is deployed and how* — `outputDirectory`, publish, origin registration, the `index.html`-at-root rule — is host-specific and lives in `{managed,self-managed}/DEPLOYMENT.md`, not here.
47
+
48
+ ## 4 — Caveats (framework-invariant only)
49
+
50
+ These hold regardless of who hosts. Host-specific gotchas (static `outputDirectory`, the `index.html` rename) are filed in `managed/DEPLOYMENT.md`, where you're in a known mode. (Numbering: N2/N3 were retired; the gap is intentional and the remaining IDs are kept stable so inbound references don't shift.)
51
+
52
+ | Caveat | What it says |
53
+ |---|---|
54
+ | **N1 — No Wix scaffolder for a new non-Astro site** | There is **no** Wix command to scaffold a fresh React/Vue/static site — the non-Astro flow is connect-only. To *create* from scratch, the model runs the framework's **own** `npm create …` (e.g. `npm create vite@latest`), then the flow connects it. **Never infer a framework the user didn't name.** |
55
+ | **N4 — No-bundler sites load the SDK from a CDN** | With **no bundler** (static HTML), import the SDK in a `<script type="module">` from `https://esm.sh/@wix/sdk@1` (plus the domain packages the same way) — there's no `npm install` step to bundle it. With a bundler, use normal `npm install` + `import`. |
56
+ | **N5 — Client-only ⇒ no elevation ⇒ public-read** | A pure SPA/static frontend runs with a **visitor** token and **no server**, so there is no `auth.elevate`. CMS collections it reads must be **public-read**; anything member-scoped needs member auth. True regardless of who hosts. (Contrast Astro, which can elevate in a backend `/api` endpoint.) |
57
+ | **N6 — `clientId` is public; inline it** | The OAuth `clientId` is public, not a secret — it's fine to inline it directly in client code/bundle; there's no runtime secret to protect and no env-var indirection required. (Where the value comes from is still the flow's `AUTHENTICATION.md`.) |
58
+ | **N7 — Resolve `wix:image://` URIs with the SDK, never by hand** | SDK media fields (product/blog/CMS images) come back as internal identifiers like `wix:image://v1/<hash>/<file>#originWidth=…`, **not** ready URLs. Convert them with the SDK media module — `import { media } from '@wix/sdk'`, then `media.getScaledToFillImageUrl(uri, w, h, {})` (**returns the URL string directly — do NOT append `.url`; the 4th `options` arg is required, pass `{}`**), or `media.getImageUrl(uri).url` for the original (**that** one returns a `{ url }` object). The two shapes differ — mixing them (`getScaledToFillImageUrl(...).url`) resolves every image to `undefined`. Hand-building a `static.wixstatic.com/.../v1/fit/...` URL gets the format wrong and the image **403s** (or silently fails to load). Only `wix:image://` values need this — an already-absolute `https://` URL (e.g. an Unsplash placeholder) passes straight through. Docs: <https://dev.wix.com/docs/sdk/core-modules/sdk/media>. |
59
+ | **N8 — Member login is a manual `OAuthStrategy` round-trip on the same client** | Login (which *is* sign-up), logout and "am I a member?" run on the visitor client from §1 — don't build a second client. Drive the handshake yourself: `generateOAuthData → getAuthUrl → parseFromUrl → getMemberTokens → setTokens`, `logout`, `loggedIn()`; **persist and renew** member tokens exactly like visitor tokens (`renewToken`, re-hydrate with `setTokens` on boot). Preconditions that bite: **`clientId` only**, **site PUBLISHED**, **`redirectUri` allow-listed exact-match**, **default to the Wix login page**. Read the current member with **`@wix/members` `getCurrentMember`** (not the dev-preview `@wix/site-members`). **No `auth.elevate`** — a member reads their own data under the member token, and a serverless SPA has no elevation anyway (N5). Full contract: `inline-recipes/how-to-code-members-non-astro.md`. |
@@ -0,0 +1,22 @@
1
+ # Authentication — self-managed (TBD)
2
+
3
+ For a **self-managed** project (self-hosted, where the user manages their own hosting and credential supply), the authentication method is **not yet decided — TBD**.
4
+
5
+ When defined, this file must specify how `self-managed` obtains, for the rest of the (project-type-agnostic) flow:
6
+
7
+ - **`$TOKEN`** — a bearer token authorized for the metasite (used as `Authorization: Bearer $TOKEN`).
8
+ - **`$SITE_ID`** — the metasite id (used as the `wix-site-id` header on every site-scoped call).
9
+ - **`clientId`** — the OAuth app's public client id for the frontend's `OAuthStrategy` (the OAuth **app id and client id are the same value** — app-id === client-id).
10
+
11
+ It then ends at the same universal REST call shape every type uses:
12
+
13
+ ```bash
14
+ curl -sS -w "\nHTTP_STATUS:%{http_code}" \
15
+ -X POST "https://www.wixapis.com/<endpoint>" \
16
+ -H "Authorization: Bearer $TOKEN" \
17
+ -H "wix-site-id: $SITE_ID" \
18
+ -H "Content-Type: application/json" \
19
+ -d '<body>'
20
+ ```
21
+
22
+ > **TBD.** Until the self-managed auth method is defined, a `self-managed` run can't obtain a token — **stop with a clear error** and tell the user this project type isn't wired yet.
@@ -0,0 +1,15 @@
1
+ # Deployment — self-managed (TBD)
2
+
3
+ For a **self-managed** project, the deploy/finalize steps are **not yet decided — TBD**.
4
+
5
+ Because hosting is the user's (not Wix's), this will likely mirror the self-hosted finalize pattern — **publish the metasite** and **register the deployed origin** on the OAuth app once the live URL is known (see `../stripe/DEPLOYMENT.md` for that shape) — but the exact mechanism, and how credentials/URL are supplied, are TBD.
6
+
7
+ > **TBD.** Until this is defined, tell the user that `self-managed` deployment isn't wired yet, and that the frontend's visitor calls will be rejected until its origin is registered on the OAuth app.
8
+
9
+ ## Before you sign off — feedback checkpoint
10
+
11
+ This is the last step of the run — the natural point to check `../FEEDBACK.md`. Don't wait for the
12
+ user to complain: run a quick self-check over the whole session — a confusing API response, a doc
13
+ that was wrong/missing, an extra retry, a workaround you had to invent, anything that cost more turns
14
+ than it should have. If anything qualifies, **offer** to relay it to Wix before you close out; send
15
+ only after an explicit yes.
@@ -0,0 +1,55 @@
1
+ # Authentication — stripe (Stripe Projects → Wix)
2
+
3
+ For a **stripe** project (self-hosted, provisioned via Stripe Projects), every Wix call is a plain `curl` against `wixapis.com` with a bearer token. The credentials come from the project's `.env` (synced by Stripe Projects when Wix was connected), and the token is minted directly from the OAuth client-credentials grant. This file is the authority for how `stripe` obtains `$TOKEN`, `$SITE_ID`, and the public `clientId`; the flow files defer here.
4
+
5
+ ## Inputs from `.env`
6
+
7
+ Stripe Projects namespaces each provider's vars, and Wix's own names already begin with `WIX_`, so a real provision yields a **doubled prefix**:
8
+
9
+ | Var | Role |
10
+ | ----------------------- | ------------------------------------------------------------------------------------------------- |
11
+ | `WIX_WIX_CLIENT_ID` | the OAuth app `client_id` — also the frontend `OAuthStrategy({ clientId })` |
12
+ | `WIX_WIX_CLIENT_SECRET` | the OAuth app `client_secret` — **server-side only**; mints the token, never goes to the frontend |
13
+ | `WIX_WIX_METASITE_ID` | the metasite id → the `wix-site-id` header on every site-scoped call |
14
+
15
+ The plain `WIX_*` names are accepted as a fallback (in case the provider definition changes). Read them at runtime. If `client_id`/`client_secret` are absent, Wix isn't connected in this project — **stop with a clear error**.
16
+
17
+ The public `clientId` for the frontend's `OAuthStrategy` is `WIX_WIX_CLIENT_ID` (not secret).
18
+
19
+ ## Minting the token — inline, secret stays out of context
20
+
21
+ Run this as a **single Bash call**. It sources `.env` *inside the shell*, so the command text references `$WIX_WIX_CLIENT_SECRET` but the secret value is never typed, printed, or returned. The minted token is written to a tmp file so later calls reuse it **without re-minting and without the token entering the model context**:
22
+
23
+ ```bash
24
+ set -a; . ./.env; set +a
25
+ curl -sS -X POST "https://www.wixapis.com/oauth2/token" \
26
+ -H "Content-Type: application/json" \
27
+ -d "{\"grant_type\":\"client_credentials\",\"client_id\":\"${WIX_WIX_CLIENT_ID:-$WIX_CLIENT_ID}\",\"client_secret\":\"${WIX_WIX_CLIENT_SECRET:-$WIX_CLIENT_SECRET}\"}" \
28
+ | python3 -c "import sys,json;print(json.load(sys.stdin)['access_token'])" > /tmp/wix_token \
29
+ && test -s /tmp/wix_token && echo "token minted" || echo "MINT FAILED — Wix not connected, or app/creds invalid"
30
+ ```
31
+
32
+ That endpoint returns `{ "access_token": "<…>", "token_type": "Bearer", "expires_in": 14400 }`. `instance_id` is **optional and omitted**. The token is a real OAuth token with a **4-hour expiry**.
33
+
34
+ > **Shell state does not persist between Bash calls** — that is *why* the token goes to `/tmp/wix_token`. Mint once at the start of the run; every later call reads it back. Each mint here returns a *different, equally valid* token; "mint once" is for simplicity, not because re-minting is pointless.
35
+
36
+ ## REST call shape
37
+
38
+ Every later call re-sources `.env` (for the non-secret metasite id) and reads the token from the tmp file — both cheap, both keep secrets out of context:
39
+
40
+ ```bash
41
+ set -a; . ./.env; set +a
42
+ TOKEN=$(cat /tmp/wix_token)
43
+ SITE_ID="${WIX_WIX_METASITE_ID:-$WIX_METASITE_ID}"
44
+ curl -sS -w "\nHTTP_STATUS:%{http_code}" \
45
+ -X POST "https://www.wixapis.com/<endpoint>" \
46
+ -H "Authorization: Bearer $TOKEN" \
47
+ -H "wix-site-id: $SITE_ID" \
48
+ -H "Content-Type: application/json" \
49
+ -d '<body>'
50
+ ```
51
+
52
+ - **`Authorization: Bearer $TOKEN`** — the `Bearer` prefix is required.
53
+ - **`wix-site-id: $SITE_ID`** — required by every site-scoped family (Stores v3, CMS v2, Blog v3, Forms v4, Apps-Installer v1, …). Harmless where unread; include it always.
54
+ - **`Content-Type: application/json`** — on every POST/PATCH body.
55
+ - **Parsing the response:** `-w` appends a `HTTP_STATUS:<code>` line *after* the JSON body. `grep` that line for the status, but parse the **body separately** — piping the combined output to a JSON parser (`python3 -m json.tool`, `json.load`, `jq`) chokes on the trailing status line (`Extra data: line 2 …`). Capture the body to a file with `-o body.json` (status still comes from `-w`), or drop the last line, before parsing.
@@ -0,0 +1,71 @@
1
+ # Deployment — stripe (self-hosted; publish + register origin)
2
+
3
+ For a **stripe** project, hosting is the user's, so two one-time backend actions finalize the live site. Both use the token from this folder's `AUTHENTICATION.md`; run them once the deployed site is up.
4
+
5
+ ## 1 · Publish the Wix site
6
+
7
+ **Always publish the metasite after deploying.** Some Wix-served flows the frontend relies on (redirects to Wix-hosted pages and other features served from the published site) only work once the site has been published. Just publish every time, so a flow that needs it never silently fails. The call is idempotent and takes **no body**:
8
+
9
+ ```bash
10
+ set -a; . ./.env; set +a
11
+ TOKEN=$(cat /tmp/wix_token); SITE_ID="${WIX_WIX_METASITE_ID:-$WIX_METASITE_ID}"
12
+ curl -sS -w "\nHTTP_STATUS:%{http_code}" \
13
+ -X POST "https://www.wixapis.com/site-publisher/v1/site/publish" \
14
+ -H "Authorization: Bearer $TOKEN" -H "wix-site-id: $SITE_ID" \
15
+ -H "Content-Type: application/json" -d '{}'
16
+ # 200 with an empty body `{}` means published — that 200 is the only success signal (no URL is returned).
17
+ ```
18
+
19
+ ## 2 · Register the deployed origin on the OAuth app
20
+
21
+ For the frontend's visitor calls (`OAuthStrategy` with the public `clientId`) to be **accepted from the deployed site**, the site's origin must be on the OAuth app's allowed domains. Otherwise every browser SDK call from the live URL is rejected.
22
+
23
+ We don't own the hosting, so the deployed URL is unknown until the site is deployed — this is a **post-deploy step performed once the URL is known** (it can't be done during Setup/Seed). The OAuth app's id **is the `clientId`** — `WIX_WIX_CLIENT_ID`.
24
+
25
+ ### Idempotent — register a given URL only once
26
+
27
+ First **read** the app's current allowed domains; if the deployed origin is already present, the registration is already done — **skip it**. Only ever add a URL that isn't there yet.
28
+
29
+ ```bash
30
+ set -a; . ./.env; set +a
31
+ TOKEN=$(cat /tmp/wix_token); ID="${WIX_WIX_CLIENT_ID:-$WIX_CLIENT_ID}"
32
+ curl -sS -w "\nHTTP_STATUS:%{http_code}" \
33
+ "https://www.wixapis.com/oauth-app/v1/oauth-apps/$ID" \
34
+ -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
35
+ # → read oAuthApp.allowedRedirectDomains; if the deployed origin is already in it, you're done.
36
+ ```
37
+
38
+ ### Add the deployed origin
39
+
40
+ `PATCH` the app, sending the **existing** `allowedRedirectDomains` **plus** the new origin (the API replaces the field, so include what's already there), with a field mask:
41
+
42
+ ```bash
43
+ set -a; . ./.env; set +a
44
+ TOKEN=$(cat /tmp/wix_token); ID="${WIX_WIX_CLIENT_ID:-$WIX_CLIENT_ID}"
45
+ curl -sS -w "\nHTTP_STATUS:%{http_code}" -X PATCH \
46
+ "https://www.wixapis.com/oauth-app/v1/oauth-apps/$ID" \
47
+ -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
48
+ -d '{
49
+ "oAuthApp": { "id": "'"$ID"'", "allowedRedirectDomains": [ <existing…>, "<deployed-origin>" ] },
50
+ "mask": { "paths": ["allowedRedirectDomains"] }
51
+ }'
52
+ ```
53
+
54
+ - `<deployed-origin>` is the live site's domain/URL (what the browser SDK runs on).
55
+ - For the **exact field semantics and format** (domain vs. full URL, member-login redirect URIs vs. allowed domains), read the doc — don't guess: <https://dev.wix.com/docs/api-reference/business-management/headless/oauth-apps/update-oauth-app.md>. Member-login redirect URIs are a **separate field** (`allowedRedirectUris`) from the origin (`allowedRedirectDomains`): the visitor SDK only needs the origin allowed, but **if this deploy has member login via the Wix login page, the member-login callback must also be registered** in `allowedRedirectUris` — same masked-`PATCH` shape as the origin (add both under one `mask.paths`), and required or login 4xxs. Mechanics + the "not read-only" gotcha: `../managed/DEPLOYMENT.md` → "Member login on a non-Astro frontend". (Custom login — `../inline-recipes/how-to-code-members-custom-login.md` — needs neither, as it has no login-page redirect.)
56
+
57
+ > **If the live site's visitor token call still 400s after the origin is registered, suspect the bundle — not CORS.** An unregistered origin and an `undefined` `clientId` in the build produce the same browser-side 400. Before chasing CORS/propagation, confirm the real `clientId` value is actually inlined in the deployed bundle (see `../SDK_HANDOFF.md` §2).
58
+
59
+ ## If deployment is NOT part of this agent flow
60
+
61
+ If the agent isn't the one deploying — the user will deploy the site themselves — the skill **cannot know the deployed URL**, so it cannot register the origin. (It can still publish the site — step 1 doesn't need the URL.) **Flag the origin step to the user clearly**, e.g.:
62
+
63
+ > *"One required step remains before the frontend can talk to Wix: once your site is live, its URL must be registered on the Wix OAuth app (allowed domains). Give me the deployed URL — or re-run this skill with it — and I'll register it. Until then, Wix SDK calls from the live site will be rejected."*
64
+
65
+ ## Before you sign off — feedback checkpoint
66
+
67
+ This is the last step of the run — the natural point to check `../FEEDBACK.md`. Don't wait for the
68
+ user to complain: run a quick self-check over the whole session (not just this final step) — a
69
+ confusing API response, a doc that was wrong/missing, an extra retry, a workaround you had to invent,
70
+ anything that cost more turns than it should have. If anything qualifies, **offer** to relay it to Wix
71
+ before you close out; send only after an explicit yes.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wix-manage
3
- description: "Wix business solution management recipes — REST API operations for configuring and managing Wix business solutions. Routes to: stores, bookings, get-paid, CMS, contacts, forms, media, app-installation, pricing-plans, restaurants, rich-content, sites, blog, calendar, domains, site-properties, ecommerce."
3
+ description: "Wix business solution management recipes — REST API operations for configuring and managing Wix business solutions. Routes to: stores, bookings, get-paid, CMS, contacts, forms, media, app-installation, pricing-plans, restaurants, rich-content, sites, blog, calendar, domains, site-properties, ecommerce, marketing, analytics."
4
4
  compatibility: Requires Wix REST API access (API key or OAuth).
5
5
  ---
6
6
 
@@ -31,6 +31,13 @@ These recipes do NOT cover frontend development or SDK usage for displaying data
31
31
 
32
32
  ---
33
33
 
34
+ ## Analytics
35
+
36
+ ### [Query Site Analytics](references/analytics/query-site-analytics.md)
37
+ **Technical:** Reads a site's analytics through the Semantic Model API. Covers listing semantic models, inspecting a model's schema (measures, dimensions, parameters), and querying data with a required time interval, filters, sorting, paging, and human-readable formatting. Key endpoints: /analytics/semantic-model/v3/semantic-models, /semantic-models/{id}, /semantic-models/query-data.
38
+
39
+ ---
40
+
34
41
  ## Blog
35
42
 
36
43
  ### [How to Create Blog Posts](references/blog/how-to-create-blog-posts.md)
@@ -53,7 +60,7 @@ These recipes do NOT cover frontend development or SDK usage for displaying data
53
60
  **Technical:** Full CRUD operations for Wix Bookings services using Services API. Covers service types (APPOINTMENT, CLASS, COURSE), pricing configuration, location setup, and schedule management.
54
61
 
55
62
  ### [Create Booking Service from Prompt](references/bookings/create-booking-service-from-prompt.md)
56
- **Technical:** Use when the user wants to create a booking service — e.g. "create a yoga class for $50", "set up consultations", "add a personal training appointment". Routes to the correct type-specific recipe (APPOINTMENT, CLASS, or COURSE), gathers business context, applies defaults, and creates the service.
63
+ **Technical:** Use when the user wants to create a booking service — e.g. "create a yoga class for $50", "set up consultations", "add a personal training appointment", "create a hidden free test course with 8 sessions". Routes to the correct type-specific recipe (APPOINTMENT, CLASS, or COURSE), gathers business context, applies defaults, and creates the service. For COURSE services with session dates/counts, the course is not bookable until separate Calendar Events are created on the returned service schedule.
57
64
 
58
65
  ### [Create Appointment Service](references/bookings/create-appointment-service.md)
59
66
  **Technical:** Use when the user wants to create an appointment/consultation/1-on-1 service — e.g. "set up consultations for $75", "create a meeting service". Handles staff assignment, session duration, and pricing via bulkCreateServices API.
@@ -62,7 +69,10 @@ These recipes do NOT cover frontend development or SDK usage for displaying data
62
69
  **Technical:** Use when the user wants to create a group class — e.g. "create a yoga class for $50", "set up a pilates class". Handles group capacity, recurring sessions, and pricing via bulkCreateServices API.
63
70
 
64
71
  ### [Create Course Service](references/bookings/create-course-service.md)
65
- **Technical:** Use when the user wants to create a multi-session course — e.g. "create a 6-week workshop", "set up a training program for $300". Handles group capacity, full-course pricing, and fixed series via bulkCreateServices API.
72
+ **Technical:** Use when the user wants to create a multi-session COURSE — e.g. "create a 6-week workshop", "set up a training program for $300", "create a hidden free test course with 8 online sessions". Handles group capacity, full-course pricing, `bulkCreateServices`, then creates bookable course session events with Calendar `bulkCreateEvents` using the returned `service.schedule.id`. Never put session dates under `course.sessions` in the Services V2 payload.
73
+
74
+ ### [Check Bookings Availability (and Diagnose Issues)](references/bookings/diagnose-availability-issues.md)
75
+ **Technical:** Use when someone asks whether an appointment-based service has bookable availability, or why it shows no times / "customers can't book". Reports the current availability status first (via ListAvailabilityTimeSlots); diagnoses the cause only when there's no availability or the owner asks why — ruling out service-level blockers (hidden / online booking off), then running DiagnoseAvailability (`POST /v2/time-slots/diagnose`) for ordered reason codes, with a policy/capacity fallback.
66
76
 
67
77
  ### [End-to-End Booking Flow](references/bookings/end-to-end-booking-flow.md)
68
78
  **Technical:** Complete booking flow from service discovery to payment. Query services, check availability with Time Slots V2, create bookings, and process payment via eCommerce checkout.
@@ -184,6 +194,16 @@ These recipes do NOT cover frontend development or SDK usage for displaying data
184
194
 
185
195
  ---
186
196
 
197
+ ## Marketing
198
+
199
+ ### [Create and Publish a Social Media Post (with AI generation)](references/marketing/create-and-publish-social-post.md)
200
+ **Technical:** Creates and publishes (or schedules) a social media post to a connected channel (Instagram, Facebook, LinkedIn, TikTok, Pinterest, YouTube, Google Business Profile) via the Publisher API. Optionally generates the whole post from a free-text idea or the site's own assets (products, blog posts, events, bookings, coupons, categories), generates caption/title suggestions, and edits an existing image with AI. Verifies the channel is connected (and runs the OAuth connect flow if not), checks premium publishing quota, creates a draft item, then publishes it immediately or schedules it for a future date. Use when the user wants to create, generate, write, post, or schedule a social post, wants caption ideas or suggestions, or wants to connect a social channel (e.g. "post this to Instagram", "make a post from my product", "write a caption", "give me caption ideas", "connect my Pinterest", "schedule a post").
201
+
202
+ ### [Generate a Marketing Plan and Schedule Its Posts](references/marketing/generate-and-publish-marketing-plan.md)
203
+ **Technical:** Generates a site's AI social media marketing plan (a calendar of marketing activities, each with per-channel post drafts) via the Marketing Plan API, then schedules the drafts for publishing. Covers optional marketing settings (goal, channels, tone, frequency, content pillars), asynchronous generation with polling, and generating posts for additional activities. Use for "generate a marketing plan", "create a social media plan/calendar", or "schedule my plan's posts".
204
+
205
+ ---
206
+
187
207
  ## Media
188
208
 
189
209
  ### [Upload Media to Wix](references/media/upload-media-to-wix.md)
@@ -213,6 +233,9 @@ These recipes do NOT cover frontend development or SDK usage for displaying data
213
233
  ### [Ricos Converter Service](references/rich-content/ricos-converter-service.md)
214
234
  **Technical:** Validates and converts content between Ricos documents and HTML/Markdown/plain text using the Ricos Documents API. Covers plugin configuration, format conversion in both directions, and document validation.
215
235
 
236
+ ### [Author Ricos Rich Content](references/rich-content/author-ricos-rich-content.md)
237
+ **Technical:** Hand-authoring valid Ricos rich-content JSON (the richContent/nodes tree) reused across Blog, Stores, Events, and CMS. Covers every common node shape — paragraphs, headings, lists, blockquotes, dividers, tables with cell fills, code blocks, images — plus inline text decorations and the nesting rules the format enforces.
238
+
216
239
  ---
217
240
 
218
241
  ## Site Properties
@@ -230,6 +253,9 @@ These recipes do NOT cover frontend development or SDK usage for displaying data
230
253
  ### [Query Sites](references/sites/query-sites.md)
231
254
  **Technical:** Lists and queries all sites associated with a Wix account using Sites API. Covers pagination with cursor-based navigation.
232
255
 
256
+ ### [Site Import](references/sites/site-import.md)
257
+ **Technical:** Drives the autonomous Wix Site Import agent over REST (`/site-import/v1/imports`) to migrate a store/site from another platform (Shopify, WooCommerce, Magento, or any URL) into Wix. Covers Start/Poll/Reply/Cancel, relaying agent questions and progress in plain language, handling `DEPLOYED`/`FAILED`/`AUTH_EXPIRED`/`SESSION_EXPIRED` states, and post-deploy follow-up changes. Use when the user wants to import, migrate, or clone an existing store/site into Wix.
258
+
233
259
  ---
234
260
 
235
261
  ## Stores