Wix App
Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins,…
Install
Quick install
npx skills add https://github.com/wix/skills/tree/HEAD/skills/wix-appnpx skills add wix/skills --skill wix-app --agent claude-codenpx skills add wix/skills --skill wix-app --agent cursornpx skills add wix/skills --skill wix-app --agent codexnpx skills add wix/skills --skill wix-app --agent opencodenpx skills add wix/skills --skill wix-app --agent github-copilotnpx skills add wix/skills --skill wix-app --agent windsurfMore install options
Shorthand — useful for multi-skill repos:
npx skills add wix/skills --skill wix-appManual — clone the repo and drop the folder into your agent's skills directory:
git clone https://github.com/wix/skills.gitcp -r skills/skills/wix-app ~/.claude/skills/wix-app
Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins,…
wix-appby wix
Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins,…npx skills add https://github.com/wix/skills --skill wix-appDownload ZIPGitHub
Wix App Builder
Helps build extensions for Wix CLI applications. Covers all extension types: dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins, embedded scripts, backend APIs, events, service plugins, and data collections.
Scaffolding is owned by the Wix CLI. For every extension type except Backend API, files, folders, builder boilerplate, UUIDs, and src/extensions.ts registration are generated by wix generate --params. This skill provides the decision logic, API guidance, configuration semantics, and business-logic patterns that fill in the generated stubs.
⚠️ MANDATORY WORKFLOW CHECKLIST ⚠️
Before reporting completion to the user, ALL boxes MUST be checked:
- Step 1: Determined extension type(s) needed
- Asked clarifying questions if requirements were unclear
- Checked for implicit Data Collection need — unless user provided a collection ID directly (see Data Collection Inference)
- Obtained app namespace if Data Collection extension is being created
- Determined full scoped collection IDs if Data Collection extension is being created (see Collection ID Coordination)
- Explained recommendation with reasoning
- Step 2: Read extension reference file(s) for the chosen type(s) and the project-wide CODE_QUALITY.md
- Step 3: Checked API references; used MCP discovery only for gaps
- Step 4a: Scaffolded each CLI-supported extension via
wix generate --params
- Step 4b: Filled in business logic in the generated files
- Invoked
wix-design-systemskill ONLY before editing the first.tsx/.jsxfile that imports@wix/design-system. Skip for backend-only or data-only extensions.
- Step 5: Ran validation (see Validation)
- Dependencies installed
- TypeScript compiled
- Build succeeded
- Preview deployed
- Step 6: Collected and presented ALL manual action items to user
🛑 STOP: If any box is unchecked, do NOT proceed to the next step.
❌ ANTI-PATTERNS (DO NOT DO)
❌ WRONG✅ CORRECTHand-writing builder files, folders, UUIDs, or extension registrationRun wix generate --params — it owns scaffoldingImplementing without reading the extension referenceAlways read the relevant reference file firstUsing MCP discovery without checking refsCheck reference files firstReporting done without validationAlways run validation at the endLetting manual action items get buriedAggregate all manual steps at the very end
Quick Decision Helper
*
What are you trying to build?
- Admin interface → Dashboard Extensions
- Backend logic → Backend Extensions
- Data storage / CMS collections → Data Collection
- Editor React component → Site Extensions (app projects only)
*
Who will see it?
- Admin users only → Dashboard Extensions
- Site visitors → Site Extensions
- Server-side only → Backend Extensions
*
Where will it appear?
- Dashboard sidebar/page → Dashboard Page or Modal
- Existing Wix app dashboard (widget) → Dashboard Plugin
- Existing Wix app dashboard (menu item) → Dashboard Menu Plugin
- Anywhere on site → custom element widget
- Anywhere on site (with editor manifest) → Editor React component
- Wix business solution page → Site Plugin
- During business flow → Service Plugin
- After event occurs → Backend Event Extension
Decision Flow (Not sure?)
- Admin: Need full-page UI? → Dashboard Page. Need popup/form? → Dashboard Modal. Extending Wix app dashboard with a visual widget? → Dashboard Plugin. Adding a menu item to a Wix app dashboard's more-actions or bulk-actions menu? → Dashboard Menu Plugin. Modal constraint: Dashboard Pages cannot use
<Modal />; use a separate Dashboard Modal extension anddashboard.openModal().
- Backend: During business flow (checkout/shipping/tax)? → Service Plugin. After event (webhooks/sync)? → Backend Event Extension. Custom HTTP endpoints? → Backend API. Need CMS collections for app data? → Data Collection.
- Site: User places anywhere (standalone)? → custom element widget. Editor React component with editor manifest (styling, content, elements)? → Editor React component. Fixed slot on Wix app page? → Site Plugin. Scripts/analytics only? → Embedded Script.
Extension Types Reference Table
Extension TypeCategoryextensionType (for wix generate --params)Reference FileDashboard PageDashboardDASHBOARD_PAGEDASHBOARD_PAGE.mdDashboard ModalDashboardDASHBOARD_MODALDASHBOARD_MODAL.mdDashboard PluginDashboardDASHBOARD_PLUGINDASHBOARD_PLUGIN.mdDashboard Menu PluginDashboardDASHBOARD_MENU_PLUGINDASHBOARD_MENU_PLUGIN.mdService PluginBackendSERVICE_PLUGINSERVICE_PLUGIN.mdBackend Event ExtensionBackendEVENTBACKEND_EVENT.mdBackend APIBackend— (manual, see banner below)BACKEND_API.mdData CollectionBackendDATA_COLLECTIONDATA_COLLECTION.mdEditor React componentSiteEDITOR_REACT_COMPONENTEDITOR_REACT_COMPONENT.mdCustom element widgetSiteCUSTOM_ELEMENTCUSTOM_ELEMENT_WIDGET.mdSite PluginSiteSITE_PLUGINSITE_PLUGIN.mdEmbedded ScriptSiteEMBEDDED_SCRIPTEMBEDDED_SCRIPT.md
Key constraints:
- Dashboard Page cannot use
<Modal />; use a separate Dashboard Modal anddashboard.openModal().
⚠️ Backend API is the only extension type the CLI does NOT scaffold. wix generate has no BACKEND_API handler. Create files directly per BACKEND_API.md.
Extension Comparison
Custom element widget vs Editor React component vs Site PluginDashboard Page vs ModalService Plugin vs EventCustom element widget: standalone interactive component. Editor React component: React with editor manifest (CSS/data/elements). Plugin: fixed slot in Wix app page.Page: full page. Modal: overlay; use for popups.Service: during flow. Event: after event.
Cross-Cutting References
TopicReferenceCode Quality Requirements (applies to all generated code)CODE_QUALITY.mdExtension RegistrationEXTENSION_REGISTRATION.mdApp ValidationAPP_VALIDATION.mdApp Market ReviewAPP_MARKET_REVIEW.mdApp Identifiers (Namespace, Code ID)APP_IDENTIFIERS.mdWix Stores Versioning (V1/V3)STORES_VERSIONING.mdOfficial Documentation LinksDOCUMENTATION.md
Data Collection Inference
CRITICAL: Data collections are often needed implicitly — don't wait for the user to explicitly say "create a CMS collection." Infer the need automatically.
Skip this section if the user provides a collection ID directly (e.g., an existing site-level collection). In that case, use the provided ID as-is — no Data Collection extension or namespace scoping needed.
Always include a Data Collection extension when ANY of these are true:
IndicatorExampleUser mentions saving/storing/persisting app-specific data"save the fee amount", "store product recommendations"A dashboard page will manage (CRUD) domain entities"dashboard to manage fees", "admin page to edit rules"A service plugin reads app-configured data at runtime"fetch fee rules at checkout", "look up shipping rates"User mentions "dedicated database/collection""save in a dedicated database collection"Multiple extensions reference the same custom dataDashboard manages fees + service plugin reads fees
Why this matters: Without the Data Collection extension, the collection won't be created when the app is installed, the Wix Data APIs may not work (code editor not enabled), and collection IDs won't be properly scoped to the app namespace.
If data collection is inferred, follow the App Namespace Requirement to obtain the namespace before proceeding.
App Namespace Requirement
When creating a Data Collection, you MUST ask the user for their app namespace from Wix Dev Center. This is a required parameter that must be obtained from the user's Dev Center dashboard and cannot be recommended or guessed.
If the user hasn't provided their app namespace, read APP_IDENTIFIERS.md and give the user the instructions to obtain it.
Collection ID Coordination
Applies ONLY when a Data Collection extension is being created. If the user provides a collection ID directly, use it as-is — no namespace scoping, no Data Collection extension needed.
When a Data Collection is created alongside other extensions that reference the same collections:
- Get the app namespace (see App Namespace Requirement above)
- Determine the
idSuffixfor each collection (the Data Collection reference documents the full ID format)
- Use the full scoped collection ID (
<app-namespace>/<idSuffix>) in all extensions that reference the collection via Wix Data API calls
Wix Stores Versioning Requirement
Applies when ANY Wix Stores API is used (products, inventory, orders, etc.):
- Read the Stores Versioning reference — see STORES_VERSIONING.md. It contains the module map, permissions cheatsheet, copy-paste dual-catalog recipes (list/get/create/update/delete products, inventory, categories), the V1→V3 field map, webhook mapping, and the major V3 gotchas. Use it before searching SDK docs — it covers the common 80%.
- All Stores operations must check catalog version first using
getCatalogVersion()
- Use the correct module based on version:
productsV3(V3) vsproducts(V1)
- Apps MUST support both V1 and V3 — single-version apps cannot list in the App Market and break on new sites
- Request both V1 and V3 permission scopes for every Stores operation
This is non-negotiable — V1 and V3 are NOT backwards compatible.
App Market Review
Applies when a user wants to submit their app to the Wix App Market, list it publicly, prepare for App Market review, audit decline risk, or fix App Market review feedback. Not needed for private apps or routine version releases.
Read APP_MARKET_REVIEW.md — it contains the full technical checklist, implementation notes with Wix doc links, and the review taxonomy IDs for traceability.
Implementation Workflow
Step 1: Ask Clarifying Questions (if needed)
Only ask for configuration values when absolutely necessary for the implementation to proceed. If a value can be configured later or added as a manual step, don't block on it.
If unclear on approach (placement, visibility, configuration, integration), ask clarifying questions. If the answer could change the extension type, wait for the response before proceeding. Otherwise, proceed with the best-fit extension type.
Step 2: Make Your Recommendation
Use the Extension Types Reference Table and decision content above. State extension type and brief reasoning (placement, functionality, integration).
Step 3: Read Extension Reference, Check API References, Then Discover (if needed)
Workflow: Read extension reference → Check API references → Use MCP only for gaps.
- Read the extension reference file for the chosen extension type from the table above
- Identify required APIs from user requirements
- Check relevant API reference files:
- Backend events →
references/backend-event/COMMON-EVENTS.md
- Wix Data →
references/data-collection/WIX_DATA.md
- Dashboard SDK →
references/dashboard-page/DASHBOARD_API.md
- Service Plugin SPIs → read
references/SERVICE_PLUGIN.mdtogether with the matchingreferences/service-plugin/<NAME>.mdleaf
- Verify the specific method/event exists in references
- ONLY use MCP discovery if NOT found in reference files
Platform APIs (never discover - in references):
- Wix Data, Dashboard SDK, Event SDK (common events), Service Plugin SPIs
Vertical APIs (discover if needed):
- Wix Stores (⚠️ MUST use Stores Versioning reference — V1/V3 catalog check required), Wix Bookings, Wix Members, Wix Pricing Plans, third-party integrations
Decision table:
User RequirementCheck References / Discovery Needed?Reason / Reference File"Display store products"✅ YES (MCP discovery)Wix Stores API — include Stores Versioning reference"Show booking calendar"✅ YES (MCP discovery)Wix Bookings API not in reference files"Send emails to users"✅ YES (MCP discovery)Wix Triggered Emails not in reference files"Get member info"✅ YES (MCP discovery)Wix Members API not in reference files"Listen for cart events"Check COMMON-EVENTS.mdMCP discovery only if event missing in reference"Store data in collection"WIX_DATA.md ✅ Found❌ Skip discovery (covered by reference)"Create CMS collections for my app"Data Collection reference❌ Skip discovery (covered by dedicated reference)"Show dashboard toast"DASHBOARD_API.md ✅ Found❌ Skip discovery"Show toast / navigate"DASHBOARD_API.md ✅ Found❌ Skip discovery"UI only (forms, inputs)"N/A (no external API)❌ Skip discovery"Settings page with form inputs"N/A (UI only, no external API)❌ Skip discovery"Dashboard page with local state"N/A (no external API)❌ Skip discovery
MCP Tools for discovery (when needed):
SearchWixSDKDocumentation- SDK methods and APIs (Always use maxResults: 5)
ReadFullDocsMethodSchema- Full type schema for a specific SDK method (parameters, return type, permissions)
ReadFullDocsArticle- Prose guides and conceptual articles only (not for SDK method signatures)
Step 4a: Scaffold via the CLI
For each extension except Backend API, run npx wix generate --params '<json>'. The command returns {"success":true,"extensionType":"...","newFiles":[...]} on success.
If the command fails because of unknown or invalid params, run npx wix schema generate --type <extensionType> to print the JSON Schema for that extension type, fix the --params payload, and retry. Do not fall back to manual scaffolding.
What the CLI does automatically:
- Creates folders and stub files
- Generates a fresh UUID for the extension
id
- Updates
src/extensions.tswith the import and.use()call
- Enforces naming rules (kebab-case, hyphen-required custom elements, etc.)
Backend API exception: Create src/pages/api/*.ts files manually per BACKEND_API.md.
Step 4b: Fill in business logic
Open every path returned in newFiles and replace stubbed handler bodies / UI / queries with the user's actual logic, guided by the extension reference file's API and configuration sections.
- ⚠️ MANDATORY when using WDS: Invoke the
wix-design-systemskill before editing your first.tsx/.jsxfile that imports@wix/design-system. Do NOT invoke it preemptively for backend-only or data-only jobs — it adds large content to context that you won't use.
- ⚠️ MANDATORY when using Data Collections: Use the EXACT collection ID from
idSuffix(case-sensitive). IfidSuffixis"product-recommendations", use<app-namespace>/product-recommendationsNOTproductRecommendations.
Step 5: Run Validation
After all implementation is complete, you MUST run validation. See APP_VALIDATION.md for the complete validation workflow:
- Package installation (detect package manager, run install)
- TypeScript compilation check (
npx tsc --noEmit)
- Build validation (
npx wix build)
- Preview deployment (
npx wix preview)
Do NOT report completion to the user until validation passes.
If validation fails, fix the errors and re-validate until it passes.
Step 6: Report Completion
Only after validation passes, provide a concise summary section at the top of your response:
`## ✅ Implementation Complete
[1-2 sentence description of what was built]
**Extensions Created:**
- [Extension 1 Name] - [Brief purpose]
- [Extension 2 Name] - [Brief purpose]
**Build Status:**
- ✅ Dependencies: [Installed / status message]
- ✅ TypeScript: [No compilation errors / status]
- ✅ Build: [Completed successfully / status]
- ✅/⚠️ Preview: [Running at URL / Failed - reason]
**⚠️ IMPORTANT: [X] manual step(s) required to complete setup** (see "Manual Steps Required" section below)
`
- If there are NO manual steps, state: "✅ No manual steps required — you're ready to go!"
Step 7: Surface Manual Action Items
Present any manual steps the user must perform (e.g., configuring settings in the Wix dashboard, enabling permissions, setting up external services).
Format:
`## 🔧 Manual Steps Required
The following actions need to be done manually by you:
### 1. [Action Category/Title]
[Detailed description with specific instructions]
### 2. [Action Category/Title]
[Detailed description]
`
Extension Registration
wix generate --params updates src/extensions.ts automatically for every CLI-supported extension type. The only case that still requires manual editing is Backend API. For background, troubleshooting, and the manual recovery pattern when src/extensions.ts drifts, see EXTENSION_REGISTRATION.md.
Validation
Execute these steps sequentially after all implementation is complete. See APP_VALIDATION.md for the complete guide.
- Package Installation — Detect package manager, run install
- TypeScript Compilation —
npx tsc --noEmit
- Build —
npx wix build
- Preview —
npx wix preview
Stop and report errors if any step fails. Check .wix/debug.log on failures.
Cost Optimization
- Let the CLI scaffold — don't burn tokens describing folder layouts or builder boilerplate
- Only run
wix schema generate --type <extensionType>whenwix generate --paramsfails — don't pre-fetch it
- Read extension reference first — always read the relevant extension reference file before implementing
- Check API references first — read relevant API reference files before using MCP discovery
- Skip discovery when all required APIs are in reference files
- maxResults: 5 for all MCP SDK searches
- ReadFullDocsMethodSchema for SDK method schemas; ReadFullDocsArticle for prose guides only
- Invoke wix-design-system first when using WDS (prevents import errors)
Documentation
For links to official Wix CLI documentation for all extension types, see DOCUMENTATION.md.
More skills from wix
rnn-codebaseby wixNavigate and work with the react-native-navigation (RNN) codebase. Use when fixing bugs, adding features, tracing command flows, understanding options…wds-docsby wixWix Design System component reference. Use when building UI with @wix/design-system, choosing components, or checking props and examples. Triggers on "what…wix-cli-app-validationby wixUse when testing app readiness, verifying runtime behavior, or validating before releases and after changes in the code. Triggers include validate, test,…wix-cli-backend-apiby wixCreates HTTP endpoints for Wix CLI apps. Use only when the user specifically asks for a backend endpoint. Use when building REST API endpoints, backend HTTP…wix-cli-backend-eventby wixCreate backend event extensions that respond to Wix events. Use when implementing handlers that run when specific conditions occur on a site. Triggers include…wix-cli-context-providerby wixCreates context provider extensions for Wix CLI apps — logical components (no UI) that expose shared state, functions, and configuration to child site…wix-cli-dashboard-menu-pluginby wixMUST use whenever the user wants to add a clickable menu item, action, or option to an existing Wix dashboard page's more-actions menu, bulk-actions menu, or…wix-cli-dashboard-modalby wixUse when adding popup forms, confirmations, or detail views to Wix dashboards; creating reusable dialog components across dashboard pages; showing…---
Source: https://github.com/wix/skills/tree/HEAD/skills/wix-app
Author: wix
Discovered via: mcpservers.org
SKILL.md source
---
name: wix-app
description: Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins,…
---
# wix-app
Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins,…
# wix-appby wix
Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins,…
`npx skills add https://github.com/wix/skills --skill wix-app`Download ZIPGitHub
## Wix App Builder
Helps build extensions for Wix CLI applications. Covers all extension types: dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins, embedded scripts, backend APIs, events, service plugins, and data collections.
Scaffolding is owned by the Wix CLI. For every extension type except Backend API, files, folders, builder boilerplate, UUIDs, and `src/extensions.ts` registration are generated by `wix generate --params`. This skill provides the decision logic, API guidance, configuration semantics, and business-logic patterns that fill in the generated stubs.
## ⚠️ MANDATORY WORKFLOW CHECKLIST ⚠️
Before reporting completion to the user, ALL boxes MUST be checked:
* Step 1: Determined extension type(s) needed
* Asked clarifying questions if requirements were unclear
* Checked for implicit Data Collection need — unless user provided a collection ID directly (see Data Collection Inference)
* Obtained app namespace if Data Collection extension is being created
* Determined full scoped collection IDs if Data Collection extension is being created (see Collection ID Coordination)
* Explained recommendation with reasoning
* Step 2: Read extension reference file(s) for the chosen type(s) and the project-wide CODE_QUALITY.md
* Step 3: Checked API references; used MCP discovery only for gaps
* Step 4a: Scaffolded each CLI-supported extension via `wix generate --params`
* Step 4b: Filled in business logic in the generated files
* Invoked `wix-design-system` skill ONLY before editing the first `.tsx`/`.jsx` file that imports `@wix/design-system`. Skip for backend-only or data-only extensions.
* Step 5: Ran validation (see Validation)
* Dependencies installed
* TypeScript compiled
* Build succeeded
* Preview deployed
* Step 6: Collected and presented ALL manual action items to user
🛑 STOP: If any box is unchecked, do NOT proceed to the next step.
## ❌ ANTI-PATTERNS (DO NOT DO)
❌ WRONG✅ CORRECTHand-writing builder files, folders, UUIDs, or extension registrationRun `wix generate --params` — it owns scaffoldingImplementing without reading the extension referenceAlways read the relevant reference file firstUsing MCP discovery without checking refsCheck reference files firstReporting done without validationAlways run validation at the endLetting manual action items get buriedAggregate all manual steps at the very end
## Quick Decision Helper
*
What are you trying to build?
* Admin interface → Dashboard Extensions
* Backend logic → Backend Extensions
* Data storage / CMS collections → Data Collection
* Editor React component → Site Extensions (app projects only)
*
Who will see it?
* Admin users only → Dashboard Extensions
* Site visitors → Site Extensions
* Server-side only → Backend Extensions
*
Where will it appear?
* Dashboard sidebar/page → Dashboard Page or Modal
* Existing Wix app dashboard (widget) → Dashboard Plugin
* Existing Wix app dashboard (menu item) → Dashboard Menu Plugin
* Anywhere on site → custom element widget
* Anywhere on site (with editor manifest) → Editor React component
* Wix business solution page → Site Plugin
* During business flow → Service Plugin
* After event occurs → Backend Event Extension
## Decision Flow (Not sure?)
* Admin: Need full-page UI? → Dashboard Page. Need popup/form? → Dashboard Modal. Extending Wix app dashboard with a visual widget? → Dashboard Plugin. Adding a menu item to a Wix app dashboard's more-actions or bulk-actions menu? → Dashboard Menu Plugin. Modal constraint: Dashboard Pages cannot use `<Modal />`; use a separate Dashboard Modal extension and `dashboard.openModal()`.
* Backend: During business flow (checkout/shipping/tax)? → Service Plugin. After event (webhooks/sync)? → Backend Event Extension. Custom HTTP endpoints? → Backend API. Need CMS collections for app data? → Data Collection.
* Site: User places anywhere (standalone)? → custom element widget. Editor React component with editor manifest (styling, content, elements)? → Editor React component. Fixed slot on Wix app page? → Site Plugin. Scripts/analytics only? → Embedded Script.
## Extension Types Reference Table
Extension TypeCategory`extensionType` (for `wix generate --params`)Reference FileDashboard PageDashboard`DASHBOARD_PAGE`DASHBOARD_PAGE.mdDashboard ModalDashboard`DASHBOARD_MODAL`DASHBOARD_MODAL.mdDashboard PluginDashboard`DASHBOARD_PLUGIN`DASHBOARD_PLUGIN.mdDashboard Menu PluginDashboard`DASHBOARD_MENU_PLUGIN`DASHBOARD_MENU_PLUGIN.mdService PluginBackend`SERVICE_PLUGIN`SERVICE_PLUGIN.mdBackend Event ExtensionBackend`EVENT`BACKEND_EVENT.mdBackend APIBackend— (manual, see banner below)BACKEND_API.mdData CollectionBackend`DATA_COLLECTION`DATA_COLLECTION.mdEditor React componentSite`EDITOR_REACT_COMPONENT`EDITOR_REACT_COMPONENT.mdCustom element widgetSite`CUSTOM_ELEMENT`CUSTOM_ELEMENT_WIDGET.mdSite PluginSite`SITE_PLUGIN`SITE_PLUGIN.mdEmbedded ScriptSite`EMBEDDED_SCRIPT`EMBEDDED_SCRIPT.md
Key constraints:
* Dashboard Page cannot use `<Modal />`; use a separate Dashboard Modal and `dashboard.openModal()`.
⚠️ Backend API is the only extension type the CLI does NOT scaffold. `wix generate` has no `BACKEND_API` handler. Create files directly per BACKEND_API.md.
## Extension Comparison
Custom element widget vs Editor React component vs Site PluginDashboard Page vs ModalService Plugin vs EventCustom element widget: standalone interactive component. Editor React component: React with editor manifest (CSS/data/elements). Plugin: fixed slot in Wix app page.Page: full page. Modal: overlay; use for popups.Service: during flow. Event: after event.
## Cross-Cutting References
TopicReferenceCode Quality Requirements (applies to all generated code)CODE_QUALITY.mdExtension RegistrationEXTENSION_REGISTRATION.mdApp ValidationAPP_VALIDATION.mdApp Market ReviewAPP_MARKET_REVIEW.mdApp Identifiers (Namespace, Code ID)APP_IDENTIFIERS.mdWix Stores Versioning (V1/V3)STORES_VERSIONING.mdOfficial Documentation LinksDOCUMENTATION.md
## Data Collection Inference
CRITICAL: Data collections are often needed implicitly — don't wait for the user to explicitly say "create a CMS collection." Infer the need automatically.
Skip this section if the user provides a collection ID directly (e.g., an existing site-level collection). In that case, use the provided ID as-is — no Data Collection extension or namespace scoping needed.
Always include a Data Collection extension when ANY of these are true:
IndicatorExampleUser mentions saving/storing/persisting app-specific data"save the fee amount", "store product recommendations"A dashboard page will manage (CRUD) domain entities"dashboard to manage fees", "admin page to edit rules"A service plugin reads app-configured data at runtime"fetch fee rules at checkout", "look up shipping rates"User mentions "dedicated database/collection""save in a dedicated database collection"Multiple extensions reference the same custom dataDashboard manages fees + service plugin reads fees
Why this matters: Without the Data Collection extension, the collection won't be created when the app is installed, the Wix Data APIs may not work (code editor not enabled), and collection IDs won't be properly scoped to the app namespace.
If data collection is inferred, follow the App Namespace Requirement to obtain the namespace before proceeding.
### App Namespace Requirement
When creating a Data Collection, you MUST ask the user for their app namespace from Wix Dev Center. This is a required parameter that must be obtained from the user's Dev Center dashboard and cannot be recommended or guessed.
If the user hasn't provided their app namespace, read APP_IDENTIFIERS.md and give the user the instructions to obtain it.
### Collection ID Coordination
Applies ONLY when a Data Collection extension is being created. If the user provides a collection ID directly, use it as-is — no namespace scoping, no Data Collection extension needed.
When a Data Collection is created alongside other extensions that reference the same collections:
* Get the app namespace (see App Namespace Requirement above)
* Determine the `idSuffix` for each collection (the Data Collection reference documents the full ID format)
* Use the full scoped collection ID (`<app-namespace>/<idSuffix>`) in all extensions that reference the collection via Wix Data API calls
## Wix Stores Versioning Requirement
Applies when ANY Wix Stores API is used (products, inventory, orders, etc.):
* Read the Stores Versioning reference — see STORES_VERSIONING.md. It contains the module map, permissions cheatsheet, copy-paste dual-catalog recipes (list/get/create/update/delete products, inventory, categories), the V1→V3 field map, webhook mapping, and the major V3 gotchas. Use it before searching SDK docs — it covers the common 80%.
* All Stores operations must check catalog version first using `getCatalogVersion()`
* Use the correct module based on version: `productsV3` (V3) vs `products` (V1)
* Apps MUST support both V1 and V3 — single-version apps cannot list in the App Market and break on new sites
* Request both V1 and V3 permission scopes for every Stores operation
This is non-negotiable — V1 and V3 are NOT backwards compatible.
## App Market Review
Applies when a user wants to submit their app to the Wix App Market, list it publicly, prepare for App Market review, audit decline risk, or fix App Market review feedback. Not needed for private apps or routine version releases.
Read APP_MARKET_REVIEW.md — it contains the full technical checklist, implementation notes with Wix doc links, and the review taxonomy IDs for traceability.
## Implementation Workflow
### Step 1: Ask Clarifying Questions (if needed)
Only ask for configuration values when absolutely necessary for the implementation to proceed. If a value can be configured later or added as a manual step, don't block on it.
If unclear on approach (placement, visibility, configuration, integration), ask clarifying questions. If the answer could change the extension type, wait for the response before proceeding. Otherwise, proceed with the best-fit extension type.
### Step 2: Make Your Recommendation
Use the Extension Types Reference Table and decision content above. State extension type and brief reasoning (placement, functionality, integration).
### Step 3: Read Extension Reference, Check API References, Then Discover (if needed)
Workflow: Read extension reference → Check API references → Use MCP only for gaps.
* Read the extension reference file for the chosen extension type from the table above
* Identify required APIs from user requirements
* Check relevant API reference files:
* Backend events → `references/backend-event/COMMON-EVENTS.md`
* Wix Data → `references/data-collection/WIX_DATA.md`
* Dashboard SDK → `references/dashboard-page/DASHBOARD_API.md`
* Service Plugin SPIs → read `references/SERVICE_PLUGIN.md` together with the matching `references/service-plugin/<NAME>.md` leaf
* Verify the specific method/event exists in references
* ONLY use MCP discovery if NOT found in reference files
Platform APIs (never discover - in references):
* Wix Data, Dashboard SDK, Event SDK (common events), Service Plugin SPIs
Vertical APIs (discover if needed):
* Wix Stores (⚠️ MUST use Stores Versioning reference — V1/V3 catalog check required), Wix Bookings, Wix Members, Wix Pricing Plans, third-party integrations
Decision table:
User RequirementCheck References / Discovery Needed?Reason / Reference File"Display store products"✅ YES (MCP discovery)Wix Stores API — include Stores Versioning reference"Show booking calendar"✅ YES (MCP discovery)Wix Bookings API not in reference files"Send emails to users"✅ YES (MCP discovery)Wix Triggered Emails not in reference files"Get member info"✅ YES (MCP discovery)Wix Members API not in reference files"Listen for cart events"Check `COMMON-EVENTS.md`MCP discovery only if event missing in reference"Store data in collection"WIX_DATA.md ✅ Found❌ Skip discovery (covered by reference)"Create CMS collections for my app"Data Collection reference❌ Skip discovery (covered by dedicated reference)"Show dashboard toast"DASHBOARD_API.md ✅ Found❌ Skip discovery"Show toast / navigate"DASHBOARD_API.md ✅ Found❌ Skip discovery"UI only (forms, inputs)"N/A (no external API)❌ Skip discovery"Settings page with form inputs"N/A (UI only, no external API)❌ Skip discovery"Dashboard page with local state"N/A (no external API)❌ Skip discovery
MCP Tools for discovery (when needed):
* `SearchWixSDKDocumentation` - SDK methods and APIs (Always use maxResults: 5)
* `ReadFullDocsMethodSchema` - Full type schema for a specific SDK method (parameters, return type, permissions)
* `ReadFullDocsArticle` - Prose guides and conceptual articles only (not for SDK method signatures)
### Step 4a: Scaffold via the CLI
For each extension except Backend API, run `npx wix generate --params '<json>'`. The command returns `{"success":true,"extensionType":"...","newFiles":[...]}` on success.
If the command fails because of unknown or invalid params, run `npx wix schema generate --type <extensionType>` to print the JSON Schema for that extension type, fix the `--params` payload, and retry. Do not fall back to manual scaffolding.
What the CLI does automatically:
* Creates folders and stub files
* Generates a fresh UUID for the extension `id`
* Updates `src/extensions.ts` with the import and `.use()` call
* Enforces naming rules (kebab-case, hyphen-required custom elements, etc.)
Backend API exception: Create `src/pages/api/*.ts` files manually per BACKEND_API.md.
### Step 4b: Fill in business logic
Open every path returned in `newFiles` and replace stubbed handler bodies / UI / queries with the user's actual logic, guided by the extension reference file's API and configuration sections.
* ⚠️ MANDATORY when using WDS: Invoke the `wix-design-system` skill before editing your first `.tsx`/`.jsx` file that imports `@wix/design-system`. Do NOT invoke it preemptively for backend-only or data-only jobs — it adds large content to context that you won't use.
* ⚠️ MANDATORY when using Data Collections: Use the EXACT collection ID from `idSuffix` (case-sensitive). If `idSuffix` is `"product-recommendations"`, use `<app-namespace>/product-recommendations` NOT `productRecommendations`.
### Step 5: Run Validation
After all implementation is complete, you MUST run validation. See APP_VALIDATION.md for the complete validation workflow:
* Package installation (detect package manager, run install)
* TypeScript compilation check (`npx tsc --noEmit`)
* Build validation (`npx wix build`)
* Preview deployment (`npx wix preview`)
Do NOT report completion to the user until validation passes.
If validation fails, fix the errors and re-validate until it passes.
### Step 6: Report Completion
Only after validation passes, provide a concise summary section at the top of your response:
```
`## ✅ Implementation Complete
[1-2 sentence description of what was built]
**Extensions Created:**
- [Extension 1 Name] - [Brief purpose]
- [Extension 2 Name] - [Brief purpose]
**Build Status:**
- ✅ Dependencies: [Installed / status message]
- ✅ TypeScript: [No compilation errors / status]
- ✅ Build: [Completed successfully / status]
- ✅/⚠️ Preview: [Running at URL / Failed - reason]
**⚠️ IMPORTANT: [X] manual step(s) required to complete setup** (see "Manual Steps Required" section below)
`
```
* If there are NO manual steps, state: "✅ No manual steps required — you're ready to go!"
### Step 7: Surface Manual Action Items
Present any manual steps the user must perform (e.g., configuring settings in the Wix dashboard, enabling permissions, setting up external services).
Format:
```
`## 🔧 Manual Steps Required
The following actions need to be done manually by you:
### 1. [Action Category/Title]
[Detailed description with specific instructions]
### 2. [Action Category/Title]
[Detailed description]
`
```
## Extension Registration
`wix generate --params` updates `src/extensions.ts` automatically for every CLI-supported extension type. The only case that still requires manual editing is Backend API. For background, troubleshooting, and the manual recovery pattern when `src/extensions.ts` drifts, see EXTENSION_REGISTRATION.md.
## Validation
Execute these steps sequentially after all implementation is complete. See APP_VALIDATION.md for the complete guide.
* Package Installation — Detect package manager, run install
* TypeScript Compilation — `npx tsc --noEmit`
* Build — `npx wix build`
* Preview — `npx wix preview`
Stop and report errors if any step fails. Check `.wix/debug.log` on failures.
## Cost Optimization
* Let the CLI scaffold — don't burn tokens describing folder layouts or builder boilerplate
* Only run `wix schema generate --type <extensionType>` when `wix generate --params` fails — don't pre-fetch it
* Read extension reference first — always read the relevant extension reference file before implementing
* Check API references first — read relevant API reference files before using MCP discovery
* Skip discovery when all required APIs are in reference files
* maxResults: 5 for all MCP SDK searches
* ReadFullDocsMethodSchema for SDK method schemas; ReadFullDocsArticle for prose guides only
* Invoke wix-design-system first when using WDS (prevents import errors)
## Documentation
For links to official Wix CLI documentation for all extension types, see DOCUMENTATION.md.
## More skills from wix
rnn-codebaseby wixNavigate and work with the react-native-navigation (RNN) codebase. Use when fixing bugs, adding features, tracing command flows, understanding options…wds-docsby wixWix Design System component reference. Use when building UI with @wix/design-system, choosing components, or checking props and examples. Triggers on "what…wix-cli-app-validationby wixUse when testing app readiness, verifying runtime behavior, or validating before releases and after changes in the code. Triggers include validate, test,…wix-cli-backend-apiby wixCreates HTTP endpoints for Wix CLI apps. Use only when the user specifically asks for a backend endpoint. Use when building REST API endpoints, backend HTTP…wix-cli-backend-eventby wixCreate backend event extensions that respond to Wix events. Use when implementing handlers that run when specific conditions occur on a site. Triggers include…wix-cli-context-providerby wixCreates context provider extensions for Wix CLI apps — logical components (no UI) that expose shared state, functions, and configuration to child site…wix-cli-dashboard-menu-pluginby wixMUST use whenever the user wants to add a clickable menu item, action, or option to an existing Wix dashboard page's more-actions menu, bulk-actions menu, or…wix-cli-dashboard-modalby wixUse when adding popup forms, confirmations, or detail views to Wix dashboards; creating reusable dialog components across dashboard pages; showing…
---
**Source**: https://github.com/wix/skills/tree/HEAD/skills/wix-app
**Author**: wix
**Discovered via**: mcpservers.org
Related skills 6
caveman
Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.
secure-linux-web-hosting
Use when setting up, hardening, or reviewing a cloud server for self-hosting, including DNS, SSH, firewalls, Nginx, static-site hosting, reverse-proxying an app, HTTPS with Let's Encrypt or ACME clients, safe HTTP-to-HTTPS redirects, or optional post-launch network tuning such as BBR.
readme-i18n
Use when the user wants to translate a repository README, make a repo multilingual, localize docs, add a language switcher, internationalize the README, or update localized README variants in a GitHub-style repository.
lark-shared
Use when first setting up lark-cli, running auth login, switching user/bot identity (--as), handling permission denied or scope errors, needing to update lark-cli, or seeing _notice in JSON output.
improve-codebase-architecture
Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.
paper-context-resolver
Optional RigorPilot helper for README-first deep learning repo reproduction. Use only when the README and repository files leave a narrow reproduction-critical gap and the task is to resolve a specific paper detail such as dataset split, preprocessing, evaluation protocol, checkpoint mapping, or runtime assumption from primary paper sources while recording conflicts. Do not use for general paper summary, repo scanning, environment setup, command execution, title-only paper lookup, or replacin...