@wix/agent-skills 1.13.0 → 1.15.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.
- package/README.md +4 -1
- package/package.json +1 -1
- package/skills/README.md +23 -0
- package/skills/wix-app/SKILL.md +10 -2
- package/skills/wix-app/references/AUTO_PATTERNS_DASHBOARD.md +326 -0
- package/skills/wix-app/references/CODE_QUALITY.md +1 -0
- package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +124 -115
- package/skills/wix-app/references/DASHBOARD_PAGE.md +3 -0
- package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +23 -9
- package/skills/wix-app/references/SITE_PLUGIN.md +1 -1
- package/skills/wix-app/references/auto-patterns-dashboard/action-cell.md +115 -0
- package/skills/wix-app/references/auto-patterns-dashboard/app-config-structure.md +264 -0
- package/skills/wix-app/references/auto-patterns-dashboard/app-context.md +37 -0
- package/skills/wix-app/references/auto-patterns-dashboard/bulk-actions.md +86 -0
- package/skills/wix-app/references/auto-patterns-dashboard/collection-page-actions.md +119 -0
- package/skills/wix-app/references/auto-patterns-dashboard/collection-page.md +103 -0
- package/skills/wix-app/references/auto-patterns-dashboard/custom-actions-override.md +76 -0
- package/skills/wix-app/references/auto-patterns-dashboard/custom-columns-override.md +82 -0
- package/skills/wix-app/references/auto-patterns-dashboard/custom-components-override.md +89 -0
- package/skills/wix-app/references/auto-patterns-dashboard/custom-header-override.md +124 -0
- package/skills/wix-app/references/auto-patterns-dashboard/custom-sections-override.md +91 -0
- package/skills/wix-app/references/auto-patterns-dashboard/custom-slots-override.md +71 -0
- package/skills/wix-app/references/auto-patterns-dashboard/entity-page-actions.md +70 -0
- package/skills/wix-app/references/auto-patterns-dashboard/entity-page-view-actions.md +73 -0
- package/skills/wix-app/references/auto-patterns-dashboard/entity-page.md +98 -0
- package/skills/wix-app/references/auto-patterns-dashboard/example-patterns.json +278 -0
- package/skills/wix-app/references/auto-patterns-dashboard/pages-configuration.md +94 -0
- package/skills/wix-app/references/auto-patterns-dashboard/resolved-action.md +43 -0
- package/skills/wix-app/references/auto-patterns-dashboard/sdk-utilities.md +66 -0
- package/skills/wix-app/references/auto-patterns-dashboard/views.md +76 -0
- package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +1 -14
- package/skills/wix-app/references/editor-react-component/COMPONENT-API.md +54 -29
- package/skills/wix-app/references/editor-react-component/COMPONENT-CONFIGURATION.md +2 -2
- package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +17 -105
- package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +127 -0
- package/skills/wix-app/references/editor-react-component/PARTS.md +2 -1
- package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +15 -15
- package/skills/wix-app/references/editor-react-component/REACT-PATTERNS.md +25 -53
- package/skills/wix-app/scripts/generate-auto-patterns.js +510 -0
- package/skills/wix-auth/SKILL.md +12 -0
- package/skills/wix-auth/references/device-flow.md +140 -0
- package/skills/wix-docs/SKILL.md +188 -0
- package/skills/wix-docs/references/API_SPEC_SEARCH.md +213 -0
- package/skills/wix-docs/references/EXTRACTING.md +120 -0
- package/skills/wix-headless/SKILL.md +84 -130
- package/skills/wix-headless/entry/bootstrap.mjs +93 -0
- package/skills/wix-headless/entry/skill.md +78 -0
- package/skills/wix-headless/references/AI_FEATURES.md +178 -0
- package/skills/wix-headless/references/CAPABILITIES.md +84 -0
- package/skills/wix-headless/references/DISCOVERY.md +34 -56
- package/skills/wix-headless/references/DOC_DISCOVERY.md +37 -0
- package/skills/wix-headless/references/FEEDBACK.md +118 -0
- package/skills/wix-headless/references/IMAGE_GENERATION.md +69 -0
- package/skills/wix-headless/references/SDK_HANDOFF.md +97 -0
- package/skills/wix-headless/references/SEED.md +44 -188
- package/skills/wix-headless/references/SETUP.md +32 -103
- package/skills/wix-headless/references/astro.md +98 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +196 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +236 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-bookings.md +279 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-cms.md +163 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-events.md +203 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +222 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +124 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +160 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +118 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-portfolio.md +132 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +124 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +188 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +173 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurants.md +161 -0
- package/skills/wix-headless/references/inline-recipes/setup-blog.md +175 -0
- package/skills/wix-headless/references/inline-recipes/setup-bookings.md +228 -0
- package/skills/wix-headless/references/inline-recipes/setup-cms.md +200 -0
- package/skills/wix-headless/references/inline-recipes/setup-events.md +196 -0
- package/skills/wix-headless/references/inline-recipes/setup-forms.md +174 -0
- package/skills/wix-headless/references/inline-recipes/setup-online-store.md +176 -0
- package/skills/wix-headless/references/inline-recipes/setup-portfolio.md +153 -0
- package/skills/wix-headless/references/inline-recipes/setup-pricing-plans.md +229 -0
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-orders.md +161 -0
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-reservations.md +117 -0
- package/skills/wix-headless/references/inline-recipes/setup-restaurants.md +152 -0
- package/skills/wix-headless/references/managed/AUTHENTICATION.md +57 -0
- package/skills/wix-headless/references/managed/CONNECT.md +74 -0
- package/skills/wix-headless/references/managed/CREATE.md +130 -0
- package/skills/wix-headless/references/managed/DEPLOYMENT.md +57 -0
- package/skills/wix-headless/references/non-astro.md +59 -0
- package/skills/wix-headless/references/self-managed/AUTHENTICATION.md +22 -0
- package/skills/wix-headless/references/self-managed/DEPLOYMENT.md +7 -0
- package/skills/wix-headless/references/stripe/AUTHENTICATION.md +55 -0
- package/skills/wix-headless/references/stripe/DEPLOYMENT.md +63 -0
- package/skills/wix-manage/SKILL.md +24 -1
- package/skills/wix-manage/references/analytics/query-site-analytics.md +241 -0
- package/skills/wix-manage/references/bookings/create-and-update-booking-services.md +1 -1
- package/skills/wix-manage/references/bookings/diagnose-availability-issues.md +265 -0
- package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +436 -0
- package/skills/wix-manage/references/marketing/generate-and-publish-marketing-plan.md +209 -0
- package/skills/wix-manage/references/rich-content/author-ricos-rich-content.md +249 -0
- package/skills/wix-manage/references/stores/create-product-with-options-catalog-v3.md +51 -0
- package/skills/wix-vibe-headless/SKILL.md +136 -0
- package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +128 -0
- package/skills/wix-vibe-headless/references/blog/wix-blog.js +217 -0
- package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +153 -0
- package/skills/wix-vibe-headless/references/bookings/wix-bookings-checkout.js +147 -0
- package/skills/wix-vibe-headless/references/bookings/wix-bookings-services.js +215 -0
- package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +154 -0
- package/skills/wix-vibe-headless/references/cms/wix-cms.js +186 -0
- package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +142 -0
- package/skills/wix-vibe-headless/references/events/wix-events-browse.js +135 -0
- package/skills/wix-vibe-headless/references/events/wix-events-registration.js +187 -0
- package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +211 -0
- package/skills/wix-vibe-headless/references/members/wix-members-auth.js +387 -0
- package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +111 -0
- package/skills/wix-vibe-headless/references/portfolio/wix-portfolio.js +194 -0
- package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +127 -0
- package/skills/wix-vibe-headless/references/pricing-plans/wix-pricing-plans.js +157 -0
- package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +138 -0
- package/skills/wix-vibe-headless/references/restaurants/wix-restaurants-menu.js +224 -0
- package/skills/wix-vibe-headless/references/restaurants/wix-restaurants-ordering.js +156 -0
- package/skills/wix-vibe-headless/references/restaurants/wix-restaurants-reservations.js +107 -0
- package/skills/wix-vibe-headless/references/shared/wix-client.js +186 -0
- package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +155 -0
- package/skills/wix-vibe-headless/references/storefront/wix-store-cart.js +147 -0
- package/skills/wix-vibe-headless/references/storefront/wix-store-catalog.js +142 -0
- package/skills/wix-headless/references/BUILD-astro.md +0 -244
- package/skills/wix-headless/references/BUILD-own-build.md +0 -167
- package/skills/wix-headless/references/BUILD.md +0 -105
- package/skills/wix-headless/references/DESIGN_SYSTEM.md +0 -165
- package/skills/wix-headless/references/DISCOVERY-connect.md +0 -55
- package/skills/wix-headless/references/DISCOVERY-create.md +0 -238
- package/skills/wix-headless/references/PLAN-connect.md +0 -19
- package/skills/wix-headless/references/PLAN-create.md +0 -17
- package/skills/wix-headless/references/PLAN.md +0 -92
- package/skills/wix-headless/references/astro/blog/BLOG_PAGES.md +0 -300
- package/skills/wix-headless/references/astro/blog/BLOG_SETUP.md +0 -218
- package/skills/wix-headless/references/astro/bookings/COMPONENTS.md +0 -45
- package/skills/wix-headless/references/astro/bookings/SERVICES_PAGES.md +0 -77
- package/skills/wix-headless/references/astro/cms/CMS_FOUNDATIONS.md +0 -214
- package/skills/wix-headless/references/astro/cms/FAQ_KNOWLEDGE_BASE.md +0 -231
- package/skills/wix-headless/references/astro/cms/PORTFOLIO.md +0 -453
- package/skills/wix-headless/references/astro/cms/RESOURCE_LIBRARY.md +0 -354
- package/skills/wix-headless/references/astro/cms/TEAM_DIRECTORY.md +0 -299
- package/skills/wix-headless/references/astro/designer/INSTRUCTIONS.md +0 -351
- package/skills/wix-headless/references/astro/ecom/CART_PAGES.md +0 -119
- package/skills/wix-headless/references/astro/ecom/CART_WIRING.md +0 -103
- package/skills/wix-headless/references/astro/ecom/COMPONENTS_CSS.md +0 -132
- package/skills/wix-headless/references/astro/forms/CONTACT_FORM.md +0 -463
- package/skills/wix-headless/references/astro/gift-cards/COMPONENTS.md +0 -119
- package/skills/wix-headless/references/astro/gift-cards/PAGES.md +0 -129
- package/skills/wix-headless/references/astro/stores/BACK_IN_STOCK.md +0 -178
- package/skills/wix-headless/references/astro/stores/CATEGORY_PAGES.md +0 -85
- package/skills/wix-headless/references/astro/stores/COMPONENTS_CSS.md +0 -129
- package/skills/wix-headless/references/astro/stores/HOME_AND_NAV.md +0 -229
- package/skills/wix-headless/references/astro/stores/PRODUCT_PAGES.md +0 -215
- package/skills/wix-headless/references/astro/stores/SHARED_WIRING.md +0 -165
- package/skills/wix-headless/references/astro/templates/Footer.astro +0 -27
- package/skills/wix-headless/references/astro/templates/Layout.astro +0 -132
- package/skills/wix-headless/references/astro/templates/Navigation.astro +0 -38
- package/skills/wix-headless/references/astro/templates/astro.config.mjs +0 -41
- package/skills/wix-headless/references/astro/templates/bookings/AvailabilityCalendar.tsx +0 -374
- package/skills/wix-headless/references/astro/templates/bookings/BookingForm.tsx +0 -136
- package/skills/wix-headless/references/astro/templates/bookings/SeoTags.astro +0 -25
- package/skills/wix-headless/references/astro/templates/bookings/ServiceBookingFlow.tsx +0 -71
- package/skills/wix-headless/references/astro/templates/bookings/ServiceCard.astro +0 -54
- package/skills/wix-headless/references/astro/templates/bookings/booking-confirmation.astro +0 -49
- package/skills/wix-headless/references/astro/templates/bookings/bookingDriver.ts +0 -245
- package/skills/wix-headless/references/astro/templates/bookings/components-bookings.css +0 -424
- package/skills/wix-headless/references/astro/templates/bookings/services/[slug].astro +0 -176
- package/skills/wix-headless/references/astro/templates/bookings/services/index.astro +0 -181
- package/skills/wix-headless/references/astro/templates/ecom/CartBadge.tsx +0 -84
- package/skills/wix-headless/references/astro/templates/ecom/CartView.tsx +0 -543
- package/skills/wix-headless/references/astro/templates/ecom/cart.astro +0 -13
- package/skills/wix-headless/references/astro/templates/ecom/components-ecom.css +0 -302
- package/skills/wix-headless/references/astro/templates/ecom/discounts.ts +0 -71
- package/skills/wix-headless/references/astro/templates/ecom/thank-you.astro +0 -24
- package/skills/wix-headless/references/astro/templates/gift-cards/GiftCardPurchase.tsx +0 -172
- package/skills/wix-headless/references/astro/templates/gift-cards/_home-teaser-snippet.astro +0 -42
- package/skills/wix-headless/references/astro/templates/gift-cards/_nav-snippet.astro +0 -11
- package/skills/wix-headless/references/astro/templates/gift-cards/components-gift-cards.css +0 -220
- package/skills/wix-headless/references/astro/templates/gift-cards/gift-cards.astro +0 -51
- package/skills/wix-headless/references/astro/templates/gift-cards/gift-cards.ts +0 -75
- package/skills/wix-headless/references/astro/templates/global.css +0 -288
- package/skills/wix-headless/references/astro/templates/index.astro +0 -56
- package/skills/wix-headless/references/astro/templates/stores/AddToCartButton.tsx +0 -77
- package/skills/wix-headless/references/astro/templates/stores/BackInStockForm.tsx +0 -176
- package/skills/wix-headless/references/astro/templates/stores/CategoryRail.astro +0 -69
- package/skills/wix-headless/references/astro/templates/stores/ProductCard.astro +0 -79
- package/skills/wix-headless/references/astro/templates/stores/ProductPurchase.tsx +0 -397
- package/skills/wix-headless/references/astro/templates/stores/SeoTags.astro +0 -21
- package/skills/wix-headless/references/astro/templates/stores/back-in-stock.ts +0 -67
- package/skills/wix-headless/references/astro/templates/stores/categories.ts +0 -155
- package/skills/wix-headless/references/astro/templates/stores/category/[slug].astro +0 -130
- package/skills/wix-headless/references/astro/templates/stores/components-stores.css +0 -400
- package/skills/wix-headless/references/astro/templates/stores/products/[slug].astro +0 -128
- package/skills/wix-headless/references/astro/templates/stores/products/index.astro +0 -101
- package/skills/wix-headless/references/blog/BLOG_CONTENT.md +0 -161
- package/skills/wix-headless/references/blog/INSTRUCTIONS.md +0 -32
- package/skills/wix-headless/references/bookings/FLOW.md +0 -246
- package/skills/wix-headless/references/bookings/INSTRUCTIONS.md +0 -95
- package/skills/wix-headless/references/bookings/SERVICES_DATA.md +0 -355
- package/skills/wix-headless/references/cms/CMS_FOUNDATIONS.md +0 -176
- package/skills/wix-headless/references/cms/INSTRUCTIONS.md +0 -71
- package/skills/wix-headless/references/commands/known-apps.json +0 -6
- package/skills/wix-headless/references/custom/CONNECTION_PLAN.md +0 -142
- package/skills/wix-headless/references/custom/INSTRUCTIONS.md +0 -88
- package/skills/wix-headless/references/custom/blog/WIRING.md +0 -52
- package/skills/wix-headless/references/custom/bookings/WIRING.md +0 -197
- package/skills/wix-headless/references/custom/cms/WIRING.md +0 -97
- package/skills/wix-headless/references/custom/ecom/WIRING.md +0 -67
- package/skills/wix-headless/references/custom/forms/WIRING.md +0 -101
- package/skills/wix-headless/references/custom/stores/WIRING.md +0 -80
- package/skills/wix-headless/references/ecom/INSTRUCTIONS.md +0 -59
- package/skills/wix-headless/references/forms/INSTRUCTIONS.md +0 -43
- package/skills/wix-headless/references/gift-cards/INSTRUCTIONS.md +0 -51
- package/skills/wix-headless/references/images/INSTRUCTIONS.md +0 -357
- package/skills/wix-headless/references/seed-recipes.md +0 -49
- package/skills/wix-headless/references/shared/AGENTS_MD.md +0 -47
- package/skills/wix-headless/references/shared/AUTHENTICATION.md +0 -108
- package/skills/wix-headless/references/shared/BUILD_NOISE.md +0 -8
- package/skills/wix-headless/references/shared/DESIGN_MD.md +0 -84
- package/skills/wix-headless/references/shared/DOCS_SEARCH.md +0 -41
- package/skills/wix-headless/references/shared/IMAGE_GENERATION.md +0 -186
- package/skills/wix-headless/references/shared/IMPLEMENTER.md +0 -206
- package/skills/wix-headless/references/shared/PRODUCTION_SHARP_EDGES.md +0 -97
- package/skills/wix-headless/references/shared/RETURN_CONTRACT.md +0 -143
- package/skills/wix-headless/references/shared/STYLING.md +0 -141
- package/skills/wix-headless/references/stores/INSTRUCTIONS.md +0 -126
- package/skills/wix-headless/references/stores/PRODUCT_CATALOG_DATA.md +0 -252
- package/skills/wix-headless/references/verticals/_schema.json +0 -74
- package/skills/wix-headless/references/verticals/_schema.md +0 -95
- package/skills/wix-headless/references/verticals/blog.md +0 -31
- package/skills/wix-headless/references/verticals/bookings.md +0 -41
- package/skills/wix-headless/references/verticals/cms.md +0 -30
- package/skills/wix-headless/references/verticals/ecom.md +0 -25
- package/skills/wix-headless/references/verticals/forms.md +0 -26
- package/skills/wix-headless/references/verticals/gift-cards.md +0 -24
- package/skills/wix-headless/references/verticals/stores.md +0 -33
- package/skills/wix-headless/scripts/check-manifest.mjs +0 -335
- package/skills/wix-headless/scripts/compose.mjs +0 -525
- package/skills/wix-headless/scripts/emit-design-tokens.mjs +0 -157
- package/skills/wix-headless/scripts/flatten.sh +0 -61
- package/skills/wix-headless/scripts/generate-images.mjs +0 -242
- package/skills/wix-headless/scripts/patch-decorative-slots.mjs +0 -148
- package/skills/wix-headless/scripts/plan-entity-image-waves.mjs +0 -190
- package/skills/wix-headless/scripts/scaffold.sh +0 -139
- package/skills/wix-headless/scripts/seed-utilities.sh +0 -93
- package/skills/wix-headless/scripts/write-decorative-json.mjs +0 -62
- package/skills/wix-headless/shared-utilities/analytics.ts +0 -40
- package/skills/wix-headless/shared-utilities/ricos.ts +0 -179
- package/skills/wix-headless/shared-utilities/wix-image.ts +0 -72
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# DESIGN.md — the design-token format (vendored spec)
|
|
2
|
-
|
|
3
|
-
`DESIGN.md` is the **single design artifact** of the wix-headless design-system phase. The Designer authors it; `emit-design-tokens.mjs` writes it + projects `.wix/design-tokens.css` and `.wix/site.d.ts` from it; `compose.mjs` reads its **frontmatter** to write the astro design-system files. It is the standalone, framework-agnostic spec a non-astro frontend, a human, or another tool can read.
|
|
4
|
-
|
|
5
|
-
This file is the **canonical spec inside the skill** — the public DESIGN.md frontmatter format (the `design.md` spec, captured here) plus the small, documented extensions this skill uses. Do not depend on the external `design.md` project at runtime.
|
|
6
|
-
|
|
7
|
-
## Frontmatter structure
|
|
8
|
-
|
|
9
|
-
A `DESIGN.md` file is YAML frontmatter delimited by `---`, optionally followed by a free-form markdown body:
|
|
10
|
-
|
|
11
|
-
```yaml
|
|
12
|
-
---
|
|
13
|
-
version: alpha # optional
|
|
14
|
-
name: <string> # the brand / design-system name
|
|
15
|
-
colors:
|
|
16
|
-
<token-name>: <Color>
|
|
17
|
-
typography:
|
|
18
|
-
<token-name>:
|
|
19
|
-
fontFamily: <string>
|
|
20
|
-
fontSize: <Dimension> # optional (unused by this skill)
|
|
21
|
-
fontWeight: <number> # optional
|
|
22
|
-
lineHeight: <Dimension|number> # optional
|
|
23
|
-
letterSpacing: <Dimension> # optional
|
|
24
|
-
rounded: # corner radii (DESIGN.md's name for radius tokens)
|
|
25
|
-
<scale-level>: <Dimension>
|
|
26
|
-
containers: # EXTENSION (this skill): content/reading widths
|
|
27
|
-
<scale-level>: <Dimension>
|
|
28
|
-
googleFontsHref: <string> # EXTENSION (this skill): the ready Google Fonts <link> href
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
# free-form body — documentation only, NEVER parsed
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### Value types
|
|
35
|
-
|
|
36
|
-
- **Color** — any valid CSS color string (hex `#RRGGBB`, `rgb()`, `hsl()`, named). **Quote hex values** — an unquoted `#hex` after `: ` is a YAML comment.
|
|
37
|
-
- **Dimension** — a string with a unit suffix: `px`, `em`, `rem` (e.g. `"1rem"`, `16px`).
|
|
38
|
-
- **Token reference** — `{path.to.value}` (curly-brace object path into the YAML tree).
|
|
39
|
-
|
|
40
|
-
## How this skill uses it
|
|
41
|
-
|
|
42
|
-
### Frontmatter only is canonical
|
|
43
|
-
|
|
44
|
-
`compose.mjs` and `emit-design-tokens.mjs` read the **frontmatter only**. The markdown body is documentation and is **never parsed** — so a generated `DESIGN.md` can carry a minimal or empty body without affecting the build, and run-to-run body variance never reaches the output.
|
|
45
|
-
|
|
46
|
-
### Token vocabulary (the groups this skill consumes)
|
|
47
|
-
|
|
48
|
-
| DESIGN.md group | wix CSS projection | Notes |
|
|
49
|
-
|---|---|---|
|
|
50
|
-
| `colors` | `--color-<key>` | semantic role keys (see color roles below) |
|
|
51
|
-
| `typography.<level>.fontFamily` | `--font-<level>` | `display` + `body` required; `mono` optional |
|
|
52
|
-
| `rounded` | `--radius-<key>` | `sm` + `md` required |
|
|
53
|
-
| `containers` | `--container-<key>` | **extension** — content widths, a separate axis from spacing (`prose, md, 3xl, 6xl`) |
|
|
54
|
-
| `googleFontsHref` | the Layout `<link>` href | **extension** — the ready stylesheet URL for the chosen families |
|
|
55
|
-
|
|
56
|
-
> **Spacing is not a DESIGN.md token.** The build uses Tailwind v4's built-in numeric spacing scale directly (`gap-4`, `py-24`, `px-6`, …). A named `--spacing-<size>` scale was removed because its t-shirt names (`md`, `3xl`, …) collided with the width utilities (`max-w-3xl` resolved to `--spacing-3xl` instead of `--container-3xl`). Do not author a `spacing` group.
|
|
57
|
-
|
|
58
|
-
### Color roles — wix-native keys are the contract
|
|
59
|
-
|
|
60
|
-
The skill's component-CSS templates reference a fixed set of `--color-*` names (`STYLING.md` § "Required tokens"). So the **canonical color token keys in our DESIGN.md are the wix editorial roles** — and these are valid DESIGN.md color token names (the format leaves token names free-form):
|
|
61
|
-
|
|
62
|
-
`paper` (primary background), `paper-warm` (secondary surface), `ink` (primary text / dark fills), `ink-soft`, `mute` (muted text), `rule` (borders / dividers), `accent` (brand emphasis), `cream`, `error`.
|
|
63
|
-
|
|
64
|
-
`paper`, `paper-warm`, `ink`, `mute`, `rule`, `accent` are **required**; `ink-soft`, `cream`, `error` recommended (derived as a fail-safe if absent).
|
|
65
|
-
|
|
66
|
-
### Standard-role compatibility (reading an externally-authored DESIGN.md)
|
|
67
|
-
|
|
68
|
-
A DESIGN.md authored elsewhere may use the DESIGN.md spec's *common* semantic roles instead of the wix-native keys. `compose.mjs` carries a **role-translation table** so such a file is still consumable; wix-native keys are not in the table and pass through unchanged (winning on conflict):
|
|
69
|
-
|
|
70
|
-
| standard role | → wix `--color-*` | | standard role | → wix `--color-*` |
|
|
71
|
-
|---|---|---|---|---|
|
|
72
|
-
| `primary` | `accent` | | `surface` / `background` | `paper` |
|
|
73
|
-
| `secondary` | `paper-warm` | | `on-surface` / `on-background` | `ink` |
|
|
74
|
-
| `tertiary` | `ink-soft` | | `outline` | `rule` |
|
|
75
|
-
| `neutral` | `mute` | | `error` | `error` |
|
|
76
|
-
|
|
77
|
-
This translation is a **compatibility layer**, not the authoring path: the Designer in this skill emits the wix-native keys directly (lossless — no role round-trip), so `STYLING.md` and every `components-<pack>.css` template stay untouched.
|
|
78
|
-
|
|
79
|
-
## Producers & consumers in the run
|
|
80
|
-
|
|
81
|
-
- **Designer** (`DESIGN_SYSTEM.md`) — **authors `DESIGN.md` directly** (its frontmatter is the spec); returns only the brand-voice strings + the `DESIGN.md` path.
|
|
82
|
-
- **`emit-design-tokens.mjs`** — reads the Designer's `DESIGN.md` and projects `.wix/design-tokens.css` + `.wix/site.d.ts` from its frontmatter. It does **not** write `DESIGN.md` (the Designer does).
|
|
83
|
-
- **`compose.mjs`** — reads `DESIGN.md` frontmatter → writes the 6 astro design-system files (astro only).
|
|
84
|
-
- **Non-astro (`own`) frontends** — import `.wix/design-tokens.css` for the same values; component composition stays framework-native (no `compose.mjs`).
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Wix documentation lookups
|
|
2
|
-
|
|
3
|
-
Operational calls in this skill use `npx @wix/cli@latest token --site "$SITE_ID"` + `curl` against `wixapis.com` (see `AUTHENTICATION.md`). When a bundled recipe falls short and you need to look up an endpoint, method schema, or article body, use the public unauthenticated REST endpoints below. **No MCP, no SDK** — these are plain `curl` calls.
|
|
4
|
-
|
|
5
|
-
## Doc search
|
|
6
|
-
|
|
7
|
-
| Need | Endpoint |
|
|
8
|
-
|---|---|
|
|
9
|
-
| Search REST / SDK / headless docs | `GET https://www.wixapis.com/mcp-docs-search/v1/search?kbName=<KB>&searchTerm=<q>&maxResults=<n>` |
|
|
10
|
-
| Read a full article | `GET https://dev.wix.com/rawdocs/api/get-article-content?articleUrl=<url>&schema=false` |
|
|
11
|
-
| Read method schema | Same URL with `schema=true` |
|
|
12
|
-
| Browse REST docs menu | `GET https://dev.wix.com/docs/api/v1/get-menu-content?url=<url>&format=markdown` |
|
|
13
|
-
|
|
14
|
-
**kbName values** (common): `REST_METHODS_KB_ID`, `SDK_KB_ID`, `HEADLESS_KB_ID`.
|
|
15
|
-
|
|
16
|
-
Example — search REST docs for app install:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
curl -sS --get 'https://www.wixapis.com/mcp-docs-search/v1/search' \
|
|
20
|
-
--data-urlencode 'kbName=REST_METHODS_KB_ID' \
|
|
21
|
-
--data-urlencode 'searchTerm=install app instance' \
|
|
22
|
-
--data-urlencode 'maxResults=3'
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Example — fetch article body:
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
curl -sS --get 'https://dev.wix.com/rawdocs/api/get-article-content' \
|
|
29
|
-
--data-urlencode 'articleUrl=https://dev.wix.com/docs/...' \
|
|
30
|
-
--data-urlencode 'schema=false'
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
No auth headers required on these endpoints.
|
|
34
|
-
|
|
35
|
-
## Prefer bundled references
|
|
36
|
-
|
|
37
|
-
Your skill directory includes `.md` reference files with API recipes and error handling for your scope. **Read those first.** Use the doc endpoints above only when you hit an error or endpoint not covered by the bundled recipe — each external doc read costs a tool call and 15–30 s.
|
|
38
|
-
|
|
39
|
-
## Absolute paths
|
|
40
|
-
|
|
41
|
-
Subagents run with the **project directory** as CWD, not the skill root. Every dispatch prompt must include `Instruction file (absolute path): <SKILL_ROOT>/references/<scope>/INSTRUCTIONS.md`. Read that path only; use the absolute sibling paths it lists. Never resolve `references/...` against the project CWD.
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
# Recipe: AI Image Generation + Wix Media Import
|
|
2
|
-
|
|
3
|
-
Generate images using **Wix AI (Runware)** via the `wixapis.com` REST proxy, then import them into Wix Media. This is a **pure utility** — it generates an image and returns the result. The calling skill owns prompt construction and entity attachment.
|
|
4
|
-
|
|
5
|
-
Image generation authenticates with the same CLI-minted site-scoped token used for every other Wix REST call in this skill (see `AUTHENTICATION.md`) — no separate API keys, no MCP, no sandbox escape hatches.
|
|
6
|
-
|
|
7
|
-
## Step 1: Generate Image via Wix AI
|
|
8
|
-
|
|
9
|
-
Call the Runware proxy through `curl`. The body is an **array of tasks** — one request can generate N images by adding more task objects.
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
REST: POST https://www.wixapis.com/runwareschemaless/v1/request
|
|
13
|
-
body: [
|
|
14
|
-
{
|
|
15
|
-
"taskType": "imageInference",
|
|
16
|
-
"taskUUID": "<unique-uuid-per-task>",
|
|
17
|
-
"outputType": "URL",
|
|
18
|
-
"outputFormat": "PNG",
|
|
19
|
-
"positivePrompt": "<PROMPT>",
|
|
20
|
-
"height": 1024,
|
|
21
|
-
"width": 1024,
|
|
22
|
-
"model": "google:4@2",
|
|
23
|
-
"numberResults": 1
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Send `body` as a real JSON array (not a stringified blob). Auth uses the CLI-minted site-scoped token and the standard headers — see `<SKILL_ROOT>/references/shared/AUTHENTICATION.md`.
|
|
29
|
-
|
|
30
|
-
Extract `data[0].imageURL` from the response. This is a short-lived URL — **import to Wix Media immediately** in the same task queue.
|
|
31
|
-
|
|
32
|
-
### Required Fields
|
|
33
|
-
|
|
34
|
-
| Field | Value | Notes |
|
|
35
|
-
|-------|-------|-------|
|
|
36
|
-
| `taskType` | `"imageInference"` | Always this value |
|
|
37
|
-
| `taskUUID` | valid **UUIDv4** | Runware validates the v4 format strictly — human-readable slugs like `product-maestro-001` return `400 invalidTaskUUID`. Generate via `uuidgen` (macOS/Linux) or `crypto.randomUUID()`. Example: `550e8400-e29b-41d4-a716-446655440000`. One unique UUID per task; reusing in the same request errors. |
|
|
38
|
-
| `outputType` | `"URL"` | Return a URL (not base64) |
|
|
39
|
-
| `outputFormat` | `"PNG"` or `"JPG"` | PNG for transparency-friendly art, JPG for photography |
|
|
40
|
-
| `positivePrompt` | brand-contextual prompt | See "Prompt Guidelines" below |
|
|
41
|
-
| `height`, `width` | one of the allowed pairs below | Free-form sizes return 400 |
|
|
42
|
-
| `model` | `"google:4@2"` (default) | Nano Banana Pro 2. Alternatives: `bfl:5@1`, `runware:400@1` — only switch if the default fails repeatedly |
|
|
43
|
-
| `numberResults` | `1` | Increase if you need multiple variants per prompt |
|
|
44
|
-
|
|
45
|
-
### Allowed Dimensions (safe defaults)
|
|
46
|
-
|
|
47
|
-
Runware enforces a fixed set per model. Start with these:
|
|
48
|
-
|
|
49
|
-
| Aspect | Size | Use for |
|
|
50
|
-
|--------|------|---------|
|
|
51
|
-
| Square | `1024 × 1024` | Product photos, decorative squares, Instagram-style hero |
|
|
52
|
-
| 16:9 | `1376 × 768` | Page heroes, wide banners |
|
|
53
|
-
| 4:3 | `1200 × 896` | About-page visuals, editorial imagery |
|
|
54
|
-
|
|
55
|
-
If a 400 response lists supported dimensions, use one from that list — do not retry with the same invalid size.
|
|
56
|
-
|
|
57
|
-
### Forbidden Parameters (for `google:4@2`)
|
|
58
|
-
|
|
59
|
-
Do NOT send `steps` or `CFGScale` — both are rejected with `unsupportedParameter` and cause a 400. These fields are valid for other Runware models but must be omitted for `google:4@2`.
|
|
60
|
-
|
|
61
|
-
## Preferred: run the whole phase through `generate-images.mjs`
|
|
62
|
-
|
|
63
|
-
Generation + Wix Media import is **embarrassingly parallel** (N independent `generate → import` chains, no cross-image dependency) and **recipe-free** (no entity write-shapes), so it is best run by a deterministic script rather than by hand. `<SKILL_ROOT>/scripts/generate-images.mjs` does exactly this: it fires every image as a **concurrent single-task request in one process** (`Promise.all`), then imports each result to Wix Media — all in parallel — and returns a `key → {url, fileId}` map. Because each task is its **own** request (not N tasks in one body), it sidesteps the `google:4@2` N≥3-in-one-request 504 entirely, and because the parallelism lives in code it cannot degrade into the sequential-turns anti-pattern below.
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
echo '{
|
|
67
|
-
"siteId": "<siteId>",
|
|
68
|
-
"model": "google:4@2",
|
|
69
|
-
"images": [
|
|
70
|
-
{"key": "hero", "positivePrompt": "<prompt>", "width": 1376, "height": 768},
|
|
71
|
-
{"key": "about", "positivePrompt": "<prompt>", "width": 1200, "height": 896}
|
|
72
|
-
]
|
|
73
|
-
}' | WIX_TOKEN="$TOKEN" node <SKILL_ROOT>/scripts/generate-images.mjs
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
`key` is a **slot name** for Phase 1 (`hero`, `about`) or an **entityId** for Phase 2. The returned `slots` map (key→url) pipes straight into `write-decorative-json.mjs` (Phase 1); the `map` (key→{url,fileId}) feeds the entity PATCH/PUT/publish recipe (Phase 2). Pass the **already-minted** site token via `WIX_TOKEN` (mint-once — `AUTHENTICATION.md`); the script mints its own only as a fallback. Per-image failures are isolated (`status: "partial"`), and `x-wix-request-id` is captured per call into `results[]` for trace analysis.
|
|
77
|
-
|
|
78
|
-
The manual `curl` shapes below remain the **reference for the request bodies** the script builds, and the **fallback** when the script can't be used. The "one concurrent batch" rule still applies if you ever hand-drive a phase.
|
|
79
|
-
|
|
80
|
-
## Required (manual fallback): minimize round-trips per image phase
|
|
81
|
-
|
|
82
|
-
The image agent's `image-phase-1-decorative` and `image-phase-2-entity` scopes each generate multiple images. **Do not emit N one-task calls in sequential turns** — sequential dispatch across many turns adds ~30–40 s of inter-message overhead. The correct shape depends on the model:
|
|
83
|
-
|
|
84
|
-
### For `bfl:5@1`, `runware:400@1`, and other models: ONE batched call
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
REST: POST https://www.wixapis.com/runwareschemaless/v1/request
|
|
88
|
-
body: [
|
|
89
|
-
{ "taskType": "imageInference", "taskUUID": "<uuid-1>", "positivePrompt": "...", ... },
|
|
90
|
-
{ "taskType": "imageInference", "taskUUID": "<uuid-2>", "positivePrompt": "...", ... },
|
|
91
|
-
{ "taskType": "imageInference", "taskUUID": "<uuid-3>", "positivePrompt": "...", ... }
|
|
92
|
-
]
|
|
93
|
-
```
|
|
94
|
-
One round-trip. Response's `data[]` array contains one result per task, matched by `taskUUID`.
|
|
95
|
-
|
|
96
|
-
### For `google:4@2` (the default): N parallel 1-task sibling calls
|
|
97
|
-
|
|
98
|
-
`google:4@2` times out with `504` when a single request bundles N≥3 tasks — Runware's backend serializes work per request and the model is slow enough that large batches exceed the proxy timeout. Instead, emit **N parallel `curl` tool calls as siblings in one concurrent batch**, each carrying one task:
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
Assistant message (single turn, multiple tool calls):
|
|
102
|
-
REST: POST https://www.wixapis.com/runwareschemaless/v1/request
|
|
103
|
-
REST: POST https://www.wixapis.com/runwareschemaless/v1/request
|
|
104
|
-
REST: POST https://www.wixapis.com/runwareschemaless/v1/request
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
All three fire in parallel (runtime dispatches concurrent siblings concurrently). No 504, no sequential wait. The important constraint is *one concurrent batch* — splitting them across turns loses the parallelism: sequential 1-task calls across multiple turns each add inter-message overhead.
|
|
108
|
-
|
|
109
|
-
### Procedure to enforce batching
|
|
110
|
-
|
|
111
|
-
Whether you batch one request or fire parallel siblings, **all calls in each stage MUST be in one concurrent batch**. Follow these steps in order:
|
|
112
|
-
|
|
113
|
-
1. **Write all prompts first.** In your text response, list every image you will generate with its positivePrompt, dimensions, and a UUID. Do not make any tool calls yet.
|
|
114
|
-
2. **Compose the generation call(s).** For `bfl:5@1` / `runware:400@1`, one batched call with the full body array; for `google:4@2`, N parallel 1-task sibling calls. Verify the task count matches the entity count.
|
|
115
|
-
3. **Generate.** Fire that generation as one concurrent batch.
|
|
116
|
-
4. **Parallel imports.** After the generate response arrives, emit all N `POST /site-media/v1/files/import` calls as concurrent sibling calls in one concurrent batch.
|
|
117
|
-
5. **Parallel PATCHes.** After all imports resolve, emit all N PATCH calls as concurrent sibling calls in one concurrent batch.
|
|
118
|
-
|
|
119
|
-
**Three concurrent batches total (one per stage).** If you find yourself making more, stop and check whether you're serializing. See the skill's `references/PLAN.md` § "Batching discipline" for why sibling batching beats sequential dispatch.
|
|
120
|
-
|
|
121
|
-
## Step 2: Import to Wix Media
|
|
122
|
-
|
|
123
|
-
This API is Wix-side and model-agnostic — the same shape works for any image source:
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
REST: POST https://www.wixapis.com/site-media/v1/files/import
|
|
127
|
-
body: {
|
|
128
|
-
"url": "<imageURL from Runware response>",
|
|
129
|
-
"mimeType": "image/png",
|
|
130
|
-
"displayName": "<descriptive-name>.png"
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## Returns
|
|
135
|
-
|
|
136
|
-
The Wix Media import response contains a `file` object. The calling skill receives two values:
|
|
137
|
-
|
|
138
|
-
| Field | Value | Use For |
|
|
139
|
-
|-------|-------|---------|
|
|
140
|
-
| `file.url` | Full permanent `wixstatic.com` URL | Product media, `<img>` tags, CSS `background-image`, CMS Image fields |
|
|
141
|
-
| `file.fileUrl` | File ID (e.g., `9a9cdf_abc123~mv2.png`) | Blog post `media.wixMedia.image.id` field |
|
|
142
|
-
|
|
143
|
-
The calling skill is responsible for attaching the image to whatever entity it belongs to (product, blog post, page element).
|
|
144
|
-
|
|
145
|
-
## Prompt Guidelines
|
|
146
|
-
|
|
147
|
-
Every prompt should incorporate the full brand context available from the discovery and design phases. Never generate generic images.
|
|
148
|
-
|
|
149
|
-
### Prompt Structure
|
|
150
|
-
|
|
151
|
-
1. **Subject** — what the image shows
|
|
152
|
-
2. **Brand aesthetic** — the design direction from brand discovery
|
|
153
|
-
3. **Color guidance** — reference the brand palette (e.g., "warm cream and forest green tones" not generic colors)
|
|
154
|
-
4. **Style/mood** — photography style, lighting, composition
|
|
155
|
-
5. **Constraints** — always include "no text, no watermarks"
|
|
156
|
-
|
|
157
|
-
### Context Sources
|
|
158
|
-
|
|
159
|
-
| Source | What to Extract |
|
|
160
|
-
|--------|----------------|
|
|
161
|
-
| Discovery plan | Business type, brand name, industry, target audience |
|
|
162
|
-
| Design Step 1 (brand discovery) | Aesthetic direction, mood, personality |
|
|
163
|
-
| Design Step 2 (design system) | Color palette hex codes from `global.css` |
|
|
164
|
-
| Entity being created | Product name/description, blog post title/topic, page purpose |
|
|
165
|
-
|
|
166
|
-
### Anti-Patterns (NEVER do these)
|
|
167
|
-
|
|
168
|
-
- Generic prompts without brand context ("a product photo")
|
|
169
|
-
- Ignoring the color palette established in global.css
|
|
170
|
-
- Using stock-photo language ("diverse team of professionals")
|
|
171
|
-
- Requesting text in images (AI-generated text is garbled)
|
|
172
|
-
- Same prompt style across different brand aesthetics
|
|
173
|
-
|
|
174
|
-
## Error Handling
|
|
175
|
-
|
|
176
|
-
| Error | Action |
|
|
177
|
-
|---|---|
|
|
178
|
-
| `unsupportedParameter` (400) | Strip the offending field (most commonly `steps` or `CFGScale`) and retry |
|
|
179
|
-
| `unsupportedDimensions` (400) | Retry with one of the allowed defaults (`1024×1024`, `1376×768`, `1200×896`) or a size from the error payload's supported list |
|
|
180
|
-
| Model-specific failure (model down, rate limited) | Switch to an alternative model (`bfl:5@1`, `runware:400@1`) and retry once; skip if still failing |
|
|
181
|
-
| Credit exhaustion | Stop generating, return `status: "partial"` with `errors: [{code: "CREDITS_EXHAUSTED", ...}]` listing what was completed (see `RETURN_CONTRACT.md`) |
|
|
182
|
-
| Generation fails (5xx, timeout) | Skip this image, continue with others |
|
|
183
|
-
| Wix Media import fails | Skip this image, entity gets no image |
|
|
184
|
-
| All images fail | Proceed without images, return `status: "failed"` with the root cause |
|
|
185
|
-
|
|
186
|
-
**Never block the main flow on image generation failure.** Products, posts, and pages work without images — users can upload their own via the Wix dashboard later.
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
# Shared Implementer — Common Behavior for Every Vertical Subagent
|
|
2
|
-
|
|
3
|
-
This file is **extended by every per-vertical `INSTRUCTIONS.md`** (stores, ecom, cms, blog, forms, gift-cards, bookings). Per-vertical instruction files are thin — they declare scopes and reference paths. Everything else lives here.
|
|
4
|
-
|
|
5
|
-
## Self-loading
|
|
6
|
-
|
|
7
|
-
Read **only** the files your scope needs. The reading set varies by scope:
|
|
8
|
-
|
|
9
|
-
| Your scope | Mandatory | Conditional |
|
|
10
|
-
|---|---|---|
|
|
11
|
-
| `seed` | this file, `RETURN_CONTRACT.md`, `DOCS_SEARCH.md` | — |
|
|
12
|
-
| `components`, `components-css`, `pages`, `pages-*` | this file, `RETURN_CONTRACT.md`, `STYLING.md` | — |
|
|
13
|
-
| Image scopes | (read `references/images/INSTRUCTIONS.md` § Self-Loading) | — |
|
|
14
|
-
|
|
15
|
-
Then read the specific reference(s) for your declared scope(s) (see your vertical's `INSTRUCTIONS.md` scope table). Do NOT read references for scopes **not** named in your prompt — wastes context and blurs ownership.
|
|
16
|
-
|
|
17
|
-
## Phase routing
|
|
18
|
-
|
|
19
|
-
Your prompt includes a line naming your scope(s). Map **each** scope to its reference set per your vertical's `INSTRUCTIONS.md` scope table. If the scope line is missing, stop and ask the parent — do not guess.
|
|
20
|
-
|
|
21
|
-
**Merged dispatch (the common case — one agent owns components + pages for a vertical).** Your prompt may list **several** scopes — e.g. `Scopes (write in this order): components, pages-products, pages-categories`. This is a single "build" agent for one vertical: read the **union** of those scopes' references and write them in the order given — **islands/components FIRST, then the pages/routes that mount them.** Writing the page before its island leaves a dangling import; the within-agent order is exactly why these were merged into one dispatch (it removes the cross-agent Components→Pages barrier). You still own only the files those scopes declare; do not touch another vertical's files or a shared shell unless your scope list explicitly includes a shell-patching `pages` scope.
|
|
22
|
-
|
|
23
|
-
Standard scope names:
|
|
24
|
-
- `seed` — Seed phase (REST data setup, no frontend code)
|
|
25
|
-
- `components` — Components phase (reusable React/Astro islands, SDK wiring)
|
|
26
|
-
- `pages` — Pages phase (route files with visual design + data queries, single scope per vertical)
|
|
27
|
-
- `pages-<name>` — Pages phase sub-scope (only when a vertical has multiple pages groups, e.g. stores has `pages-products`, `pages-home-and-nav`)
|
|
28
|
-
|
|
29
|
-
## REST auth
|
|
30
|
-
|
|
31
|
-
Scopes that call Wix APIs (`seed`, image phases) receive `siteId` in the prompt. Mint once: `TOKEN=$(npx @wix/cli@latest token --site "$SITE_ID")`. Every `curl` uses the headers in `references/shared/AUTHENTICATION.md`. Doc lookups use the public REST endpoints listed in `references/shared/DOCS_SEARCH.md`.
|
|
32
|
-
|
|
33
|
-
If your scope is `components` or `pages`, you should NOT make REST calls — those scopes are frontend-only. If you find yourself needing a site API call, it's a scope violation — return `status: "partial"` with an error note, do not proceed.
|
|
34
|
-
|
|
35
|
-
## Don't depend on mutable shared state (one scoped exception: `.wix/seeded.json`)
|
|
36
|
-
|
|
37
|
-
Every input you need is either inlined in your prompt or — for seeded entity IDs — in **`.wix/seeded.json`**, the one shared file you are allowed to read. The orchestrator holds run state in scratch, not on disk — it is **not** a coordination channel you can read. `.wix/seeded.json` is the one exception: a producer→consumer handoff written **once** at the seed gate, read-only thereafter. Read **only your own `<vertical>` slice**; never write it.
|
|
38
|
-
|
|
39
|
-
**Phase-specific inputs:**
|
|
40
|
-
|
|
41
|
-
| Scope | Where its inputs come from |
|
|
42
|
-
|---|---|
|
|
43
|
-
| `seed` | All **inlined**: `brand`, `intent.<pack>`, `siteId`, recipe path(s). Do NOT re-derive these. |
|
|
44
|
-
| `components` | **Inlined**: `brand`. **Read from disk**: the design tokens (the DESIGN.md vocabulary — `colors`/`typography`/`rounded`/`containers`; spacing is Tailwind's numeric scale, not a token) from `.wix/design-tokens.css` (gate-verified present; also the CSS variables the build consumes). Components do not need seeded IDs. |
|
|
45
|
-
| `pages` / `pages-*` | **Inlined:** `brand`. **Read from disk:** the design tokens (`.wix/design-tokens.css`, DESIGN.md vocabulary); your `seeded.<vertical>` slice from `.wix/seeded.json` (products, posts, collections IDs). Page data wiring uses live SDK queries; the `seeded` data is for path resolution + demo content authoring. |
|
|
46
|
-
|
|
47
|
-
If a required **inlined** input is missing from your prompt, or your **`.wix/seeded.json` slice** is absent (e.g. you are dispatched as `pages-products` but `.wix/seeded.json` has no `seeded.stores`), fail fast — return `status: "failed"` with `errors: [{ code: "SEEDED_JSON_SLICE_MISSING", missing: "seeded.stores.products" }]` (or `PROMPT_INCOMPLETE` for an inlined gap). Do NOT re-fetch via curl — the gap means an upstream phase didn't complete, and re-querying would mask the real bug.
|
|
48
|
-
|
|
49
|
-
## Seeders return data; orchestrator aggregates → `.wix/seeded.json`
|
|
50
|
-
|
|
51
|
-
Agents with `Scope: seed` return their seeded entities in the `data` block of the standard return (see `RETURN_CONTRACT.md`). The orchestrator collects every seeder return into its session scratch and writes the aggregated map **once** to `.wix/seeded.json` at the seed gate; per-vertical Page / wiring agents then read their own slice from that file (no inlined slice). (The single Image Phase 2 dispatch keeps its slice inlined.) You do NOT write `.wix/seeded.json` (the orchestrator is its sole writer), and you do NOT write `.wix/seed-returns/<pack>.json` — your JSON return is the contract.
|
|
52
|
-
|
|
53
|
-
## Writing page files
|
|
54
|
-
|
|
55
|
-
Pages-phase agents write route files (`.astro`) with:
|
|
56
|
-
|
|
57
|
-
1. **Visual design via design tokens and Tailwind.** Reference tokens as `var(--color-accent)` in `<style>` blocks or `bg-[--color-accent]` as Tailwind arbitrary values. Use canonical component templates (`agents/<vertical>/templates/*.astro`) as starting points — adapt, don't invent.
|
|
58
|
-
2. **Data queries against seeded data.** Read the seeded entity IDs / slugs from your `seeded.<vertical>` slice in `.wix/seeded.json` (with the `Read` tool — not by `import`). Pages query the Wix SDK at request time (`await productsV3.queryProducts(...)`) — that's the production-correct pattern. Use the `seeded` data for path generation (e.g. `getStaticPaths` slugs) and for authoring demo content where needed; do NOT `import` `.wix/seeded.json` from page files — it sits outside the bundler root and reading it at author-time (not bundling it) keeps it out of `dist/`.
|
|
59
|
-
3. **Imports from shared components.** Pages import components your Components-phase agent wrote (`src/components/*.tsx`, `.astro`).
|
|
60
|
-
4. **Imports from skill shared utilities.** `from "../utils/wix-image"` and `from "../utils/analytics"` — these are skill-shipped (copied into the project by `seed-utilities.sh` during Setup); do NOT import them from anywhere else.
|
|
61
|
-
|
|
62
|
-
## Contributing to shared files via markers
|
|
63
|
-
|
|
64
|
-
When your vertical's pack frontmatter declares `contributes:` entries, you insert at named markers in files created by the Design System phase or another vertical. Example: `Navigation.astro` has `<!-- nav:links -->` and `<!-- nav:actions -->` markers; each vertical inserts at its declared marker.
|
|
65
|
-
|
|
66
|
-
**How to insert at a marker:**
|
|
67
|
-
|
|
68
|
-
1. Read the shell file to see current content.
|
|
69
|
-
2. Locate your marker comment (exact string match from your `contributes[].marker`).
|
|
70
|
-
3. Insert your snippet immediately AFTER the marker line. Do NOT remove the marker — other verticals or future runs may still use it.
|
|
71
|
-
4. Preserve the file's other content exactly.
|
|
72
|
-
|
|
73
|
-
If your marker is missing from the file, fail fast — it means the shell wasn't scaffolded correctly. Do not invent your own insertion point.
|
|
74
|
-
|
|
75
|
-
### Marker discipline — strict rules
|
|
76
|
-
|
|
77
|
-
Multiple Phase 4 agents patch the same files concurrently (`Navigation.astro` is touched by stores, ecom, and gift-cards; `index.astro` by stores and gift-cards). To keep their edits compatible:
|
|
78
|
-
|
|
79
|
-
- **Never delete the marker comment** — even if your insert makes it look redundant, leave the comment in place. Other verticals running in parallel rely on `Edit` finding it.
|
|
80
|
-
- **Edit only between/at YOUR marker.** Do not reorder, deduplicate, or "tidy up" content inserted by another agent — even if it looks duplicated. If you observe a duplicate, return `status: "partial"` with `errors: [{code: "MARKER_CONFLICT", marker: "<name>", detail: "..."}]` rather than self-deciding which copy to keep. Concurrent agents have no shared truth on insert order.
|
|
81
|
-
- **Insert AFTER the marker, never replace it.** Use `Edit` with `old_string` = the marker line and `new_string` = the marker line + a newline + your snippet. Never `Edit` with `old_string` containing both the marker and surrounding content unless you also re-emit the marker verbatim in `new_string`.
|
|
82
|
-
- **If your marker has prior content (designer placed a placeholder), append rather than replace** unless your scope reference explicitly says to clear-and-replace. The designer is instructed not to speculatively populate pack-owned slots, but mistakes happen — appending degrades to a duplicate that the user can clean up; replacing destroys hand-tuned content.
|
|
83
|
-
|
|
84
|
-
## Shared implementation rules
|
|
85
|
-
|
|
86
|
-
Three rules recur across verticals and live here as the single source of truth. Per-vertical references cross-link rather than restating.
|
|
87
|
-
|
|
88
|
-
### SSR error guards (`.astro` frontmatter)
|
|
89
|
-
|
|
90
|
-
**Every Wix SDK `await` in `.astro` frontmatter MUST be wrapped in try/catch with a safe fallback.** An uncaught throw during render aborts Astro's response stream mid-body — the browser sees HTML up to the failing await and no further (a home page rendering nav + blank body is the typical symptom).
|
|
91
|
-
|
|
92
|
-
```astro
|
|
93
|
-
---
|
|
94
|
-
let productList: any[] = [];
|
|
95
|
-
try {
|
|
96
|
-
const result = await productsV3.queryProducts({ fields: ["CURRENCY"] }).limit(50).find();
|
|
97
|
-
productList = result.items ?? [];
|
|
98
|
-
} catch (err) {
|
|
99
|
-
console.error("[products] listing query failed:", err);
|
|
100
|
-
}
|
|
101
|
-
---
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Safe fallbacks: an empty array, `Astro.redirect("/404")`, or a graceful placeholder. Never let an SDK error crash the page.
|
|
105
|
-
|
|
106
|
-
### Fire-and-forget analytics
|
|
107
|
-
|
|
108
|
-
**`trackEvent` calls MUST NOT throw up the call stack and MUST NOT block user-facing flow.** Analytics failures (blocked by adblock, network error, invalid payload) are acceptable; a broken cart add or product click handler is not. Import `trackEvent` from `../utils/analytics` and call it directly — the shared util swallows its own errors. Do not `await` it and do not wrap it in `try/await` expecting it to retry. If a component wraps analytics alongside a business-critical call, put the business call first:
|
|
109
|
-
|
|
110
|
-
```ts
|
|
111
|
-
await currentCart.addToCurrentCart({ … });
|
|
112
|
-
trackEvent("AddToCart", { … }); // fires after; can't break the cart if it fails
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Styling
|
|
116
|
-
|
|
117
|
-
The full styling contract (tokens-as-utilities default, when global semantic classes are appropriate, co-located styles for one-offs, the always-required class list) lives in `STYLING.md`. Read it before any `components` / `pages` work — it's the canonical source. Do not reinvent class names; do not duplicate rules across files.
|
|
118
|
-
|
|
119
|
-
## Style conventions
|
|
120
|
-
|
|
121
|
-
- **camelCase for identifiers, kebab-case for filenames, PascalCase for components.** Example: `ProductCard.astro`, `queryBlogPosts` function, `cart-updated` event.
|
|
122
|
-
- **No inline styles beyond design-token CSS variables.** `style={{ color: "red" }}` is forbidden; `style={{ color: "var(--color-accent)" }}` is fine.
|
|
123
|
-
- **Tailwind v4 `@reference` is mandatory in any scoped CSS that uses `@apply`.** Tailwind v4 isolates `@apply` per file — utilities defined in the main entry CSS (where `@theme` lives) are NOT visible to `components-*.css` unless that file prepends `@reference "./global.css";` on line 1. If your scope writes a `components-<vertical>.css` that uses `@apply` with theme tokens (e.g., `@apply gap-3 font-display text-sm`), the file MUST start with:
|
|
124
|
-
```css
|
|
125
|
-
@reference "./global.css";
|
|
126
|
-
```
|
|
127
|
-
Without it, the build breaks at release time with `Cannot apply unknown utility class 'gap-3' …` even though `tsc` and `astro check` pass clean — only the bundler catches it.
|
|
128
|
-
- **Fail loud, never silently.** If data is missing, a required field is absent, or an REST call returns an unexpected shape, return `status: "failed"` with details. Do not invent placeholders or swallow errors.
|
|
129
|
-
|
|
130
|
-
## Return contract
|
|
131
|
-
|
|
132
|
-
Every agent ends its message with a fenced JSON block per `RETURN_CONTRACT.md` (the universal envelope: skeleton, status semantics, no-trailing-prose rule). The JSON MUST be the last content in the message — no trailing prose. Timing fields are NOT included (the orchestrator captures timing via runtime `duration_ms`).
|
|
133
|
-
|
|
134
|
-
The `data` shapes for the scopes this file owns — `components` and `pages`/`pages-*` — are below. (Seed `data` shapes live in your per-vertical `INSTRUCTIONS.md` § Seed return.)
|
|
135
|
-
|
|
136
|
-
**`components` scope** (`phase: "<pack>-components"`):
|
|
137
|
-
|
|
138
|
-
```json
|
|
139
|
-
{
|
|
140
|
-
"status": "complete",
|
|
141
|
-
"phase": "stores-components",
|
|
142
|
-
"scope": "components",
|
|
143
|
-
"summary": "Wrote React islands + utils; wired analytics; contract classes referenced: 7",
|
|
144
|
-
"data": {
|
|
145
|
-
"islands": ["ProductPurchase.tsx", "CartView.tsx", "AddToCartButton.tsx", "CartBadge.tsx"],
|
|
146
|
-
"utils": ["wix-image.ts", "analytics.ts"],
|
|
147
|
-
"astroComponents": ["SeoTags.astro"]
|
|
148
|
-
},
|
|
149
|
-
"files": [
|
|
150
|
-
"src/utils/wix-image.ts",
|
|
151
|
-
"src/utils/analytics.ts",
|
|
152
|
-
"src/components/SeoTags.astro",
|
|
153
|
-
"src/components/AddToCartButton.tsx",
|
|
154
|
-
"src/components/CartBadge.tsx",
|
|
155
|
-
"src/components/ProductPurchase.tsx",
|
|
156
|
-
"src/components/CartView.tsx"
|
|
157
|
-
]
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
**`pages` / `pages-*` scope** (`phase: "<pack>-pages[-<group>]"`):
|
|
162
|
-
|
|
163
|
-
```json
|
|
164
|
-
{
|
|
165
|
-
"status": "complete",
|
|
166
|
-
"phase": "stores-pages-products",
|
|
167
|
-
"scope": "pages-products",
|
|
168
|
-
"data": {
|
|
169
|
-
"pagesWired": 2,
|
|
170
|
-
"wixMetadataExported": true,
|
|
171
|
-
"seoTagsMounted": true,
|
|
172
|
-
"analyticsEvents": ["AddProductImpression", "ClickProduct", "ViewContent"]
|
|
173
|
-
},
|
|
174
|
-
"files": [
|
|
175
|
-
"src/pages/products/index.astro",
|
|
176
|
-
"src/pages/products/[slug].astro",
|
|
177
|
-
"src/components/ProductCard.astro"
|
|
178
|
-
]
|
|
179
|
-
}
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
## Common failure modes
|
|
183
|
-
|
|
184
|
-
| Wrong | Right |
|
|
185
|
-
|---|---|
|
|
186
|
-
| Reading references for scopes **not** listed in your prompt | Read only the references for your declared scope(s) — the union when it's a merged build dispatch |
|
|
187
|
-
| Writing a page/route before the island it mounts (merged dispatch) | Write islands/components FIRST, then the pages — in the prompt's scope order |
|
|
188
|
-
| Issuing REST calls from a `components` or `pages` scope | Components/Pages are frontend-only; read `seeded` data from your `.wix/seeded.json` slice (pages only) — never curl |
|
|
189
|
-
| Re-querying when your `seeded.<vertical>` slice is missing from `.wix/seeded.json` | Fail fast with `SEEDED_JSON_SLICE_MISSING` — an upstream phase didn't complete (do NOT re-query) |
|
|
190
|
-
| Depending on mutable shared state the orchestrator holds in scratch | Every input is inlined; the one shared file you may read is your `.wix/seeded.json` slice (read-only) |
|
|
191
|
-
| Inventing class names for layout/spacing/typography (`.productCard`, `.heroSection`) | Tailwind utilities derived from `@theme` tokens (`class="flex flex-col gap-4"`, `class="py-24"`). For one-off page decoration, co-located `<style>` block. |
|
|
192
|
-
| Removing a marker after inserting at it | Marker stays; other verticals may contribute after you |
|
|
193
|
-
| Trailing narrative prose after the return JSON | JSON block must be the last content |
|
|
194
|
-
| Fabricated timestamps in the return JSON | Do not include timing fields — orchestrator captures them |
|
|
195
|
-
| Inline `style="color: red"` | Use design tokens: `style="color: var(--color-accent)"` |
|
|
196
|
-
| Creating a new cross-cutting class name | Extract a shared primitive component instead |
|
|
197
|
-
|
|
198
|
-
### Astro/React build-blockers — check before returning `complete`
|
|
199
|
-
|
|
200
|
-
| Failure | How to detect | Fix |
|
|
201
|
-
|---------|---------------|-----|
|
|
202
|
-
| HTML-style comments in `.astro` frontmatter | `grep '<!--' *.astro` frontmatter | Use `//` or `/* */` — frontmatter is TypeScript. Surfaces at build as `Legacy HTML single-line comments`. |
|
|
203
|
-
| Missing `wixMetadata` on `/products/[slug]` | Check exports | Add the metadata export — required for Wix platform indexing |
|
|
204
|
-
| `import { products }` instead of `productsV3` | `grep 'from "@wix/stores"'` import line | V1 silently returns 0 on V3 catalogs |
|
|
205
|
-
| Missing `variantId` in cart operations | Check `catalogReference.options` | Always include — single-variant products have one |
|
|
206
|
-
| React island using default Tailwind color class | `grep 'bg-blue-\|bg-green-\|text-red-\|bg-gray-' *.tsx` | Use brand `@theme` utilities (`bg-bark`, `text-cream`) or contract class names |
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# Production Sharp Edges
|
|
2
|
-
|
|
3
|
-
Use this reference when a Wix Headless run touches production release, SEO-controlled root files, favicon behavior, or multi-site orchestration.
|
|
4
|
-
|
|
5
|
-
## Release Retries
|
|
6
|
-
|
|
7
|
-
`wix release` can hit transient backend/network errors after upload or during publish. Known retryable signals include:
|
|
8
|
-
|
|
9
|
-
- `ECONNRESET`
|
|
10
|
-
- `ETIMEDOUT`
|
|
11
|
-
- `EAI_AGAIN`
|
|
12
|
-
- `STATE_MISMATCH`
|
|
13
|
-
- `temporary system error`
|
|
14
|
-
- `try again shortly`
|
|
15
|
-
|
|
16
|
-
The conductor's release step (the shared release tail, `BUILD.md` § "Shared release tail" — `BUILD-astro.md` § "Build & Release" for astro, `BUILD-own-build.md` § "Release" for no-build frameworks) retries these known transient release failures serially — up to 3× with `attempt * 5`s backoff. Do not retry build failures; TypeScript, Astro, missing import, and missing module failures are code issues that must be fixed before another release attempt.
|
|
17
|
-
|
|
18
|
-
For batch releases across many projects, prefer releasing failed sites one by one after the current deployment state settles. Parallel release is useful for throughput, but retry serially when Wix reports state-machine errors.
|
|
19
|
-
|
|
20
|
-
## Reserved Root Paths
|
|
21
|
-
|
|
22
|
-
Wix can intercept root paths before the Astro app serves them. Do not assume files in `public/` or root Astro routes will win for these URLs:
|
|
23
|
-
|
|
24
|
-
- `/robots.txt`
|
|
25
|
-
- `/llms.txt`
|
|
26
|
-
- `/favicon.svg`
|
|
27
|
-
|
|
28
|
-
### `robots.txt`
|
|
29
|
-
|
|
30
|
-
Use the Wix SEO robots REST endpoint instead of `public/robots.txt`:
|
|
31
|
-
|
|
32
|
-
```http
|
|
33
|
-
PUT https://www.wixapis.com/promote-seo-robots-server/v2/robots
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"robotsTxt": {
|
|
39
|
-
"content": "...",
|
|
40
|
-
"default": false,
|
|
41
|
-
"subdomain": "www"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
`default: true` resets to Wix's built-in robots file.
|
|
47
|
-
|
|
48
|
-
### `llms.txt`
|
|
49
|
-
|
|
50
|
-
Use the sibling Wix SEO endpoint instead of `public/llms.txt` or `src/pages/llms.txt.ts`:
|
|
51
|
-
|
|
52
|
-
```http
|
|
53
|
-
PUT https://www.wixapis.com/promote-seo-robots-server/v2/llms
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
```json
|
|
57
|
-
{
|
|
58
|
-
"llmsTxt": {
|
|
59
|
-
"content": "...",
|
|
60
|
-
"default": false,
|
|
61
|
-
"subdomain": "www"
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Do not use `default: true` for custom `llms.txt` — setting `default: true` returns `404` for custom `llms.txt` content.
|
|
67
|
-
|
|
68
|
-
Wix may mutate `llms.txt` content by:
|
|
69
|
-
|
|
70
|
-
- prepending an H1 from the site/business title
|
|
71
|
-
- wrapping the first submitted line as a tagline blockquote
|
|
72
|
-
- appending AI Agent Access and available MCP tools sections
|
|
73
|
-
|
|
74
|
-
Start custom content with the intended tagline, not another H1.
|
|
75
|
-
|
|
76
|
-
### Favicon
|
|
77
|
-
|
|
78
|
-
Wix may intercept `/favicon.svg`, even if the project has `public/favicon.svg` or `src/pages/favicon.svg.ts`.
|
|
79
|
-
|
|
80
|
-
When a run needs a custom favicon and no site-favicon API/CLI is available, embed the SVG directly in the document head:
|
|
81
|
-
|
|
82
|
-
```html
|
|
83
|
-
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,..." />
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Keep the source SVG in `public/favicon.svg` for repository readability, but do not use `/favicon.svg` as the browser-facing href unless a live fetch proves Wix is serving the project asset.
|
|
87
|
-
|
|
88
|
-
## Verification
|
|
89
|
-
|
|
90
|
-
For production checks, verify the final rendered HTML and edge-controlled files separately:
|
|
91
|
-
|
|
92
|
-
- For favicon: fetch the live page HTML and confirm the `<link rel="icon">` points to the expected data URI or supported favicon URL.
|
|
93
|
-
- For `robots.txt`: fetch `/robots.txt` after the REST update.
|
|
94
|
-
- For `llms.txt`: fetch `/llms.txt` after the REST update and account for Wix-injected sections.
|
|
95
|
-
- For custom domains: check both the Wix-hosted URL and custom domain when available, because domain propagation and redirects can differ.
|
|
96
|
-
|
|
97
|
-
Do not construct URLs by editing the release URL from memory. Use the exact release URL printed by the CLI or the configured custom domain.
|