@wix/agent-skills 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +2 -2
  2. package/package.json +1 -1
  3. package/skills/wix-app/SKILL.md +49 -42
  4. package/skills/wix-app/references/BACKEND_EVENT.md +10 -65
  5. package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +101 -406
  6. package/skills/wix-app/references/DASHBOARD_MENU_PLUGIN.md +14 -111
  7. package/skills/wix-app/references/DASHBOARD_MODAL.md +56 -205
  8. package/skills/wix-app/references/DASHBOARD_PAGE.md +19 -98
  9. package/skills/wix-app/references/DASHBOARD_PLUGIN.md +6 -108
  10. package/skills/wix-app/references/DATA_COLLECTION.md +113 -198
  11. package/skills/wix-app/references/EMBEDDED_SCRIPT.md +41 -268
  12. package/skills/wix-app/references/EXTENSION_REGISTRATION.md +27 -76
  13. package/skills/wix-app/references/SERVICE_PLUGIN.md +35 -188
  14. package/skills/wix-app/references/SITE_PLUGIN.md +8 -92
  15. package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +0 -44
  16. package/skills/wix-app/references/custom-element-widget/SETTINGS_PANEL.md +19 -330
  17. package/skills/wix-app/references/dashboard-menu-plugin/bookings-slots.md +0 -12
  18. package/skills/wix-app/references/dashboard-menu-plugin/ecommerce-slots.md +7 -0
  19. package/skills/wix-app/references/dashboard-menu-plugin/restaurants-slots.md +0 -12
  20. package/skills/wix-app/references/dashboard-plugin/SLOTS.md +3 -15
  21. package/skills/wix-app/references/service-plugin/ADDITIONAL-FEES.md +2 -18
  22. package/skills/wix-app/references/service-plugin/BOOKINGS-STAFF-SORTING.md +2 -42
  23. package/skills/wix-app/references/service-plugin/DISCOUNT-TRIGGERS.md +1 -11
  24. package/skills/wix-app/references/service-plugin/GIFT-CARDS.md +1 -11
  25. package/skills/wix-app/references/service-plugin/PAYMENT-SETTINGS.md +2 -40
  26. package/skills/wix-app/references/service-plugin/SHIPPING-RATES.md +2 -19
  27. package/skills/wix-app/references/service-plugin/VALIDATIONS.md +2 -18
  28. package/skills/wix-app/references/site-plugin/SLOTS.md +17 -68
  29. package/skills/wix-headless/SKILL.md +111 -389
  30. package/skills/wix-headless/references/BUILD.md +307 -0
  31. package/skills/wix-headless/references/DESIGN_SYSTEM.md +115 -0
  32. package/skills/wix-headless/references/DISCOVERY.md +237 -112
  33. package/skills/wix-headless/references/PLAN.md +82 -0
  34. package/skills/wix-headless/references/SEED.md +205 -0
  35. package/skills/wix-headless/references/SETUP.md +140 -134
  36. package/skills/wix-headless/references/astro/COMPOSE.md +142 -0
  37. package/skills/wix-headless/references/{blog → astro/blog}/BLOG_PAGES.md +1 -1
  38. package/skills/wix-headless/references/{blog → astro/blog}/BLOG_SETUP.md +2 -2
  39. package/skills/wix-headless/references/astro/cms/CMS_FOUNDATIONS.md +214 -0
  40. package/skills/wix-headless/references/{cms → astro/cms}/FAQ_KNOWLEDGE_BASE.md +6 -4
  41. package/skills/wix-headless/references/{cms → astro/cms}/PORTFOLIO.md +5 -5
  42. package/skills/wix-headless/references/{cms → astro/cms}/RESOURCE_LIBRARY.md +5 -5
  43. package/skills/wix-headless/references/{cms → astro/cms}/TEAM_DIRECTORY.md +5 -5
  44. package/skills/wix-headless/references/astro/designer/INSTRUCTIONS.md +331 -0
  45. package/skills/wix-headless/references/{ecom → astro/ecom}/CART_PAGES.md +1 -1
  46. package/skills/wix-headless/references/{ecom → astro/ecom}/CART_WIRING.md +1 -1
  47. package/skills/wix-headless/references/{ecom → astro/ecom}/COMPONENTS_CSS.md +3 -3
  48. package/skills/wix-headless/references/{forms → astro/forms}/CONTACT_FORM.md +13 -13
  49. package/skills/wix-headless/references/{gift-cards → astro/gift-cards}/COMPONENTS.md +1 -1
  50. package/skills/wix-headless/references/{gift-cards → astro/gift-cards}/PAGES.md +1 -1
  51. package/skills/wix-headless/references/{stores → astro/stores}/BACK_IN_STOCK.md +1 -1
  52. package/skills/wix-headless/references/{stores → astro/stores}/CATEGORY_PAGES.md +12 -13
  53. package/skills/wix-headless/references/{stores → astro/stores}/COMPONENTS_CSS.md +4 -4
  54. package/skills/wix-headless/references/{stores → astro/stores}/HOME_AND_NAV.md +11 -9
  55. package/skills/wix-headless/references/{stores → astro/stores}/PRODUCT_PAGES.md +5 -3
  56. package/skills/wix-headless/references/{stores → astro/stores}/SHARED_WIRING.md +3 -3
  57. package/skills/wix-headless/references/astro/templates/Footer.astro +27 -0
  58. package/skills/wix-headless/references/astro/templates/Layout.astro +132 -0
  59. package/skills/wix-headless/references/astro/templates/Navigation.astro +38 -0
  60. package/skills/wix-headless/references/astro/templates/astro.config.mjs +41 -0
  61. package/skills/wix-headless/references/astro/templates/ecom/components-ecom.css +302 -0
  62. package/skills/wix-headless/references/astro/templates/global.css +286 -0
  63. package/skills/wix-headless/references/astro/templates/index.astro +56 -0
  64. package/skills/wix-headless/{templates → references/astro/templates}/stores/back-in-stock.ts +1 -1
  65. package/skills/wix-headless/{templates → references/astro/templates}/stores/components-stores.css +138 -33
  66. package/skills/wix-headless/references/blog/BLOG_CONTENT.md +10 -11
  67. package/skills/wix-headless/references/blog/INSTRUCTIONS.md +5 -5
  68. package/skills/wix-headless/references/cms/CMS_FOUNDATIONS.md +31 -230
  69. package/skills/wix-headless/references/cms/INSTRUCTIONS.md +13 -8
  70. package/skills/wix-headless/references/custom/INSTRUCTIONS.md +38 -0
  71. package/skills/wix-headless/references/ecom/INSTRUCTIONS.md +10 -10
  72. package/skills/wix-headless/references/forms/INSTRUCTIONS.md +5 -5
  73. package/skills/wix-headless/references/gift-cards/INSTRUCTIONS.md +11 -11
  74. package/skills/wix-headless/references/images/INSTRUCTIONS.md +47 -50
  75. package/skills/wix-headless/references/seed-recipes.md +49 -0
  76. package/skills/wix-headless/references/shared/AUTHENTICATION.md +110 -0
  77. package/skills/wix-headless/references/shared/BUILD_NOISE.md +2 -2
  78. package/skills/wix-headless/references/shared/DOCS_SEARCH.md +41 -0
  79. package/skills/wix-headless/references/shared/IMAGE_GENERATION.md +17 -17
  80. package/skills/wix-headless/references/shared/IMPLEMENTER.md +20 -29
  81. package/skills/wix-headless/references/shared/PRODUCTION_SHARP_EDGES.md +1 -1
  82. package/skills/wix-headless/references/shared/RETURN_CONTRACT.md +25 -16
  83. package/skills/wix-headless/references/shared/STYLING.md +47 -10
  84. package/skills/wix-headless/references/stores/INSTRUCTIONS.md +25 -25
  85. package/skills/wix-headless/references/stores/PRODUCT_CATALOG_DATA.md +17 -17
  86. package/skills/wix-headless/references/verticals/_schema.json +31 -117
  87. package/skills/wix-headless/references/verticals/_schema.md +60 -150
  88. package/skills/wix-headless/references/verticals/blog.md +5 -99
  89. package/skills/wix-headless/references/verticals/cms.md +9 -100
  90. package/skills/wix-headless/references/verticals/ecom.md +5 -76
  91. package/skills/wix-headless/references/verticals/forms.md +5 -85
  92. package/skills/wix-headless/references/verticals/gift-cards.md +6 -103
  93. package/skills/wix-headless/references/verticals/stores.md +10 -144
  94. package/skills/wix-headless/scripts/check-manifest.mjs +5 -5
  95. package/skills/wix-headless/scripts/emit-design-tokens.mjs +29 -23
  96. package/skills/wix-headless/scripts/init-site-json.mjs +59 -21
  97. package/skills/wix-headless/scripts/patch-decorative-slots.mjs +67 -43
  98. package/skills/wix-headless/scripts/plan-entity-image-waves.mjs +3 -3
  99. package/skills/wix-headless/scripts/preview.sh +3 -3
  100. package/skills/wix-headless/scripts/release.sh +4 -4
  101. package/skills/wix-headless/scripts/scaffold.sh +75 -20
  102. package/skills/wix-headless/scripts/seed-utilities.sh +50 -12
  103. package/skills/wix-manage/SKILL.md +4 -8
  104. package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +2 -0
  105. package/skills/wix-manage/references/cms/cms-data-items-crud.md +4 -0
  106. package/skills/wix-manage/references/cms/cms-references-and-relationships.md +2 -0
  107. package/skills/wix-manage/references/cms/cms-schema-management.md +4 -0
  108. package/skills/wix-manage/references/ecommerce/api-shipping.md +443 -0
  109. package/skills/wix-manage/references/ecommerce/flow-add-free-shipping.md +5 -6
  110. package/skills/wix-manage/references/ecommerce/flow-fix-coverage-gaps.md +4 -5
  111. package/skills/wix-manage/references/ecommerce/flow-optimize-shipping-rates.md +4 -5
  112. package/skills/wix-manage/references/ecommerce/goal-increase-aov.md +1 -1
  113. package/skills/wix-manage/references/ecommerce/goal-reduce-cart-abandonment.md +1 -2
  114. package/skills/wix-manage/references/ecommerce/guardrail-shipping-health.md +2 -2
  115. package/skills/wix-manage/references/ecommerce/recipe-apply-shipping-recommendations.md +4 -5
  116. package/skills/wix-manage/references/ecommerce/recommend-ecommerce-strategy.md +7 -7
  117. package/skills/wix-manage/references/ecommerce/setup-discount-rules.md +209 -72
  118. package/skills/wix-manage/references/ecommerce/setup-store-pickup-location.md +9 -10
  119. package/skills/wix-manage/references/ecommerce/skill-graph.md +4 -4
  120. package/skills/wix-manage/references/forms/create-form.md +2 -0
  121. package/skills/wix-manage/references/stores/bulk-create-products-with-options.md +2 -0
  122. package/skills/wix-manage/references/stores/create-product-from-image.md +91 -38
  123. package/skills/wix-manage/references/stores/setup-online-store-catalog-v3.md +2 -0
  124. package/skills/wix-app/references/custom-element-widget/default-thumbnail.png +0 -0
  125. package/skills/wix-app/references/data-collection/extension-template.ts +0 -107
  126. package/skills/wix-headless/references/ORCHESTRATION.md +0 -269
  127. package/skills/wix-headless/references/commands/install-app.md +0 -42
  128. package/skills/wix-headless/references/commands/mcp-bootstrap.md +0 -28
  129. package/skills/wix-headless/references/designer/INSTRUCTIONS.md +0 -828
  130. package/skills/wix-headless/references/shared/MCP_PREFIX.md +0 -105
  131. package/skills/wix-headless/scripts/copy-utility-templates.mjs +0 -153
  132. package/skills/wix-headless/templates/ecom/components-ecom.css +0 -215
  133. package/skills/wix-manage/references/events/list-events.md +0 -203
  134. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/CartBadge.tsx +0 -0
  135. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/CartView.tsx +0 -0
  136. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/cart.astro +0 -0
  137. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/discounts.ts +0 -0
  138. /package/skills/wix-headless/{templates → references/astro/templates}/ecom/thank-you.astro +0 -0
  139. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/GiftCardPurchase.tsx +0 -0
  140. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/_home-teaser-snippet.astro +0 -0
  141. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/_nav-snippet.astro +0 -0
  142. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/components-gift-cards.css +0 -0
  143. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/gift-cards.astro +0 -0
  144. /package/skills/wix-headless/{templates → references/astro/templates}/gift-cards/gift-cards.ts +0 -0
  145. /package/skills/wix-headless/{templates → references/astro/templates}/stores/AddToCartButton.tsx +0 -0
  146. /package/skills/wix-headless/{templates → references/astro/templates}/stores/BackInStockForm.tsx +0 -0
  147. /package/skills/wix-headless/{templates → references/astro/templates}/stores/CategoryRail.astro +0 -0
  148. /package/skills/wix-headless/{templates → references/astro/templates}/stores/ProductCard.astro +0 -0
  149. /package/skills/wix-headless/{templates → references/astro/templates}/stores/ProductPurchase.tsx +0 -0
  150. /package/skills/wix-headless/{templates → references/astro/templates}/stores/SeoTags.astro +0 -0
  151. /package/skills/wix-headless/{templates → references/astro/templates}/stores/categories.ts +0 -0
  152. /package/skills/wix-headless/{templates → references/astro/templates}/stores/category/[slug].astro +0 -0
  153. /package/skills/wix-headless/{templates → references/astro/templates}/stores/products/[slug].astro +0 -0
  154. /package/skills/wix-headless/{templates → references/astro/templates}/stores/products/index.astro +0 -0
@@ -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. Runs at session start; malformed vertical aborts the skill.",
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", "packages"],
7
- "additionalProperties": true,
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.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": ["route"],
42
+ "required": ["name"],
43
+ "additionalProperties": false,
60
44
  "properties": {
61
- "route": { "type": "string", "description": "URL path (e.g. /cart) OR the literal 'Hosted by Wix' for Wix-hosted endpoints like checkout." },
62
- "name": { "type": "string", "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)." }
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
- "pages": {
51
+ "routes": {
116
52
  "type": "array",
117
53
  "items": {
118
54
  "type": "object",
119
- "required": ["agentLocation", "scope", "references"],
55
+ "required": ["route"],
56
+ "additionalProperties": false,
120
57
  "properties": {
121
- "name": { "type": "string" },
122
- "agentLocation": { "type": "string" },
123
- "scope": {
58
+ "route": {
124
59
  "type": "string",
125
- "pattern": "^pages(-[a-z][a-z0-9-]*)?$",
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
- "description": { "type": "string" },
129
- "references": { "type": "array", "items": { "type": "string" } },
130
- "files": { "type": "array", "items": { "type": "string" } }
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
- "include": { "type": "boolean", "description": "Pack-level loading flag. If true, the pack is loaded in every site regardless of triggers/requires (today: only the cms pack uses include:true). Default false — the pack loads only when triggers match the user's prompt or another pack pulls it in via requires." },
158
- "disabled": { "type": "boolean", "description": "Pack-level activation flag, ORTHOGONAL to `include`. If true, the pack's surfaces (pages, nav links, home blocks) are disabled 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). Files still ship via creates: / contributes: so activation is instant once the user opts in. 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." }
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
  }
@@ -1,10 +1,15 @@
1
- # Vertical Schema
1
+ # Vertical Schema (Phase 1 — discovery only)
2
2
 
3
- Each file in `references/verticals/` declares one vertical's contribution to the build flow. The skill reads the user's prompt, loads matching verticals, and assembles the phase-based flow from them.
3
+ Each file in `references/verticals/` declares one vertical's contribution to discovery. The skill reads the user's prompt, loads the matching pack set (per SKILL.md routing table), and assembles the plan from the loaded packs' frontmatter.
4
+
5
+ > **Phase 1 scope.** This schema covers only what discovery needs. Later phases (setup, seed, design system, pages, build) are owned by an upstream skill plus this skill's own templates and `INSTRUCTIONS.md` files:
6
+ > - `@skills/wix-manage` — REST API recipes for site setup and content seeding.
7
+ >
8
+ > Per-pack fields (`packages`, `cmsCollections`, `seed`, `components`, `componentsCss`, `pages`, `creates`, `contributes`, `include`) are not part of this schema — those concerns belong to upstream recipes and per-vertical templates, not this skill's vertical packs.
4
9
 
5
10
  ## File format
6
11
 
7
- Markdown with YAML frontmatter. The frontmatter is the machine-readable config. The markdown body is human-readable docs (what the vertical does, gotchas, examples).
12
+ Markdown with YAML frontmatter. The frontmatter is the machine-readable config; the body is a short human-readable note about what the pack does and where its Phase 2+ implementation lives.
8
13
 
9
14
  ## Frontmatter fields
10
15
 
@@ -12,118 +17,43 @@ Markdown with YAML frontmatter. The frontmatter is the machine-readable config.
12
17
  ---
13
18
  # --- Identity ---
14
19
  name: stores # unique vertical name, matches the filename stem
20
+ description: "Short one-liner — what the pack provides at a glance."
15
21
  triggers: # prompt patterns that route the user to this vertical
16
- - "sell"
17
- - "ecommerce"
18
- - "store"
19
- - "shop"
20
- description: "Full ecommerce: products, cart, checkout, thank-you"
22
+ - "sell" # case-insensitive substrings
23
+ - "ecommerce" # SKILL.md routing table is the source of truth for actual loading;
24
+ # this list is human reference + a fallback signal.
21
25
 
22
26
  # --- Dependencies ---
23
- requires: [] # optional list of vertical names that must be co-loaded
24
- # e.g. stores requires ["ecom"] for cart/checkout
27
+ requires: [] # optional — verticals that must be co-loaded.
28
+ # Example: stores requires ["ecom", "gift-cards"]; gift-cards requires ["ecom"].
29
+ # If a pack with `requires:` is loaded, every name in the list MUST be in the same read batch.
25
30
 
26
31
  # --- Plan contribution ---
27
- features: # human-readable feature blurbs for the plan
32
+ features: # human-readable feature blurbs. Used in DISCOVERY.md Step 3 Section B.
28
33
  - name: "Product catalog"
29
34
  description: "Browse products with images, prices, and variants."
30
- - name: "Cart & checkout"
31
- description: "Add to cart, review, check out via Wix's hosted checkout."
32
35
 
33
- # --- Infrastructure ---
34
- apps: # MCP app installs (0 or more per pack)
35
- - name: "Wix Stores"
36
+ # --- Plan Pages table ---
37
+ apps: # zero or one entry per pack. apps[0].name fills the Source column
38
+ - name: "Wix Stores" # of DISCOVERY.md Step 3 Section C.
36
39
  appDefId: "215238eb-22a5-4c36-9e7b-e7c08025e04e"
37
- packages: # npm packages to install
38
- - "@wix/stores"
39
- - "@wix/ecom"
40
- - "@wix/redirects"
41
- - "@wix/site"
42
-
43
- # --- Routes this vertical contributes (for plan assembly) ---
44
- # Agent dispatch for rewriting page files lives under the 'pages:' phase entry further down.
45
- routes:
46
- - route: "/products"
40
+
41
+ routes: # routes the pack ships. Each entry → one row in the Pages table.
42
+ - route: "/products" # `route:` value renders verbatim in the Route cell.
47
43
  - route: "/products/[slug]"
48
- name: "Product Detail" # OPTIONAL: user-facing name override for DISCOVERY's Section C table. When omitted, the orchestrator derives the name from the path (/ → "Home"; /thank-you → "Thank You"). Override only when path-derivation produces a poor name (e.g. /products/[slug] would derive to "Products [slug]") OR when the route has no path (ecom's Wix-hosted Checkout uses route: "Hosted by Wix" + name: "Checkout").
49
-
50
- # --- CMS collections this vertical declares (if any) ---
51
- cmsCollections: [] # stores adds none; the cms vertical adds About + FAQ
52
-
53
- # --- Seed phase: data seeding (MCP-only, no design-token dependency) ---
54
- seed:
55
- agentLocation: "references/stores/"
56
- scope: "seed"
57
- description: "Delete default sample products, create on-brand products"
58
- references: ["references/stores/PRODUCT_CATALOG_DATA.md"]
59
-
60
- # --- Components phase: shared React/Astro components (runs after Design System, parallel with other verticals' components) ---
61
- components:
62
- agentLocation: "references/stores/"
63
- scope: "components"
64
- description: "SDK-wiring code and reusable islands (reads design tokens + site.d.ts)"
65
- references: ["references/stores/SHARED_WIRING.md"]
66
- files:
67
- - "src/utils/wix-image.ts"
68
- - "src/utils/analytics.ts"
69
- - "src/components/SeoTags.astro"
70
- - "src/components/AddToCartButton.tsx"
71
- - "src/components/CartBadge.tsx"
72
- - "src/components/ProductPurchase.tsx"
73
- - "src/components/CartView.tsx"
74
-
75
- # --- Pages phase: route files (written ONCE with both visual design and data queries) ---
76
- pages:
77
- - name: "product-pages"
78
- agentLocation: "references/stores/"
79
- scope: "pages-products"
80
- references: ["references/stores/PRODUCT_PAGES.md"]
81
- files:
82
- - "src/pages/products/index.astro"
83
- - "src/pages/products/[slug].astro"
84
- - "src/components/ProductCard.astro"
85
- - name: "cart-checkout"
86
- agentLocation: "references/stores/"
87
- scope: "pages-cart-checkout"
88
- references: ["references/ecom/CART_PAGES.md"]
89
- files:
90
- - "src/pages/cart.astro"
91
- - "src/pages/thank-you.astro"
92
- - name: "home-and-nav"
93
- agentLocation: "references/stores/"
94
- scope: "pages-home-and-nav"
95
- references: ["references/stores/HOME_AND_NAV.md"]
96
- files:
97
- - "src/pages/index.astro (patch)"
98
- - "src/components/Navigation.astro (patch)"
99
-
100
- # --- File ownership declarations ---
101
- # `creates:` lists files this vertical is the sole author of. Schema validator
102
- # enforces single-owner (two verticals claiming the same file → fail at session start)
103
- # and unresolved-import check (if ANY loaded reference imports ../utils/X, some
104
- # vertical must declare it in `creates:` OR it must be a plugin shared utility).
105
- # `contributes:` lists files this vertical co-edits via named markers. The Design
106
- # System phase scaffolds shell files (Navigation.astro, index.astro) with markers;
107
- # each vertical inserts at its marker. Replaces the old `homeSection:` concept —
108
- # contributes[].description is surfaced in the plan shown to the user.
109
- # Skill-level shared utilities (wix-image.ts, analytics.ts, ricos.ts) are NEVER listed here —
110
- # they ship via <SKILL_ROOT>/shared-utilities/ and are copied into projects by
111
- # <SKILL_ROOT>/scripts/seed-utilities.sh during Setup.
112
- creates:
113
- - { file: src/components/AddToCartButton.tsx, phase: components }
114
- - { file: src/pages/products/index.astro, phase: pages }
115
-
116
- contributes:
117
- - file: src/pages/index.astro
118
- marker: "<!-- home:stores -->"
119
- description: "Featured products grid (3–6 items from productsV3.queryProducts)"
120
- - file: src/components/Navigation.astro
121
- marker: "<!-- nav:links -->"
122
- description: "Shop menu link → /products"
123
-
124
- # --- Loading + activation (orthogonal pack-level flags) ---
125
- include: false # if true, the pack loads in every site regardless of triggers/requires (today: only `cms` sets include:true). Default false → loads on trigger match or via another pack's requires.
126
- disabled: false # if true, the pack ships its code but its surfaces (pages, nav, home blocks) are inactive by default — they light up only when the user takes a separate action (today: enabling the matching Wix app from the dashboard, detected by a runtime probe). 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 `gift-cards` sets disabled:true. Default false.
44
+ name: "Product Detail" # OPTIONAL: user-facing name override for the Page cell. When omitted,
45
+ # the orchestrator derives the name from the path (/ → "Home";
46
+ # /thank-you → "Thank You"). Override only when path-derivation
47
+ # produces a poor name (e.g. "/products/[slug]" → "Products [slug]")
48
+ # OR when the route has no path (use the literal string "Hosted by Wix").
49
+
50
+ # --- Activation ---
51
+ disabled: false # if true, the pack ships its code but its surfaces (pages, nav, home blocks) are inactive
52
+ # by default — they light up only when the user takes a separate action (today: enabling
53
+ # the matching Wix app from the dashboard, detected by a runtime probe). DISCOVERY.md plan
54
+ # composition (Sections B + C) skips features and routes from disabled packs so the plan
55
+ # never promises a surface the user did not opt into. Today only `gift-cards` sets
56
+ # `disabled: true`. Default false.
127
57
  ---
128
58
  ```
129
59
 
@@ -131,55 +61,35 @@ disabled: false # if true, the pack ships its code but its
131
61
 
132
62
  | Field | Type | Required | Notes |
133
63
  |-------|------|----------|-------|
134
- | `name` | string | yes | Matches filename stem (e.g., `stores.md` → `name: stores`) |
135
- | `triggers` | string[] | yes unless `include: true` | Case-insensitive substrings matched against user prompt |
136
- | `description` | string | yes | Short label for the plan |
137
- | `features` | object[] | yes | Feature blurbs for the plan's "Features" section |
138
- | `apps` | object[] | no | MCP app installs; `{name, appDefId}` pairs |
139
- | `packages` | string[] | yes | npm packages |
140
- | `routes` | object[] | no | `{route, name?}` — routes the pack ships. Optional `name` overrides the path-derived page name in DISCOVERY's Section C. |
141
- | `cmsCollections` | object[] | no | Collections this vertical adds |
142
- | `seed` | object | no | Seed-phase agent config; omit if the vertical has no seeding |
143
- | `components` | object | no | Components-phase agent config; omit if none |
144
- | `pages` | object[] | no | Pages-phase agent dispatch (one entry per page-rewrite sub-scope) |
145
- | `creates` | object[] | no | `{file, phase}` — files this vertical is sole author of. Schema validator enforces single-owner + unresolved-import check. |
146
- | `contributes` | object[] | no | `{file, marker, description}` — files this vertical co-edits via named markers. |
147
- | `include` | bool | no | If true, the pack loads in every site regardless of triggers/requires (today: only `cms`). Controls **loading**. |
148
- | `disabled` | bool | no | If true, the pack ships its code but its surfaces are inactive by default — they light up only via a separate user action (today: enabling the matching Wix app from the dashboard; the pack's runtime probe detects it). DISCOVERY plan composition skips disabled packs from Sections B + C. Today only `gift-cards`. Controls **activation**. |
149
-
150
- ### `include` vs `disabled` — orthogonal axes
151
-
152
- The two flags answer different questions. Don't conflate them:
153
-
154
- - **`include`** — *Is this pack in the loaded set?* Default: load when triggers match or another pack pulls it in via `requires:`. `include: true` overrides that and forces the pack to load in every site. Used by `cms` (every site needs About/FAQ).
155
- - **`disabled`** — *Do this pack's surfaces appear without further user action?* Default: yes — the moment the pack is loaded, its routes and contributions are live. `disabled: true` says no — the code ships, but a separate runtime check (today: a dashboard-app probe) decides whether to render. Used by `gift-cards` (the surface only appears once the user enables the Wix Gift Card app from the dashboard).
156
-
157
- A pack can be `include: true, disabled: true` (always loaded but never auto-active) or any other combination — they don't conflict.
158
-
159
- ## How the skill uses the vertical
160
-
161
- 1. **Discovery step**: scan loaded verticals for `features`, `routes`, `cmsCollections` → assemble plan markdown.
162
- 2. **Setup phase**: collect `apps`, `packages` → one MCP call per app, one `npm install` with merged package list.
163
- 3. **Seed phase**: for each vertical with a `seed` block, dispatch `seed.agent + scope`.
164
- 4. **Design System phase**: Design System agent writes global styling — `@theme` token contract + a small set of always-required global semantic classes (compound patterns, interactive states, JS targets). Layout/spacing/typography flows through tokens-as-utilities at call sites; see `references/shared/STYLING.md`.
165
- 5. **Components phase**: for each vertical with a `components` block, dispatch `components.agent + scope` (parallel).
166
- 6. **Pages phase**: for each vertical, launch one agent per `pages[*]` entry (parallel).
64
+ | `name` | string | yes | Matches filename stem (`stores.md` → `name: stores`) |
65
+ | `description` | string | yes | One-line label — what the pack provides |
66
+ | `triggers` | string[] | yes (empty allowed for transitive-only packs) | Case-insensitive substrings. SKILL.md routing table is the actual source of truth for what gets loaded; this is human reference. |
67
+ | `requires` | string[] | no | Verticals that must be co-loaded in the same read batch |
68
+ | `features` | object[] | yes | `{name, description}` — used in DISCOVERY.md Step 3 Section B |
69
+ | `apps` | object[] | no | Zero or one entry. `apps[0].name` fills the Source column of the Pages table; absence implies built-in (cms uses `"CMS (builtin)"` literal). |
70
+ | `routes` | object[] | no | `{route, name?}` — one row per entry in the Pages table |
71
+ | `disabled` | bool | no | If true, the pack's surfaces are inactive by default. DISCOVERY plan skips disabled packs from Sections B + C. Today only `gift-cards`. Default false. |
72
+
73
+ ## How discovery uses the pack
74
+
75
+ 1. The orchestrator reads the user prompt and the SKILL.md routing table to determine the resolved pack set (top-level + `requires:` chain + always-on `cms`).
76
+ 2. It reads every pack file in the resolved set in **one concurrent batch**.
77
+ 3. From each pack's frontmatter it assembles:
78
+ - **Section B (interactive only)** — `features[].name` + `features[].description`, skipping packs with `disabled: true`.
79
+ - **Section C — Pages table** — one row per entry in `routes:` from non-disabled packs. Page cell uses `name:` override if present, else derives from the `route:` path. Source cell uses `apps[0].name`; for transitive packs, walk up the `requires:` chain to the top-level puller and use ITS `apps[0].name`. For `cms`, use the literal `"CMS (builtin)"`.
80
+ 4. Discovery never reads anything else from the pack file. Phase 2+ implementation work lives in the upstream skills.
167
81
 
168
82
  ## Adding a new vertical
169
83
 
170
- 1. Create `<name>.md` in this directory with frontmatter per the schema above.
171
- 2. Create `references/<name>/` with `INSTRUCTIONS.md` and `references/`.
172
- 3. No changes needed to `SKILL.md` or other verticals.
173
-
174
- The skill discovers verticals by listing this directory. No registration step.
84
+ 1. Create `<name>.md` in this directory with the frontmatter above.
85
+ 2. Add a row to SKILL.md's routing table with the resolved pack set (top-level + transitive `requires:` + `cms`).
86
+ 3. No other registration needed.
175
87
 
176
88
  ## Validation (informal)
177
89
 
178
- The skill should sanity-check vertical frontmatter at load time:
179
- - `name` matches filename stem
180
- - `packages` non-empty (empty would mean nothing to install)
181
- - If `seed` is declared, `seed.agentLocation` exists on disk
182
- - If `components` or `pages` declared, their agent locations exist on disk
183
- - All declared `apps`, `routes`, `creates`, `contributes` paths are valid and don't collide with another loaded vertical's owned paths
90
+ Sanity-check at session start:
91
+ - `name` matches filename stem.
92
+ - Every name in `requires:` resolves to a sibling file in this directory.
93
+ - Every `route:` is either a `/`-prefixed path OR the literal string `"Hosted by Wix"`.
184
94
 
185
- If validation fails, fail loud — surface the error to the user. A malformed vertical breaking the whole flow is better than silently dropping it.
95
+ If validation fails, fail loud — surface the error and stop. A malformed pack breaking the whole flow is better than silently dropping it.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: blog
3
+ description: "Blog — post listing, post detail with rich content, RSS feed, sitemap."
3
4
  triggers: ["blog", "publish articles", "write posts", "content site", "editorial", "journal", "newsletter"]
4
- description: "Blog — post listing, post detail with rich content, RSS feed, sitemap"
5
5
 
6
6
  features:
7
7
  - name: "Blog"
@@ -13,113 +13,19 @@ apps:
13
13
  - name: "Wix Blog"
14
14
  appDefId: "14bcded7-0066-7c35-14d7-466cb3f09103"
15
15
 
16
- packages:
17
- - "@wix/blog"
18
- - "@wix/ricos"
19
- - "@astrojs/rss"
20
- - "@astrojs/sitemap"
21
-
22
16
  routes:
23
17
  - route: "/blog"
24
18
  - route: "/blog/[slug]"
25
19
  name: "Blog Post" # path-derivation would produce "Blog [slug]" — override with the user-facing label
26
20
  - route: "/rss.xml"
27
21
 
28
- cmsCollections: []
29
-
30
- seed:
31
- agentLocation: "references/blog/"
32
- scope: "seed"
33
- description: "Ensure Blog app is installed, seed 3 on-brand blog posts via MCP with rich Ricos content"
34
- references: ["references/blog/BLOG_CONTENT.md"]
35
-
36
- components:
37
- agentLocation: "references/blog/"
38
- scope: "components"
39
- description: "Blog service module (queryBlogPosts, getPostBySlug), RicosViewer React wrapper, site constants, astro.config sitemap integration"
40
- references: ["references/blog/BLOG_SETUP.md"]
41
- files:
42
- - "src/lib/blog.ts"
43
- - "src/components/RicosViewer.tsx"
44
- - "src/consts.ts"
45
- - "astro.config.mjs (patch — add site property and sitemap integration)"
46
-
47
- pages:
48
- - name: "blog-pages"
49
- agentLocation: "references/blog/"
50
- scope: "pages"
51
- description: "Wire blog listing + post detail pages to @wix/blog SDK, add RSS feed endpoint, BlogPost layout, SEO head, date formatting, patch home page latest-posts section"
52
- references: ["references/blog/BLOG_PAGES.md"]
53
- files:
54
- - "src/pages/blog/index.astro"
55
- - "src/pages/blog/[...slug].astro"
56
- - "src/pages/rss.xml.js"
57
- - "src/layouts/BlogPost.astro"
58
- - "src/components/BaseHead.astro"
59
- - "src/components/FormattedDate.astro"
60
- - "src/pages/index.astro (patch — latest-posts section only)"
61
-
62
- creates:
63
- - { file: src/lib/blog.ts, phase: components }
64
- - { file: src/components/RicosViewer.tsx, phase: components }
65
- - { file: src/consts.ts, phase: components }
66
- - { file: src/pages/blog/index.astro, phase: pages }
67
- - { file: src/pages/blog/[...slug].astro, phase: pages }
68
- - { file: src/pages/rss.xml.js, phase: pages }
69
- - { file: src/layouts/BlogPost.astro, phase: pages }
70
- - { file: src/components/BaseHead.astro, phase: pages }
71
- - { file: src/components/FormattedDate.astro, phase: pages }
72
-
73
- contributes:
74
- - file: astro.config.mjs
75
- marker: "<!-- config:sitemap -->"
76
- description: "site property + @astrojs/sitemap integration"
77
- - file: src/pages/index.astro
78
- marker: "<!-- home:blog -->"
79
- description: "Latest 3 posts grid (cover images, titles, dates, excerpts) from queryBlogPosts(3)"
80
- - file: src/components/Navigation.astro
81
- marker: "<!-- nav:links -->"
82
- description: "Blog menu link → /blog"
83
-
84
- include: false
85
22
  disabled: false
86
23
  ---
87
24
 
88
25
  # Blog Pack
89
26
 
90
- Blog vertical for content-driven sites. Loaded when the user's prompt mentions blogging, publishing, or editorial content.
91
-
92
- ## Phase decomposition
93
-
94
- | Scope | Phase | Files | Depends on |
95
- |-------|-------|-------|------------|
96
- | `seed` | Phase 1 — Step 3 (bg) | None (MCP only) | MCP connection |
97
- | `components` | Phase 3 — Step 4.5 (bg) | blog.ts, RicosViewer.tsx, consts.ts, astro.config.mjs | Styling contract |
98
- | `blog-pages` | Phase 4 — Step 7 (bg) | blog/index.astro, blog/[...slug].astro, rss.xml.js, BlogPost.astro, BaseHead.astro, FormattedDate.astro, index.astro (patch) | Phase 2 Design System + Phase 1 Seed post data |
99
-
100
- Phase 3 Components runs in the background from Step 4.5 through Phase 4. Phase 4 blog-pages dispatches in Step 7 after Phase 3 + Phase 1 Seed complete — it needs the React islands written by Phase 3 and the seeded post slugs from Phase 1.
101
-
102
- RSS feed generation (`rss.xml.js`) is included in the blog-pages scope rather than a separate scope — it's ~15 lines, has no design dependency, and doesn't justify its own agent dispatch.
103
-
104
- ## Known failure modes (propagate to agent prompts)
105
-
106
- | Wrong | Right |
107
- |-------|-------|
108
- | `import { items } from "@wix/data"` for blog queries | `import { posts } from "@wix/blog"` — use the Blog SDK |
109
- | `<article set:html={post.content} />` | `<RicosViewer client:only="react" content={post.richContent} />` — content is Ricos format |
110
- | Skip `wixMetadata` export on `[...slug].astro` | Required for Wix page routing and SEO |
111
- | `media.wixMedia.image` as raw URL | `media.getImageUrl(item.media.wixMedia.image).url` — must resolve |
112
- | Query posts without `RICH_CONTENT` fieldset | Always request `RICH_CONTENT` or `post.richContent` is undefined |
113
- | `const { tag } = await tags.getTag(id)` | `const tag = await tags.getTag(id)` — returns directly (unlike `getCategory()`) |
114
- | Scoped `<style>` for RicosViewer overrides | `<style is:global>` — React islands don't inherit scoped Astro styles |
115
- | Skip `.ricos-content` color overrides | Ricos CSS hardcodes `color: rgb(0, 0, 0)` — invisible on dark themes without overrides |
116
-
117
- ## Images
118
-
119
- Cover images for blog posts are generated by the shared image agent (`image-phase-2-entity` scope), not by blog agents. The image agent PATCHes cover images onto post records after Phase 1 Seed creates them. Phase 4 agents query posts and render `post.media` — the image URL flows through the post record.
120
-
121
- ## References
27
+ Loaded when the user's prompt mentions blogging, publishing, or editorial content.
122
28
 
123
- - `references/blog/BLOG_CONTENT.md` — Phase 1: MCP post seeding
124
- - `references/blog/BLOG_SETUP.md` — Phase 3 Components: service module, RicosViewer, config
125
- - `references/blog/BLOG_PAGES.md` — Phase 2 blog-pages: listing, detail, RSS, layout, SEO
29
+ > **Discovery contract.** Phase 1 reads only the frontmatter above. Phase 2+ implementation (post seeding, RSS, page composition, ricos rendering) lives in an upstream skill plus this skill's own `templates/blog/` + `references/blog/INSTRUCTIONS.md`:
30
+ >
31
+ > - `@skills/wix-manage` ships the seeding recipe — `references/blog/how-to-create-blog-posts.md`.