All skills
wix avatar

/wix-app

@dc6f1fa official
by Wix.comwix/skills33 stars
33

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.

Use this Skill: https://skilld.dev/gh/wix/skills/wix-app

This session only. Nothing lands on disk.

referenceseditor-react-componentPARTS.md

≈826 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Named Parts and Root Election

Use this reference to choose the component root and decide which inner elements receive independent editor controls.

Elect the Root First

The root is always the component's editor element. It carries the unprefixed '<component-name>' global class and receives top-level id, className, direction, and a11y. It never has an elementProps entry.

  • If the component reduces to one meaningful control, link, media surface, or list, make that semantic element the root.
  • Add a wrapper root only when it lays out multiple sibling parts, owns sizing/scrolling/clipping, or hosts a root-level prop-triggered state.
  • Do not add a wrapper solely to hold root props or position decoration.
  • If an inner part name stutters (confetti-button-button), the real semantic element probably should have been the root.

Identify Named Inner Parts

A named inner part is an element whose styling or data/content a site owner would plausibly control independently in the editor. It receives:

  • one prefixed global class: '<component-name>-<part-name>'
  • one CSS Module class
  • one matching elementProps entry, spread onto the element. Declare a11y on the entry only when the part reads ariaLabel, and destructure it out before spreading (see ACCESSIBILITY.md)

Apply this filter to every candidate:

  • A state or variant (selected, active, open, disabled) is not a part. Implement it as a prefixed design-state modifier on the affected part.
  • A hidden and shown version of the same element is one part, not two.
  • A grouping or layout-only wrapper is not a part. A wrapper that isn't visually transparent is no longer layout-only — promote it to a named part.
  • A static child whose styling and data are fully owned by its parent is not a part. For example, an image whose source and appearance both belong to its carousel slide can remain module-class-only.
  • An inner interactive element (button, a, input, and equivalent semantic controls) is a named part because it has an independent interaction and styling surface.
  • Positional duplicates such as previous/next buttons are one part when they share the same semantic editor surface. Distinguish position with data or a module-only helper class, not separate part names.

The manifest generator can silently omit a named part behind conditional JSX. Keep an editor-controlled part mounted in the render it inspects. Hide it with CSS driven by a data attribute, or disable it when it should remain visible. After generating the manifest, confirm that its elements include every intended named part.

Sanity Check

For each candidate, ask:

Would the controls for this element be a strict subset of its parent's controls?

If yes, remove the part. Then check the root in reverse: if it has one child part and no independent surface, remove the wrapper and promote the child.

Checklist

  • The root is the component's best semantic element.
  • The root has no elementProps entry or duplicate prefixed part class.
  • Each inner part offers independent data or styling control.
  • Every named inner part has global/module classes and elementProps wiring.
  • States, wrappers, decorations, and positional variants are not extra parts.

Source: SKILL.md on GitHub

1 warningtoday4 checks · Risk SAFE
  • Gen Agent Trust Hubtoday

    This skill is a specialized development toolkit for building extensions on the Wix platform. It provides comprehensive instructions for creating dashboard pages, backend APIs, and site plugins using the Wix CLI and SDKs. No malicious patterns were detected; the skill's behaviors, such as dependency management, command execution for builds, and local script execution for code reviews, are entirely consistent with its purpose as a developer productivity tool for the Wix ecosystem.

  • Sockettoday

    1 alert: gptAnomaly

  • Snyktoday

    Risk: LOW · No issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at dc6f1fa. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 2 days ago
compatibility
requires `@wix/cli` >= 1.1.192.

README badge

README badge for wix/skills/wix-app

Builds dashboard pages, modals, plugins, custom widgets, Editor React components, backend APIs, events, service plugins, and data collections for Wix CLI apps. Provides decision logic, API patterns, and validation workflows; scaffolding is owned by the Wix CLI via `wix generate --params`.

Generated from the current SKILL.md.

What extension types does this skill cover?
All Wix CLI app extension types: dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins, embedded scripts, backend APIs, backend events, service plugins, and data collections.
Does this skill scaffold the extension files for me?
The Wix CLI owns scaffolding via `wix generate --params` for all extension types except Backend API. This skill provides decision logic, API guidance, and business-logic patterns to fill in the generated stubs. Backend API files must be created manually.
What Wix CLI version is required?
The skill requires @wix/cli >= 1.1.192.
Do I need to create a Data Collection extension for app-specific data?
Yes, if you're saving or persisting app-specific data, managing domain entities in a dashboard, or running a service plugin that reads app-configured data. The skill infers this automatically—you don't need to explicitly request it.
Does this skill cover Wix Stores API usage?
Yes. When using any Wix Stores API (products, inventory, orders), the skill requires dual V1/V3 catalog support and references the Stores Versioning guide for module selection and field mapping.

Generated from the current SKILL.md. These answers refresh after source changes.