@wix/agent-skills 1.0.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/LICENSE +21 -0
- package/README.md +111 -0
- package/package.json +29 -0
- package/skills/wix-app/SKILL.md +344 -0
- package/skills/wix-app/references/APP_IDENTIFIERS.md +35 -0
- package/skills/wix-app/references/APP_MARKET_REVIEW.md +311 -0
- package/skills/wix-app/references/APP_VALIDATION.md +171 -0
- package/skills/wix-app/references/BACKEND_API.md +233 -0
- package/skills/wix-app/references/BACKEND_EVENT.md +116 -0
- package/skills/wix-app/references/CODE_QUALITY.md +33 -0
- package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +587 -0
- package/skills/wix-app/references/DASHBOARD_MENU_PLUGIN.md +157 -0
- package/skills/wix-app/references/DASHBOARD_MODAL.md +283 -0
- package/skills/wix-app/references/DASHBOARD_PAGE.md +403 -0
- package/skills/wix-app/references/DASHBOARD_PLUGIN.md +205 -0
- package/skills/wix-app/references/DATA_COLLECTION.md +451 -0
- package/skills/wix-app/references/DOCUMENTATION.md +42 -0
- package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +65 -0
- package/skills/wix-app/references/EMBEDDED_SCRIPT.md +468 -0
- package/skills/wix-app/references/EXTENSION_REGISTRATION.md +96 -0
- package/skills/wix-app/references/SERVICE_PLUGIN.md +235 -0
- package/skills/wix-app/references/SITE_PLUGIN.md +436 -0
- package/skills/wix-app/references/STORES_VERSIONING.md +334 -0
- package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +84 -0
- package/skills/wix-app/references/custom-element-widget/SETTINGS_PANEL.md +345 -0
- package/skills/wix-app/references/dashboard-menu-plugin/blog-slots.md +71 -0
- package/skills/wix-app/references/dashboard-menu-plugin/bookings-slots.md +58 -0
- package/skills/wix-app/references/dashboard-menu-plugin/crm-slots.md +8 -0
- package/skills/wix-app/references/dashboard-menu-plugin/ecommerce-slots.md +17 -0
- package/skills/wix-app/references/dashboard-menu-plugin/events-slots.md +29 -0
- package/skills/wix-app/references/dashboard-menu-plugin/restaurants-slots.md +27 -0
- package/skills/wix-app/references/dashboard-menu-plugin/stores-slots.md +35 -0
- package/skills/wix-app/references/dashboard-page/API_SPEC.md +138 -0
- package/skills/wix-app/references/dashboard-page/DASHBOARD_API.md +573 -0
- package/skills/wix-app/references/dashboard-page/DYNAMIC_PARAMETERS.md +269 -0
- package/skills/wix-app/references/dashboard-page/ECOM_NAVIGATION.md +164 -0
- package/skills/wix-app/references/dashboard-plugin/SLOTS.md +294 -0
- package/skills/wix-app/references/data-collection/WIX_DATA.md +270 -0
- package/skills/wix-app/references/data-collection/extension-template.ts +107 -0
- package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +138 -0
- package/skills/wix-app/references/editor-react-component/COMPONENT-API.md +454 -0
- package/skills/wix-app/references/editor-react-component/COMPONENT-CONFIGURATION.md +165 -0
- package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +576 -0
- package/skills/wix-app/references/editor-react-component/DIRECTIONALITY.md +170 -0
- package/skills/wix-app/references/editor-react-component/EDIT-FLOW.md +6 -0
- package/skills/wix-app/references/editor-react-component/PARTS.md +25 -0
- package/skills/wix-app/references/editor-react-component/PROPS-VS-CSS.md +203 -0
- package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +167 -0
- package/skills/wix-app/references/editor-react-component/REACT-PATTERNS.md +137 -0
- package/skills/wix-app/references/service-plugin/ADDITIONAL-FEES.md +112 -0
- package/skills/wix-app/references/service-plugin/BOOKINGS-STAFF-SORTING.md +118 -0
- package/skills/wix-app/references/service-plugin/DISCOUNT-TRIGGERS.md +87 -0
- package/skills/wix-app/references/service-plugin/GIFT-CARDS.md +86 -0
- package/skills/wix-app/references/service-plugin/PAYMENT-SETTINGS.md +135 -0
- package/skills/wix-app/references/service-plugin/SHIPPING-RATES.md +79 -0
- package/skills/wix-app/references/service-plugin/VALIDATIONS.md +68 -0
- package/skills/wix-app/references/site-plugin/EXAMPLES.md +311 -0
- package/skills/wix-app/references/site-plugin/SLOTS.md +263 -0
- package/skills/wix-design-system/SKILL.md +129 -0
- package/skills/wix-design-system/references/file-structure.md +56 -0
- package/skills/wix-design-system/scripts/wds.cjs +531 -0
- package/skills/wix-headless/SKILL.md +418 -0
- package/skills/wix-headless/references/DISCOVERY.md +332 -0
- package/skills/wix-headless/references/ORCHESTRATION.md +269 -0
- package/skills/wix-headless/references/SETUP.md +154 -0
- package/skills/wix-headless/references/blog/BLOG_CONTENT.md +152 -0
- package/skills/wix-headless/references/blog/BLOG_PAGES.md +299 -0
- package/skills/wix-headless/references/blog/BLOG_SETUP.md +218 -0
- package/skills/wix-headless/references/blog/INSTRUCTIONS.md +32 -0
- package/skills/wix-headless/references/cms/CMS_FOUNDATIONS.md +373 -0
- package/skills/wix-headless/references/cms/FAQ_KNOWLEDGE_BASE.md +229 -0
- package/skills/wix-headless/references/cms/INSTRUCTIONS.md +40 -0
- package/skills/wix-headless/references/cms/PORTFOLIO.md +454 -0
- package/skills/wix-headless/references/cms/RESOURCE_LIBRARY.md +356 -0
- package/skills/wix-headless/references/cms/TEAM_DIRECTORY.md +299 -0
- package/skills/wix-headless/references/commands/install-app.md +42 -0
- package/skills/wix-headless/references/commands/known-apps.json +5 -0
- package/skills/wix-headless/references/commands/mcp-bootstrap.md +28 -0
- package/skills/wix-headless/references/designer/INSTRUCTIONS.md +828 -0
- package/skills/wix-headless/references/ecom/CART_PAGES.md +120 -0
- package/skills/wix-headless/references/ecom/CART_WIRING.md +103 -0
- package/skills/wix-headless/references/ecom/COMPONENTS_CSS.md +132 -0
- package/skills/wix-headless/references/ecom/INSTRUCTIONS.md +59 -0
- package/skills/wix-headless/references/forms/CONTACT_FORM.md +477 -0
- package/skills/wix-headless/references/forms/INSTRUCTIONS.md +43 -0
- package/skills/wix-headless/references/gift-cards/COMPONENTS.md +119 -0
- package/skills/wix-headless/references/gift-cards/INSTRUCTIONS.md +51 -0
- package/skills/wix-headless/references/gift-cards/PAGES.md +129 -0
- package/skills/wix-headless/references/images/INSTRUCTIONS.md +359 -0
- package/skills/wix-headless/references/shared/BUILD_NOISE.md +8 -0
- package/skills/wix-headless/references/shared/IMAGE_GENERATION.md +185 -0
- package/skills/wix-headless/references/shared/IMPLEMENTER.md +155 -0
- package/skills/wix-headless/references/shared/MCP_PREFIX.md +105 -0
- package/skills/wix-headless/references/shared/PRODUCTION_SHARP_EDGES.md +97 -0
- package/skills/wix-headless/references/shared/RETURN_CONTRACT.md +423 -0
- package/skills/wix-headless/references/shared/STYLING.md +117 -0
- package/skills/wix-headless/references/stores/BACK_IN_STOCK.md +178 -0
- package/skills/wix-headless/references/stores/CATEGORY_PAGES.md +86 -0
- package/skills/wix-headless/references/stores/COMPONENTS_CSS.md +129 -0
- package/skills/wix-headless/references/stores/HOME_AND_NAV.md +227 -0
- package/skills/wix-headless/references/stores/INSTRUCTIONS.md +96 -0
- package/skills/wix-headless/references/stores/PRODUCT_CATALOG_DATA.md +249 -0
- package/skills/wix-headless/references/stores/PRODUCT_PAGES.md +213 -0
- package/skills/wix-headless/references/stores/SHARED_WIRING.md +164 -0
- package/skills/wix-headless/references/verticals/_schema.json +160 -0
- package/skills/wix-headless/references/verticals/_schema.md +185 -0
- package/skills/wix-headless/references/verticals/blog.md +125 -0
- package/skills/wix-headless/references/verticals/cms.md +121 -0
- package/skills/wix-headless/references/verticals/ecom.md +96 -0
- package/skills/wix-headless/references/verticals/forms.md +106 -0
- package/skills/wix-headless/references/verticals/gift-cards.md +121 -0
- package/skills/wix-headless/references/verticals/stores.md +167 -0
- package/skills/wix-headless/scripts/check-manifest.mjs +198 -0
- package/skills/wix-headless/scripts/copy-utility-templates.mjs +153 -0
- package/skills/wix-headless/scripts/emit-design-tokens.mjs +77 -0
- package/skills/wix-headless/scripts/finalize-run-json.mjs +141 -0
- package/skills/wix-headless/scripts/init-site-json.mjs +63 -0
- package/skills/wix-headless/scripts/patch-decorative-slots.mjs +124 -0
- package/skills/wix-headless/scripts/plan-entity-image-waves.mjs +190 -0
- package/skills/wix-headless/scripts/preview.sh +45 -0
- package/skills/wix-headless/scripts/release.sh +73 -0
- package/skills/wix-headless/scripts/scaffold.sh +53 -0
- package/skills/wix-headless/scripts/seed-utilities.sh +55 -0
- package/skills/wix-headless/shared-utilities/analytics.ts +40 -0
- package/skills/wix-headless/shared-utilities/ricos.ts +179 -0
- package/skills/wix-headless/shared-utilities/wix-image.ts +72 -0
- package/skills/wix-headless/templates/ecom/CartBadge.tsx +84 -0
- package/skills/wix-headless/templates/ecom/CartView.tsx +543 -0
- package/skills/wix-headless/templates/ecom/cart.astro +13 -0
- package/skills/wix-headless/templates/ecom/components-ecom.css +215 -0
- package/skills/wix-headless/templates/ecom/discounts.ts +71 -0
- package/skills/wix-headless/templates/ecom/thank-you.astro +24 -0
- package/skills/wix-headless/templates/gift-cards/GiftCardPurchase.tsx +172 -0
- package/skills/wix-headless/templates/gift-cards/_home-teaser-snippet.astro +42 -0
- package/skills/wix-headless/templates/gift-cards/_nav-snippet.astro +11 -0
- package/skills/wix-headless/templates/gift-cards/components-gift-cards.css +219 -0
- package/skills/wix-headless/templates/gift-cards/gift-cards.astro +51 -0
- package/skills/wix-headless/templates/gift-cards/gift-cards.ts +75 -0
- package/skills/wix-headless/templates/stores/AddToCartButton.tsx +77 -0
- package/skills/wix-headless/templates/stores/BackInStockForm.tsx +176 -0
- package/skills/wix-headless/templates/stores/CategoryRail.astro +69 -0
- package/skills/wix-headless/templates/stores/ProductCard.astro +79 -0
- package/skills/wix-headless/templates/stores/ProductPurchase.tsx +397 -0
- package/skills/wix-headless/templates/stores/SeoTags.astro +21 -0
- package/skills/wix-headless/templates/stores/back-in-stock.ts +67 -0
- package/skills/wix-headless/templates/stores/categories.ts +155 -0
- package/skills/wix-headless/templates/stores/category/[slug].astro +130 -0
- package/skills/wix-headless/templates/stores/components-stores.css +295 -0
- package/skills/wix-headless/templates/stores/products/[slug].astro +128 -0
- package/skills/wix-headless/templates/stores/products/index.astro +101 -0
- package/skills/wix-manage/SKILL.md +280 -0
- package/skills/wix-manage/references/app-installation/install-wix-apps.md +155 -0
- package/skills/wix-manage/references/app-installation/list-installed-apps.md +124 -0
- package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +226 -0
- package/skills/wix-manage/references/bookings/booking-service-policy-setup.md +95 -0
- package/skills/wix-manage/references/bookings/booking-system-integration-gaps.md +416 -0
- package/skills/wix-manage/references/bookings/bookings-staff-setup.md +255 -0
- package/skills/wix-manage/references/bookings/create-and-update-booking-services.md +462 -0
- package/skills/wix-manage/references/bookings/end-to-end-booking-flow.md +278 -0
- package/skills/wix-manage/references/bookings/external-calendar-integration.md +258 -0
- package/skills/wix-manage/references/bookings/multi-resource-service-creation.md +231 -0
- package/skills/wix-manage/references/calendar/configure-default-business-hours.md +226 -0
- package/skills/wix-manage/references/cms/cms-data-items-crud.md +422 -0
- package/skills/wix-manage/references/cms/cms-data-operations-extended.md +263 -0
- package/skills/wix-manage/references/cms/cms-ecommerce-catalog-integration.md +136 -0
- package/skills/wix-manage/references/cms/cms-references-and-relationships.md +160 -0
- package/skills/wix-manage/references/cms/cms-schema-management.md +143 -0
- package/skills/wix-manage/references/contacts/bulk-delete-contacts.md +73 -0
- package/skills/wix-manage/references/contacts/bulk-label-and-unlabel-contacts.md +67 -0
- package/skills/wix-manage/references/domains/domain-search-and-purchase.md +434 -0
- package/skills/wix-manage/references/ecommerce/api-recommendation-tracking.md +420 -0
- package/skills/wix-manage/references/ecommerce/flow-add-free-shipping.md +267 -0
- package/skills/wix-manage/references/ecommerce/flow-bundle-and-save.md +290 -0
- package/skills/wix-manage/references/ecommerce/flow-fix-coverage-gaps.md +300 -0
- package/skills/wix-manage/references/ecommerce/flow-optimize-shipping-rates.md +364 -0
- package/skills/wix-manage/references/ecommerce/flow-seasonal-promotion.md +315 -0
- package/skills/wix-manage/references/ecommerce/flow-stock-mover.md +308 -0
- package/skills/wix-manage/references/ecommerce/flow-upsell-boost.md +271 -0
- package/skills/wix-manage/references/ecommerce/goal-clear-inventory.md +118 -0
- package/skills/wix-manage/references/ecommerce/goal-drive-cross-sells.md +122 -0
- package/skills/wix-manage/references/ecommerce/goal-increase-aov.md +132 -0
- package/skills/wix-manage/references/ecommerce/goal-reduce-cart-abandonment.md +148 -0
- package/skills/wix-manage/references/ecommerce/goal-seasonal-revenue.md +146 -0
- package/skills/wix-manage/references/ecommerce/guardrail-discount-conflicts.md +118 -0
- package/skills/wix-manage/references/ecommerce/guardrail-margin-protection.md +88 -0
- package/skills/wix-manage/references/ecommerce/guardrail-rate-pricing-sanity.md +108 -0
- package/skills/wix-manage/references/ecommerce/guardrail-shipping-health.md +124 -0
- package/skills/wix-manage/references/ecommerce/recipe-apply-shipping-recommendations.md +299 -0
- package/skills/wix-manage/references/ecommerce/recommend-ecommerce-strategy.md +582 -0
- package/skills/wix-manage/references/ecommerce/setup-coupons.md +338 -0
- package/skills/wix-manage/references/ecommerce/setup-discount-rules.md +444 -0
- package/skills/wix-manage/references/ecommerce/setup-shipping-rates.md +86 -0
- package/skills/wix-manage/references/ecommerce/setup-shipping-regions.md +56 -0
- package/skills/wix-manage/references/ecommerce/setup-store-pickup-location.md +209 -0
- package/skills/wix-manage/references/ecommerce/skill-graph.md +139 -0
- package/skills/wix-manage/references/ecommerce/troubleshoot-checkout-delivery-dropoff.md +124 -0
- package/skills/wix-manage/references/ecommerce/troubleshoot-discount-not-applying.md +95 -0
- package/skills/wix-manage/references/events/list-events.md +203 -0
- package/skills/wix-manage/references/forms/create-form.md +260 -0
- package/skills/wix-manage/references/get-paid/create-payment-links.md +212 -0
- package/skills/wix-manage/references/get-paid/how-to-setup-wix-payments.md +57 -0
- package/skills/wix-manage/references/get-paid/payment-links-for-bookings.md +101 -0
- package/skills/wix-manage/references/media/upload-media-to-wix.md +216 -0
- package/skills/wix-manage/references/pricing-plans/create-and-update-pricing-plans.md +77 -0
- package/skills/wix-manage/references/pricing-plans/pricing-plans-bookings-integration.md +166 -0
- package/skills/wix-manage/references/restaurants/wix-restaurants-setup.md +336 -0
- package/skills/wix-manage/references/rich-content/ricos-converter-service.md +295 -0
- package/skills/wix-manage/references/site-properties/change-payment-currency-site-properties.md +59 -0
- package/skills/wix-manage/references/sites/create-site-from-template.md +183 -0
- package/skills/wix-manage/references/sites/query-sites.md +125 -0
- package/skills/wix-manage/references/stores/add-store-pages-to-site.md +57 -0
- package/skills/wix-manage/references/stores/bulk-create-products-with-options.md +1041 -0
- package/skills/wix-manage/references/stores/create-product-catalog-v1.md +125 -0
- package/skills/wix-manage/references/stores/create-product-from-image.md +824 -0
- package/skills/wix-manage/references/stores/create-product-with-options-catalog-v3.md +566 -0
- package/skills/wix-manage/references/stores/find-products-query-and-search-catalog-v3.md +194 -0
- package/skills/wix-manage/references/stores/query-products-catalog-v1.md +80 -0
- package/skills/wix-manage/references/stores/setup-online-store-catalog-v3.md +99 -0
- package/skills/wix-manage/references/stores/update-product-pre-order.md +213 -0
- package/skills/wix-manage/references/stores/update-product-with-options.md +318 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cms
|
|
3
|
+
triggers: [] # not trigger-based — always loaded
|
|
4
|
+
description: "Content pages — About + FAQ managed via Wix CMS"
|
|
5
|
+
|
|
6
|
+
features:
|
|
7
|
+
- name: "About (CMS-based)"
|
|
8
|
+
description: "Tell your brand story with images and rich text. Editable from the Wix dashboard's Content Manager."
|
|
9
|
+
- name: "FAQ (CMS-based)"
|
|
10
|
+
description: "Common questions and answers about your products. Managed from the dashboard's Content Manager."
|
|
11
|
+
|
|
12
|
+
apps: [] # CMS is built-in, no app install
|
|
13
|
+
|
|
14
|
+
packages:
|
|
15
|
+
- "@wix/data"
|
|
16
|
+
- "@wix/wix-data-items-sdk" # provides the `items` namespace (query/insert/etc.). @wix/data 1.0.448 stopped re-exporting it; pages import from here directly. See references/cms/CMS_FOUNDATIONS.md.
|
|
17
|
+
- "@wix/essentials"
|
|
18
|
+
|
|
19
|
+
routes:
|
|
20
|
+
- route: "/"
|
|
21
|
+
- route: "/about"
|
|
22
|
+
- route: "/faq"
|
|
23
|
+
|
|
24
|
+
cmsCollections:
|
|
25
|
+
- name: "about-content"
|
|
26
|
+
fields:
|
|
27
|
+
- { name: "heading", type: "string", required: true }
|
|
28
|
+
- { name: "body", type: "rich-text", required: true }
|
|
29
|
+
- { name: "image", type: "image", required: false }
|
|
30
|
+
- name: "faq"
|
|
31
|
+
fields:
|
|
32
|
+
- { name: "question", type: "string", required: true }
|
|
33
|
+
- { name: "answer", type: "rich-text", required: true }
|
|
34
|
+
- { name: "sortOrder", type: "number", required: true }
|
|
35
|
+
|
|
36
|
+
seed:
|
|
37
|
+
agentLocation: "references/cms/"
|
|
38
|
+
scope: "seed"
|
|
39
|
+
description: "Create about-content + faq collections, seed 1 about-content item and 4–6 contextual FAQ items based on the business type"
|
|
40
|
+
references: ["references/cms/CMS_FOUNDATIONS.md"]
|
|
41
|
+
|
|
42
|
+
# CMS has no "components" — page designers write CMS-reading pages directly using
|
|
43
|
+
# @wix/data queries inline. So the only post-design work is the pages scope below.
|
|
44
|
+
components: null
|
|
45
|
+
|
|
46
|
+
pages:
|
|
47
|
+
- name: "cms-pages"
|
|
48
|
+
agentLocation: "references/cms/"
|
|
49
|
+
scope: "pages"
|
|
50
|
+
description: "Swap placeholder copy in About + FAQ pages for live @wix/data queries"
|
|
51
|
+
references: ["references/cms/CMS_FOUNDATIONS.md"]
|
|
52
|
+
files:
|
|
53
|
+
- "src/pages/about.astro"
|
|
54
|
+
- "src/pages/faq.astro"
|
|
55
|
+
|
|
56
|
+
creates:
|
|
57
|
+
- { file: src/pages/about.astro, phase: pages }
|
|
58
|
+
- { file: src/pages/faq.astro, phase: pages }
|
|
59
|
+
|
|
60
|
+
# CMS does NOT contribute to the home page. The designer owns the brand-story
|
|
61
|
+
# section directly (writes its own placeholder heading/paragraph). Historically
|
|
62
|
+
# this pack declared a home:cms marker but no phase patched it, so the
|
|
63
|
+
# designer's placeholder copy shipped as-is to preview. Dropping the marker
|
|
64
|
+
# makes that behavior explicit.
|
|
65
|
+
contributes: []
|
|
66
|
+
|
|
67
|
+
include: true # always loaded — every site gets About + FAQ content pages
|
|
68
|
+
disabled: false
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
# CMS Pack
|
|
72
|
+
|
|
73
|
+
Always loaded. Provides content pages (Home, About, FAQ) editable from the Wix dashboard's Content Manager.
|
|
74
|
+
|
|
75
|
+
## Why always-include
|
|
76
|
+
|
|
77
|
+
Every site needs About and FAQ content. The CMS collections give the user a dashboard-editable surface, so non-technical owners can update copy without touching code.
|
|
78
|
+
|
|
79
|
+
## Pages
|
|
80
|
+
|
|
81
|
+
- **Home** (`/`) — designed by `designer-home`. The designer writes the brand-story section directly (no CMS-driven home contribution; see `contributes: []` in frontmatter above for why).
|
|
82
|
+
- **About** (`/about`) — content from `about-content` CMS collection
|
|
83
|
+
- **FAQ** (`/faq`) — content from `faq` CMS collection
|
|
84
|
+
|
|
85
|
+
## Phase 1
|
|
86
|
+
|
|
87
|
+
One agent creates both collections and seeds them:
|
|
88
|
+
- `about-content` — one item (heading, body, optional image) with placeholder copy based on business context
|
|
89
|
+
- `faq` — 4–6 items tailored to the business type (e.g., shipping, returns, sizing, care instructions)
|
|
90
|
+
|
|
91
|
+
The agent tailors FAQ content to the vertical. For stores: shipping/returns/sizing. For future verticals: different sets.
|
|
92
|
+
|
|
93
|
+
## Phase 2 pattern
|
|
94
|
+
|
|
95
|
+
About and FAQ pages read their CMS content inline via `@wix/data`:
|
|
96
|
+
|
|
97
|
+
```astro
|
|
98
|
+
---
|
|
99
|
+
import * as items from "@wix/wix-data-items-sdk";
|
|
100
|
+
const faqs = await items
|
|
101
|
+
.query("faq")
|
|
102
|
+
.ascending("sortOrder")
|
|
103
|
+
.find()
|
|
104
|
+
.then(r => r.items);
|
|
105
|
+
---
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
> **Why not `import { items } from "@wix/data"`?** That's the documented Wix headless pattern but `@wix/data` 1.0.448 dropped the `items` re-export — only sub-namespaces (`backups`, `collections`, `permissions`, …) remain, and the documented form fails the build with `'items' is not exported by '@wix/data'`. The actual `items` API lives in `@wix/wix-data-items-sdk` (which `@wix/data` depends on transitively). Importing from there directly works on every current `@wix/data` version.
|
|
109
|
+
|
|
110
|
+
No React islands required for static content pages — they SSR from data.
|
|
111
|
+
|
|
112
|
+
## Contract
|
|
113
|
+
|
|
114
|
+
This pack contributes contract keys for content-page class names. Other packs do not typically overlap with these keys.
|
|
115
|
+
|
|
116
|
+
The home page's `heroSection` and `brandStory` keys are consumed by `designer-home`, which composes the home page from every loaded pack's `homeSection` snippet.
|
|
117
|
+
|
|
118
|
+
## References
|
|
119
|
+
|
|
120
|
+
- `references/cms/CMS_FOUNDATIONS.md` — existing CMS reference (data seeding + page wiring)
|
|
121
|
+
- `references/cms/FAQ_KNOWLEDGE_BASE.md` — FAQ patterns
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ecom
|
|
3
|
+
triggers: [] # Never triggered independently — co-loaded by packs that require it (stores, bookings, etc.)
|
|
4
|
+
description: "Vertical-agnostic ecommerce: cart page, checkout redirect, order confirmation"
|
|
5
|
+
|
|
6
|
+
features:
|
|
7
|
+
- name: "Cart & checkout"
|
|
8
|
+
description: "Add items to cart, review order, check out via Wix's secure hosted checkout. Order confirmation on thank-you page."
|
|
9
|
+
|
|
10
|
+
apps: [] # No app to install — @wix/ecom works with any installed catalog app
|
|
11
|
+
|
|
12
|
+
packages:
|
|
13
|
+
- "@wix/ecom"
|
|
14
|
+
- "@wix/redirects"
|
|
15
|
+
- "@wix/site"
|
|
16
|
+
- "@wix/essentials" # auth.elevate() in src/utils/discounts.ts — ECOM.DISCOUNT_RULES_READ
|
|
17
|
+
|
|
18
|
+
routes:
|
|
19
|
+
- route: "/cart"
|
|
20
|
+
- route: "/thank-you"
|
|
21
|
+
- route: "Hosted by Wix" # Wix-hosted endpoint — no .astro file. Listed so the discovery plan's Section C table includes a Checkout row (omitting it created user anxiety in the 2026 dolls-store run; the cart appeared to "go nowhere"). The route cell renders the literal string "Hosted by Wix".
|
|
22
|
+
name: "Checkout"
|
|
23
|
+
|
|
24
|
+
cmsCollections: []
|
|
25
|
+
|
|
26
|
+
seed: null # No data seeding — ecom has no data of its own
|
|
27
|
+
|
|
28
|
+
components:
|
|
29
|
+
agentLocation: "references/ecom/"
|
|
30
|
+
scope: "components"
|
|
31
|
+
description: "Cart/checkout React islands. CSS is split into the sibling componentsCss scope."
|
|
32
|
+
references: ["references/ecom/CART_WIRING.md"]
|
|
33
|
+
files:
|
|
34
|
+
- "src/components/CartView.tsx"
|
|
35
|
+
- "src/components/CartBadge.tsx"
|
|
36
|
+
- "src/utils/discounts.ts"
|
|
37
|
+
|
|
38
|
+
componentsCss:
|
|
39
|
+
agentLocation: "references/ecom/"
|
|
40
|
+
scope: "components-css"
|
|
41
|
+
description: "Scoped ecom CSS — components-ecom.css. Runs in parallel with the components scope; reads design tokens + global.css (for leak audit) but no SDK templates. Independent of TSX work because TSX/CSS link is build-time via class names."
|
|
42
|
+
references:
|
|
43
|
+
- "references/ecom/COMPONENTS_CSS.md"
|
|
44
|
+
files:
|
|
45
|
+
- "src/styles/components-ecom.css"
|
|
46
|
+
|
|
47
|
+
pages:
|
|
48
|
+
- name: "ecom-pages"
|
|
49
|
+
agentLocation: "references/ecom/"
|
|
50
|
+
scope: "pages"
|
|
51
|
+
description: "Mount CartView on cart.astro, wire thank-you.astro, mount CartBadge in Navigation"
|
|
52
|
+
references: ["references/ecom/CART_PAGES.md"]
|
|
53
|
+
files:
|
|
54
|
+
- "src/pages/cart.astro"
|
|
55
|
+
- "src/pages/thank-you.astro"
|
|
56
|
+
- "src/components/Navigation.astro (patch — CartBadge mount only)"
|
|
57
|
+
|
|
58
|
+
creates:
|
|
59
|
+
- { file: src/components/CartView.tsx, phase: components }
|
|
60
|
+
- { file: src/components/CartBadge.tsx, phase: components }
|
|
61
|
+
- { file: src/styles/components-ecom.css, phase: components }
|
|
62
|
+
- { file: src/utils/discounts.ts, phase: components }
|
|
63
|
+
- { file: src/pages/cart.astro, phase: pages }
|
|
64
|
+
- { file: src/pages/thank-you.astro, phase: pages }
|
|
65
|
+
|
|
66
|
+
contributes:
|
|
67
|
+
- file: src/components/Navigation.astro
|
|
68
|
+
marker: "<!-- nav:actions -->"
|
|
69
|
+
description: "CartBadge mount point in the nav actions area"
|
|
70
|
+
|
|
71
|
+
include: false
|
|
72
|
+
disabled: false
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
# Ecom Pack
|
|
76
|
+
|
|
77
|
+
Vertical-agnostic ecommerce cart, checkout, and order confirmation. Co-loaded by any pack that needs cart/checkout (stores, bookings, events) via the `requires` field.
|
|
78
|
+
|
|
79
|
+
## Why separate from stores
|
|
80
|
+
|
|
81
|
+
The cart page works with any catalog provider — `@wix/ecom`'s `currentCart` API returns line items with all the display data (name, image, options, availability, price) regardless of which app added the item. CartView, CartBadge, and the checkout flow have zero dependency on `@wix/stores`.
|
|
82
|
+
|
|
83
|
+
Separating ecom from stores:
|
|
84
|
+
- Enables future verticals (bookings, events) to reuse cart/checkout without pulling in the stores agent
|
|
85
|
+
- Clarifies ownership boundaries — stores owns the catalog, ecom owns the purchase flow
|
|
86
|
+
- Reduces the stores agent's scope and context window usage
|
|
87
|
+
|
|
88
|
+
## Cross-agent event contract
|
|
89
|
+
|
|
90
|
+
`cart-updated` CustomEvent on `window`:
|
|
91
|
+
- **Dispatchers:** AddToCartButton (stores), CartView (ecom)
|
|
92
|
+
- **Listener:** CartBadge (ecom)
|
|
93
|
+
|
|
94
|
+
## Template files
|
|
95
|
+
|
|
96
|
+
The `ecom-shared` scope uses real template files at `templates/ecom/` instead of inline markdown code. The agent reads each template, adapts CSS class names to the styling contract, and writes to the project. This reduces markdown size and ensures the agent copies proven code rather than improvising.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: forms
|
|
3
|
+
triggers: ["contact form", "lead form", "signup form", "waitlist", "registration", "get in touch", "inquiry", "feedback"]
|
|
4
|
+
description: "Forms — contact, lead capture, or newsletter signup with CRM integration"
|
|
5
|
+
|
|
6
|
+
features:
|
|
7
|
+
- name: "Contact form"
|
|
8
|
+
description: "Dynamic form powered by @wix/forms with server-side schema discovery and client-side submission. Submissions create CRM contacts automatically."
|
|
9
|
+
|
|
10
|
+
apps:
|
|
11
|
+
- name: "Wix Forms"
|
|
12
|
+
appDefId: "225dd912-7dea-4738-8688-4b8c6955ffc2"
|
|
13
|
+
|
|
14
|
+
packages:
|
|
15
|
+
- "@wix/forms"
|
|
16
|
+
- "@wix/essentials"
|
|
17
|
+
|
|
18
|
+
routes:
|
|
19
|
+
- route: "/contact"
|
|
20
|
+
|
|
21
|
+
cmsCollections: []
|
|
22
|
+
|
|
23
|
+
seed:
|
|
24
|
+
agentLocation: "references/forms/"
|
|
25
|
+
scope: "seed"
|
|
26
|
+
description: "Install Forms app, create form with fields matching business purpose, PATCH postSubmissionTriggers for CRM contact creation"
|
|
27
|
+
references: ["references/forms/CONTACT_FORM.md"]
|
|
28
|
+
|
|
29
|
+
components:
|
|
30
|
+
agentLocation: "references/forms/"
|
|
31
|
+
scope: "components"
|
|
32
|
+
description: "ContactForm.tsx React island for client-side form submission with dynamic field rendering and validation"
|
|
33
|
+
references: ["references/forms/CONTACT_FORM.md"]
|
|
34
|
+
files:
|
|
35
|
+
- "src/components/ContactForm.tsx"
|
|
36
|
+
|
|
37
|
+
pages:
|
|
38
|
+
- name: "contact-page"
|
|
39
|
+
agentLocation: "references/forms/"
|
|
40
|
+
scope: "pages"
|
|
41
|
+
description: "Wire designed contact.astro page to @wix/forms SDK — add form discovery query, replace placeholder with ContactForm island, migrate styles"
|
|
42
|
+
references: ["references/forms/CONTACT_FORM.md"]
|
|
43
|
+
files:
|
|
44
|
+
- "src/pages/contact.astro"
|
|
45
|
+
|
|
46
|
+
creates:
|
|
47
|
+
- { file: src/components/ContactForm.tsx, phase: components }
|
|
48
|
+
- { file: src/pages/contact.astro, phase: pages }
|
|
49
|
+
|
|
50
|
+
contributes:
|
|
51
|
+
- file: src/pages/index.astro
|
|
52
|
+
marker: "<!-- home:forms -->"
|
|
53
|
+
description: "Contact CTA (heading + one-liner + button linking to /contact)"
|
|
54
|
+
- file: src/components/Navigation.astro
|
|
55
|
+
marker: "<!-- nav:links -->"
|
|
56
|
+
description: "Contact menu link → /contact"
|
|
57
|
+
|
|
58
|
+
include: false
|
|
59
|
+
disabled: false
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
# Forms Pack
|
|
63
|
+
|
|
64
|
+
Contact, lead capture, and signup forms with CRM integration. Loaded when the user's prompt mentions forms, contact pages, inquiries, or signups.
|
|
65
|
+
|
|
66
|
+
## Phase decomposition
|
|
67
|
+
|
|
68
|
+
| Scope | Phase | Files | Depends on |
|
|
69
|
+
|-------|-------|-------|------------|
|
|
70
|
+
| `seed` | Phase 1 — Step 3 (bg) | None (MCP only) | MCP connection |
|
|
71
|
+
| `components` | Phase 3 — Step 4.5 (bg) | ContactForm.tsx | Styling contract |
|
|
72
|
+
| `contact-page` | Phase 4 — Step 7 (bg) | contact.astro | Phase 2 Design System + Phase 1 Seed formId |
|
|
73
|
+
|
|
74
|
+
All three scopes reference the same `CONTACT_FORM.md` file — it covers MCP form setup, React island implementation, and page wiring in one document. The agent's scope parameter guides it to the correct section.
|
|
75
|
+
|
|
76
|
+
## Known failure modes (propagate to agent prompts)
|
|
77
|
+
|
|
78
|
+
| Wrong | Right |
|
|
79
|
+
|-------|-------|
|
|
80
|
+
| Skip `postSubmissionTriggers` PATCH after form creation | Always PATCH — the POST silently drops triggers; without them, submissions are silently lost (no CRM Contact created) |
|
|
81
|
+
| Include triggers in POST body and assume it worked | POST silently drops `postSubmissionTriggers` — always follow up with PATCH |
|
|
82
|
+
| Fall back to hardcoded fields on `UNSUPPORTED_FORM_NAMESPACE` | Wait 10s and retry up to 3 times — namespace propagation delay after Forms app install |
|
|
83
|
+
| Skip `auth.elevate` when listing forms | `listForms` requires elevated permissions |
|
|
84
|
+
| Submit forms from server-side code | Form submission must happen client-side (React island with `client:load`) |
|
|
85
|
+
| Replace `.astro` placeholder without migrating styles | Copy the placeholder's `<style is:global>` block to the page — styles vanish when the Astro import is replaced with React |
|
|
86
|
+
| Detect textarea by `componentType === "TEXT_AREA"` | Check `identifier === "TEXT_AREA"` or `target === "message"` — the API rejects `TEXT_AREA` as a componentType value |
|
|
87
|
+
| Hardcode form field IDs or form ID | Use `forms.listForms("wix.form_app.form")` with `auth.elevate` for runtime discovery |
|
|
88
|
+
|
|
89
|
+
## Form purpose variants
|
|
90
|
+
|
|
91
|
+
The forms agent adapts field selection based on the business purpose from the functional plan:
|
|
92
|
+
|
|
93
|
+
| Purpose | Fields | Layout |
|
|
94
|
+
|---------|--------|--------|
|
|
95
|
+
| Waitlist / newsletter | EMAIL + SUBMIT | Single column |
|
|
96
|
+
| Lead capture | FIRST_NAME + EMAIL + SUBMIT | Single column |
|
|
97
|
+
| Contact (full) | FIRST_NAME + LAST_NAME + EMAIL + PHONE + MESSAGE + SUBMIT | First+last side-by-side, rest stacked |
|
|
98
|
+
| Registration | FIRST_NAME + LAST_NAME + EMAIL + custom | Single column |
|
|
99
|
+
|
|
100
|
+
## Images
|
|
101
|
+
|
|
102
|
+
Forms has no entity images. The contact page gets decorative images via `image-phase-1-decorative` if the image agent is running.
|
|
103
|
+
|
|
104
|
+
## References
|
|
105
|
+
|
|
106
|
+
- `references/forms/CONTACT_FORM.md` — All phases: MCP form setup, field building blocks, React island, page wiring, form schema types
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gift-cards
|
|
3
|
+
triggers: [] # Never triggered independently — co-loaded by packs that include a storefront (stores) via the `requires` field
|
|
4
|
+
description: "Conditional gift-card buy page + nav/home contributions. Detects the Wix Gift Card app at runtime; renders only when installed."
|
|
5
|
+
requires: ["ecom"] # buy flow uses currentCart.addToCurrentCart
|
|
6
|
+
|
|
7
|
+
features:
|
|
8
|
+
- name: "Gift cards (when enabled in dashboard)"
|
|
9
|
+
description: "Customers buy preset-amount gift cards on a dedicated page. Wix issues redeemable codes after payment and emails the recipient. The page, nav link, and home teaser only appear once the Wix Gift Card app is enabled in the dashboard — no rebuild needed."
|
|
10
|
+
|
|
11
|
+
apps: [] # do NOT auto-install; the user opts in via Catalog → Gift Cards in the dashboard
|
|
12
|
+
|
|
13
|
+
packages:
|
|
14
|
+
- "@wix/ecom" # currentCart.addToCurrentCart
|
|
15
|
+
- "@wix/essentials" # httpClient.fetchWithAuth (REST probe)
|
|
16
|
+
|
|
17
|
+
routes:
|
|
18
|
+
- route: "/gift-cards"
|
|
19
|
+
|
|
20
|
+
cmsCollections: []
|
|
21
|
+
|
|
22
|
+
seed: null # the dashboard's eGift Card template is the source of truth — never seed denominations from code
|
|
23
|
+
|
|
24
|
+
components:
|
|
25
|
+
agentLocation: "references/gift-cards/"
|
|
26
|
+
scope: "components"
|
|
27
|
+
description: "Runtime probe util + GiftCardPurchase React island + scoped CSS"
|
|
28
|
+
references: ["references/gift-cards/COMPONENTS.md"]
|
|
29
|
+
files:
|
|
30
|
+
- "src/utils/gift-cards.ts"
|
|
31
|
+
- "src/components/GiftCardPurchase.tsx"
|
|
32
|
+
- "src/styles/components-gift-cards.css"
|
|
33
|
+
|
|
34
|
+
pages:
|
|
35
|
+
- name: "gift-cards-pages"
|
|
36
|
+
agentLocation: "references/gift-cards/"
|
|
37
|
+
scope: "pages"
|
|
38
|
+
description: "Write /gift-cards landing page (redirects when app is disabled), patch nav link + home teaser via markers"
|
|
39
|
+
references: ["references/gift-cards/PAGES.md"]
|
|
40
|
+
files:
|
|
41
|
+
- "src/pages/gift-cards.astro"
|
|
42
|
+
- "src/components/Navigation.astro (patch — gift-cards link)"
|
|
43
|
+
- "src/pages/index.astro (patch — gift-cards teaser)"
|
|
44
|
+
|
|
45
|
+
creates:
|
|
46
|
+
- { file: src/utils/gift-cards.ts, phase: components }
|
|
47
|
+
- { file: src/components/GiftCardPurchase.tsx, phase: components }
|
|
48
|
+
- { file: src/styles/components-gift-cards.css, phase: components }
|
|
49
|
+
- { file: src/pages/gift-cards.astro, phase: pages }
|
|
50
|
+
|
|
51
|
+
contributes:
|
|
52
|
+
- file: src/components/Navigation.astro
|
|
53
|
+
marker: "<!-- nav:links -->"
|
|
54
|
+
description: "Gift Cards link → /gift-cards (rendered only when getGiftCardProduct() returns non-null)"
|
|
55
|
+
- file: src/pages/index.astro
|
|
56
|
+
marker: "<!-- home:gift-cards -->"
|
|
57
|
+
description: "Home teaser block (image + lede + CTA), gated on getGiftCardProduct() so it disappears when the app is disabled"
|
|
58
|
+
|
|
59
|
+
include: false
|
|
60
|
+
|
|
61
|
+
# disabled: true → the pack ships its code (page file, nav/home contributions),
|
|
62
|
+
# but its surfaces are inactive by default. They light up only when the user
|
|
63
|
+
# enables the matching app from the Wix dashboard, which the runtime probe in
|
|
64
|
+
# `gift-cards.ts` detects per request. DISCOVERY.md plan composition (Sections
|
|
65
|
+
# B + C) skips features and routes from disabled packs so the plan never
|
|
66
|
+
# promises a surface the user did not opt into.
|
|
67
|
+
disabled: true
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
# Gift Cards Pack
|
|
71
|
+
|
|
72
|
+
Passive vertical: code ships in every site that has a storefront, but every gift-card surface (page, nav link, home teaser) only renders if the **Wix Gift Card app** is enabled in the site's dashboard. A runtime REST probe per request decides — no build-time install, no seeding, no rebuild needed when the app state flips.
|
|
73
|
+
|
|
74
|
+
## Why passive
|
|
75
|
+
|
|
76
|
+
The dashboard's Catalog → Gift Cards screen owns the eGift Card template (denominations, image, copy). We never seed it. We never install the app via MCP. Instead:
|
|
77
|
+
|
|
78
|
+
1. The site owner enables the Wix Gift Card app from their dashboard whenever they want.
|
|
79
|
+
2. On every request, `getGiftCardProduct()` probes `POST /gift-cards/v1/gift-card-products/query` and memoizes the result for the request.
|
|
80
|
+
3. If the probe returns a product → page renders, nav link shows, home teaser shows. If the probe returns null (app uninstalled, revoked, or the dashboard template not configured) → all three surfaces hide. The page redirects to `/`.
|
|
81
|
+
|
|
82
|
+
This keeps gift cards as a "lights-up-when-ready" feature rather than a build-time commitment.
|
|
83
|
+
|
|
84
|
+
## Co-load semantics
|
|
85
|
+
|
|
86
|
+
This pack is **never user-triggered**. It loads when another pack pulls it in via `requires`. Today the storefront-bearing pack (`stores`) is the only puller; future commerce packs (bookings, events) can opt in the same way.
|
|
87
|
+
|
|
88
|
+
If a user builds a pure-blog or pure-forms site, this pack does not load — no gift-card code ships, no `/gift-cards` route, no markers requested from the designer.
|
|
89
|
+
|
|
90
|
+
## Wix Gift Card app reference data
|
|
91
|
+
|
|
92
|
+
- **App ID** (`WIX_GIFT_CARDS_APP_ID`): `d80111c5-a0f4-47a8-b63a-65b54d774a27`. Captured from a real paid Wix-Editor order line item — not in the public "Apps Created by Wix" registry. Treat as stable; if Wix rotates it, both the runtime probe and buy flow break together (failure mode is identical to "app uninstalled" — page hides gracefully).
|
|
93
|
+
- **Probe endpoint**: `POST https://www.wixapis.com/gift-cards/v1/gift-card-products/query`. The auto-package `@wix/auto_sdk_ecom_gift-vouchers` exposes only redemption methods; the buy template is reachable only via REST.
|
|
94
|
+
- **Buy-flow `catalogReference` shape** (passed to `currentCart.addToCurrentCart`):
|
|
95
|
+
```ts
|
|
96
|
+
{
|
|
97
|
+
appId: WIX_GIFT_CARDS_APP_ID,
|
|
98
|
+
catalogItemId: <giftCardProduct.id>,
|
|
99
|
+
options: {
|
|
100
|
+
variantId: <selected preset variantId>,
|
|
101
|
+
quantity: 1,
|
|
102
|
+
giftingInfo: {
|
|
103
|
+
recipientInfo: { email, firstName, lastName },
|
|
104
|
+
greetingMessage,
|
|
105
|
+
},
|
|
106
|
+
wixGiftCardsAppNewCatalog: true,
|
|
107
|
+
},
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
- **Post-payment**: on `ORDER_PAID`, Wix's gift-card backend auto-issues a redeemable card with `source: "ORDER"` and emails the recipient. No webhook, no admin scope, no follow-up call required.
|
|
111
|
+
|
|
112
|
+
## Stores-vertical interaction
|
|
113
|
+
|
|
114
|
+
When the Wix Gift Card app is enabled, it auto-creates **5 mirror Stores products** (one per denomination, `productType: "DIGITAL"`, ribbon name `"Gift Card"`). They appear in standard product queries and would compete with our `/gift-cards` page (a customer buying the mirror gets a dud DIGITAL line item that does not trigger gift-card issuance).
|
|
115
|
+
|
|
116
|
+
The `stores` pack drops them in its product queries via `productList.filter(p => p.ribbon?.name !== "Gift Card")`. That filter is owned by stores (not gift-cards) so it protects the listing regardless of whether the gift-cards pack is loaded — a future site that drops gift-cards but still has the dashboard app would still hide the mirrors. See `references/stores/PRODUCT_PAGES.md` § "Gift-card mirror filter".
|
|
117
|
+
|
|
118
|
+
## References
|
|
119
|
+
|
|
120
|
+
- `references/gift-cards/COMPONENTS.md` — runtime probe util + React island
|
|
121
|
+
- `references/gift-cards/PAGES.md` — landing page + nav/home contributions
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stores
|
|
3
|
+
triggers: ["sell", "ecommerce", "store", "shop", "products", "merchandise", "catalog", "merch", "buy"]
|
|
4
|
+
description: "Ecommerce — product catalog with add-to-cart. Requires ecom pack for cart/checkout."
|
|
5
|
+
requires: ["ecom", "gift-cards"] # ecom = vertical-agnostic cart/checkout; gift-cards = passive pack that lights up when the dashboard's Wix Gift Card app is enabled
|
|
6
|
+
|
|
7
|
+
features:
|
|
8
|
+
- name: "Product catalog"
|
|
9
|
+
description: "Browse all products with images, prices, and variants. Click through to detailed product pages with add-to-cart."
|
|
10
|
+
|
|
11
|
+
apps:
|
|
12
|
+
- name: "Wix Stores"
|
|
13
|
+
appDefId: "215238eb-22a5-4c36-9e7b-e7c08025e04e"
|
|
14
|
+
|
|
15
|
+
packages:
|
|
16
|
+
- "@wix/stores"
|
|
17
|
+
- "@wix/ecom"
|
|
18
|
+
|
|
19
|
+
routes:
|
|
20
|
+
- route: "/products"
|
|
21
|
+
- route: "/products/[slug]"
|
|
22
|
+
name: "Product Detail" # path-derivation would produce "Products [slug]" — override with the user-facing label
|
|
23
|
+
- route: "/category/[slug]"
|
|
24
|
+
name: "Category" # SEO-friendly per-category landing — server-side filtered, cursor-paginated
|
|
25
|
+
|
|
26
|
+
cmsCollections: []
|
|
27
|
+
|
|
28
|
+
seed:
|
|
29
|
+
agentLocation: "references/stores/"
|
|
30
|
+
scope: "seed"
|
|
31
|
+
description: "Delete default sample products (Wix Stores ships 12) and create 3 on-brand products with variants/prices/inventory. Does NOT seed categories — those are merchant-driven; the storefront wires the rail/submenu/route in Phase 4 and lights up automatically when the merchant creates categories in the dashboard."
|
|
32
|
+
references: ["references/stores/PRODUCT_CATALOG_DATA.md"]
|
|
33
|
+
|
|
34
|
+
components:
|
|
35
|
+
agentLocation: "references/stores/"
|
|
36
|
+
scope: "components"
|
|
37
|
+
description: "SDK wiring that depends only on the styling contract, not on designed page markup. Writes React/Astro islands and the back-in-stock util. CSS is split into the sibling componentsCss scope."
|
|
38
|
+
references:
|
|
39
|
+
- "references/stores/SHARED_WIRING.md"
|
|
40
|
+
- "references/stores/BACK_IN_STOCK.md"
|
|
41
|
+
files:
|
|
42
|
+
- "src/components/SeoTags.astro"
|
|
43
|
+
- "src/components/AddToCartButton.tsx"
|
|
44
|
+
- "src/components/ProductPurchase.tsx"
|
|
45
|
+
- "src/components/BackInStockForm.tsx"
|
|
46
|
+
- "src/utils/back-in-stock.ts"
|
|
47
|
+
|
|
48
|
+
componentsCss:
|
|
49
|
+
agentLocation: "references/stores/"
|
|
50
|
+
scope: "components-css"
|
|
51
|
+
description: "Scoped stores CSS — components-stores.css. Runs in parallel with the components scope; reads design tokens + global.css (for leak audit) but no SDK templates. Independent of TSX work because TSX/CSS link is build-time via class names."
|
|
52
|
+
references:
|
|
53
|
+
- "references/stores/COMPONENTS_CSS.md"
|
|
54
|
+
- "references/stores/BACK_IN_STOCK.md" # § 3 — back-in-stock form CSS rules to append
|
|
55
|
+
files:
|
|
56
|
+
- "src/styles/components-stores.css"
|
|
57
|
+
|
|
58
|
+
pages:
|
|
59
|
+
- name: "product-pages"
|
|
60
|
+
agentLocation: "references/stores/"
|
|
61
|
+
scope: "pages-products"
|
|
62
|
+
description: "Swap placeholder data in products listing + detail for live productsV3 queries with cursor pagination; mount the shared <CategoryRail/>; register wixMetadata + SeoTags on detail page"
|
|
63
|
+
references: ["references/stores/PRODUCT_PAGES.md"]
|
|
64
|
+
files:
|
|
65
|
+
- "src/pages/products/index.astro"
|
|
66
|
+
- "src/pages/products/[slug].astro"
|
|
67
|
+
- "src/components/ProductCard.astro"
|
|
68
|
+
|
|
69
|
+
- name: "category-pages"
|
|
70
|
+
agentLocation: "references/stores/"
|
|
71
|
+
scope: "pages-categories"
|
|
72
|
+
description: "Server-side filtered /category/[slug] listing (cursor-paginated). Writes shared CategoryRail and the categories.ts helper; both are imported by pages-products as well."
|
|
73
|
+
references: ["references/stores/CATEGORY_PAGES.md"]
|
|
74
|
+
files:
|
|
75
|
+
- "src/pages/category/[slug].astro"
|
|
76
|
+
- "src/components/CategoryRail.astro"
|
|
77
|
+
- "src/utils/categories.ts"
|
|
78
|
+
|
|
79
|
+
- name: "home-and-nav"
|
|
80
|
+
agentLocation: "references/stores/"
|
|
81
|
+
scope: "pages-home-and-nav"
|
|
82
|
+
description: "Patch home page featured products to live query and contribute the Shop submenu (categories list) to Navigation"
|
|
83
|
+
references: ["references/stores/HOME_AND_NAV.md"]
|
|
84
|
+
files:
|
|
85
|
+
- "src/pages/index.astro (patch — home product grid only)"
|
|
86
|
+
- "src/components/Navigation.astro (patch — Shop submenu insert)"
|
|
87
|
+
|
|
88
|
+
creates:
|
|
89
|
+
- { file: src/components/AddToCartButton.tsx, phase: components }
|
|
90
|
+
- { file: src/components/ProductPurchase.tsx, phase: components }
|
|
91
|
+
- { file: src/components/BackInStockForm.tsx, phase: components }
|
|
92
|
+
- { file: src/components/SeoTags.astro, phase: components }
|
|
93
|
+
- { file: src/utils/back-in-stock.ts, phase: components }
|
|
94
|
+
- { file: src/styles/components-stores.css, phase: components }
|
|
95
|
+
- { file: src/pages/products/index.astro, phase: pages }
|
|
96
|
+
- { file: src/pages/products/[slug].astro, phase: pages }
|
|
97
|
+
- { file: src/components/ProductCard.astro, phase: pages }
|
|
98
|
+
- { file: src/pages/category/[slug].astro, phase: pages }
|
|
99
|
+
- { file: src/components/CategoryRail.astro, phase: pages }
|
|
100
|
+
- { file: src/utils/categories.ts, phase: pages }
|
|
101
|
+
|
|
102
|
+
# Files this vertical contributes to via named markers (Design System phase scaffolds; verticals insert).
|
|
103
|
+
contributes:
|
|
104
|
+
- file: src/pages/index.astro
|
|
105
|
+
marker: "<!-- home:stores -->"
|
|
106
|
+
description: "Featured products grid (3–6 items from productsV3.queryProducts)"
|
|
107
|
+
- file: src/components/Navigation.astro
|
|
108
|
+
marker: "<!-- nav:links -->"
|
|
109
|
+
description: "Shop menu link → /products"
|
|
110
|
+
|
|
111
|
+
include: false
|
|
112
|
+
disabled: false
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
# Stores Pack
|
|
116
|
+
|
|
117
|
+
Full ecommerce vertical. Loaded whenever the user's prompt implies selling products.
|
|
118
|
+
|
|
119
|
+
## Phase decomposition
|
|
120
|
+
|
|
121
|
+
Stores work is split across **Phase 3 Components** (shared React islands) and **4 Phase 4 Pages scopes** (per-route wiring):
|
|
122
|
+
|
|
123
|
+
| Scope | When | Files | Notes |
|
|
124
|
+
|-------|------|-------|-------|
|
|
125
|
+
| `components` | Step 4.5 / Phase 3 (bg) | React islands, utils, SeoTags | Needs only the styling contract |
|
|
126
|
+
| `pages-products` | Step 7 / Phase 4 (bg) | products/index.astro, [slug].astro, ProductCard.astro | Imports `<CategoryRail/>` and `listStoreCategories` from `pages-categories` outputs |
|
|
127
|
+
| `pages-categories` | Step 7 / Phase 4 (bg) | category/[slug].astro, CategoryRail.astro, utils/categories.ts | Server-side filtered, cursor-paginated. Writes the shared rail + helper used by `pages-products` too |
|
|
128
|
+
| `pages-home-and-nav` | Step 7 / Phase 4 (bg) | index.astro patch, Navigation patch (Shop submenu) | Needs Phase 2 Design System output + home contribution markers; live-queries categories for the Shop submenu (empty by default — categories are merchant-driven) |
|
|
129
|
+
|
|
130
|
+
Historically stores was one monolithic agent taking ~6 minutes. The split turns it into a ~2-minute parallel dispatch (max of the 4 scopes). All four Phase-4 stores scopes dispatch in parallel — `pages-products` and `pages-home-and-nav` import files from `pages-categories`, but Astro resolves imports at build time (Step 8), not at write time. Each scope only needs its own files to exist by the time `astro build` runs.
|
|
131
|
+
|
|
132
|
+
## Known failure modes (propagate to agent prompts)
|
|
133
|
+
|
|
134
|
+
Listed here once so every scope's prompt can include them; they also live in `references/shared/RETURN_CONTRACT.md` § "Common failure modes".
|
|
135
|
+
|
|
136
|
+
| Wrong | Right |
|
|
137
|
+
|-------|-------|
|
|
138
|
+
| `import { products }` | `import { productsV3 }` — V1 silently returns 0 on V3 catalogs |
|
|
139
|
+
| Skip `variantId` on cart add | Always include — single-variant products have one |
|
|
140
|
+
| HTML `<!-- comment -->` in `.astro` frontmatter | Use `//` or `/* */` — frontmatter is TypeScript |
|
|
141
|
+
| Omit `wixMetadata` on `/products/[slug]` | Required for Wix sitemap/SEO/deep-link platform integration |
|
|
142
|
+
| Hardcode `<title>` from `product.name` | Pipe `product.seoData.tags` through Layout head slot |
|
|
143
|
+
| Mount CartBadge on a page component | Mount in `Navigation.astro` so it appears on all pages |
|
|
144
|
+
| Render the Wix Gift Card app's 5 auto-mirror products in `/products` or the home grid | Filter them out with `p.ribbon?.name !== "Gift Card"` — they're DIGITAL stand-ins; real purchases happen via `/gift-cards` (gift-cards pack) |
|
|
145
|
+
| Use the Stores install id `215238eb-…` for back-in-stock | Use sub-page id `1380b703-ce81-ff05-f115-39571d94dfcd`; install id is rejected on V3 with `NOT_SUPPORTED_APP_DEF_ID` / `REQUEST_COLLECTION_DISABLED` (see `references/stores/BACK_IN_STOCK.md`) |
|
|
146
|
+
| Pass `itemUrl` or `image` to `createBackInStockNotificationRequest` | Send only `catalogReference`, `email`, `name`, numeric `price` — the SDK throws `Failed to construct 'URL': Invalid URL` on either optional field |
|
|
147
|
+
|
|
148
|
+
## Images — this pack's contribution
|
|
149
|
+
|
|
150
|
+
Entity images (product hero + lifestyle) are generated by the shared image agent (Image Phase 2), not by this pack's agents. The image agent watches for this pack's Phase 1 Seed return and generates `heroImage` + `lifestyleImage` per product, then PATCHes them onto product records.
|
|
151
|
+
|
|
152
|
+
Phase 4 agents do NOT read the image agent's output. Image URLs flow through the product record (Phase 1 populates product; Image Phase 2 PATCHes image fields; Phase 4 queries product and renders `product.media.mainMedia.image.url`).
|
|
153
|
+
|
|
154
|
+
## Required environment
|
|
155
|
+
|
|
156
|
+
- `WIX_CLIENT_ID` in `.env.local` (populated by `npx @wix/cli env pull` in Setup)
|
|
157
|
+
- `siteId` known (from `wix.config.json`, extracted in Setup)
|
|
158
|
+
- MCP prefix discovered (Setup Step 0)
|
|
159
|
+
|
|
160
|
+
## References
|
|
161
|
+
|
|
162
|
+
- `references/stores/PRODUCT_CATALOG_DATA.md` — Phase 1 (products seed; categories are merchant-driven and not seeded)
|
|
163
|
+
- `references/stores/SHARED_WIRING.md` — Phase 3 Components (stores-specific islands + utils)
|
|
164
|
+
- `references/stores/PRODUCT_PAGES.md` — Phase 4 product-pages scope
|
|
165
|
+
- `references/stores/CATEGORY_PAGES.md` — Phase 4 category-pages scope (rail + /category/[slug])
|
|
166
|
+
- `references/stores/HOME_AND_NAV.md` — Phase 4 home page patch + Shop submenu
|
|
167
|
+
- Cart/checkout references are in the ecom pack: `references/ecom/`
|