Agent Skill · Wix

wix-app

Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins, embedded scripts, backend APIs, backend events, service plugins, data collections, and App Market readiness. Use when building ANY feature or extension for a Wix CLI app or preparing a Wix app for App Market review. Triggers on: add, build, create, implement, help me, dashboard, widget, plugin, backend, API, event, collection, embedded script, service plugin, Editor React component, checkout, shipping, tax, discount, SPI, CMS, schema, tracking, popup, admin panel, menu item, modal, validate, test, verify, register extension, App Market, app review, submission readiness.

Provider: Wix Path in repo: plugins/wix/skills/wix-app/SKILL.md

Skill body

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:

🛑 STOP: If any box is unchecked, do NOT proceed to the next step.


❌ ANTI-PATTERNS (DO NOT DO)

❌ WRONG ✅ CORRECT
Hand-writing builder files, folders, UUIDs, or extension registration Run wix generate --params — it owns scaffolding
Implementing without reading the extension reference Always read the relevant reference file first
Using MCP discovery without checking refs Check reference files first
Reporting done without validation Always run validation at the end
Letting manual action items get buried Aggregate all manual steps at the very end

Quick Decision Helper

  1. 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)
  2. Who will see it?
    • Admin users only → Dashboard Extensions
    • Site visitors → Site Extensions
    • Server-side only → Backend Extensions
  3. 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?)


Extension Types Reference Table

Extension Type Category extensionType (for wix generate --params) Reference File
Dashboard Page Dashboard DASHBOARD_PAGE DASHBOARD_PAGE.md
Dashboard Modal Dashboard DASHBOARD_MODAL DASHBOARD_MODAL.md
Dashboard Plugin Dashboard DASHBOARD_PLUGIN DASHBOARD_PLUGIN.md
Dashboard Menu Plugin Dashboard DASHBOARD_MENU_PLUGIN DASHBOARD_MENU_PLUGIN.md
Service Plugin Backend SERVICE_PLUGIN SERVICE_PLUGIN.md
Backend Event Extension Backend EVENT BACKEND_EVENT.md
Backend API Backend — (manual, see banner below) BACKEND_API.md
Data Collection Backend DATA_COLLECTION DATA_COLLECTION.md
Editor React component Site EDITOR_REACT_COMPONENT EDITOR_REACT_COMPONENT.md
Custom element widget Site CUSTOM_ELEMENT CUSTOM_ELEMENT_WIDGET.md
Site Plugin Site SITE_PLUGIN SITE_PLUGIN.md
Embedded Script Site EMBEDDED_SCRIPT EMBEDDED_SCRIPT.md

Key constraints:

⚠️ 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 Plugin Dashboard Page vs Modal Service Plugin vs Event
Custom 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

Topic Reference
Code Quality Requirements (applies to all generated code) CODE_QUALITY.md
Extension Registration EXTENSION_REGISTRATION.md
App Validation APP_VALIDATION.md
App Market Review APP_MARKET_REVIEW.md
App Identifiers (Namespace, Code ID) APP_IDENTIFIERS.md
Wix Stores Versioning (V1/V3) STORES_VERSIONING.md
Official Documentation Links DOCUMENTATION.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:

Indicator Example
User 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 data Dashboard 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:

  1. Get the app namespace (see App Namespace Requirement above)
  2. Determine the idSuffix for each collection (the Data Collection reference documents the full ID format)
  3. 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.):

  1. 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%.
  2. All Stores operations must check catalog version first using getCatalogVersion()
  3. Use the correct module based on version: productsV3 (V3) vs products (V1)
  4. Apps MUST support both V1 and V3 — single-version apps cannot list in the App Market and break on new sites
  5. 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.

  1. Read the extension reference file for the chosen extension type from the table above
  2. Identify required APIs from user requirements
  3. 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 → references/service-plugin/*.md
  4. Verify the specific method/event exists in references
  5. ONLY use MCP discovery if NOT found in reference files

Platform APIs (never discover - in references):

Vertical APIs (discover if needed):

Decision table:

User Requirement Check 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):

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:

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.

Step 5: Run Validation

After all implementation is complete, you MUST run validation. See APP_VALIDATION.md for the complete validation workflow:

  1. Package installation (detect package manager, run install)
  2. TypeScript compilation check (npx tsc --noEmit)
  3. Build validation (npx wix build)
  4. 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)

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.

  1. Package Installation — Detect package manager, run install
  2. TypeScript Compilationnpx tsc --noEmit
  3. Buildnpx wix build
  4. Previewnpx wix preview

Stop and report errors if any step fails. Check .wix/debug.log on failures.


Cost Optimization

Documentation

For links to official Wix CLI documentation for all extension types, see DOCUMENTATION.md.

Skill frontmatter

compatibility: requires `@wix/cli` >= 1.1.192.