@wix/agent-skills 1.6.0 → 1.8.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 +5 -9
- package/package.json +1 -1
- package/skills/wix-app/SKILL.md +51 -42
- package/skills/wix-app/references/BACKEND_EVENT.md +10 -65
- package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +101 -406
- package/skills/wix-app/references/DASHBOARD_MENU_PLUGIN.md +14 -111
- package/skills/wix-app/references/DASHBOARD_MODAL.md +56 -205
- package/skills/wix-app/references/DASHBOARD_PAGE.md +19 -98
- package/skills/wix-app/references/DASHBOARD_PLUGIN.md +6 -108
- package/skills/wix-app/references/DATA_COLLECTION.md +113 -198
- package/skills/wix-app/references/EMBEDDED_SCRIPT.md +41 -268
- package/skills/wix-app/references/EXTENSION_REGISTRATION.md +27 -76
- package/skills/wix-app/references/SERVICE_PLUGIN.md +35 -188
- package/skills/wix-app/references/SITE_PLUGIN.md +8 -92
- package/skills/wix-app/references/STORES_VERSIONING.md +1 -0
- package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +0 -44
- package/skills/wix-app/references/custom-element-widget/SETTINGS_PANEL.md +19 -330
- package/skills/wix-app/references/dashboard-menu-plugin/bookings-slots.md +0 -12
- package/skills/wix-app/references/dashboard-menu-plugin/ecommerce-slots.md +7 -0
- package/skills/wix-app/references/dashboard-menu-plugin/restaurants-slots.md +0 -12
- package/skills/wix-app/references/dashboard-plugin/SLOTS.md +3 -15
- package/skills/wix-app/references/service-plugin/ADDITIONAL-FEES.md +2 -18
- package/skills/wix-app/references/service-plugin/BOOKINGS-STAFF-SORTING.md +2 -42
- package/skills/wix-app/references/service-plugin/DISCOUNT-TRIGGERS.md +1 -11
- package/skills/wix-app/references/service-plugin/GIFT-CARDS.md +1 -11
- package/skills/wix-app/references/service-plugin/PAYMENT-SETTINGS.md +2 -40
- package/skills/wix-app/references/service-plugin/SHIPPING-RATES.md +2 -19
- package/skills/wix-app/references/service-plugin/VALIDATIONS.md +2 -18
- package/skills/wix-app/references/site-plugin/SLOTS.md +17 -68
- package/skills/wix-design-system/SKILL.md +4 -0
- package/skills/wix-headless/SKILL.md +131 -386
- package/skills/wix-headless/references/BUILD-astro.md +246 -0
- package/skills/wix-headless/references/BUILD-own-build.md +167 -0
- package/skills/wix-headless/references/BUILD.md +105 -0
- package/skills/wix-headless/references/DESIGN_SYSTEM.md +175 -0
- package/skills/wix-headless/references/DISCOVERY-connect.md +55 -0
- package/skills/wix-headless/references/DISCOVERY-create.md +238 -0
- package/skills/wix-headless/references/DISCOVERY.md +50 -306
- package/skills/wix-headless/references/PLAN-connect.md +19 -0
- package/skills/wix-headless/references/PLAN-create.md +17 -0
- package/skills/wix-headless/references/PLAN.md +92 -0
- package/skills/wix-headless/references/SEED.md +214 -0
- package/skills/wix-headless/references/SETUP.md +73 -248
- package/skills/wix-headless/references/{blog → astro/blog}/BLOG_PAGES.md +6 -5
- package/skills/wix-headless/references/{blog → astro/blog}/BLOG_SETUP.md +2 -2
- package/skills/wix-headless/references/astro/bookings/COMPONENTS.md +337 -0
- package/skills/wix-headless/references/astro/bookings/SERVICES_PAGES.md +428 -0
- package/skills/wix-headless/references/astro/cms/CMS_FOUNDATIONS.md +214 -0
- package/skills/wix-headless/references/{cms → astro/cms}/FAQ_KNOWLEDGE_BASE.md +14 -12
- package/skills/wix-headless/references/{cms → astro/cms}/PORTFOLIO.md +15 -16
- package/skills/wix-headless/references/{cms → astro/cms}/RESOURCE_LIBRARY.md +13 -15
- package/skills/wix-headless/references/{cms → astro/cms}/TEAM_DIRECTORY.md +11 -11
- package/skills/wix-headless/references/astro/designer/INSTRUCTIONS.md +354 -0
- package/skills/wix-headless/references/{ecom → astro/ecom}/CART_PAGES.md +8 -9
- package/skills/wix-headless/references/{ecom → astro/ecom}/CART_WIRING.md +6 -6
- package/skills/wix-headless/references/{ecom → astro/ecom}/COMPONENTS_CSS.md +6 -6
- package/skills/wix-headless/references/{forms → astro/forms}/CONTACT_FORM.md +18 -32
- package/skills/wix-headless/references/{gift-cards → astro/gift-cards}/COMPONENTS.md +3 -3
- package/skills/wix-headless/references/{gift-cards → astro/gift-cards}/PAGES.md +2 -2
- package/skills/wix-headless/references/{stores → astro/stores}/BACK_IN_STOCK.md +7 -7
- package/skills/wix-headless/references/{stores → astro/stores}/CATEGORY_PAGES.md +12 -13
- package/skills/wix-headless/references/{stores → astro/stores}/COMPONENTS_CSS.md +7 -7
- package/skills/wix-headless/references/{stores → astro/stores}/HOME_AND_NAV.md +11 -9
- package/skills/wix-headless/references/{stores → astro/stores}/PRODUCT_PAGES.md +11 -9
- package/skills/wix-headless/references/{stores → astro/stores}/SHARED_WIRING.md +8 -7
- package/skills/wix-headless/references/astro/templates/Footer.astro +27 -0
- package/skills/wix-headless/references/astro/templates/Layout.astro +132 -0
- package/skills/wix-headless/references/astro/templates/Navigation.astro +38 -0
- package/skills/wix-headless/references/astro/templates/astro.config.mjs +41 -0
- package/skills/wix-headless/references/astro/templates/bookings/AvailabilityCalendar.tsx +218 -0
- package/skills/wix-headless/references/astro/templates/bookings/BookingForm.tsx +194 -0
- package/skills/wix-headless/references/astro/templates/bookings/ManageBooking.tsx +84 -0
- package/skills/wix-headless/references/astro/templates/bookings/SeoTags.astro +25 -0
- package/skills/wix-headless/references/astro/templates/bookings/ServiceBookingFlow.tsx +50 -0
- package/skills/wix-headless/references/astro/templates/bookings/ServiceCard.astro +45 -0
- package/skills/wix-headless/references/astro/templates/bookings/api/confirm-booking.ts +34 -0
- package/skills/wix-headless/references/astro/templates/bookings/api/waitlist.ts +74 -0
- package/skills/wix-headless/references/astro/templates/bookings/booking-confirmation.astro +111 -0
- package/skills/wix-headless/references/astro/templates/bookings/components-bookings.css +413 -0
- package/skills/wix-headless/references/astro/templates/bookings/manage-booking.astro +76 -0
- package/skills/wix-headless/references/astro/templates/bookings/services/[slug].astro +81 -0
- package/skills/wix-headless/references/astro/templates/bookings/services/index.astro +65 -0
- package/skills/wix-headless/references/astro/templates/ecom/components-ecom.css +302 -0
- package/skills/wix-headless/references/astro/templates/global.css +286 -0
- package/skills/wix-headless/references/astro/templates/index.astro +56 -0
- package/skills/wix-headless/{templates → references/astro/templates}/stores/back-in-stock.ts +1 -1
- package/skills/wix-headless/{templates → references/astro/templates}/stores/components-stores.css +138 -33
- package/skills/wix-headless/references/blog/BLOG_CONTENT.md +28 -19
- package/skills/wix-headless/references/blog/INSTRUCTIONS.md +6 -6
- package/skills/wix-headless/references/bookings/INSTRUCTIONS.md +106 -0
- package/skills/wix-headless/references/bookings/SERVICES_DATA.md +295 -0
- package/skills/wix-headless/references/cms/CMS_FOUNDATIONS.md +35 -232
- package/skills/wix-headless/references/cms/INSTRUCTIONS.md +39 -8
- package/skills/wix-headless/references/commands/known-apps.json +2 -1
- package/skills/wix-headless/references/custom/CONNECTION_PLAN.md +142 -0
- package/skills/wix-headless/references/custom/INSTRUCTIONS.md +88 -0
- package/skills/wix-headless/references/custom/blog/WIRING.md +52 -0
- package/skills/wix-headless/references/custom/bookings/WIRING.md +88 -0
- package/skills/wix-headless/references/custom/cms/WIRING.md +97 -0
- package/skills/wix-headless/references/custom/ecom/WIRING.md +67 -0
- package/skills/wix-headless/references/custom/forms/WIRING.md +101 -0
- package/skills/wix-headless/references/custom/stores/WIRING.md +80 -0
- package/skills/wix-headless/references/ecom/INSTRUCTIONS.md +12 -12
- package/skills/wix-headless/references/forms/INSTRUCTIONS.md +6 -6
- package/skills/wix-headless/references/gift-cards/INSTRUCTIONS.md +13 -13
- package/skills/wix-headless/references/images/INSTRUCTIONS.md +58 -60
- package/skills/wix-headless/references/seed-recipes.md +49 -0
- package/skills/wix-headless/references/shared/AGENTS_MD.md +47 -0
- package/skills/wix-headless/references/shared/AUTHENTICATION.md +108 -0
- package/skills/wix-headless/references/shared/BUILD_NOISE.md +2 -2
- package/skills/wix-headless/references/shared/DESIGN_MD.md +85 -0
- package/skills/wix-headless/references/shared/DOCS_SEARCH.md +41 -0
- package/skills/wix-headless/references/shared/IMAGE_GENERATION.md +40 -39
- package/skills/wix-headless/references/shared/IMPLEMENTER.md +92 -41
- package/skills/wix-headless/references/shared/PRODUCTION_SHARP_EDGES.md +3 -3
- package/skills/wix-headless/references/shared/RETURN_CONTRACT.md +32 -312
- package/skills/wix-headless/references/shared/STYLING.md +48 -21
- package/skills/wix-headless/references/stores/INSTRUCTIONS.md +59 -29
- package/skills/wix-headless/references/stores/PRODUCT_CATALOG_DATA.md +31 -28
- package/skills/wix-headless/references/verticals/_schema.json +31 -117
- package/skills/wix-headless/references/verticals/_schema.md +60 -150
- package/skills/wix-headless/references/verticals/blog.md +5 -99
- package/skills/wix-headless/references/verticals/bookings.md +41 -0
- package/skills/wix-headless/references/verticals/cms.md +9 -100
- package/skills/wix-headless/references/verticals/ecom.md +6 -77
- package/skills/wix-headless/references/verticals/forms.md +5 -85
- package/skills/wix-headless/references/verticals/gift-cards.md +6 -103
- package/skills/wix-headless/references/verticals/stores.md +10 -144
- package/skills/wix-headless/scripts/check-manifest.mjs +148 -11
- package/skills/wix-headless/scripts/compose.mjs +540 -0
- package/skills/wix-headless/scripts/emit-design-tokens.mjs +136 -53
- package/skills/wix-headless/scripts/flatten.sh +61 -0
- package/skills/wix-headless/scripts/generate-images.mjs +242 -0
- package/skills/wix-headless/scripts/patch-decorative-slots.mjs +67 -43
- package/skills/wix-headless/scripts/plan-entity-image-waves.mjs +3 -3
- package/skills/wix-headless/scripts/scaffold.sh +113 -27
- package/skills/wix-headless/scripts/seed-utilities.sh +50 -12
- package/skills/wix-headless/scripts/write-decorative-json.mjs +62 -0
- package/skills/wix-manage/SKILL.md +4 -8
- package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +2 -0
- package/skills/wix-manage/references/cms/cms-data-items-crud.md +4 -0
- package/skills/wix-manage/references/cms/cms-references-and-relationships.md +2 -0
- package/skills/wix-manage/references/cms/cms-schema-management.md +4 -0
- package/skills/wix-manage/references/domains/domain-search-and-purchase.md +10 -7
- package/skills/wix-manage/references/ecommerce/api-shipping.md +443 -0
- package/skills/wix-manage/references/ecommerce/flow-add-free-shipping.md +5 -6
- package/skills/wix-manage/references/ecommerce/flow-fix-coverage-gaps.md +4 -5
- package/skills/wix-manage/references/ecommerce/flow-optimize-shipping-rates.md +4 -5
- package/skills/wix-manage/references/ecommerce/goal-increase-aov.md +1 -1
- package/skills/wix-manage/references/ecommerce/goal-reduce-cart-abandonment.md +1 -2
- package/skills/wix-manage/references/ecommerce/guardrail-shipping-health.md +2 -2
- package/skills/wix-manage/references/ecommerce/recipe-apply-shipping-recommendations.md +4 -5
- package/skills/wix-manage/references/ecommerce/recommend-ecommerce-strategy.md +7 -7
- package/skills/wix-manage/references/ecommerce/setup-discount-rules.md +209 -72
- package/skills/wix-manage/references/ecommerce/setup-store-pickup-location.md +9 -10
- package/skills/wix-manage/references/ecommerce/skill-graph.md +4 -4
- package/skills/wix-manage/references/forms/create-form.md +50 -0
- package/skills/wix-manage/references/stores/bulk-create-products-with-options.md +2 -0
- package/skills/wix-manage/references/stores/create-product-from-image.md +91 -38
- package/skills/wix-manage/references/stores/setup-online-store-catalog-v3.md +2 -0
- package/skills/wix-app/references/custom-element-widget/default-thumbnail.png +0 -0
- package/skills/wix-app/references/data-collection/extension-template.ts +0 -107
- package/skills/wix-headless/references/ORCHESTRATION.md +0 -269
- package/skills/wix-headless/references/commands/install-app.md +0 -42
- package/skills/wix-headless/references/commands/mcp-bootstrap.md +0 -28
- package/skills/wix-headless/references/designer/INSTRUCTIONS.md +0 -828
- package/skills/wix-headless/references/shared/MCP_PREFIX.md +0 -105
- package/skills/wix-headless/scripts/copy-utility-templates.mjs +0 -153
- package/skills/wix-headless/scripts/finalize-run-json.mjs +0 -141
- package/skills/wix-headless/scripts/init-site-json.mjs +0 -63
- package/skills/wix-headless/scripts/preview.sh +0 -45
- package/skills/wix-headless/scripts/release.sh +0 -73
- package/skills/wix-headless/templates/ecom/components-ecom.css +0 -215
- package/skills/wix-manage/references/events/list-events.md +0 -203
- /package/skills/wix-headless/{templates → references/astro/templates}/ecom/CartBadge.tsx +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/ecom/CartView.tsx +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/ecom/cart.astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/ecom/discounts.ts +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/ecom/thank-you.astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/GiftCardPurchase.tsx +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/_home-teaser-snippet.astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/_nav-snippet.astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/components-gift-cards.css +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/gift-cards.astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/gift-cards.ts +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/AddToCartButton.tsx +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/BackInStockForm.tsx +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/CategoryRail.astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/ProductCard.astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/ProductPurchase.tsx +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/SeoTags.astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/categories.ts +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/category/[slug].astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/products/[slug].astro +0 -0
- /package/skills/wix-headless/{templates → references/astro/templates}/stores/products/index.astro +0 -0
|
@@ -5,65 +5,95 @@ description: "Implements Wix Stores vertical — product catalog, categories, ad
|
|
|
5
5
|
|
|
6
6
|
# Stores Implementer
|
|
7
7
|
|
|
8
|
-
Extends `references/shared/IMPLEMENTER.md`. Read that file first for phase routing,
|
|
8
|
+
Extends `references/shared/IMPLEMENTER.md`. Read that file first for phase routing, REST auth + doc lookups, prompt-inlined inputs (read only your `.wix/seeded.json` slice), return contract, style conventions, and common failure modes.
|
|
9
9
|
|
|
10
10
|
## Scope routing
|
|
11
11
|
|
|
12
12
|
| Scope | Phase | Reference |
|
|
13
13
|
|-------|-------|-----------|
|
|
14
|
-
| `seed` | Seed (
|
|
15
|
-
| `components` | Components (React islands + SeoTags + back-in-stock util — TSX/Astro only, **no CSS**) |
|
|
16
|
-
|
|
|
17
|
-
| `pages-categories` | Pages (`/category/[slug]` listing + shared CategoryRail + `utils/categories.ts`) |
|
|
18
|
-
| `pages-products` | Pages (products listing + detail + ProductCard; mounts the rail written by `pages-categories`) |
|
|
19
|
-
| `pages-home-and-nav` | Pages (home-page contribution + Shop submenu in Navigation) |
|
|
14
|
+
| `seed` | Seed (REST catalog setup — products only; categories are merchant-driven, not seeded) | `./PRODUCT_CATALOG_DATA.md` |
|
|
15
|
+
| `components` | Components (React islands + SeoTags + back-in-stock util — TSX/Astro only, **no CSS**) | `../astro/stores/SHARED_WIRING.md` |
|
|
16
|
+
| ~~`components-css`~~ | **Do not dispatch.** `src/styles/components-stores.css` is copied from `<SKILL_ROOT>/references/astro/templates/stores/components-stores.css` by the orchestrator's pre-Step-4.5 batch (see BUILD-astro.md § Step 4.5). The template uses direct `var(--token)` CSS, so it works against any designer-published vocabulary without per-run rewrites. `COMPONENTS_CSS.md` documents that CSS for reference — there is no `components-css` subagent to dispatch. | — |
|
|
17
|
+
| `pages-categories` | Pages (`/category/[slug]` listing + shared CategoryRail + `utils/categories.ts`) | `../astro/stores/CATEGORY_PAGES.md` |
|
|
18
|
+
| `pages-products` | Pages (products listing + detail + ProductCard; mounts the rail written by `pages-categories`) | `../astro/stores/PRODUCT_PAGES.md` |
|
|
19
|
+
| `pages-home-and-nav` | Pages (home-page contribution + Shop submenu in Navigation) | `../astro/stores/HOME_AND_NAV.md` |
|
|
20
20
|
|
|
21
|
-
> **Why `components` is
|
|
21
|
+
> **Why `components` is TSX/Astro-only.** The scoped CSS (`src/styles/components-stores.css`) has no runtime coupling to the TSX components — it's referenced only by class name at build time — so it ships pre-copied from the template by the orchestrator (see § "CSS ownership" below) rather than being written by an agent. The `components` agent gets a smaller reading set and a smaller write list. See `../astro/stores/COMPONENTS_CSS.md` § "What this scope owns".
|
|
22
22
|
|
|
23
23
|
## Files this vertical creates / contributes
|
|
24
24
|
|
|
25
|
-
See
|
|
25
|
+
See the § "Templates" list below for the canonical files each scope reads and adapts.
|
|
26
|
+
|
|
27
|
+
## Seed return
|
|
28
|
+
|
|
29
|
+
The `seed` scope emits this `data` shape in its return JSON (envelope rules in `../shared/RETURN_CONTRACT.md`). Phase 4 page agents consume `data.products[*].slug` and `data.products[*].variantId` to wire live SDK queries.
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"status": "complete",
|
|
34
|
+
"phase": "stores-seed",
|
|
35
|
+
"scope": "seed",
|
|
36
|
+
"summary": "Deleted 12 default products; created 3 on-brand products with variants",
|
|
37
|
+
"data": {
|
|
38
|
+
"products": [
|
|
39
|
+
{
|
|
40
|
+
"id": "2d1bce83-...",
|
|
41
|
+
"name": "Tero Dining Table",
|
|
42
|
+
"slug": "tero-dining-table",
|
|
43
|
+
"variantId": "ffc1caa2-...",
|
|
44
|
+
"price": 2890,
|
|
45
|
+
"inventory": 12,
|
|
46
|
+
"sku": "TAB-TERO-OAK"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"deletedCount": 12,
|
|
50
|
+
"createdCount": 3
|
|
51
|
+
},
|
|
52
|
+
"files": [],
|
|
53
|
+
"errors": []
|
|
54
|
+
}
|
|
55
|
+
```
|
|
26
56
|
|
|
27
57
|
## Pre-return file-existence assertion (all page scopes)
|
|
28
58
|
|
|
29
|
-
Before returning `status: "complete"` from any `pages-*` scope, verify every file
|
|
59
|
+
Before returning `status: "complete"` from any `pages-*` scope, verify every file your scope produces (per the § "Templates" list below) exists on disk. Silently dropping a file (e.g. `[slug].astro` from `pages-products`) reports `complete` to the orchestrator, but every product link 404s at runtime.
|
|
30
60
|
|
|
31
61
|
If a declared file is missing, return `status: "partial"` with `errors: [{ code: "PHASE4_FILE_MISSING", path: "<expected path>" }]` rather than claiming success. The orchestrator's Step 8.0.5 manifest check will also catch this, but an agent-side assertion gives a faster and more precise failure.
|
|
32
62
|
|
|
33
63
|
## Templates
|
|
34
64
|
|
|
35
|
-
Canonical templates live at `<SKILL_ROOT>/templates/stores/`. Your `components` and `pages-*` scopes read these and adapt them — don't invent markup or logic.
|
|
65
|
+
Canonical templates live at `<SKILL_ROOT>/references/astro/templates/stores/`. Your `components` and `pages-*` scopes read these and adapt them — don't invent markup or logic.
|
|
36
66
|
|
|
37
67
|
Components (`components` scope — TSX/Astro only):
|
|
38
|
-
- `<SKILL_ROOT>/templates/stores/AddToCartButton.tsx`
|
|
39
|
-
- `<SKILL_ROOT>/templates/stores/ProductPurchase.tsx`
|
|
40
|
-
- `<SKILL_ROOT>/templates/stores/BackInStockForm.tsx`
|
|
41
|
-
- `<SKILL_ROOT>/templates/stores/SeoTags.astro`
|
|
68
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/AddToCartButton.tsx`
|
|
69
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/ProductPurchase.tsx`
|
|
70
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/BackInStockForm.tsx`
|
|
71
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/SeoTags.astro`
|
|
42
72
|
|
|
43
|
-
Components CSS (
|
|
44
|
-
- `<SKILL_ROOT>/templates/stores/components-stores.css`
|
|
73
|
+
Components CSS (pre-copied by the orchestrator — no agent writes it):
|
|
74
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/components-stores.css`
|
|
45
75
|
|
|
46
76
|
Pages (`pages-products` scope):
|
|
47
|
-
- `<SKILL_ROOT>/templates/stores/ProductCard.astro`
|
|
48
|
-
- `<SKILL_ROOT>/templates/stores/products/index.astro`
|
|
49
|
-
- `<SKILL_ROOT>/templates/stores/products/[slug].astro`
|
|
77
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/ProductCard.astro`
|
|
78
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/products/index.astro`
|
|
79
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/products/[slug].astro`
|
|
50
80
|
|
|
51
81
|
Pages (`pages-categories` scope):
|
|
52
|
-
- `<SKILL_ROOT>/templates/stores/CategoryRail.astro`
|
|
53
|
-
- `<SKILL_ROOT>/templates/stores/category/[slug].astro`
|
|
82
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/CategoryRail.astro`
|
|
83
|
+
- `<SKILL_ROOT>/references/astro/templates/stores/category/[slug].astro`
|
|
54
84
|
|
|
55
85
|
### Pre-copied by the orchestrator (do NOT write these yourself)
|
|
56
86
|
|
|
57
87
|
The following utility files are deterministically copied by the orchestrator BEFORE your phase dispatches (`components` for the first, `pages` for the second). They are mechanical SDK wrappers with no brand-specific content; reading or rewriting them as part of your scope wastes tokens and risks drift. Just import the helpers at the listed paths:
|
|
58
88
|
|
|
59
|
-
- `src/utils/back-in-stock.ts` — pre-copied from `<SKILL_ROOT>/templates/stores/back-in-stock.ts` before `components` dispatches.
|
|
60
|
-
- `src/utils/categories.ts` — pre-copied from `<SKILL_ROOT>/templates/stores/categories.ts` before `pages` dispatches.
|
|
89
|
+
- `src/utils/back-in-stock.ts` — pre-copied from `<SKILL_ROOT>/references/astro/templates/stores/back-in-stock.ts` before `components` dispatches.
|
|
90
|
+
- `src/utils/categories.ts` — pre-copied from `<SKILL_ROOT>/references/astro/templates/stores/categories.ts` before `pages` dispatches.
|
|
61
91
|
|
|
62
92
|
If you find one of these missing at runtime, that's an orchestrator-side bug — return `status: "partial"` with `errors: [{code: "UTILITY_TEMPLATE_NOT_PRECOPIED", path: "<missing>"}]` and continue. Do NOT write your own version; the post-phase manifest check will recover by template-copy and the right helper lands on disk.
|
|
63
93
|
|
|
64
94
|
## CSS ownership — stores pack
|
|
65
95
|
|
|
66
|
-
Stores-specific component CSS lives in `src/styles/components-stores.css` (
|
|
96
|
+
Stores-specific component CSS lives in `src/styles/components-stores.css` (pre-copied from the template by the orchestrator before Step 4.5 — see the `components` scope-routing note above and `../astro/stores/COMPONENTS_CSS.md`), NOT in the designer's `global.css`. The classes the pack owns:
|
|
67
97
|
|
|
68
98
|
- `.product-card`, `.product-card-media`, `.product-card-ribbon`, `.product-card-index` — the product card itself, including the `overflow: hidden` + `border-radius` clipping context. Whoever writes the `border-radius` here also writes any inner padding required to keep child content inside the rounded edges. Without inner padding, a price `<p>` sits flush against the rounded bottom corner and descenders get clipped. Add `padding-bottom: var(--spacing-md)` on the card plus horizontal padding on each text block when you set the radius. See `references/shared/STYLING.md` § "Component-specific CSS is owned by the component, not the designer".
|
|
69
99
|
- `.product-grid` — the layout that lists product cards. Both `/products` (pages-products scope) and `/category/[slug]` (pages-categories scope) consume it from one place. Include `display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--spacing-xl);` plus the View-Transitions opacity fade for in-flight navigations.
|
|
@@ -73,10 +103,10 @@ The designer's `global.css` declares only tokens, the `.btn` family, decorative
|
|
|
73
103
|
|
|
74
104
|
## Back-in-stock subscribe — components + pages wiring split
|
|
75
105
|
|
|
76
|
-
Back-in-stock is a dashboard-toggleable feature: it ships in every stores build but only lights up when the merchant clicks "Start Collecting Requests" in the Back in Stock dashboard. The implementation is split across the
|
|
106
|
+
Back-in-stock is a dashboard-toggleable feature: it ships in every stores build but only lights up when the merchant clicks "Start Collecting Requests" in the Back in Stock dashboard. The implementation is split across the `components` and `pages-products` scopes the same way every other stores feature is, with its CSS riding along in the pre-copied stylesheet:
|
|
77
107
|
|
|
78
|
-
- **`components` scope** writes the SSR probe (`src/utils/back-in-stock.ts`) and the React form island (`src/components/BackInStockForm.tsx`). See
|
|
79
|
-
-
|
|
108
|
+
- **`components` scope** writes the SSR probe (`src/utils/back-in-stock.ts`) and the React form island (`src/components/BackInStockForm.tsx`). See `../astro/stores/BACK_IN_STOCK.md` for the full rules — especially the two app ids (use `1380b703-…` for back-in-stock, NOT the Stores install id `215238eb-…`) and the bare-fields rule (no `itemUrl`, no `image` on the SDK call).
|
|
109
|
+
- **Back-in-stock form CSS** ships in the pre-copied `src/styles/components-stores.css` template — no agent writes it. See `../astro/stores/BACK_IN_STOCK.md` § 3 for the rules it carries.
|
|
80
110
|
- **`pages-products` scope** imports `getBackInStockEnabled` in `[slug].astro`, awaits the probe, and passes `backInStockEnabled` + `priceAmount` to `<ProductPurchase>`. ProductPurchase renders the form in its three OOS branches when the prop is true.
|
|
81
111
|
|
|
82
112
|
If the merchant hasn't enabled "Start Collecting Requests", the probe returns `false`, the prop stays `false`, and the form never mounts — no rebuild needed when the merchant flips the toggle in the dashboard.
|
|
@@ -93,4 +123,4 @@ If the merchant hasn't enabled "Start Collecting Requests", the probe returns `f
|
|
|
93
123
|
| Use the back-in-stock app id `1380b703-…` when adding items to a category | Use the **Stores install id** `215238eb-22a5-4c36-9e7b-e7c08025e04e` for `appId` on `bulkAddItemsToCategory` items — it's the same id Wix Stores writes to its products |
|
|
94
124
|
| Call `categories.queryCategories(...).limit(N).find()` with no filter | The SDK builder rejects empty filter expressions with `INVALID_FILTER`. Always chain at least `.eq("visible", true)` before `.find()` |
|
|
95
125
|
| Call `categories.listCategoriesForItems(items, ...)` from the SDK | The SDK function ships items via GET querystring and breaks on arrays. Use `POST /categories/v1/categories/list-categories-for-items` directly, or fan out per-category via `listItemsInCategory` |
|
|
96
|
-
| Ship a client-side filter (`data-category-ids` + JS hide) on the product grid | Filter server-side via `/category/[slug]` routes; client-side filtering doesn't scale past ~100 products and breaks SEO. The `<CategoryRail/>` swaps cards via `<ClientRouter />`, not by hiding them |
|
|
126
|
+
| Ship a client-side filter (`data-category-ids` + JS hide) on the product grid | Filter server-side via `/category/[slug]` routes; client-side filtering doesn't scale past ~100 products and breaks SEO. The `<CategoryRail/>` swaps cards via `<ClientRouter />`, not by hiding them |
|
|
@@ -1,45 +1,48 @@
|
|
|
1
|
-
# Recipe: Product Catalog Data Setup (
|
|
1
|
+
# Recipe: Product Catalog Data Setup (seed scope)
|
|
2
2
|
|
|
3
|
-
Replace the default sample products Wix Stores installs with on-brand products via
|
|
3
|
+
Replace the default sample products Wix Stores installs with on-brand products via the Stores REST API (`curl` against `wixapis.com/stores/v3/...` with the standard headers from `../shared/AUTHENTICATION.md`). This file covers the `seed` scope — data seeding only. Frontend wiring lives in the astro scope references (`../astro/stores/SHARED_WIRING.md`, `../astro/stores/PRODUCT_PAGES.md`, `../astro/ecom/CART_PAGES.md`, `../astro/stores/HOME_AND_NAV.md`) and should not be read by `seed`.
|
|
4
4
|
|
|
5
5
|
> **Critical Rules — Read Before Starting**
|
|
6
6
|
> 1. **V3 only** — all endpoints under `/stores/v3/...` for products.
|
|
7
|
-
> 2. **No improvised endpoints** — if an
|
|
8
|
-
> 3. **Do not seed categories
|
|
7
|
+
> 2. **No improvised endpoints** — if an REST call returns 404, stop and report. Do not guess alternative URLs. Do not loop on `docs-search REST (see DOCS_SEARCH.md)` more than twice on the same topic.
|
|
8
|
+
> 3. **Do not seed categories** — they are merchant-driven. See Step 6 for the full rule and how the storefront still wires up automatically.
|
|
9
9
|
|
|
10
10
|
> **V3 Catalog:** New Wix sites use Catalog V3. All endpoints below live under `/stores/v3/...`. The V1 product endpoints should not be used — they silently return 0 results on V3 catalogs.
|
|
11
11
|
|
|
12
12
|
## Prerequisites
|
|
13
13
|
|
|
14
|
-
- Wix Stores app must be installed on the site (via
|
|
14
|
+
- Wix Stores app must be installed on the site (installed via the apps-installer REST endpoint after scaffolding — see Step 0)
|
|
15
15
|
|
|
16
|
-
## Setup: Replace Default Products via
|
|
16
|
+
## Setup: Replace Default Products via REST
|
|
17
17
|
|
|
18
18
|
> **Conditional:** This section only applies when ALL of these are true:
|
|
19
19
|
> - The Stores app was just installed (default sample products exist)
|
|
20
|
-
> -
|
|
20
|
+
> - CLI auth works (`npx @wix/cli@latest token --site "$SITE_ID"` returns a token)
|
|
21
21
|
> - Discovery context is available in your prompt (business type, brand name, style)
|
|
22
22
|
>
|
|
23
|
-
> **If
|
|
23
|
+
> **If CLI auth is not available, skip this entire section.** The 12 default products remain and can be customized later in the Wix dashboard.
|
|
24
24
|
|
|
25
|
-
> **API error guard:** If any
|
|
25
|
+
> **API error guard:** If any REST call in this seed scope returns a 404 or an unexpected error, do **not** retry the same call with a guessed alternative URL or namespace. Report the failing endpoint, request body, and error verbatim to the user, then stop.
|
|
26
|
+
|
|
27
|
+
> **Stores appDefId** for install and `catalogReference.appId`: `215238eb-22a5-4c36-9e7b-e7c08025e04e`. (A different defId — `1380b703-ce81-ff05-f115-39571d94dfcd` — is used for `wixMetadata.appDefId` in the pages scope. Do not swap them.)
|
|
28
|
+
>
|
|
29
|
+
> <!-- REVIEW (appDefId discrepancy): `1380b703-…` is labeled the `wixMetadata.appDefId` here, but `stores/INSTRUCTIONS.md` (back-in-stock split + failure-mode table) calls the same id the back-in-stock app id. One of these labels is wrong — flagged for human review; value left unchanged. -->
|
|
26
30
|
|
|
27
|
-
> **Stores appDefId** for install and `catalogReference.appId`: `215238eb-22a5-4c36-9e7b-e7c08025e04e`. (A different defId — `1380b703-ce81-ff05-f115-39571d94dfcd` — is used for `wixMetadata.appDefId` in Phase 2. Do not swap them.)
|
|
28
31
|
|
|
29
32
|
### Step 0: Ensure Stores App Is Installed
|
|
30
33
|
|
|
31
34
|
Before querying products, verify the Stores app is installed:
|
|
32
35
|
|
|
33
|
-
1. **Probe** — `
|
|
36
|
+
1. **Probe** — `REST: POST https://www.wixapis.com/stores/v3/products/query`
|
|
34
37
|
2. **If the API returns a "REQUIRED_APP_NOT_INSTALLED" error** → install the Wix Stores app:
|
|
35
38
|
```
|
|
36
|
-
|
|
39
|
+
REST: POST https://www.wixapis.com/apps-installer-service/v1/app-instance/install
|
|
37
40
|
body: {
|
|
38
41
|
"tenant": { "tenantType": "SITE", "id": "<siteId>" },
|
|
39
42
|
"appInstance": { "appDefId": "215238eb-22a5-4c36-9e7b-e7c08025e04e", "enabled": true }
|
|
40
43
|
}
|
|
41
44
|
```
|
|
42
|
-
> Translate this prose-HTTP form into the full `
|
|
45
|
+
> Translate this prose-HTTP form into the full `curl` tool-call shape — pass `body` as JSON in `-d` (NOT a stringified JSON). See `../shared/AUTHENTICATION.md` for the standard REST headers.
|
|
43
46
|
|
|
44
47
|
Then retry the probe query to confirm installation succeeded.
|
|
45
48
|
3. **If the probe succeeds** → proceed to Step 1.
|
|
@@ -51,7 +54,7 @@ Replace the 12 generic sample products with 3 on-brand products that match the u
|
|
|
51
54
|
### Step 1: Query Default Products
|
|
52
55
|
|
|
53
56
|
```
|
|
54
|
-
|
|
57
|
+
REST: POST https://www.wixapis.com/stores/v3/products/query
|
|
55
58
|
body: {
|
|
56
59
|
"query": {
|
|
57
60
|
"paging": { "limit": 50 }
|
|
@@ -64,7 +67,7 @@ Collect all product IDs from the response.
|
|
|
64
67
|
### Step 2: Bulk Delete Defaults
|
|
65
68
|
|
|
66
69
|
```
|
|
67
|
-
|
|
70
|
+
REST: POST https://www.wixapis.com/stores/v3/bulk/products/delete
|
|
68
71
|
body: {
|
|
69
72
|
"productIds": ["<id1>", "<id2>", ..., "<id12>"]
|
|
70
73
|
}
|
|
@@ -98,7 +101,7 @@ Adapt names, descriptions, and pricing to match the brand's tone and style. Use
|
|
|
98
101
|
**Product with variants** (e.g., skincare with 30ml/50ml sizes):
|
|
99
102
|
|
|
100
103
|
```
|
|
101
|
-
|
|
104
|
+
REST: POST https://www.wixapis.com/stores/v3/bulk/products-with-inventory/create
|
|
102
105
|
body: {
|
|
103
106
|
"products": [
|
|
104
107
|
{
|
|
@@ -183,7 +186,7 @@ Include all products in the same `products` array. Do not include `media` — pr
|
|
|
183
186
|
### Step 5: Verify
|
|
184
187
|
|
|
185
188
|
```
|
|
186
|
-
|
|
189
|
+
REST: POST https://www.wixapis.com/stores/v3/products/query
|
|
187
190
|
body: {
|
|
188
191
|
"query": { "paging": { "limit": 50 } }
|
|
189
192
|
}
|
|
@@ -201,17 +204,17 @@ If the merchant later creates visible categories in the Wix dashboard and assign
|
|
|
201
204
|
- The `Navigation` Shop submenu lists the categories.
|
|
202
205
|
- `/category/<slug>` becomes a reachable, server-side-filtered listing.
|
|
203
206
|
|
|
204
|
-
This works because the frontend (`src/utils/categories.ts`,
|
|
207
|
+
This works because the frontend (`src/utils/categories.ts`, pre-copied by the orchestrator before Phase 4 and imported by the `pages-*` scopes) live-queries the Wix API at SSR time with a 5-min cache — no redeploy or regen is needed.
|
|
205
208
|
|
|
206
209
|
### Step 7: Return Results
|
|
207
210
|
|
|
208
|
-
Emit a structured JSON block at the end of your completion message per
|
|
211
|
+
Emit a structured JSON block at the end of your completion message per `../shared/RETURN_CONTRACT.md`. Do NOT write a sidecar file.
|
|
209
212
|
|
|
210
213
|
```json
|
|
211
214
|
{
|
|
212
215
|
"status": "complete",
|
|
213
216
|
"phase": "stores-seed",
|
|
214
|
-
"scope": "seed
|
|
217
|
+
"scope": "seed",
|
|
215
218
|
"summary": "Deleted {N} default products; created {N} on-brand products with variants",
|
|
216
219
|
"data": {
|
|
217
220
|
"products": [
|
|
@@ -220,14 +223,14 @@ Emit a structured JSON block at the end of your completion message per `../../sh
|
|
|
220
223
|
"name": "<name>",
|
|
221
224
|
"slug": "<slug>",
|
|
222
225
|
"variantId": "<uuid>",
|
|
223
|
-
"price": 0,
|
|
224
|
-
"inventory":
|
|
226
|
+
"price": 48.0,
|
|
227
|
+
"inventory": 50,
|
|
225
228
|
"sku": "<sku>"
|
|
226
229
|
}
|
|
227
230
|
],
|
|
228
231
|
"categories": [],
|
|
229
|
-
"deletedCount":
|
|
230
|
-
"createdCount":
|
|
232
|
+
"deletedCount": 12,
|
|
233
|
+
"createdCount": 3
|
|
231
234
|
},
|
|
232
235
|
"files": [],
|
|
233
236
|
"errors": []
|
|
@@ -238,12 +241,12 @@ Emit a structured JSON block at the end of your completion message per `../../sh
|
|
|
238
241
|
|
|
239
242
|
The JSON block MUST be the last content in your message. Parent skill consumes `data.products[*].slug` and `data.products[*].variantId` for the Phase 4 Pages scopes.
|
|
240
243
|
|
|
241
|
-
###
|
|
244
|
+
### Seed Boundary — Do Not Touch Other Site Data
|
|
242
245
|
|
|
243
|
-
|
|
246
|
+
The seed scope is complete after Step 7. Do **not** attempt any of the following, even if they seem like reasonable polish:
|
|
244
247
|
|
|
245
248
|
- Cleaning up "orphan customizations", "All Products" containers, brand records, or any other catalog metadata you didn't create.
|
|
246
|
-
- Creating, renaming, or deleting any category —
|
|
249
|
+
- Creating, renaming, or deleting any category — see Step 6 (leave the auto-managed "All Products" category in place).
|
|
247
250
|
- Verifying your work via additional `query` calls beyond the Step 5 verification already performed.
|
|
248
251
|
|
|
249
|
-
Phase 2+ (frontend wiring) is covered in the scope
|
|
252
|
+
Phase 2+ (frontend wiring) is covered in the astro scope references (`../astro/stores/SHARED_WIRING.md`, `../astro/stores/PRODUCT_PAGES.md`, `../astro/stores/CATEGORY_PAGES.md`, `../astro/ecom/CART_PAGES.md`, `../astro/stores/HOME_AND_NAV.md`) — do not read them during `seed`.
|
|
@@ -1,160 +1,74 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"title": "Wix Headless Vertical Frontmatter",
|
|
4
|
-
"description": "Validates verticals/<name>.md frontmatter.
|
|
3
|
+
"title": "Wix Headless Vertical Frontmatter (Phase 1 — discovery only)",
|
|
4
|
+
"description": "Validates verticals/<name>.md frontmatter. Phase 1 scope only — later phases (setup, seed, design, pages, build) are owned by @skills/wix-manage plus this skill's own templates and INSTRUCTIONS.md files; per-pack fields (packages, cmsCollections, seed, components, componentsCss, pages, creates, contributes, include) are not part of this skill and not validated here.",
|
|
5
5
|
"type": "object",
|
|
6
|
-
"required": ["name", "description"
|
|
7
|
-
"additionalProperties":
|
|
6
|
+
"required": ["name", "description"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
8
|
"properties": {
|
|
9
9
|
"name": {
|
|
10
10
|
"type": "string",
|
|
11
11
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
12
12
|
"description": "Must match filename stem (e.g., stores.md → 'stores')"
|
|
13
13
|
},
|
|
14
|
+
"description": { "type": "string" },
|
|
14
15
|
"triggers": {
|
|
15
16
|
"type": "array",
|
|
16
|
-
"items": { "type": "string" }
|
|
17
|
+
"items": { "type": "string" },
|
|
18
|
+
"description": "Prompt patterns that route to this vertical. Empty allowed for transitive-only packs (ecom, gift-cards, cms). The SKILL.md routing table is the actual source of truth for what gets loaded; this is human reference + a fallback signal."
|
|
17
19
|
},
|
|
18
|
-
"description": { "type": "string" },
|
|
19
20
|
"requires": {
|
|
20
21
|
"type": "array",
|
|
21
|
-
"items": { "type": "string" }
|
|
22
|
+
"items": { "type": "string" },
|
|
23
|
+
"description": "Verticals that must be co-loaded in the same read batch when this pack is loaded. Today: stores → [ecom, gift-cards]; gift-cards → [ecom]."
|
|
22
24
|
},
|
|
23
25
|
"features": {
|
|
24
26
|
"type": "array",
|
|
25
27
|
"items": {
|
|
26
28
|
"type": "object",
|
|
27
29
|
"required": ["name", "description"],
|
|
30
|
+
"additionalProperties": false,
|
|
28
31
|
"properties": {
|
|
29
32
|
"name": { "type": "string" },
|
|
30
33
|
"description": { "type": "string" }
|
|
31
34
|
}
|
|
32
|
-
}
|
|
35
|
+
},
|
|
36
|
+
"description": "Feature blurbs for DISCOVERY-create.md Step 3 Section B."
|
|
33
37
|
},
|
|
34
38
|
"apps": {
|
|
35
|
-
"type": "array",
|
|
36
|
-
"items": {
|
|
37
|
-
"oneOf": [
|
|
38
|
-
{ "type": "string", "description": "App name (resolved via known-apps.json)" },
|
|
39
|
-
{
|
|
40
|
-
"type": "object",
|
|
41
|
-
"required": ["name"],
|
|
42
|
-
"properties": {
|
|
43
|
-
"name": { "type": "string" },
|
|
44
|
-
"appDefId": { "type": "string" }
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
"packages": {
|
|
51
|
-
"type": "array",
|
|
52
|
-
"minItems": 1,
|
|
53
|
-
"items": { "type": "string" }
|
|
54
|
-
},
|
|
55
|
-
"routes": {
|
|
56
39
|
"type": "array",
|
|
57
40
|
"items": {
|
|
58
41
|
"type": "object",
|
|
59
|
-
"required": ["
|
|
42
|
+
"required": ["name"],
|
|
43
|
+
"additionalProperties": false,
|
|
60
44
|
"properties": {
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
"cmsCollections": { "type": "array" },
|
|
67
|
-
"seed": {
|
|
68
|
-
"oneOf": [
|
|
69
|
-
{ "type": "null" },
|
|
70
|
-
{
|
|
71
|
-
"type": "object",
|
|
72
|
-
"required": ["agentLocation", "scope", "references"],
|
|
73
|
-
"properties": {
|
|
74
|
-
"agentLocation": { "type": "string" },
|
|
75
|
-
"scope": { "type": "string", "const": "seed" },
|
|
76
|
-
"description": { "type": "string" },
|
|
77
|
-
"references": { "type": "array", "items": { "type": "string" } }
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
]
|
|
81
|
-
},
|
|
82
|
-
"components": {
|
|
83
|
-
"oneOf": [
|
|
84
|
-
{ "type": "null" },
|
|
85
|
-
{
|
|
86
|
-
"type": "object",
|
|
87
|
-
"required": ["agentLocation", "scope", "references"],
|
|
88
|
-
"properties": {
|
|
89
|
-
"agentLocation": { "type": "string" },
|
|
90
|
-
"scope": { "type": "string", "const": "components" },
|
|
91
|
-
"description": { "type": "string" },
|
|
92
|
-
"references": { "type": "array", "items": { "type": "string" } },
|
|
93
|
-
"files": { "type": "array", "items": { "type": "string" } }
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
|
-
"componentsCss": {
|
|
99
|
-
"oneOf": [
|
|
100
|
-
{ "type": "null" },
|
|
101
|
-
{
|
|
102
|
-
"type": "object",
|
|
103
|
-
"required": ["agentLocation", "scope", "references"],
|
|
104
|
-
"description": "Optional sibling of `components`. When present, the orchestrator dispatches a second concurrent Phase 3 subagent that owns the pack's scoped CSS file only — independent of TSX/Astro work in the `components` scope. Used by packs whose `components` agent dominated phase wall time (today: stores). Backward compatible — packs without this field keep the single-agent shape.",
|
|
105
|
-
"properties": {
|
|
106
|
-
"agentLocation": { "type": "string" },
|
|
107
|
-
"scope": { "type": "string", "const": "components-css" },
|
|
108
|
-
"description": { "type": "string" },
|
|
109
|
-
"references": { "type": "array", "items": { "type": "string" } },
|
|
110
|
-
"files": { "type": "array", "items": { "type": "string" } }
|
|
111
|
-
}
|
|
45
|
+
"name": { "type": "string" },
|
|
46
|
+
"appDefId": { "type": "string" }
|
|
112
47
|
}
|
|
113
|
-
|
|
48
|
+
},
|
|
49
|
+
"description": "Zero or one entry per pack. apps[0].name fills the Source column of the Pages table."
|
|
114
50
|
},
|
|
115
|
-
"
|
|
51
|
+
"routes": {
|
|
116
52
|
"type": "array",
|
|
117
53
|
"items": {
|
|
118
54
|
"type": "object",
|
|
119
|
-
"required": ["
|
|
55
|
+
"required": ["route"],
|
|
56
|
+
"additionalProperties": false,
|
|
120
57
|
"properties": {
|
|
121
|
-
"
|
|
122
|
-
"agentLocation": { "type": "string" },
|
|
123
|
-
"scope": {
|
|
58
|
+
"route": {
|
|
124
59
|
"type": "string",
|
|
125
|
-
"
|
|
126
|
-
"description": "Must be 'pages' or 'pages-<subscope>'"
|
|
60
|
+
"description": "URL path (e.g. /cart) OR the literal 'Hosted by Wix' for Wix-hosted endpoints like checkout."
|
|
127
61
|
},
|
|
128
|
-
"
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
"creates": {
|
|
135
|
-
"type": "array",
|
|
136
|
-
"items": {
|
|
137
|
-
"type": "object",
|
|
138
|
-
"required": ["file", "phase"],
|
|
139
|
-
"properties": {
|
|
140
|
-
"file": { "type": "string" },
|
|
141
|
-
"phase": { "type": "string", "enum": ["seed", "components", "pages"] }
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
"contributes": {
|
|
146
|
-
"type": "array",
|
|
147
|
-
"items": {
|
|
148
|
-
"type": "object",
|
|
149
|
-
"required": ["file", "marker"],
|
|
150
|
-
"properties": {
|
|
151
|
-
"file": { "type": "string" },
|
|
152
|
-
"marker": { "type": "string", "pattern": "^<!--\\s.*\\s-->$" },
|
|
153
|
-
"description": { "type": "string" }
|
|
62
|
+
"name": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "Optional user-facing page name override for DISCOVERY.md's Section C table. When omitted, the orchestrator derives the name from the path (/ → Home; /thank-you → Thank You). Set this only when path-derivation produces a poor name (e.g. /products/[slug] → 'Product Detail') or when the route has no path (e.g. ecom's Wix-hosted Checkout)."
|
|
65
|
+
}
|
|
154
66
|
}
|
|
155
67
|
}
|
|
156
68
|
},
|
|
157
|
-
"
|
|
158
|
-
|
|
69
|
+
"disabled": {
|
|
70
|
+
"type": "boolean",
|
|
71
|
+
"description": "If true, the pack's surfaces (pages, nav links, home blocks) are inactive by default — they ship as code but do not appear without a separate user action (today: enabling the matching Wix app from the dashboard, which the pack's runtime probe detects). DISCOVERY.md plan composition (Sections B + C) skips features and routes from disabled packs so the plan never promises a surface the user did not ask for. Today only the gift-cards pack uses disabled: true."
|
|
72
|
+
}
|
|
159
73
|
}
|
|
160
74
|
}
|