@wix/agent-skills 1.6.0 → 1.7.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 (154) hide show
  1. package/README.md +2 -2
  2. package/package.json +1 -1
  3. package/skills/wix-app/SKILL.md +49 -42
  4. package/skills/wix-app/references/BACKEND_EVENT.md +10 -65
  5. package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +101 -406
  6. package/skills/wix-app/references/DASHBOARD_MENU_PLUGIN.md +14 -111
  7. package/skills/wix-app/references/DASHBOARD_MODAL.md +56 -205
  8. package/skills/wix-app/references/DASHBOARD_PAGE.md +19 -98
  9. package/skills/wix-app/references/DASHBOARD_PLUGIN.md +6 -108
  10. package/skills/wix-app/references/DATA_COLLECTION.md +113 -198
  11. package/skills/wix-app/references/EMBEDDED_SCRIPT.md +41 -268
  12. package/skills/wix-app/references/EXTENSION_REGISTRATION.md +27 -76
  13. package/skills/wix-app/references/SERVICE_PLUGIN.md +35 -188
  14. package/skills/wix-app/references/SITE_PLUGIN.md +8 -92
  15. package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +0 -44
  16. package/skills/wix-app/references/custom-element-widget/SETTINGS_PANEL.md +19 -330
  17. package/skills/wix-app/references/dashboard-menu-plugin/bookings-slots.md +0 -12
  18. package/skills/wix-app/references/dashboard-menu-plugin/ecommerce-slots.md +7 -0
  19. package/skills/wix-app/references/dashboard-menu-plugin/restaurants-slots.md +0 -12
  20. package/skills/wix-app/references/dashboard-plugin/SLOTS.md +3 -15
  21. package/skills/wix-app/references/service-plugin/ADDITIONAL-FEES.md +2 -18
  22. package/skills/wix-app/references/service-plugin/BOOKINGS-STAFF-SORTING.md +2 -42
  23. package/skills/wix-app/references/service-plugin/DISCOUNT-TRIGGERS.md +1 -11
  24. package/skills/wix-app/references/service-plugin/GIFT-CARDS.md +1 -11
  25. package/skills/wix-app/references/service-plugin/PAYMENT-SETTINGS.md +2 -40
  26. package/skills/wix-app/references/service-plugin/SHIPPING-RATES.md +2 -19
  27. package/skills/wix-app/references/service-plugin/VALIDATIONS.md +2 -18
  28. package/skills/wix-app/references/site-plugin/SLOTS.md +17 -68
  29. package/skills/wix-headless/SKILL.md +111 -389
  30. package/skills/wix-headless/references/BUILD.md +307 -0
  31. package/skills/wix-headless/references/DESIGN_SYSTEM.md +115 -0
  32. package/skills/wix-headless/references/DISCOVERY.md +237 -112
  33. package/skills/wix-headless/references/PLAN.md +82 -0
  34. package/skills/wix-headless/references/SEED.md +205 -0
  35. package/skills/wix-headless/references/SETUP.md +140 -134
  36. package/skills/wix-headless/references/astro/COMPOSE.md +142 -0
  37. package/skills/wix-headless/references/{blog → astro/blog}/BLOG_PAGES.md +1 -1
  38. package/skills/wix-headless/references/{blog → astro/blog}/BLOG_SETUP.md +2 -2
  39. package/skills/wix-headless/references/astro/cms/CMS_FOUNDATIONS.md +214 -0
  40. package/skills/wix-headless/references/{cms → astro/cms}/FAQ_KNOWLEDGE_BASE.md +6 -4
  41. package/skills/wix-headless/references/{cms → astro/cms}/PORTFOLIO.md +5 -5
  42. package/skills/wix-headless/references/{cms → astro/cms}/RESOURCE_LIBRARY.md +5 -5
  43. package/skills/wix-headless/references/{cms → astro/cms}/TEAM_DIRECTORY.md +5 -5
  44. package/skills/wix-headless/references/astro/designer/INSTRUCTIONS.md +331 -0
  45. package/skills/wix-headless/references/{ecom → astro/ecom}/CART_PAGES.md +1 -1
  46. package/skills/wix-headless/references/{ecom → astro/ecom}/CART_WIRING.md +1 -1
  47. package/skills/wix-headless/references/{ecom → astro/ecom}/COMPONENTS_CSS.md +3 -3
  48. package/skills/wix-headless/references/{forms → astro/forms}/CONTACT_FORM.md +13 -13
  49. package/skills/wix-headless/references/{gift-cards → astro/gift-cards}/COMPONENTS.md +1 -1
  50. package/skills/wix-headless/references/{gift-cards → astro/gift-cards}/PAGES.md +1 -1
  51. package/skills/wix-headless/references/{stores → astro/stores}/BACK_IN_STOCK.md +1 -1
  52. package/skills/wix-headless/references/{stores → astro/stores}/CATEGORY_PAGES.md +12 -13
  53. package/skills/wix-headless/references/{stores → astro/stores}/COMPONENTS_CSS.md +4 -4
  54. package/skills/wix-headless/references/{stores → astro/stores}/HOME_AND_NAV.md +11 -9
  55. package/skills/wix-headless/references/{stores → astro/stores}/PRODUCT_PAGES.md +5 -3
  56. package/skills/wix-headless/references/{stores → astro/stores}/SHARED_WIRING.md +3 -3
  57. package/skills/wix-headless/references/astro/templates/Footer.astro +27 -0
  58. package/skills/wix-headless/references/astro/templates/Layout.astro +132 -0
  59. package/skills/wix-headless/references/astro/templates/Navigation.astro +38 -0
  60. package/skills/wix-headless/references/astro/templates/astro.config.mjs +41 -0
  61. package/skills/wix-headless/references/astro/templates/ecom/components-ecom.css +302 -0
  62. package/skills/wix-headless/references/astro/templates/global.css +286 -0
  63. package/skills/wix-headless/references/astro/templates/index.astro +56 -0
  64. package/skills/wix-headless/{templates → references/astro/templates}/stores/back-in-stock.ts +1 -1
  65. package/skills/wix-headless/{templates → references/astro/templates}/stores/components-stores.css +138 -33
  66. package/skills/wix-headless/references/blog/BLOG_CONTENT.md +10 -11
  67. package/skills/wix-headless/references/blog/INSTRUCTIONS.md +5 -5
  68. package/skills/wix-headless/references/cms/CMS_FOUNDATIONS.md +31 -230
  69. package/skills/wix-headless/references/cms/INSTRUCTIONS.md +13 -8
  70. package/skills/wix-headless/references/custom/INSTRUCTIONS.md +38 -0
  71. package/skills/wix-headless/references/ecom/INSTRUCTIONS.md +10 -10
  72. package/skills/wix-headless/references/forms/INSTRUCTIONS.md +5 -5
  73. package/skills/wix-headless/references/gift-cards/INSTRUCTIONS.md +11 -11
  74. package/skills/wix-headless/references/images/INSTRUCTIONS.md +47 -50
  75. package/skills/wix-headless/references/seed-recipes.md +49 -0
  76. package/skills/wix-headless/references/shared/AUTHENTICATION.md +110 -0
  77. package/skills/wix-headless/references/shared/BUILD_NOISE.md +2 -2
  78. package/skills/wix-headless/references/shared/DOCS_SEARCH.md +41 -0
  79. package/skills/wix-headless/references/shared/IMAGE_GENERATION.md +17 -17
  80. package/skills/wix-headless/references/shared/IMPLEMENTER.md +20 -29
  81. package/skills/wix-headless/references/shared/PRODUCTION_SHARP_EDGES.md +1 -1
  82. package/skills/wix-headless/references/shared/RETURN_CONTRACT.md +25 -16
  83. package/skills/wix-headless/references/shared/STYLING.md +47 -10
  84. package/skills/wix-headless/references/stores/INSTRUCTIONS.md +25 -25
  85. package/skills/wix-headless/references/stores/PRODUCT_CATALOG_DATA.md +17 -17
  86. package/skills/wix-headless/references/verticals/_schema.json +31 -117
  87. package/skills/wix-headless/references/verticals/_schema.md +60 -150
  88. package/skills/wix-headless/references/verticals/blog.md +5 -99
  89. package/skills/wix-headless/references/verticals/cms.md +9 -100
  90. package/skills/wix-headless/references/verticals/ecom.md +5 -76
  91. package/skills/wix-headless/references/verticals/forms.md +5 -85
  92. package/skills/wix-headless/references/verticals/gift-cards.md +6 -103
  93. package/skills/wix-headless/references/verticals/stores.md +10 -144
  94. package/skills/wix-headless/scripts/check-manifest.mjs +5 -5
  95. package/skills/wix-headless/scripts/emit-design-tokens.mjs +29 -23
  96. package/skills/wix-headless/scripts/init-site-json.mjs +59 -21
  97. package/skills/wix-headless/scripts/patch-decorative-slots.mjs +67 -43
  98. package/skills/wix-headless/scripts/plan-entity-image-waves.mjs +3 -3
  99. package/skills/wix-headless/scripts/preview.sh +3 -3
  100. package/skills/wix-headless/scripts/release.sh +4 -4
  101. package/skills/wix-headless/scripts/scaffold.sh +75 -20
  102. package/skills/wix-headless/scripts/seed-utilities.sh +50 -12
  103. package/skills/wix-manage/SKILL.md +4 -8
  104. package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +2 -0
  105. package/skills/wix-manage/references/cms/cms-data-items-crud.md +4 -0
  106. package/skills/wix-manage/references/cms/cms-references-and-relationships.md +2 -0
  107. package/skills/wix-manage/references/cms/cms-schema-management.md +4 -0
  108. package/skills/wix-manage/references/ecommerce/api-shipping.md +443 -0
  109. package/skills/wix-manage/references/ecommerce/flow-add-free-shipping.md +5 -6
  110. package/skills/wix-manage/references/ecommerce/flow-fix-coverage-gaps.md +4 -5
  111. package/skills/wix-manage/references/ecommerce/flow-optimize-shipping-rates.md +4 -5
  112. package/skills/wix-manage/references/ecommerce/goal-increase-aov.md +1 -1
  113. package/skills/wix-manage/references/ecommerce/goal-reduce-cart-abandonment.md +1 -2
  114. package/skills/wix-manage/references/ecommerce/guardrail-shipping-health.md +2 -2
  115. package/skills/wix-manage/references/ecommerce/recipe-apply-shipping-recommendations.md +4 -5
  116. package/skills/wix-manage/references/ecommerce/recommend-ecommerce-strategy.md +7 -7
  117. package/skills/wix-manage/references/ecommerce/setup-discount-rules.md +209 -72
  118. package/skills/wix-manage/references/ecommerce/setup-store-pickup-location.md +9 -10
  119. package/skills/wix-manage/references/ecommerce/skill-graph.md +4 -4
  120. package/skills/wix-manage/references/forms/create-form.md +2 -0
  121. package/skills/wix-manage/references/stores/bulk-create-products-with-options.md +2 -0
  122. package/skills/wix-manage/references/stores/create-product-from-image.md +91 -38
  123. package/skills/wix-manage/references/stores/setup-online-store-catalog-v3.md +2 -0
  124. package/skills/wix-app/references/custom-element-widget/default-thumbnail.png +0 -0
  125. package/skills/wix-app/references/data-collection/extension-template.ts +0 -107
  126. package/skills/wix-headless/references/ORCHESTRATION.md +0 -269
  127. package/skills/wix-headless/references/commands/install-app.md +0 -42
  128. package/skills/wix-headless/references/commands/mcp-bootstrap.md +0 -28
  129. package/skills/wix-headless/references/designer/INSTRUCTIONS.md +0 -828
  130. package/skills/wix-headless/references/shared/MCP_PREFIX.md +0 -105
  131. package/skills/wix-headless/scripts/copy-utility-templates.mjs +0 -153
  132. package/skills/wix-headless/templates/ecom/components-ecom.css +0 -215
  133. package/skills/wix-manage/references/events/list-events.md +0 -203
  134. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/CartBadge.tsx +0 -0
  135. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/CartView.tsx +0 -0
  136. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/cart.astro +0 -0
  137. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/discounts.ts +0 -0
  138. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/thank-you.astro +0 -0
  139. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/GiftCardPurchase.tsx +0 -0
  140. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/_home-teaser-snippet.astro +0 -0
  141. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/_nav-snippet.astro +0 -0
  142. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/components-gift-cards.css +0 -0
  143. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/gift-cards.astro +0 -0
  144. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/gift-cards.ts +0 -0
  145. /package/skills/wix-headless/{templates → references/astro/templates}/stores/AddToCartButton.tsx +0 -0
  146. /package/skills/wix-headless/{templates → references/astro/templates}/stores/BackInStockForm.tsx +0 -0
  147. /package/skills/wix-headless/{templates → references/astro/templates}/stores/CategoryRail.astro +0 -0
  148. /package/skills/wix-headless/{templates → references/astro/templates}/stores/ProductCard.astro +0 -0
  149. /package/skills/wix-headless/{templates → references/astro/templates}/stores/ProductPurchase.tsx +0 -0
  150. /package/skills/wix-headless/{templates → references/astro/templates}/stores/SeoTags.astro +0 -0
  151. /package/skills/wix-headless/{templates → references/astro/templates}/stores/categories.ts +0 -0
  152. /package/skills/wix-headless/{templates → references/astro/templates}/stores/category/[slug].astro +0 -0
  153. /package/skills/wix-headless/{templates → references/astro/templates}/stores/products/[slug].astro +0 -0
  154. /package/skills/wix-headless/{templates → references/astro/templates}/stores/products/index.astro +0 -0
@@ -182,114 +182,219 @@ body[data-navigating="true"] .product-grid {
182
182
  }
183
183
 
184
184
 
185
+ /* =========================================================================
186
+ Rules below use direct CSS (var(--token)) only — no `@apply`.
187
+
188
+ Tailwind v4 `@apply` in a non-entrypoint CSS file only works for utilities
189
+ whose theme keys the designer's `@theme` block declares. Earlier revisions
190
+ of this template used `@apply font-heading text-bark/70 bg-parchment …`,
191
+ which assumed a different token vocabulary than current designer output
192
+ (`paper`/`ink`/`font-display` …) and built-failed on every run that loaded
193
+ it. Direct `var(--color-paper)` / `var(--spacing-sm)` calls work against
194
+ any designer-published token set as long as the core scales exist (they
195
+ always do). Use fallback chains (`var(--color-paper-warm, var(--color-cream))`)
196
+ when a token is sometimes-published.
197
+ ========================================================================= */
198
+
185
199
  /* --- Variant / option pills (ProductPurchase.tsx) --- */
186
200
  .option-group {
187
- @apply flex flex-col gap-sm mb-lg;
201
+ display: flex;
202
+ flex-direction: column;
203
+ gap: var(--spacing-sm);
204
+ margin-bottom: var(--spacing-lg);
188
205
  }
189
206
  .option-label {
190
- @apply font-heading text-sm uppercase tracking-wider text-bark/70;
207
+ font-family: var(--font-display);
208
+ font-size: 0.875rem;
209
+ text-transform: uppercase;
210
+ letter-spacing: 0.05em;
211
+ color: var(--color-ink-soft, var(--color-mute));
191
212
  }
192
213
  .option-choices {
193
- @apply flex flex-wrap gap-sm;
214
+ display: flex;
215
+ flex-wrap: wrap;
216
+ gap: var(--spacing-sm);
194
217
  }
195
218
  .option-pill {
196
- @apply px-md py-sm border border-bark bg-transparent text-bark font-body rounded-full cursor-pointer transition-colors;
219
+ padding: var(--spacing-sm) var(--spacing-md);
220
+ border: 1px solid var(--color-ink);
221
+ background: transparent;
222
+ color: var(--color-ink);
223
+ font-family: var(--font-body);
224
+ border-radius: 9999px;
225
+ cursor: pointer;
226
+ transition: background-color 150ms ease, color 150ms ease;
197
227
  }
198
228
  .option-pill.selected {
199
- @apply bg-bark text-cream;
229
+ background: var(--color-ink);
230
+ color: var(--color-paper);
200
231
  }
201
232
  .option-pill:disabled {
202
- @apply opacity-40 cursor-not-allowed;
233
+ opacity: 0.4;
234
+ cursor: not-allowed;
203
235
  }
204
236
 
205
237
  /* --- Quantity stepper (ProductPurchase.tsx, CartView.tsx qty editing) --- */
206
238
  .quantity-selector {
207
- @apply inline-flex items-center border border-bark rounded-md overflow-hidden;
239
+ display: inline-flex;
240
+ align-items: center;
241
+ border: 1px solid var(--color-ink);
242
+ border-radius: var(--radius-md);
243
+ overflow: hidden;
208
244
  }
209
245
  .quantity-btn {
210
- @apply px-3 py-2 bg-transparent border-none cursor-pointer text-bark font-body;
246
+ padding: 0.5rem 0.75rem;
247
+ background: transparent;
248
+ border: none;
249
+ cursor: pointer;
250
+ color: var(--color-ink);
251
+ font-family: var(--font-body);
211
252
  }
212
253
  .quantity-btn:disabled {
213
- @apply opacity-40 cursor-not-allowed;
254
+ opacity: 0.4;
255
+ cursor: not-allowed;
214
256
  }
215
257
  .quantity-value {
216
- @apply px-md py-sm tabular-nums;
258
+ padding: var(--spacing-sm) var(--spacing-md);
259
+ font-variant-numeric: tabular-nums;
217
260
  }
218
261
 
219
262
  /* --- Modifier free-text input (ProductPurchase.tsx, FREE_TEXT render type) --- */
220
263
  .modifier-text {
221
- @apply w-full px-sm py-sm font-body text-sm border border-rule rounded bg-parchment text-ink;
264
+ width: 100%;
265
+ padding: var(--spacing-sm);
266
+ font-family: var(--font-body);
267
+ font-size: 0.875rem;
268
+ border: 1px solid var(--color-rule);
269
+ border-radius: var(--radius-sm);
270
+ background: var(--color-paper-warm, var(--color-paper, var(--color-cream)));
271
+ color: var(--color-ink);
222
272
  resize: vertical;
223
273
  }
224
274
  .modifier-text:focus {
225
- @apply outline-none border-ink bg-cream;
275
+ outline: none;
276
+ border-color: var(--color-ink);
277
+ background: var(--color-paper, var(--color-cream));
226
278
  }
227
279
 
228
280
  /* --- Stock status (ProductPurchase.tsx) --- */
229
281
  .stock-status {
230
- @apply text-sm text-bark/70 italic;
282
+ font-size: 0.875rem;
283
+ color: var(--color-ink-soft, var(--color-mute));
284
+ font-style: italic;
231
285
  }
232
286
 
233
287
  /* --- Back-in-stock subscribe form (BackInStockForm.tsx) ---
234
288
  * Rendered inside .purchase-area in three OOS branches when
235
289
  * backInStockEnabled=true (probe in [slug].astro). */
236
290
  .back-in-stock-form {
237
- @apply flex flex-col gap-md mt-md p-lg border border-rule rounded;
238
- background-color: var(--color-cream);
291
+ display: flex;
292
+ flex-direction: column;
293
+ gap: var(--spacing-md);
294
+ margin-top: var(--spacing-md);
295
+ padding: var(--spacing-lg);
296
+ border: 1px solid var(--color-rule);
297
+ border-radius: var(--radius-md);
298
+ background: var(--color-paper, var(--color-cream));
239
299
  }
240
300
  .back-in-stock-headline {
241
- @apply flex flex-col gap-sm;
301
+ display: flex;
302
+ flex-direction: column;
303
+ gap: var(--spacing-sm);
242
304
  }
243
305
  .back-in-stock-eyebrow {
244
- @apply font-heading text-xs uppercase tracking-wider text-bark/70;
306
+ font-family: var(--font-display);
307
+ font-size: 0.75rem;
308
+ text-transform: uppercase;
309
+ letter-spacing: 0.05em;
310
+ color: var(--color-ink-soft, var(--color-mute));
245
311
  }
246
312
  .back-in-stock-lede {
247
- @apply font-body text-sm text-ink;
313
+ font-family: var(--font-body);
314
+ font-size: 0.875rem;
315
+ color: var(--color-ink);
248
316
  line-height: 1.5;
249
317
  }
250
318
  .back-in-stock-label {
251
- @apply font-heading text-xs uppercase tracking-wider text-bark/70;
319
+ font-family: var(--font-display);
320
+ font-size: 0.75rem;
321
+ text-transform: uppercase;
322
+ letter-spacing: 0.05em;
323
+ color: var(--color-ink-soft, var(--color-mute));
252
324
  }
253
325
  .back-in-stock-row {
254
- @apply flex flex-row flex-wrap gap-sm;
326
+ display: flex;
327
+ flex-direction: row;
328
+ flex-wrap: wrap;
329
+ gap: var(--spacing-sm);
255
330
  }
256
331
  .back-in-stock-input {
257
- @apply flex-1 px-md py-sm font-body text-sm border border-rule rounded bg-parchment text-ink;
332
+ flex: 1;
333
+ padding: var(--spacing-sm) var(--spacing-md);
334
+ font-family: var(--font-body);
335
+ font-size: 0.875rem;
336
+ border: 1px solid var(--color-rule);
337
+ border-radius: var(--radius-sm);
338
+ background: var(--color-paper-warm, var(--color-paper, var(--color-cream)));
339
+ color: var(--color-ink);
258
340
  min-width: 0;
259
341
  transition: border-color 0.15s ease;
260
342
  }
261
343
  .back-in-stock-input:focus {
262
- @apply outline-none border-ink;
344
+ outline: none;
345
+ border-color: var(--color-ink);
263
346
  }
264
347
  .back-in-stock-submit {
265
- @apply px-lg py-sm font-heading text-xs uppercase tracking-wider bg-bark text-cream rounded cursor-pointer transition-colors;
266
- border: 1px solid var(--color-bark);
348
+ padding: var(--spacing-sm) var(--spacing-lg);
349
+ font-family: var(--font-display);
350
+ font-size: 0.75rem;
351
+ text-transform: uppercase;
352
+ letter-spacing: 0.05em;
353
+ background: var(--color-ink);
354
+ color: var(--color-paper);
355
+ border: 1px solid var(--color-ink);
356
+ border-radius: var(--radius-sm);
357
+ cursor: pointer;
358
+ transition: background-color 150ms ease;
267
359
  }
268
360
  .back-in-stock-submit:hover:not(:disabled) {
269
- @apply bg-ink;
361
+ background: var(--color-ink-soft, var(--color-ink));
270
362
  }
271
363
  .back-in-stock-submit:disabled {
272
- @apply opacity-50 cursor-not-allowed;
364
+ opacity: 0.5;
365
+ cursor: not-allowed;
273
366
  }
274
367
  .back-in-stock-error {
275
- @apply font-body text-sm;
276
- color: var(--color-rust, var(--color-ink));
368
+ font-family: var(--font-body);
369
+ font-size: 0.875rem;
370
+ color: var(--color-error, var(--color-accent));
277
371
  }
278
372
  .back-in-stock-success {
279
- @apply mt-md p-lg border border-rule rounded;
280
- background-color: var(--color-cream);
373
+ margin-top: var(--spacing-md);
374
+ padding: var(--spacing-lg);
375
+ border: 1px solid var(--color-rule);
376
+ border-radius: var(--radius-md);
377
+ background: var(--color-paper, var(--color-cream));
281
378
  }
282
379
  .back-in-stock-success-headline {
283
- @apply font-heading text-base text-ink;
380
+ font-family: var(--font-display);
381
+ font-size: 1rem;
382
+ color: var(--color-ink);
284
383
  margin: 0 0 0.5rem 0;
285
384
  }
286
385
  .back-in-stock-success-detail {
287
- @apply font-body text-sm text-ink;
386
+ font-family: var(--font-body);
387
+ font-size: 0.875rem;
388
+ color: var(--color-ink);
288
389
  line-height: 1.55;
289
390
  margin: 0;
290
391
  }
291
392
  .stock-status.back-in-stock-alt {
292
- @apply mt-sm font-body text-sm italic text-bark/70;
393
+ margin-top: var(--spacing-sm);
394
+ font-family: var(--font-body);
395
+ font-size: 0.875rem;
396
+ font-style: italic;
397
+ color: var(--color-ink-soft, var(--color-mute));
293
398
  }
294
399
 
295
400
  /* Cart CSS (.cart-item-*, .qty-*) lives in components-ecom.css — not in this file. */
@@ -1,4 +1,4 @@
1
- # Recipe: Seed Initial Blog Posts via MCP
1
+ # Recipe: Seed Initial Blog Posts via REST
2
2
 
3
3
  Create 3 on-brand blog posts so the blog has real content on first preview.
4
4
 
@@ -8,24 +8,24 @@ Create 3 on-brand blog posts so the blog has real content on first preview.
8
8
  > 3. **Use `@wix/blog`, not `@wix/data`** — blog posts are NOT CMS collections.
9
9
  > 4. **`RICH_CONTENT` fieldset required** — without it, `post.richContent` is undefined and rendering fails.
10
10
 
11
- > **Required in the Seed phase.** When dispatched with `Scope: seed`, MCP tools and discovery context are guaranteed available. Always execute this section — do not skip. A blog with zero posts on first preview is a build failure.
11
+ > **Required in the Seed phase.** When dispatched with `Scope: seed`, the CLI-minted REST token and discovery context are guaranteed available. Always execute this section — do not skip. A blog with zero posts on first preview is a build failure.
12
12
  >
13
- > **Skip only for standalone invocations** where the Blog skill is invoked directly AND `mcp__wix-mcp-remote__CallWixSiteAPI` is genuinely unavailable. In that case, the user can create posts manually in the Wix dashboard.
13
+ > **Skip only for standalone invocations** where the Blog skill is invoked directly AND CLI token mint fails after recovery. In that case, the user can create posts manually in the Wix dashboard.
14
14
 
15
15
  ## Step 0: Ensure Blog App Is Installed
16
16
 
17
17
  Before querying blog data, verify the Blog app is installed:
18
18
 
19
- 1. **Probe** — `CallWixSiteAPI: POST /blog/v3/posts/query` with body `{ "query": { "paging": { "limit": 1 } } }`
19
+ 1. **Probe** — `REST: POST https://www.wixapis.com/blog/v3/posts/query`
20
20
  2. **If the API returns a "REQUIRED_APP_NOT_INSTALLED" error** → install the Wix Blog app:
21
21
  ```
22
- CallWixSiteAPI: POST https://www.wixapis.com/apps-installer-service/v1/app-instance/install
22
+ REST: POST https://www.wixapis.com/apps-installer-service/v1/app-instance/install
23
23
  body: {
24
24
  "tenant": { "tenantType": "SITE", "id": "<siteId>" },
25
25
  "appInstance": { "appDefId": "14bcded7-0066-7c35-14d7-466cb3f09103", "enabled": true }
26
26
  }
27
27
  ```
28
- > Translate this prose-HTTP form into the full `CallWixSiteAPI` tool-call shape — include `siteId`, `reason`, `sourceDocUrl` wrapper fields and pass `body` as a real object (NOT a stringified JSON). See `../../shared/MCP_PREFIX.md` § "CallWixSiteAPI call conventions".
28
+ > Translate this prose-HTTP form into the full `curl` tool-call shape — pass `body` as JSON in `-d` (NOT a stringified JSON). See `../shared/AUTHENTICATION.md` for the standard REST headers.
29
29
 
30
30
  Then retry the probe query to confirm installation succeeded.
31
31
  3. **If the probe succeeds** → proceed to Step 1.
@@ -37,7 +37,7 @@ Before querying blog data, verify the Blog app is installed:
37
37
  Blog posts require a `memberId` (the post author). Fetch the first site member:
38
38
 
39
39
  ```
40
- CallWixSiteAPI: GET /members/v1/members
40
+ REST: GET https://www.wixapis.com/members/v1/members
41
41
  ```
42
42
 
43
43
  Extract the first member's `_id` from the response. This will be used as the author for all posts.
@@ -70,7 +70,7 @@ For each post, call `POST /blog/v3/draft-posts` with `publish: true` to create a
70
70
  > Do not include the `media` field — cover images are handled separately by the image agent after post creation.
71
71
 
72
72
  ```
73
- CallWixSiteAPI: POST /blog/v3/draft-posts
73
+ REST: POST https://www.wixapis.com/blog/v3/draft-posts
74
74
  body: {
75
75
  "draftPost": {
76
76
  "title": "<Post Title>",
@@ -119,7 +119,7 @@ Use these node types to build rich, varied content:
119
119
  - TEXT nodes are always leaf nodes inside PARAGRAPH, HEADING, CODE_BLOCK, etc.
120
120
  - LIST_ITEM nodes contain PARAGRAPH nodes (not TEXT directly)
121
121
  - Mix at least 3 different node types per post for visual variety
122
- - Create all 3 posts in sequence (one `CallWixSiteAPI` call per post)
122
+ - Create all 3 posts in sequence (one `curl` call per post)
123
123
  - **Best practice:** include all fields (title, content, media) in the initial creation call to avoid needing a re-publish
124
124
 
125
125
  > **Re-publish after PATCH:** If you update a published post (e.g., adding a cover image via PATCH after creation), it becomes `hasUnpublishedChanges: true`. You must call `POST /blog/v3/draft-posts/{draftPostId}/publish` to re-publish. To avoid this, include media in the initial creation call.
@@ -129,7 +129,7 @@ Use these node types to build rich, varied content:
129
129
  Query published posts to confirm all 3 exist:
130
130
 
131
131
  ```
132
- CallWixSiteAPI: POST /blog/v3/posts/query
132
+ REST: POST https://www.wixapis.com/blog/v3/posts/query
133
133
  body: {
134
134
  "query": {
135
135
  "paging": { "limit": 10 }
@@ -149,4 +149,3 @@ Write a sidecar file at `.wix/logs/blog-data.md` (see `../../shared/LIFECYCLE_LO
149
149
  - Content: {n} posts published ({post titles})
150
150
  - Images: {generated (n/n attached) | skipped (user declined) | not attempted}
151
151
  ```
152
-
@@ -5,15 +5,15 @@ description: "Implements blog vertical via Wix Blog app — @wix/blog SDK, @wix/
5
5
 
6
6
  # Blog Implementer
7
7
 
8
- Extends `references/shared/IMPLEMENTER.md`. Read that file first for phase routing, MCP prefix, site.json read pattern, return contract, style conventions, and common failure modes.
8
+ Extends `references/shared/IMPLEMENTER.md`. Read that file first for phase routing, REST auth + doc lookups, prompt-inlined inputs (no site.json reads), return contract, style conventions, and common failure modes.
9
9
 
10
10
  ## Scope routing
11
11
 
12
12
  | Scope | Phase | Reference |
13
13
  |-------|-------|-----------|
14
- | `seed` | Seed (post seeding via MCP with Ricos content) | `./BLOG_CONTENT.md` |
15
- | `components` | Components (blog service module, RicosViewer, consts, astro.config sitemap) | `./BLOG_SETUP.md` |
16
- | `pages` | Pages (listing, detail, RSS, BlogPost layout, home contribution) | `./BLOG_PAGES.md` |
14
+ | `seed` | Seed (post seeding via REST with Ricos content) | `./BLOG_CONTENT.md` |
15
+ | `components` | Components (blog service module, RicosViewer, consts, astro.config sitemap) | `../astro/blog/BLOG_SETUP.md` |
16
+ | `pages` | Pages (listing, detail, RSS, BlogPost layout, home contribution) | `../astro/blog/BLOG_PAGES.md` |
17
17
 
18
18
  Cover images are generated by the shared image agent (`image-phase-2-entity` scope) AFTER `seed` completes — not by this agent.
19
19
 
@@ -29,4 +29,4 @@ See `<SKILL_ROOT>/references/verticals/blog.md` frontmatter.
29
29
  | `<article set:html={post.content} />` | `<RicosViewer client:only="react" content={post.richContent} />` — content is Ricos format |
30
30
  | Skip `wixMetadata` on `[...slug].astro` | Required for Wix page routing + SEO |
31
31
  | Query posts without `RICH_CONTENT` fieldset | Always request `RICH_CONTENT` or `post.richContent` is undefined |
32
- | Scoped `<style>` for RicosViewer overrides | `<style is:global>` — React islands don't inherit scoped Astro styles |
32
+ | Scoped `<style>` for RicosViewer overrides | `<style is:global>` — React islands don't inherit scoped Astro styles |