Generated banner for Wix Headless
Generated logo for Wix Headless

Wix Headless

WixOfficialPublished by Wix

  • Skill
  • Tool integration
  • Software development
  • MIT
  • Low risk
  • Has scripts

From the author

Connect Wix business services (Stores, Bookings, Donations, CMS, Blog, Events, Forms, and more) to a Wix Headless frontend — infer the needed capabilities, install the apps, seed backend content, and produce an SDK-integration guide. For managed (Wix-hosted) projects it can also build the frontend: scaffold a new site (create) or wire an existing/brought-in design (connect), then build and release. Works across managed, self-managed, and stripe project types. Triggers: set up a Wix Headless backend, add Wix business features to my app, accept donations, build or host a Wix site, connect/implement this design with Wix.
— the description by Wix

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The wix-headless skill acts as an orchestrator for integrating Wix business services (such as Stores, Bookings, and CMS) into a headless frontend architecture. It handles the end-to-end configuration of the Wix backend, including app installation, content seeding, and the generation of a tailored SDK integration guide. Depending on the project type (managed, self-managed, or stripe), the skill can either provide a comprehensive integration guide for the user to implement or, in managed scenarios, actively scaffold, wire, and deploy the frontend project.

What it does

  • Infers required Wix capabilities based on user intent and project context.
  • Installs necessary Wix apps and seeds backend content automatically.
  • Generates a custom SDK integration guide for calling Wix services from the frontend.
  • Scaffolds or connects existing frontend projects to Wix for managed hosting.
  • Handles project-type-specific authentication and deployment workflows.
  • Provides a mechanism to relay feedback to Wix regarding the headless experience.

When to use it

  • When you need to integrate Wix business services into a custom-built headless frontend.
  • When you want to automate the setup and content seeding of a Wix backend.
  • When you are building a new site on Wix infrastructure and need a scaffolded frontend.
  • When you have an existing frontend design and need to wire it to Wix business capabilities.
  • When working with Stripe Projects and requiring a Wix backend configuration.

Advantages

  • Reduces manual configuration by automating app installation and content seeding.
  • Provides a clear, actionable SDK integration guide tailored to your specific capabilities.
  • Supports multiple project architectures including managed, self-managed, and Stripe-based setups.
  • Ensures consistent backend setup by following verified inline recipes.
  • Simplifies the transition from design to a functional, Wix-powered headless site.

Usage examples

“Set up a Wix Headless backend for a store with products and a blog.”
The skill will install the Stores and Blog apps, seed sample products and posts, and provide an SDK guide for fetching this data in your frontend.
“I have an existing design; connect it to Wix and host it on their managed infrastructure.”
The skill will initialize the project, wire the existing UI to the necessary Wix business services, and prepare it for release on Wix.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/wix/wix-headless/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip wix-headless.zip -d .agents/skills

Documentation by Wix

Wix Headless

This skill connects Wix business services to a Wix Headless frontend. Its core job is to configure the Wix backend: infer the needed capabilities, install the Wix apps, seed the backend content, and produce an SDK-integration guide describing how to call Wix from the frontend.

What happens with the frontend depends on the project type and operation:

  • Backend-only (self-managed, stripe, or a managed "just set up the backend" run) — the skill emits the SDK guide as its final output; the host owns the frontend, build, and hosting.

  • Managed create / connect — the skill also owns the frontend: it scaffolds a new project (create) or attaches Wix to an existing one (connect), wires it to the backend using that same guide, builds, and releases to Wix. (There is no Designer or template library — the frontend is built ad-hoc to intent.)

On a backend-only run the skill does not own the project scaffolding. When the work needs a frontend, scaffold it according to user intent — framework and structure follow the prompt; the skill's job is the Wix backend plus the emitted SDK guide describing how to call Wix from whatever frontend exists, not choosing or generating the app. This is the norm for a stripe run: the project is provisioned via Stripe Projects (credentials land in .env — see stripe/AUTHENTICATION.md), the skill configures the backend and emits the guide, and the live site is finalized per stripe/DEPLOYMENT.md — while the frontend is scaffolded and wired to intent, by the host.

Project types

The skill behaves identically across project types except for authentication and deployment, which are isolated in a per-type folder under references/:

Project typeHostingAuthentication & deployment live in
managedWix infrastructure (maintained by Wix)references/managed/
self-managedthe user's own host (TBD)references/self-managed/
stripethe user's own host, provisioned via Stripe Projectsreferences/stripe/

Everything else — Discovery, Setup, Seed, the SDK handoff — is project-type-agnostic and refers to "the provided authentication mechanism" rather than any specific method.

Resolving the project type

Resolve the type before Discovery, in this order — stop at the first that decides:

  1. Caller-provided. If the host/caller passed a project type (managed | self-managed | stripe), use it. An explicit value always wins.

  2. Detect from project signals (on disk). Check the working directory (read-only):

    • stripe — .env carries WIX_WIX_CLIENT_ID / WIX_WIX_CLIENT_SECRET / WIX_WIX_METASITE_ID (or the plain WIX_* fallback). This is the Stripe-Projects fingerprint.

    • managed — a Wix CLI project: wix.config.json present, or a .wix/ directory, or @wix/cli / @wix/astro in package.json.

    • self-managed — a frontend project on disk (e.g. package.json with a bundler/framework) with neither the Stripe .env fingerprint nor the Wix-CLI markers above.

  3. Detect from user intent. If disk is inconclusive, read the prompt:

    • managed — "managed", "host on Wix", "Wix-hosted", "deploy to Wix", "wix release".

    • stripe — "stripe projects", "I added Wix via Stripe", a Stripe-Projects context.

    • self-managed — "self-hosted", "my own host", names a non-Wix host, "I'll deploy it myself".

  4. Ask. If signals are absent or conflict, ask the user which type applies — don't guess.

Hold the resolved type in scratch; it selects <TYPE_DIR> (see Path resolution). Note self-managed is TBD — once resolved to it, the auth step will stop with a clear "not wired yet" error.

Resolving the operation (managed only)

create/connect/iterate are managed-only. For managed, resolve the operation by intent first, directory second — never let an empty directory override what the user is asking for. Check iterate first (it's decided by an unambiguous on-disk signal):

  • iterate → references/managed/CONNECT.md. The project is already connected to Wix — a wix.config.json (or .wix/) is already present — and the owner wants to add or change capabilities. Same flow as connect, but §1 skips init and reuses the existing wix.config.json; never re-init an already-connected project.

  • connect → references/managed/CONNECT.md. The user brings a design not yet connected to Wix and wants it wired: a frontend project on disk without a wix.config.json, or a brought-in/fetched design (a .zip/folder/file you unzip or read, a design-file URL, a Claude-Design/v0/Lovable export), or language like "connect this / implement this design (… connecting to Wix) / host this on Wix / deploy this to Wix / add Wix Headless to this project". A brought-in or fetched design is connect even when the current directory is empty — the design arrives from elsewhere (zip/fetch/URL), so emptiness at trigger time is not a create signal. (CONNECT.md step 1 places the brought design into CWD, then inits it.)

  • create → references/managed/CREATE.md. The user wants a new site built from a prompt with nothing brought in — "build me a site / store / blog…", no design file, no project on disk.

  • backend-only — the user only wants the backend configured (no frontend work). → the shared spine + emit the SDK handoff.

For self-managed and stripe, the operation is always backend-only (the host owns the frontend). Only when there is genuinely no brought-in design and no connect language does directory emptiness decide: empty → create; an existing frontend on disk → connect.

Preconditions (the host provides these — we read, never create)

  1. The project type — managed | self-managed | stripe — provided by the caller, else detected from project signals / user intent (see Project types § "Resolving the project type"), else asked. It selects <TYPE_DIR> (see Path resolution).

  2. A Wix metasite + a headless OAuth app exist, and credentials are available — obtained via the project type's AUTHENTICATION.md. The skill needs a bearer token authorized for the metasite and the metasite id.

  3. The user intent — free text describing what Wix should power ("add a store", "blog + contact form", "persist my app's data").

  4. (Optional) the project on disk — read-only, to sharpen brand/capability inference.

If the credentials are absent, the Wix backend isn't reachable — stop with a clear error.

What this skill does

Always open DISCOVERY.md first (it's agnostic — capability/brand/intent inference + the imagery gate, no auth). Then route by project type + operation:

Backend-only (self-managed, stripe, or managed backend-only) — the lean spine:

  1. Discovery (references/DISCOVERY.md) — infer capabilities + brand + intent + imagery.

  2. Setup (references/SETUP.md) — install the Wix apps those capabilities need.

  3. Seed (references/SEED.md) — create the backend content (+ entity images if imagery is on).

  4. Handoff (references/SDK_HANDOFF.md) — after Setup and Seed, emit the integration guide: SDK bootstrap, per-capability call shapes, the seeded IDs, and the @wix/* package list.

  5. Finalize deployment (<TYPE_DIR>/DEPLOYMENT.md) — run the project-type's finalize steps.

Throughout any run — if the user asks to send feedback to Wix, complains/gets frustrated, or the run hits any real friction (a confusing error, a doc gap, a tooling dead end, a workaround you had to invent — it doesn't need to repeat), offer to relay it to Wix per references/FEEDBACK.md. Default to offering rather than waiting to be asked. Every flow's finalize step (<TYPE_DIR>/DEPLOYMENT.md / managed/CREATE.md / managed/CONNECT.md) ends with the same checkpoint — treat it as a required self-check, not optional. Send only after an explicit yes — never automatically.

Managed create / connect / iterate — after Discovery, hand the whole run to the managed flow:

  • create → references/managed/CREATE.md (scaffold → Setup → Seed → build the frontend → release).

  • connect → references/managed/CONNECT.md (init → Setup → Seed → wire the existing UI → release).

  • iterate → references/managed/CONNECT.md — the project is already connected, so it reuses the existing wix.config.json (no init). Setup / Seed / wiring are incremental: it may already be set up and seeded from a prior run, so the agent checks current state first (installed apps, already-seeded content, existing wiring) and applies only the delta the new intent needs — never blindly re-installing or re-seeding. Re-release only if the frontend build output changed. These reuse the same SETUP.md/SEED.md/SDK_HANDOFF.md, but apply the SDK guide to build/wire the frontend themselves rather than emitting it, and release via managed/DEPLOYMENT.md.

Each Wix call uses the universal call shape (SETUP.md §1) with $TOKEN/$SITE_ID obtained per <TYPE_DIR>/AUTHENTICATION.md. The skill runs non-interactively except for the one imagery question (and asking the project type if it can't be resolved).

Don't smoke-test the frontend locally unless the user asks to verify. The deliverable is the built-and-released site (managed) or the SDK guide (backend-only) — not a local test report. By default do not start a dev server (wix dev / astro dev / npm run dev) to curl pages, drive the cart / booking / login flow, or launch a headless browser: correctness comes from following the recipes, real errors surface at wix build / wix release, and a headless run can't complete an interactive login or a real payment anyway — so these loops routinely burn minutes of wall for little signal (this is distinct from, and in addition to, the "release once at the very end" rule — that one only bans extra build+release cycles, not dev-server testing). Only spin up a dev server and smoke-test when the user's prompt explicitly asks to verify / test / confirm it works — and then keep it to a single lightweight pass (pages compile and render), not a full purchase/booking/login drive. The one post-release check in <TYPE_DIR>/DEPLOYMENT.md is the sanctioned verification.

Donations exception to the smoke-test policy above: for a build that accepts donations, follow the bounded anonymous API handoff check in references/inline-recipes/how-to-code-donations.md before claiming it works. It does not authorize a payment or campaign mutation, and does not require a dev-server testing loop. That recipe also defines the separate hosted-checkout and payment checks.

Path resolution

Compute <SKILL_ROOT> from this file (<SKILL_ROOT>/SKILL.md — strip /SKILL.md); hold the absolute path in scratch. Then resolve the project type to its folder and hold it too:

<TYPE_DIR> = <SKILL_ROOT>/references/<projectType>/ — one of managed/, self-managed/, stripe/.

WhatPath
Vertical index (intent matching + per-vertical site spec)<SKILL_ROOT>/references/CAPABILITIES.md
Discovery (infer capabilities + brand + intent; existing site → the Dynamic Context call in §1)<SKILL_ROOT>/references/DISCOVERY.md
Setup (install apps)<SKILL_ROOT>/references/SETUP.md
Seed (create backend content)<SKILL_ROOT>/references/SEED.md
SDK-integration handoff (emitted, or applied by create/connect)<SKILL_ROOT>/references/SDK_HANDOFF.md
Image generation (opt-in; agnostic)<SKILL_ROOT>/references/IMAGE_GENERATION.md
Design — fallback visual quality bar for the built frontend, when the user gave no design direction of their own (managed create only)<SKILL_ROOT>/references/DESIGN.md
Content — fallback copy quality bar for the built frontend, when the user gave no copy/voice direction of their own (managed create only)<SKILL_ROOT>/references/CONTENT.md
Experience overlays — a vertical's own design + copy bar on top of DESIGN/CONTENT (optional per vertical; read when that vertical is loaded)<SKILL_ROOT>/references/inline-recipes/experience-<vertical>.md (today: experience-store.md, experience-donations.md)
AI features — text/chat + embeddings (opt-in; agnostic)<SKILL_ROOT>/references/AI_FEATURES.md
Feedback — relay the user's headless-experience feedback to Wix (opt-in; user-approved)<SKILL_ROOT>/references/FEEDBACK.md
Authentication — obtain $TOKEN/$SITE_ID/clientId (project-type-specific)<TYPE_DIR>/AUTHENTICATION.md
Deployment — finalize the live site (project-type-specific)<TYPE_DIR>/DEPLOYMENT.md
Managed create flow (scaffold a new project)<SKILL_ROOT>/references/managed/CREATE.md
Managed connect flow (wire an existing project)<SKILL_ROOT>/references/managed/CONNECT.md
Frontend-axis references (how a frontend wires to Wix)<SKILL_ROOT>/references/astro.md, non-astro.md

Start a run by opening DISCOVERY.md. The flow files (CAPABILITIES, DISCOVERY, SETUP, SEED, SDK_HANDOFF, IMAGE_GENERATION, AI_FEATURES) are project-type-agnostic; the per-type specifics live under <TYPE_DIR>/ (AUTHENTICATION.md, DEPLOYMENT.md, and — managed only — CREATE.md/CONNECT.md).

Where the how comes from

This skill has no skill upstream — the how is read from the live Wix docs at dev.wix.com/docs. Read-priority: a page this skill links is read by curl-ing its .md twin directly (first priority — don't re-discover a curated link with search); the Wix MCP doc/search tools are second priority, for finding pages the skill doesn't link or as a fallback if a fetch fails. (Append .md to any docs URL for raw markdown; menu pages list child links, content pages carry the schema.)

Doc discovery is the shared fallback for both tracks — never the first move. Each track's primary source is its pinned material (below); when that doesn't cover what you need, fall back to references/DOC_DISCOVERY.md — a semantic doc-search + schema lookup that works with or without the Wix MCP.

  • Seed reads each capability's create flow from its inline recipe — a self-contained local inline-recipes/setup-*.md (mapped per capability in SEED.md § "What to seed per capability") that inlines the calls and supersedes the REST doc pages, so read it and seed from it alone. Only a capability with no inline recipe (e.g. coupons) falls back to doc discovery (DOC_DISCOVERY.md).

  • Handoff links the SDK docs for each capability's API shape, and supplies the runtime package set from the inlined map in SDK_HANDOFF.md (the SDK .md pages don't expose @wix/* import strings to navigation, so packages are mapped, not navigated).

Setup carries its app-install call (and the appDefId constants) inline in SETUP.md; CAPABILITIES.md is the vertical index that lets Discovery match intent and declares, per built vertical, the Required site features + Implementation checklist that Seed enables (backend-backed features) and the Handoff carries into the guide (so the host builds a complete site, not a bare data dump). This skill carries the what (which capabilities, how much content, what a finished site includes) and reads the how off the docs.

Files

references/CAPABILITIES.md

Wix vertical index

A catalog of the Wix business verticals. It does two jobs:

  1. Discovery maps the user's words to the right vertical(s) — read every Intent line against what they asked for, and pick each vertical that genuinely fits.

  2. For the verticals this skill builds end-to-end, it also says what a complete site for that vertical looks like — the features it must have and the details that make it feel finished.

Read this against the operation — create vs connect.

  • Intent matching (job 1) always applies — it picks the capabilities to install and seed, no matter the operation.

  • Required site features and Implementation checklist (job 2) describe a site built from scratch — they are the target for create, and they tell backend-only what to ask the host to build. They are not a spec to impose on connect. In connect the user brought a finished design; wire only what that design actually needs (e.g. a single wedding page with an RSVP → set up the RSVP and wire it; do not add an events-listing page or per-event pages just because the vertical's required-features list names them). Use the checklist there only as a soft hint for what an already-present surface should show — never to add surfaces the design doesn't have.

This file is the what, never the how — plain language only. No endpoints, methods, payloads, appDefIds, or SDK packages. The how lives in the live docs (Seed navigates the REST docs; the Handoff navigates the SDK docs); the which apps to install lives in SETUP.md.

Each built vertical has three parts (the latter two scoped to create/backend-only per the note above):

  • Intent — the words that point to it.

  • Required site features — the surfaces and capabilities the site must have to be usable. These are non-negotiable for a complete site; if one needs a backend feature switched on, Seed sets it up, and the Handoff tells the host to build the rest.

  • Implementation checklist — the presentation details a finished site shows, so it doesn't feel half-built. The Handoff carries these into the guide it returns.

Built verticals — installed, seeded, and described in the Handoff

The verticals the skill operates end-to-end today: stores · blog · cms · forms · events · bookings · rentals · pricing-plans · restaurants · portfolio · donations (with forms as the floor when nothing richer is named).

donations — accept contributions to a cause
  • Intent: donate / fundraising / charitable giving / donation campaign / recurring donation. This is not a generic contact form, merchandise purchase or Pricing Plans membership.

  • Required site features: a clear giving entry point; live campaign discovery when there are several causes (a single-cause form otherwise); campaign detail with the configured amount/frequency choices and optional features; a working hosted checkout handoff; an honest return/thank-you state.

  • Implementation checklist: design from the cause and supplied content; bound mobile imagery so the giving decision is easy to reach; show configured impact text, custom limits, notes and optional fee coverage; make recurring commitments explicit; progress only when configured/readable; no fabricated tax, donor or impact claims. Read the shared Donations experience reference linked by how-to-code-donations.md.

stores — sell products
  • Intent: sell / shop / products / catalog / merch / store.

  • Required site features: a homepage that sells (what the store offers, real products, one clear shopping action); a shop / category gallery with sort, the filters the catalog supports, and paging; a page per product; categories to browse by; a cart the shopper can review and edit, opening as a side drawer after every add; checkout reachable directly from that cart.

  • Implementation checklist:

    • Homepage: say what the store sells in the first screen; real products from the catalog under truthful headings — never a repeat of the shop page, never a heading like "Best Sellers" without data behind it.

    • Gallery: a real product — image, name, price, link — visible in the first screen before any scrolling; a result count; a filter panel with price, stock, and the option facets the catalog has (required whenever there is something to filter); a way to buy on every card (one click without options, a quick-add picker with options); loading, empty-catalog, no-results-for-these-filters, and error states that look different from each other.

    • Product page: in the first screen, the product image, name, price, the first choice to make, and the buy button — disabled with a plain reason until every choice is made; every ribbon the merchant set; the current price and, when there is one, the labelled original price; a gallery of every product image; options with unavailable choices marked; quantity; the full description and information sections; pre-order, subscriptions, and notify-me only when the catalog has them.

    • Cart: each line's image, name, chosen options, quantity (editable) and price; subtotal and discounts as Wix calculates them; "shipping and taxes calculated at checkout" rather than invented numbers; survives a reload; checkout from the drawer.

    • Everywhere: availability / out-of-stock shown truthfully; each product linked to its category, and each category a page at its own URL linked from the navigation; no reviews, ratings, scarcity, or delivery promises the merchant didn't supply; no Wix IDs or technical words in shopper-facing text.

blog — publish posts
  • Intent: blog / posts / articles / publication / news.

  • Required site features: a list of posts; a page per post; categories or tags to browse by topic.

  • Optional (intent-gated): reader comments on a post — build only if the brief asks for discussion/interaction. Comments hard-depend on members/login, so adding them unrequested drags in an unrequested login gate; they are not part of the baseline blog surface (see inline-recipes/how-to-code-a-blog.md §Comments).

  • Implementation checklist: show the author (name and photo) on each post; show the publish date and the reading time; show the cover image; render the full formatted content — headings, images, quotes, lists — not flattened to plain text; show the post's category and tags; a clear path back to the full list.

cms — structured content collections
  • Intent: collection / directory / portfolio-as-data / structured content / "persist my app's data".

  • Required site features: an index/list view of the collection; a detail page per item. (Visitor reads are public; visitor writes go through a form.) (Opt-in, with members) when the brief asks for per-user-private data ("my saved items", a personal list) or member-only content and members login is in the run, a collection can instead be member-scoped — each member sees/edits only their own rows, or any logged-in member reads shared member-only content. Added only on that intent, never by default; see the members cross-cutting entry and setup-cms.md.

  • Implementation checklist: show each item's main fields with clear labels; link the list to each item's detail page; show a sensible empty state when there are no items yet.

forms — any visitor-fillable form
  • Intent: contact / enquiry / lead / signup / waitlist / application / feedback / survey / questionnaire / quote request / intake or registration form / "let people reach me" / generic custom data capture — plus the floor when nothing dynamic is named. Lead capture is the most common case, not the boundary: any form a visitor fills in and submits is this vertical, and whether the submission also becomes a CRM contact is an optional per-field mapping.

  • Not forms — an RSVP is events: confirming attendance to an event or occasion (a wedding, party, or gathering) is the events vertical, which ships a built-in RSVP registration form — route there even for a single occasion with no tickets.

  • Not forms — a per-service booking form is bookings: the form attached to a bookable service belongs to bookings. Use forms only when neither an event nor a bookable service is involved.

  • Required site features: a visible form; a confirmation after submitting; basic field validation. A site may have more than one form, each with its own purpose and field set.

  • Implementation checklist: render every field with a clear label; mark which fields are required; a clear submit button; show a thank-you / success state after sending; show a friendly message if the submit fails.

events — events and registration
  • Intent: event / ticket / RSVP / registration / attendees / "confirm attendance" / a wedding, party, or gathering people respond to. Covers RSVP to a single occasion (one wedding, one party) — not only multi-event listings, and not only ticketed events. An invitation with an RSVP is this vertical, not forms.

  • Required site features: the event's details and a way to register or RSVP. RSVP events come with a built-in registration form (name + email are always included), so the site needs an RSVP action — not a hand-built form with custom fields. For a multi-event site, also a list of events and a page per event.

  • Implementation checklist: show the event's title, date and time, and location; show the description; show ticket types where they exist (ticketed events); a register/RSVP action; collect additional-guest names where extra guests are allowed; a confirmation after registering.

bookings — appointments and classes
  • Intent: book / appointment / schedule / class / session / reserve a slot — a service or appointment with a provider (a stylist, trainer, tutor, clinic, studio).

  • Not bookings — route to restaurants instead: a table at a restaurant is a Table Reservations concern, not a bookable service; and a special dining occasion guests reserve — a chef's table, cheese pairing, or tasting-menu evening at a restaurant — is a restaurants → Table Reservations experience (see the restaurants entry), not a bookings service. Reach for bookings only when what's booked is a standalone service/class with a provider, never a seat at a restaurant.

  • Not bookings — route to rentals instead: when the customer chooses how long they want something, and what's booked is a thing rather than a person — a room by the hour, a desk for three days, a van for the weekend. The tell is a duration range the customer picks within. A 60-minute haircut is bookings; a meeting room booked for 1–8 hours is rentals.

  • Required site features: a list of services; a page per service; a way to pick a time and book it.

  • Implementation checklist: show each service's name, duration, and price; show the staff or provider; show the available time slots; a book action; a confirmation after booking.

rentals — rent a room, vehicle, or piece of equipment
  • Intent: rent / rental / hire / lease / "by the hour" / "by the day" / hourly or daily rate / customer picks how long — plus the things people rent: meeting room, conference room, co-working desk, hot desk, studio, hall, venue, workspace, vehicle, van, car, boat, bike, equipment, gear, camera, tool. Reach for it whenever what's booked is a resource (a room, vehicle, or item) for a length the customer selects within a range, not a fixed session with a provider.

  • Not rentals — route to bookings instead: a session whose length the business fixes, delivered by a person (a 60-minute massage, a class, a consultation). The word "rent" in a brief sometimes describes the business model ("we rent out desks") while the thing being sold is really a fixed session — decide on the duration model, not the vocabulary.

  • Required site features: a list of rentable items; a page per item; a way to pick a start and a length (an end time or an end date) and book it. A rental is priced per hour or per day, so the site must show the computed total for the chosen length before the customer commits — a per-unit price alone is not enough.

  • Implementation checklist: show each item's name, description, and per-hour or per-day rate (say which); show the item's attributes where they exist (capacity, amenities, equipment type); show available start times, then the valid lengths for the chosen start; show the running total for the selected length; a book action; a confirmation after booking.

  • One unit type per item — an item is rented by the hour or by the day, never both. When a brief wants both for the same room, that's two rentals, each with its own rate.

pricing-plans — memberships and subscriptions
  • Intent: membership / subscription / plans / paid tiers.

  • Required site features: a plans / pricing page; a way to choose and subscribe to a plan. Subscribing requires a logged-in member — the plans grid is public, but the subscribe action and any my subscription surface need the members cross-cutting capability (below); it's a hard dependency, not optional.

  • Implementation checklist: show each plan's name, price, and billing cycle; list what each plan includes (the perks); a clear "choose plan" action; highlight a recommended tier where it makes sense.

restaurants — menus and food
  • Intent: menu / restaurant / cafe / food / dish list / order food / dine-in / reserve a table / a special dining occasion guests reserve (chef's table, cheese pairing, tasting-menu evening).

  • Required site features: a menu organized into sections; each item with a name, description, and price. Add-ons, each on demand (separate apps/features; see SETUP.md): online ordering, table reservations, and — when the brief names special dining occasions — experiences (a reservation that is a curated occasion at the restaurant, e.g. a chef's table), which ride on the Table Reservations app.

  • Experiences vs bookings — decide here: an experience is a reservation that is itself a special dining occasion at the restaurant — it books seats at the restaurant's own location and carries its own name, per-guest price, schedule, and booking form. Use it for pairing sessions, tastings, and chef's tables. Use the separate bookings vertical only for a service/appointment/class with a provider that isn't a seat at the restaurant. For anything a restaurant hosts and seats, prefer an experience.

  • Implementation checklist: show the menu grouped into sections in order; each item's name, description, price, and labels (vegan, spicy…) and modifiers / variants where they exist; an order action if online ordering is wired; a reserve-a-table action if reservations are wired; if experiences are wired, list each experience with its name, description, per-guest price, and schedule, and a reserve-seats action.

portfolio — showcase projects
  • Intent: portfolio / showcase / gallery of projects / creative work / case studies.

  • Required site features: a gallery of projects; projects grouped by collection; a page per project.

  • Implementation checklist: show each project's cover, title, and description; group / filter by collection; on the project page show its details (role, year…) and media in order with a viewer / lightbox; a clear path back to the gallery. (Text-only seed shows the structure; media is omitted.)

Cross-cutting capabilities — usable, but ride on a parent vertical

These are not standalone verticals — they aren't seeded on their own and don't go in verticals[]. Most have no app to install (eCommerce installs as a dependency; coupons need no install; members' identity layer is the OAuth app). But they are fully usable, and the agent should reach for them when a built vertical is present and intent calls for them. They attach to whatever catalog vertical the run already set up. Don't list these as "not-yet-wired" — they're wired through their parent. (One conditional install exists: the members profile layer needs the Wix Members Area app — see its entry and SETUP.md.)

  • eCommerce — the shared cart, checkout, orders, and payments layer. It has no catalog of its own; it's installed automatically as a dependency by Stores, Bookings, and Events, and it's how every purchase actually completes. The frontend uses it via @wix/ecom (+ @wix/redirects) — already carried in the Handoff for those verticals. Reach for the eCommerce Cart/Checkout APIs (find the how in the docs) whenever a purchase flow needs to be built or customized. Intent: checkout / cart / "let people buy".

  • coupons — discount codes and promotions applied at checkout. No standalone app — requires a parent already installed (stores / bookings / events / pricing-plans). When intent calls for discounts and such a parent is present, create coupons on demand scoped to that parent — find the create method in the docs (DOC_DISCOVERY.md) and surface @wix/marketing in the Handoff. Intent: coupon / promo code / discount.

  • members — the identity layer: member sign-up / log-in / log-out and member-gated surfaces. Not seeded, and login needs no app install (it's the headless OAuth app) — so it doesn't go in verticals[]. Reading member profile data (name / photo / roles / badges, an editable my-account page), however, needs the Wix Members Area app installed (SETUP.md) — keep the identity layer and the profile layer separate. Sign-up and log-in are the same mechanism (one login page logs in or registers). Two things vary. (1) The frontend axis — Astro ships built-in /api/auth/login routes, non-Astro drives a manual OAuthStrategy handshake (the two how-to-code-members-*.md recipes). (2) The login surface, chosen by intent — not by project type. The default is the Wix-hosted login page (zero UI to build); reach for a custom login page (you build a branded/in-app form, and can collect custom sign-up fields like full name / username / address) only when the brief explicitly asks for a custom login form or custom sign-up fields (how-to-code-members-custom-login.md). Custom login works on any project type (managed or self-managed) — the choice is the user's stated intent, so don't gate it on managed-vs-self-managed. Hard dependency edge → pricing-plans: subscribing to a plan requires a logged-in member, so whenever pricing-plans is present, members is implied (surface login + my-subscription). Soft edges to the other verticals' "my …" surfaces (my orders / my bookings / my registrations) and to blog comments (see the blog recipe) — the action runs as an anonymous visitor; only the account view of it needs a member. A logged-in member reading their own data needs no auth.elevate (that's the separate admin/permission axis). Intent: login / sign up / account / my profile / members area / member-only / gated content / subscriber / paywall — plus any pricing-plans intent (membership / subscription / paid tiers), which can't be purchased without it.

Other verticals — recognized for intent, not yet wired

If a user's intent points squarely at one of these, surface it plainly as not-yet-wired rather than forcing a poor fit. Extending the skill to one means adding its install in SETUP.md and its seed what in SEED.md, then giving it a full section above. Each entry below names the blocker that kept it out — read it before promising anything. Where an API path genuinely exists, the agent may wire it ad hoc from the live Wix docs (find the REST create method via DOC_DISCOVERY.md, and the SDK module as in SDK_HANDOFF.md), but it must state the blocker honestly rather than promise a complete site.

  • forum — community discussion boards: categories, threads, member posts. Deprecated — the Forum APIs are being discontinued and there's no headless create-post path; the Groups replacement exposes no public create-post API. Don't wire; if discussion is essential, suggest blog comments or a custom solution. Intent: forum / community / discussion board.

  • benefit-programs — Wix Loyalty: points, rewards, and tiers that grant members perks. Program activation is dashboard-only — it can't be fully bootstrapped headlessly — but once loyalty is active, rewards/tiers have REST/SDK (@wix/loyalty) the agent can seed from the docs. Intent: loyalty / rewards / member perks / benefits.

  • suppliers-hub — supplier-side B2B product catalog management. Partner-only — requires a signed business agreement with Wix and isn't installable on a normal metasite; out of scope unless the user is an approved Wix partner. Intent: supplier / wholesale / B2B catalog.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Node.js

Security

What our scanner noticed· Low risk

  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Wix
Publisher
Wix (Official)
Source
wix/skills · skills/wix-headless · commit d168bc2
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Wix.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download wix-headless.zip