@wix/agent-skills 1.23.0 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/package.json +2 -1
- package/skills/wix-app/SKILL.md +4 -1
- package/skills/wix-app/references/BUSINESS_MANAGER_THEME.md +108 -0
- package/skills/wix-app/references/BUSINESS_MANAGER_TOKENS.md +81 -0
- package/skills/wix-app/references/DASHBOARD_MODAL.md +41 -0
- package/skills/wix-app/references/DASHBOARD_PAGE.md +2 -0
- package/skills/wix-app/references/DASHBOARD_PLUGIN.md +19 -4
- package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +64 -50
- package/skills/wix-app/references/dashboard-page/DRAFT_TEMPLATE.md +5 -4
- package/skills/wix-app/references/dashboard-page/DRAFT_TEMPLATE_ROUTER.md +8 -7
- package/skills/wix-app/references/dashboard-page/DYNAMIC_PARAMETERS.md +21 -38
- package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +4 -3
- package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +28 -25
- package/skills/wix-app/references/editor-react-component/BRANDED-COMPONENTS.md +8 -2
- package/skills/wix-app/references/editor-react-component/COMPONENT-CONTRACT.md +12 -14
- package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +4 -3
- package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +66 -9
- package/skills/wix-app/references/editor-react-component/EDITOR-EXTENSION-CONFIGURATION.md +25 -0
- package/skills/wix-app/references/editor-react-component/OVERFLOW.md +146 -0
- package/skills/wix-app/references/editor-react-component/PARTS.md +6 -0
- package/skills/wix-app/scripts/scan-a11y-eslint.cjs +25 -1
- package/skills/wix-headless/SKILL.md +0 -1
- package/skills/wix-headless/references/CAPABILITIES.md +3 -3
- package/skills/wix-headless/references/DISCOVERY.md +1 -1
- package/skills/wix-headless/references/SDK_HANDOFF.md +1 -1
- package/skills/wix-headless/references/SEED.md +1 -1
- package/skills/wix-headless/references/SETUP.md +1 -1
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +1 -1
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-experiences.md +2 -2
- package/skills/wix-headless/references/managed/AUTHENTICATION.md +3 -14
- package/skills/wix-headless/scripts/bootstrap.mjs +156 -0
- package/skills/{wix-headless-fast → wix-headless-kit}/SKILL.md +83 -64
- package/skills/{wix-headless-fast → wix-headless-kit}/cold-start/bootstrap.mjs +2 -2
- package/skills/{wix-headless-fast → wix-headless-kit}/cold-start/cold-start.md +26 -35
- package/skills/wix-headless-kit/guides/capabilities.md +76 -0
- package/skills/wix-headless-kit/guides/feedback.md +98 -0
- package/skills/{wix-headless-fast → wix-headless-kit}/guides/migration.md +20 -9
- package/skills/{wix-headless-fast → wix-headless-kit}/install/AGENTS.md +5 -2
- package/skills/{wix-headless-fast → wix-headless-kit}/install/attach.mjs +5 -2
- package/skills/wix-headless-kit/install/bootstrap.mjs +156 -0
- package/skills/{wix-headless-fast → wix-headless-kit}/install/check.mjs +2 -2
- package/skills/wix-headless-kit/install/context.mjs +169 -0
- package/skills/{wix-headless-fast → wix-headless-kit}/install/deploy.mjs +17 -4
- package/skills/{wix-headless-fast → wix-headless-kit}/install/setup.mjs +89 -55
- package/skills/{wix-headless-fast → wix-headless-kit}/install/templates.mjs +1 -1
- package/skills/wix-manage/SKILL.md +2 -8
- package/skills/wix-manage/references/cms/cms-dashboard-navigation.md +2 -2
- package/skills/wix-manage/references/cms/cms-data-items-crud.md +263 -31
- package/skills/wix-manage/references/cms/cms-publishing-flow.md +15 -15
- package/skills/wix-manage/references/cms/cms-schema-management.md +58 -7
- package/skills/wix-manage/references/sites/query-sites.md +1 -8
- package/skills/wix-auth/SKILL.md +0 -12
- package/skills/wix-auth/references/device-flow.md +0 -140
- package/skills/wix-headless-fast/install/context.mjs +0 -126
- package/skills/wix-manage/references/cms/cms-data-operations-extended.md +0 -263
- package/skills/wix-manage/references/cms/cms-references-and-relationships.md +0 -162
- /package/skills/{wix-headless-fast → wix-headless-kit}/guides/existing-site.md +0 -0
- /package/skills/{wix-headless-fast → wix-headless-kit}/guides/reference-mode.md +0 -0
- /package/skills/{wix-headless-fast → wix-headless-kit}/install/agents-md.mjs +0 -0
- /package/skills/{wix-headless-fast → wix-headless-kit}/install/lock.mjs +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: wix-headless-
|
|
3
|
-
description: "Build a Wix Headless site fast by wiring SHIPPED, verified @wix/sdk code instead of authoring the integration from recipes. Each Wix business vertical ships a typed, framework-agnostic React core (data layer returning plain DTOs, hooks, headless components) plus an Astro overlay (SSR pages with owner-editable SEO pre-wired) and a build-time REST seed script — the agent scaffolds via the Wix CLI, deploys the shipped code, seeds the backend, designs the presentation layer itself on the shipped hooks (product card/grid, PDP, home, theme), and releases to Wix hosting. Works on Wix-managed Astro (ambient auth, the default) and on any React-based project (Vite, non-Astro) over the public OAuth client id. Verticals: stores/storefront (products, categories, variants, cart, hosted checkout), bookings (services, appointment/class time slots, staff, booking form, checkout-or-place), blog (posts, categories/tags, rich content), cms (structured content collections), forms (schema-driven visitor forms: render, validate, submit), events (listing, RSVP, ticket sales), members (login, gated pages, account), portfolio (project collections, media galleries), pricing-plans (plan grid, hosted purchase), restaurants (menus, online ordering, table reservations), faq (categorized questions and answers, search, a link per question), donations (campaign pages, goal progress, one-time and recurring donations via hosted checkout). Triggers: build me a store/blog/booking/event/restaurant/portfolio/FAQ/donation site fast, take appointments fast, sell tickets or membership plans headless, collect donations headless, wix headless
|
|
2
|
+
name: wix-headless-kit
|
|
3
|
+
description: "Build a Wix Headless site fast by wiring SHIPPED, verified @wix/sdk code instead of authoring the integration from recipes. Each Wix business vertical ships a typed, framework-agnostic React core (data layer returning plain DTOs, hooks, headless components) plus an Astro overlay (SSR pages with owner-editable SEO pre-wired) and a build-time REST seed script — the agent scaffolds via the Wix CLI, deploys the shipped code, seeds the backend, designs the presentation layer itself on the shipped hooks (product card/grid, PDP, home, theme), and releases to Wix hosting. Works on Wix-managed Astro (ambient auth, the default) and on any React-based project (Vite, non-Astro) over the public OAuth client id. Verticals: stores/storefront (products, categories, variants, cart, hosted checkout), bookings (services, appointment/class time slots, staff, booking form, checkout-or-place), rentals (rooms, vehicles, gear by the hour or the day: resources, customer-picked length, priced quote, checkout), blog (posts, categories/tags, rich content), cms (structured content collections), forms (schema-driven visitor forms: render, validate, submit), events (listing, RSVP, ticket sales), members (login, gated pages, account), portfolio (project collections, media galleries), pricing-plans (plan grid, hosted purchase), restaurants (menus, online ordering, table reservations), faq (categorized questions and answers, search, a link per question), donations (campaign pages, goal progress, one-time and recurring donations via hosted checkout). Triggers: build me a store/blog/booking/rental/event/restaurant/portfolio/FAQ/donation site fast, take appointments fast, rent out rooms/cars/equipment headless, sell tickets or membership plans headless, collect donations headless, wix headless kit, connect a Wix business app with ready-made SDK code."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Wix Headless
|
|
6
|
+
# Wix Headless Kit
|
|
7
7
|
|
|
8
8
|
Build a Wix Headless site on **shipped, verified code instead of authoring the integration**.
|
|
9
9
|
Each vertical ships the integration itself — a typed data layer, hooks, components, pages, and a
|
|
@@ -86,22 +86,30 @@ doesn't express — or once the site exists and the work turns to managing or ex
|
|
|
86
86
|
|
|
87
87
|
Needed throughout: Node ≥ 20.11, git, a logged-in Wix CLI (`npx @wix/cli@latest whoami`;
|
|
88
88
|
`npx @wix/cli@latest login` is a device-code flow: surface the URL and code to the user, never
|
|
89
|
-
read tokens into context), and the two companion skills beside this one, `wix-docs`
|
|
90
|
-
`wix-manage`
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
read tokens into context), and the two companion skills installed beside this one, `wix-docs`
|
|
90
|
+
and `wix-manage`. `node <SKILL_ROOT>/install/bootstrap.mjs` checks the CLI and runs the login
|
|
91
|
+
when there is none; the cold-start page, `https://www.wix.com/skills/headless-cold-start/headless-kit.md`,
|
|
92
|
+
gets a machine with none of this, the skills included, to that point. In a folder that
|
|
93
93
|
already holds a `wix.config.json`, `node <SKILL_ROOT>/install/context.mjs` first: it runs
|
|
94
|
-
`wix env pull` when `.env.local` is missing and prints the
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
alone. Then fetch the shipped
|
|
94
|
+
`wix env pull` when `.env.local` is missing and prints the folder's **shape** (`folder.shape`, the
|
|
95
|
+
cases of step 3, with the `next` for each) and the two identities a project has — the deploy site
|
|
96
|
+
(the config, where `wix release` goes) and the content site (the env, whose app the SDK client runs
|
|
97
|
+
as and whose dashboard manages the business). They are one site, except on a **migration preview**
|
|
98
|
+
(`guides/migration.md`), where the env names the site being migrated. Every script here reads that
|
|
99
|
+
context; the site a call targets is never guessed from the config alone. Then fetch the shipped
|
|
100
100
|
code once: `node <SKILL_ROOT>/install/templates.mjs`. It prints the folder;
|
|
101
101
|
the `templates/…` paths below are relative to `<SKILL_ROOT>`, where it lands.
|
|
102
102
|
`node <SKILL_ROOT>/install/check.mjs` says whether the skill or its templates have a newer version
|
|
103
103
|
and prints the update commands; it changes nothing.
|
|
104
104
|
|
|
105
|
+
Throughout any run: if the user asks to send feedback to Wix, complains or gets frustrated, or the
|
|
106
|
+
run hits friction of any kind: anything that cost more turns than it should have, whether or not
|
|
107
|
+
it ended in an error (a confusing error, a doc gap, a seed that had to be re-run, a shipped file
|
|
108
|
+
that did not cover the brief, a playbook line you had to read the source to understand, a call you
|
|
109
|
+
had to work out by trial, a workaround you had to invent, a slow or flaky step, a platform gate),
|
|
110
|
+
offer to relay it to Wix per `<SKILL_ROOT>/guides/feedback.md`. Default to offering rather than waiting to be asked; send
|
|
111
|
+
only after an explicit yes, never automatically. Step 5 ends with the same self-check.
|
|
112
|
+
|
|
105
113
|
1. **Resolve the stack.** Default is **Wix-managed Astro** — take it unless the user names
|
|
106
114
|
another framework or the directory already holds one. Then, by what the shipped code can run
|
|
107
115
|
there:
|
|
@@ -143,59 +151,58 @@ and prints the update commands; it changes nothing.
|
|
|
143
151
|
the OAuth app's allowed domains before checkout can return to it.
|
|
144
152
|
- **Static** (no build): `outputDirectory` points at the folder the pages live in; a route is a
|
|
145
153
|
page plus a query-string slug (reference mode).
|
|
146
|
-
2. **The seed plan.**
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
("Supplied content"), every entry, names and prices verbatim, their images and no others
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
2. **The seed plan.** The brief decides what is seeded; a site this run makes always opens with content:
|
|
155
|
+
|
|
156
|
+
| the brief | the plan |
|
|
157
|
+
|---|---|
|
|
158
|
+
| supplies the content in any form: a CSV, JSON or spreadsheet, a list in the prompt, a PDF price list, a folder of photos and a text file, a link to their current catalog, anything that names the content | that IS the plan: map it into `plan.json` per `templates/shared/SUPPLIED-CONTENT.md` and the vertical's `SEED.md` ("Supplied content"), every entry, names and prices verbatim, their images and no others |
|
|
159
|
+
| describes the content without listing it ("a store for hand-poured candles, four of them", "a dozen FAQ questions in three groups") | draft a plan from the description per the vertical's `SEED.md` (read only that for this; save `INSTRUCTIONS.md` for step 4) |
|
|
160
|
+
| says nothing about content ("build me a store") | on a site this run makes (create, adopt) draft a plan per the vertical's `SEED.md` so the site opens with content, and say in the closing message that it is placeholder content and where to replace it; on a site that existed before the run (attach, iterate, published-static, migrate) no plan and no seed: the site holds what the owner put there |
|
|
161
|
+
|
|
162
|
+
**An existing site has no plan of its own**: when the brief names a site by its id, or the
|
|
163
|
+
folder's config does, the site holds the content already; the frontend reads what is there
|
|
164
|
+
(step 3's attach path), and only content the brief supplies or describes is added to it.
|
|
156
165
|
3. **Set up the project, in its folder** — one deterministic call, the same for an empty folder
|
|
157
|
-
and for a project already on disk; **the folder decides** what it does:
|
|
166
|
+
and for a project already on disk; **the folder decides** what it does, from five file facts:
|
|
167
|
+
`wix.config.json`, its `site.outputDirectory`, the migration variables in `.env.local`,
|
|
168
|
+
`package.json`, `index.html`. `node <SKILL_ROOT>/install/context.mjs` prints the shape it reads
|
|
169
|
+
and the `next` for it. **The brief is the instruction**: what it asks to switch on is installed
|
|
170
|
+
on the site the folder names, without asking again. Ask only when acting would create a second
|
|
171
|
+
site for a folder that already has one, or when a cleanup seems needed.
|
|
158
172
|
|
|
159
173
|
```bash
|
|
160
|
-
node <SKILL_ROOT>/install/setup.mjs --vertical <vertical> [--plan plan.json] [--business-name "<Brand>"]
|
|
174
|
+
node <SKILL_ROOT>/install/setup.mjs --vertical <vertical>[,<vertical>…] [--plan plan.json] [--business-name "<Brand>"] [--stack <stack>]
|
|
161
175
|
```
|
|
162
176
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
the parent as `siteId` and the child as `deploySiteId`. `guides/migration.md` has the rules.
|
|
186
|
-
- **`wix.config.json` and no project**, no migration (what `init` leaves in an empty folder) →
|
|
187
|
-
the site exists and has no frontend yet: `attach.mjs` (below), which takes the site from the
|
|
188
|
-
config, reuses its hosting, scaffolds and deploys. No seed: the site owns its content.
|
|
177
|
+
Name every vertical the brief needs in this one call (a store with member accounts is
|
|
178
|
+
`storefront,members`): the first one's template scaffolds the project; the others deploy in the
|
|
179
|
+
same call, so the one install covers them all. A vertical added after the install has started
|
|
180
|
+
costs a second install.
|
|
181
|
+
|
|
182
|
+
| the folder holds | shape | what setup does | seeded by setup |
|
|
183
|
+
|---|---|---|---|
|
|
184
|
+
| nothing, or loose files (a CSV, a brief) | **empty** → create | `wix create` with the vertical's composed template, here; `--business-name` names the site | **yes**, from `--plan` |
|
|
185
|
+
| a frontend, no config (a `package.json`, or `index.html` at the root: someone's Astro, Vite, Next, plain HTML) | **project** → adopt | `init` in place gives it a new, empty site, then deploys; `--stack` from step 1 is required; make the project what that stack needs on Wix hosting (step 1) before or right after | **yes**, from `--plan` |
|
|
186
|
+
| a config whose `.env.local` declares an active editor migration (`EDITOR_MIGRATION_STATUS=ACTIVE`), with or without the blank Astro starter the download carries | **migration** → migrate | the shipped code into the starter (or the composed template around a bare config), deployed with the migrated site's app as the client, the install starts; `ready_for_brand_layer` says `mode: "migrate"`, the parent as `siteId`, the child as `deploySiteId` (`guides/migration.md`) | no, ever |
|
|
187
|
+
| a config, no frontend | **config-only** → refuses | the site exists and has no frontend yet: `attach.mjs` (below) takes the site from the config, reuses its hosting, scaffolds and deploys | no |
|
|
188
|
+
| a config and a frontend (a `package.json`, or `index.html` inside the folder `site.outputDirectory` names) | **wix-project** → refuses | iterate: never scaffold, `init` or reseed. `deploy.mjs <vertical…> --stack <stack>` adds a solution (the client id comes from `.env.local`, the config as the fallback), then ONE `npm install`; a change is file edits; then release | no |
|
|
189
|
+
| a config, `index.html` at the root, no `package.json` (a site published through the drop flow and downloaded) | **published-static** | the config's site, no `init`: `site/` becomes the upload, the REST layer deploys into `site/js/wix/`; the `next` says to move the pages, styles and assets in; release keeps the URL | no |
|
|
190
|
+
|
|
191
|
+
**Setup seeds only a site it created in this run** (create and adopt: the site is empty by
|
|
192
|
+
construction, so the plan from step 2 goes in with the one call). A site that existed before
|
|
193
|
+
the run holds content the run did not make: read it first with the vertical's
|
|
194
|
+
`seed/read-site.mjs`, then, when the brief supplies or describes content, run the vertical's
|
|
195
|
+
seed module yourself with a plan (from the project root:
|
|
196
|
+
`node <SKILL_ROOT>/templates/<vertical>/seed/seed-<vertical>.mjs plan.json`). Seeds are
|
|
197
|
+
additive and idempotent by name; nothing on a site is ever deleted or overwritten.
|
|
198
|
+
|
|
189
199
|
- The brief names a site by id → not this call: read `<SKILL_ROOT>/guides/existing-site.md`
|
|
190
200
|
and follow it (read the site, then `attach.mjs`, which does what setup does against the
|
|
191
201
|
site given; self-hosting and a project already on disk are in there too).
|
|
192
202
|
|
|
193
|
-
`--vertical` is required and picks which shipped code deploys AND which seed runs
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
gets none. Seeding is **additive**: it never deletes or overwrites what the site holds; if a
|
|
197
|
-
cleanup seems needed, ask. The `ready_for_brand_layer` event says `mode` (create or
|
|
198
|
-
connect), the stack, and the `next` for that stack, including how it releases.
|
|
203
|
+
`--vertical` is required and picks which shipped code deploys AND which seed runs. The
|
|
204
|
+
`ready_for_brand_layer` event says `mode` (`create`, `adopt`, `migrate`, `published-static`),
|
|
205
|
+
`shape`, the stack, and the `next` for that stack, including how it releases.
|
|
199
206
|
|
|
200
207
|
setup scaffolds with `--skip-git`: it composes its own steps and leaves version control to
|
|
201
208
|
you / the enclosing repo, so it does **not** create the scaffold's usual git repo + initial
|
|
@@ -246,7 +253,7 @@ and prints the update commands; it changes nothing.
|
|
|
246
253
|
your summary — if non-zero, read `seed.log` and re-run the seed module manually). Those two
|
|
247
254
|
seed files exist **only when setup started the seed** (attach runs none: only the install
|
|
248
255
|
marker is waited on). When you ran `seed-store.mjs`
|
|
249
|
-
yourself (
|
|
256
|
+
yourself (adopt, iterate and published-static runs, reference mode), there is no marker to wait for: the process's
|
|
250
257
|
exit code is the result and its stdout is the JSON — wait on the process (a foreground run,
|
|
251
258
|
or `wait` on its pid), not on a file. Then
|
|
252
259
|
**build & release once** (managed), as the `next` of the `ready_for_brand_layer` event says
|
|
@@ -262,7 +269,10 @@ and prints the update commands; it changes nothing.
|
|
|
262
269
|
preview's, the original site is unchanged, and completing the migration is the user's next
|
|
263
270
|
step in the Wix CLI once they approve — say all three). **Copy the live URL verbatim from the
|
|
264
271
|
`wix release` output — never retype it from memory** (a mistyped subdomain hands the user
|
|
265
|
-
a 404).
|
|
272
|
+
a 404). Before you sign off, run the feedback self-check over the whole session
|
|
273
|
+
(`guides/feedback.md`): anything that cost more turns than it should have, including what you
|
|
274
|
+
recovered from silently, is signal; if anything qualifies, offer to relay it as you deliver the
|
|
275
|
+
links, and send only after an explicit yes.
|
|
266
276
|
|
|
267
277
|
## Reference mode — a static site, or a server-rendered app in another language
|
|
268
278
|
|
|
@@ -277,10 +287,17 @@ close.
|
|
|
277
287
|
|
|
278
288
|
## Verticals
|
|
279
289
|
|
|
290
|
+
The shortlist. Match the brief against the first column; when it names a Wix product or a
|
|
291
|
+
feature not here, when two rows could fit, or when the request sounds like something this skill
|
|
292
|
+
does not ship (meetings, gift cards, loyalty, groups), read
|
|
293
|
+
`<SKILL_ROOT>/guides/capabilities.md`: every Wix product, what it covers, which vertical here
|
|
294
|
+
ships it and what is not shipped.
|
|
295
|
+
|
|
280
296
|
| The user wants… | Vertical | Playbook |
|
|
281
297
|
| -------------------------------------------------------------------------------------------- | ----------------- | ------------------------------------------ |
|
|
282
298
|
| Online store: products, categories, variants, cart, checkout | **storefront** | `templates/storefront/INSTRUCTIONS.md` |
|
|
283
299
|
| Appointments/classes: services, time slots, staff, booking, checkout | **bookings** | `templates/bookings/INSTRUCTIONS.md` |
|
|
300
|
+
| Rentals: rooms, vehicles, gear rented by the hour or the day, customer-picked length, checkout | **rentals** | `templates/rentals/INSTRUCTIONS.md` |
|
|
284
301
|
| Blog: post feed, categories/tags, rich-content post pages | **blog** | `templates/blog/INSTRUCTIONS.md` |
|
|
285
302
|
| Structured content collections (directory, recipes, listings) with pages designed per schema | **cms** | `templates/cms/INSTRUCTIONS.md` |
|
|
286
303
|
| Any visitor-fillable form: contact/enquiry, signup, application, survey — rendered from the live schema | **forms** | `templates/forms/INSTRUCTIONS.md` |
|
|
@@ -293,8 +310,10 @@ close.
|
|
|
293
310
|
| Donations: campaign pages, goal progress, one-time and recurring giving via hosted checkout | **donations** | `templates/donations/INSTRUCTIONS.md` |
|
|
294
311
|
|
|
295
312
|
Verticals compose: a brief that spans several (a restaurant with a blog, a store with member
|
|
296
|
-
accounts)
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
313
|
+
accounts) names them all in the setup call (`--vertical restaurants,blog`), so one install covers
|
|
314
|
+
them; each vertical's seed runs with its own plan. On a project already built,
|
|
315
|
+
`node <SKILL_ROOT>/install/deploy.mjs <vertical…>` from the project root adds one, then one
|
|
316
|
+
`npm install`, then its seed. A request that matches no shipped vertical has no shipped
|
|
317
|
+
code: say so in one line, then build it from the Wix API reference through `wix-docs` (search,
|
|
318
|
+
then the method page), with the same rule as every other call, on the same project and stack,
|
|
319
|
+
starting from the closest shipped vertical when one exists (`guides/capabilities.md` says which).
|
|
@@ -24,11 +24,11 @@ const WIX = [bin('npx'), '-y', '@wix/cli@latest']; // run the CLI via npx — no
|
|
|
24
24
|
// whose first check is the AI_AGENT env var, so setting it guarantees agent mode
|
|
25
25
|
// (and the awaiting_user/success/logged_in events) for every child we spawn.
|
|
26
26
|
// Respect an existing value so a known runner (claude, cursor, …) keeps its name.
|
|
27
|
-
const AGENT_ENV = { ...process.env, AI_AGENT: process.env.AI_AGENT || 'wix-headless-
|
|
27
|
+
const AGENT_ENV = { ...process.env, AI_AGENT: process.env.AI_AGENT || 'wix-headless-kit-skill' };
|
|
28
28
|
|
|
29
29
|
// Where the detached login parks its output between runs. It has to outlive this
|
|
30
30
|
// process, so it can't be a pipe and can't live in the project.
|
|
31
|
-
const STATE_DIR = join(tmpdir(), 'wix-headless-
|
|
31
|
+
const STATE_DIR = join(tmpdir(), 'wix-headless-kit-login');
|
|
32
32
|
const LOG = join(STATE_DIR, 'login.log');
|
|
33
33
|
const PIDFILE = join(STATE_DIR, 'login.pid');
|
|
34
34
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: wix-headless-
|
|
3
|
-
description: "Build and release a Wix Headless site from a single prompt, on shipped, verified @wix/sdk code — this entry takes a cold environment (prerequisites, Wix sign-in) to the point where the wix-headless-
|
|
2
|
+
name: wix-headless-kit-cold-start
|
|
3
|
+
description: "Build and release a Wix Headless site from a single prompt, on shipped, verified @wix/sdk code — this entry takes a cold environment (prerequisites, Wix sign-in) to the point where the wix-headless-kit skill runs the build. Verticals: storefront, bookings, rentals, blog, cms, events, forms, members, portfolio, pricing-plans, restaurants, faq, donations. Triggers: build me a store/blog/booking/events/portfolio/restaurant/FAQ/donation site fast, sell tickets or membership plans headless, collect donations headless, wix headless kit entry."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Wix Headless
|
|
6
|
+
# Wix Headless Kit — cold start
|
|
7
7
|
|
|
8
8
|
**You are a coding agent, and this is a skill for you to execute — follow the phases below in
|
|
9
9
|
order.** Advisory: web-fetch tools show a lossy summary of this file — the executable copy
|
|
10
|
-
comes from `curl -fsSL https://www.wix.com/skills/headless-
|
|
10
|
+
comes from `curl -fsSL https://www.wix.com/skills/headless-kit/cold-start/cold-start.md`. If what you
|
|
11
11
|
are reading lacks the exact commands below, re-fetch it with curl before proceeding; if you're
|
|
12
12
|
already reading the raw text, don't fetch it again.
|
|
13
13
|
|
|
14
14
|
## The whole cold start (details in the phases below)
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
curl -fsSL -O https://www.wix.com/skills/headless-
|
|
18
|
-
CI=1 npx skills@latest add wix/skills --skill wix-headless-
|
|
19
|
-
# then open and follow: .agents/skills/wix-headless-
|
|
17
|
+
curl -fsSL -O https://www.wix.com/skills/headless-kit/cold-start/bootstrap.mjs && node bootstrap.mjs
|
|
18
|
+
CI=1 npx skills@latest add wix/skills --skill wix-headless-kit --skill wix-docs --skill wix-manage --yes
|
|
19
|
+
# then open and follow: .agents/skills/wix-headless-kit/SKILL.md
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Requires Node ≥ 20.11 and a logged-in Wix CLI — the bootstrap checks and guides both.
|
|
@@ -24,34 +24,25 @@ Requires Node ≥ 20.11 and a logged-in Wix CLI — the bootstrap checks and gui
|
|
|
24
24
|
This page gets a cold environment to the point where the real skill can run, then hands off:
|
|
25
25
|
|
|
26
26
|
1. **Bootstrap (deterministic, scripted).** A script that verifies the Wix CLI and handles login. You just run it and relay its events.
|
|
27
|
-
2. **Hand off (agentic).** Install the skills, then open `wix-headless-
|
|
27
|
+
2. **Hand off (agentic).** Install the skills, then open `wix-headless-kit/SKILL.md` and
|
|
28
28
|
follow it — it resolves the stack and operation and owns the whole build.
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- **connect** — an existing frontend/design not yet on Wix (a project on disk without
|
|
35
|
-
`wix.config.json`, or a brought-in zip/URL)
|
|
36
|
-
- **iterate** — a project already connected to Wix (`.wix/` or `wix.config.json` present)
|
|
37
|
-
- **existing site** — the prompt names a Wix site that already exists (by its site id) and asks
|
|
38
|
-
for a new frontend for it; the site keeps its content, the frontend is built here
|
|
39
|
-
|
|
40
|
-
The bootstrap only verifies the CLI and logs you in, so it's fine to run in every case (an
|
|
41
|
-
existing session just reports `logged_in`).
|
|
30
|
+
Every starting point comes through here the same way — run the bootstrap, then hand off. What
|
|
31
|
+
the folder holds and what the brief hands over decide the rest, and SKILL.md step 3 owns that
|
|
32
|
+
decision; this page does not interpret either. The bootstrap only verifies the CLI and logs you
|
|
33
|
+
in, so it's fine to run in every case (an existing session just reports `logged_in`).
|
|
42
34
|
|
|
43
35
|
## Phase 0 — The project's folder, and Node
|
|
44
36
|
|
|
45
|
-
**Work from the folder that holds the project, or that will.**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
there
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
finds all of it.
|
|
37
|
+
**Work from the folder that holds the project, or that will.** An empty folder is the project for
|
|
38
|
+
a new build; if the current folder holds unrelated things, make one named for the business and `cd`
|
|
39
|
+
into it. A project already on disk is its own folder — its root, where the `package.json`,
|
|
40
|
+
`index.html` or `wix.config.json` is. **Whatever the brief hands over as files goes into that folder
|
|
41
|
+
first**, before Phase 1: a zip is extracted there, a URL is downloaded and extracted there, so that
|
|
42
|
+
anything it carries — a `wix.config.json` included — sits at the root. Do not interpret what is
|
|
43
|
+
there: the skill reads the folder and knows what it is. Everything below — the bootstrap, the
|
|
44
|
+
skills, the scaffold — lands in this folder too, so a later session opened in the project finds all
|
|
45
|
+
of it.
|
|
55
46
|
|
|
56
47
|
The Wix CLI requires **Node ≥ 20.11**. Check `node -v`; if it errors or prints a lower
|
|
57
48
|
version, install or upgrade Node first — do **not** work around it:
|
|
@@ -73,9 +64,9 @@ externally-downloaded code.
|
|
|
73
64
|
|
|
74
65
|
```bash
|
|
75
66
|
# macOS/Linux:
|
|
76
|
-
curl -fsSL -O https://www.wix.com/skills/headless-
|
|
67
|
+
curl -fsSL -O https://www.wix.com/skills/headless-kit/cold-start/bootstrap.mjs
|
|
77
68
|
# Windows PowerShell:
|
|
78
|
-
iwr https://www.wix.com/skills/headless-
|
|
69
|
+
iwr https://www.wix.com/skills/headless-kit/cold-start/bootstrap.mjs -OutFile bootstrap.mjs
|
|
79
70
|
|
|
80
71
|
node bootstrap.mjs
|
|
81
72
|
```
|
|
@@ -101,15 +92,15 @@ parsed:
|
|
|
101
92
|
|
|
102
93
|
```bash
|
|
103
94
|
CI=1 npx skills@latest add wix/skills \
|
|
104
|
-
--skill wix-headless-
|
|
95
|
+
--skill wix-headless-kit --skill wix-docs --skill wix-manage --yes
|
|
105
96
|
```
|
|
106
97
|
|
|
107
|
-
- **`wix-headless-
|
|
98
|
+
- **`wix-headless-kit`** — the build itself.
|
|
108
99
|
- **`wix-docs`** — the API reference the playbooks defer to for any contract they don't cover.
|
|
109
100
|
- **`wix-manage`** — management recipes, for admin work on the site after it exists.
|
|
110
101
|
|
|
111
102
|
They land under `.agents/skills/`. Then **open
|
|
112
|
-
`.agents/skills/wix-headless-
|
|
103
|
+
`.agents/skills/wix-headless-kit/SKILL.md` and follow it** — it owns the rest of the run:
|
|
113
104
|
resolve the stack, scaffold, deploy the shipped code, seed, build the brand layer, release.
|
|
114
105
|
(A request outside the shipped verticals — see its SKILL.md § Verticals — is built from the Wix
|
|
115
106
|
API reference through `wix-docs`, on the same project; SKILL.md says how.)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Capability map: which Wix product owns what, and what this skill ships for it
|
|
2
|
+
|
|
3
|
+
Read this when the Verticals table in SKILL.md does not settle the match: the brief names a Wix
|
|
4
|
+
product or a feature the table does not mention, two rows could fit, or the request sounds like a
|
|
5
|
+
vertical this skill does not ship. Every Wix product, its docs path (relative to
|
|
6
|
+
`https://dev.wix.com/docs/api-reference/`), the features its introduction page lists, and the
|
|
7
|
+
column that matters here: what this skill ships for it. Features come from the introduction pages;
|
|
8
|
+
when a product looks wrong or missing, re-derive from `<path>/introduction.md` through `wix-docs`.
|
|
9
|
+
|
|
10
|
+
"Shipped" means the vertical's data layer, stores, hooks, components and seed cover it; "read only"
|
|
11
|
+
means the DTO carries it but nothing acts on it; "not shipped" means the feature is built from the
|
|
12
|
+
API reference through `wix-docs` on the same project, with the same rules as every other call.
|
|
13
|
+
|
|
14
|
+
## Business solutions
|
|
15
|
+
|
|
16
|
+
| Product | Path | Features (from the introduction page) | This skill |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| Stores | `business-solutions/stores` | Products, categories, options and variants, inventory, brands, ribbons, info sections, customizations (modifiers), promotions, store locations, site currency, currency conversion | **storefront**: products, categories, options and variants, inventory and low stock, pre-order, ribbons, info sections, modifiers, discount names, subscriptions, back in stock, site currency (set by the seed). Not shipped: brands, store locations, currency conversion |
|
|
19
|
+
| eCommerce | `business-solutions/e-commerce` | Cart, checkout, abandoned checkout, orders, transactions, fulfillment, discount rules, recommendations, shipping rates, additional fees, payments, catalog | **storefront**, **restaurants**, **bookings**, **events**, **donations** use it for the cart line, totals (discounts, fees, taxes), coupon code, buyer note and the checkout redirect session; order read on the events and donations thank-you pages. Not shipped: abandoned checkout, fulfillment, shipping rates, recommendations |
|
|
20
|
+
| Coupons | `business-solutions/coupons` | Coupons, percentage and fixed discounts, free shipping, buy X get Y, scopes, usage limits, expiry | Applied at the cart by **storefront**; created through a `wix-manage` recipe when the brief asks (no coupon seed) |
|
|
21
|
+
| Bookings | `business-solutions/bookings` | Services, appointments, classes, courses, staff, resources, pricing, policies, time slots, bookings, waitlists, external calendar, checkout and orders | **bookings**: appointments, classes and courses, staff, time slots and sessions, rate types, deposits, policies as the call to action, locations, categories, booking to checkout or direct placement. Read only: waitlist flag on a slot, add-ons. Not shipped: non-staff resources, external calendar |
|
|
22
|
+
| Rentals | `business-solutions/rentals` | Rental services, hourly and daily durations, customer-selected length, bookable resources, resource attributes, per-hour and per-day pricing, availability, consecutive multi-day bookings | **rentals**: the catalog (Bookings services carrying the Rentals app id), hourly starts then end options, daily starts then the consecutive-day walk, the server-priced quote, the Rentals booking form, booking with the start's resource and the customer's end, checkout-or-place; the seed creates resource types, resources (bookable around the clock) and rental services one at a time. Not shipped: resource attributes and attribute filters, per-resource working hours (which split a multi-day rental into one booking per day), multi-service bookings |
|
|
23
|
+
| Meetings | `business-solutions/meetings` | Scheduling links, shareable booking page, duration and location, video or phone or in person, hosts, calendar sync, intake forms, paid meetings, rescheduling | **Not shipped.** Also Bookings underneath; a scheduling-link brief is built through `wix-docs` |
|
|
24
|
+
| Restaurants | `business-solutions/restaurants` | Menus, sections, items, variants, modifiers, labels, online orders, operations, fulfillment methods, availability exceptions, service fees, reservations, time slots, experiences | **restaurants**: menus, sections, items, variants, modifier rules, labels, ordering (operations, fulfillment methods, windows), reservations with the location's form and time slots, money from the eCommerce settings. Not shipped: service fees in the menu totals, experiences |
|
|
25
|
+
| Events | `business-solutions/events` | Events, ticket definitions, tickets, RSVP, orders and checkout, check-in, guests, guest list, schedule, policies | **events**: listing and event pages, occurrences, RSVP with the organizer's form and guest control, ticket tiers to checkout, order read on the confirmation page, categories. Not shipped: check-in, guest list, schedule |
|
|
26
|
+
| Blog | `business-solutions/blog` | Posts, draft posts, categories, tags, post stats, blog roles, paid post subscriptions | **blog**: feed, post pages, categories and tags, authors, metrics, likes, related posts, comments through Community. Seed writes draft posts and publishes them. Not shipped: paid post subscriptions, roles |
|
|
27
|
+
| CMS | `business-solutions/cms` | Data items, collections, collection permissions, aggregations, indexes, external databases, backups, background tasks | **cms**: collections and items with filters, sort, distinct values, paging, references, permissions set by the seed. Not shipped: indexes, external databases, backups |
|
|
28
|
+
| Pricing Plans | `business-solutions/pricing-plans` | Plans, orders, recurring, single payment, free plans, free trials, cancellation, credits | **pricing-plans**: plans with trials and fees, the plan gate on the member's orders, purchase through the native checkout redirect. Not shipped: cancellation, credits |
|
|
29
|
+
| Portfolio | `business-solutions/portfolio` | Projects, project items, collections, settings, gallery layouts, cover media | **portfolio**: collections, projects, galleries with images and video. Not shipped: settings |
|
|
30
|
+
| Donations | `business-solutions/donations` | Campaigns, goals, one-time and recurring, predefined and custom amounts, cover fees, progress | **donations**: all of it, through the eCommerce checkout |
|
|
31
|
+
| Gift Cards | `business-solutions/gift-cards` | Gift cards, gift card products, redemption codes, balances, denominations, expiry, transactions | Not shipped |
|
|
32
|
+
| Benefit Programs | `business-solutions/benefit-programs` | Programs, templates, tiers, credits, redemption, enrollment, balances, eligibility | Not shipped; program activation is dashboard-only |
|
|
33
|
+
| Suppliers Hub | `business-solutions/suppliers-hub` | Marketplace products, suppliers, dropshipping, wholesale tiers | Not shipped; partner-only |
|
|
34
|
+
| Forum | `business-solutions/forum` | Deprecated (discontinued March 2026) | Not shipped; do not build on it. Discussion is blog comments or Community groups |
|
|
35
|
+
|
|
36
|
+
## Site-wide products
|
|
37
|
+
|
|
38
|
+
| Product | Path | Features | This skill |
|
|
39
|
+
|---|---|---|---|
|
|
40
|
+
| Members & Contacts | `crm/members-contacts` | Contacts, labels, extended fields, notes, members, profiles, authentication, privacy, badges, followers | **members**: sign-up, login, verification, logout, the current member's profile, gated pages. Not shipped: contacts, labels, badges, followers, profile editing |
|
|
41
|
+
| Forms | `crm/forms` | Form schemas, submissions, templates, intake forms, interactive sessions, chat settings | **forms**: the schema rendered live, every field kind, rules, steps, submissions with files (paid plans) or through the media-upload capability. Not shipped: templates, interactive sessions, chat |
|
|
42
|
+
| FAQ | `business-management/faq-app` | Categories, question entries | **faq**: all of it |
|
|
43
|
+
| Site Search | `business-management/site-search` | Search, search schemas | the **site-search** capability: federated search and suggestions over the deployed verticals |
|
|
44
|
+
| Media Manager | `assets/media` | Files, folders, upload URLs | the **media-upload** capability (a validated Astro endpoint and a client helper); images in every seed |
|
|
45
|
+
| SEO | `business-management/seo` | Site tags, patterns, item tags, resolved tags, redirects | owner-editable item SEO on every Astro item page that has a Wix SEO item type (products, posts, services, events, categories) |
|
|
46
|
+
| Community | `crm/community` | Groups, membership, comments, reviews, moderation | Comments only, inside **blog**. Not shipped: groups, reviews |
|
|
47
|
+
| Loyalty Program | `crm/loyalty-program` | Points, earning rules, tiers, accounts, rewards, loyalty coupons | Not shipped |
|
|
48
|
+
| Online Programs | `business-management/online-programs` | Programs, sections, steps, enrollment, payment | Not shipped (a paid course a member enrolls in is pricing-plans plus gated pages, or this) |
|
|
49
|
+
| Locations | `business-management/locations` | Locations, default location, business schedule, special hours | Read by **bookings** and **restaurants** for their locations; not managed |
|
|
50
|
+
| Communication, CRM, Automations, Marketing, Payments, Get Paid, Multilingual, Notifications, Branches, Analytics, Calendar | `crm/…`, `business-management/…` | see each introduction page | Not shipped; back-office or infrastructure, driven from `wix-manage` recipes or `wix-docs` when a brief needs one |
|
|
51
|
+
|
|
52
|
+
## Where things actually live
|
|
53
|
+
|
|
54
|
+
- Meetings and Rentals ship no APIs of their own: both are Bookings with restricted field values,
|
|
55
|
+
so their contracts are the Bookings ones. A rentals site also needs the Wix Bookings app installed
|
|
56
|
+
(the rentals seed does it): with Rentals alone, availability for an hourly rental with several
|
|
57
|
+
units answers 401 "Booking app not installed".
|
|
58
|
+
- Loyalty coupons (`crm/loyalty-program/rewards/coupons`) are a different resource from eCommerce
|
|
59
|
+
Coupons (`business-solutions/coupons`).
|
|
60
|
+
- Stores categories are called Collections in Catalog V1 and Categories in Catalog V3; the shipped
|
|
61
|
+
code is V3.
|
|
62
|
+
- SEO spans two products: the tag model is `business-management/seo`; Ads.txt and keyword
|
|
63
|
+
suggestions are under `business-management/marketing/seo`.
|
|
64
|
+
- Badges and Followers live under `crm/members-contacts/members/activity/`, profiles under
|
|
65
|
+
`members/member-management/members-about-v2`, privacy under `member-management/privacy`.
|
|
66
|
+
- There is no roles API and no segments API; contact labels serve segmentation.
|
|
67
|
+
- Stores, Coupons and Suppliers Hub have no usable introduction page; start from the menu page and
|
|
68
|
+
the sub-section introductions.
|
|
69
|
+
|
|
70
|
+
## When the brief lands on "not shipped"
|
|
71
|
+
|
|
72
|
+
Say so plainly in one line, then build it on the same project and stack from the API reference
|
|
73
|
+
through `wix-docs` (search, then the method page), with every other rule unchanged: nothing from
|
|
74
|
+
memory, live data or an honest empty state, purchases through Wix. Choose the closest shipped
|
|
75
|
+
vertical as the base when one exists (a meetings brief starts from bookings, a loyalty brief from
|
|
76
|
+
members), and name the gap in the closing message.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Feedback: relay the user's building-with-Wix experience to Wix
|
|
2
|
+
|
|
3
|
+
A small, optional step: send the user's feedback about the experience of building with Wix to Wix,
|
|
4
|
+
attributed to the authenticated user. It closes the loop when this skill, the shipped code, the
|
|
5
|
+
APIs, the docs or the tooling got in the way. It is not support and not about the user's site
|
|
6
|
+
content; it is feedback about building with Wix.
|
|
7
|
+
|
|
8
|
+
## When to offer it
|
|
9
|
+
|
|
10
|
+
Sending is always the user's call. Offering is not: default to offering, in plain prose, once per
|
|
11
|
+
issue, in any of these cases, and send only after an explicit yes.
|
|
12
|
+
|
|
13
|
+
- The user asks to send feedback or report something to Wix. Confirm the wording and send.
|
|
14
|
+
- The user complains, is frustrated, or reports a Wix bug while you work. Acknowledge, then offer.
|
|
15
|
+
- The run hit friction, even once. Friction is anything that cost more turns than it should have,
|
|
16
|
+
whether or not it ended in an error: a confusing error, a doc that was wrong or missing, a seed
|
|
17
|
+
step that failed and had to be re-run, a shipped file that did not cover what the brief needed, a
|
|
18
|
+
playbook line you had to read the source to understand, a contract you had to discover by trial,
|
|
19
|
+
a slow install or a flaky call you retried, a workaround you had to invent, a platform gate the
|
|
20
|
+
brief did not anticipate (a plan restriction, a missing payment method), a step where you were
|
|
21
|
+
unsure what the skill wanted. Offer in the moment: "That tripped us up; want me to send it to Wix
|
|
22
|
+
as feedback?"
|
|
23
|
+
- At the close of every run, before the live URL and the dashboard link, run a self-check over the
|
|
24
|
+
whole session. Friction you shrugged off or silently retried past is still signal. If anything
|
|
25
|
+
qualifies, offer before you sign off. Skip the offer only when the run was clean end to end.
|
|
26
|
+
|
|
27
|
+
When you offer, invite the user to add anything in their own words; it goes into the message
|
|
28
|
+
verbatim under "In the user's words". Never send on a single transient error, never without a yes,
|
|
29
|
+
never twice for the same issue. When unsure, ask.
|
|
30
|
+
|
|
31
|
+
## Compose the message
|
|
32
|
+
|
|
33
|
+
Wix receives free text, so a bare sentence is low signal. Send a summary of the whole run in three
|
|
34
|
+
layers, so Wix can triage without chasing you.
|
|
35
|
+
|
|
36
|
+
**Provenance**, as labelled lines; drop what does not apply, add what helps:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Agent / model: <Claude Code / Opus, Cursor, Codex, ...>
|
|
40
|
+
Skill: wix-headless-kit <version from .agents/skills/wix-headless-kit/SKILL.md or skills-lock.json> · run kind: <create | connect | attach | iterate | reference mode | migration preview>
|
|
41
|
+
Stack: <astro | react | lib | static | port> · verticals: <storefront, blog, ...> · capabilities: <media-upload, site-search, none>
|
|
42
|
+
Wix tooling used: <Wix CLI, wix-manage recipes, wix-docs, REST via curl>
|
|
43
|
+
Wix products: <Stores, Bookings, Events, Blog, Forms, ...>
|
|
44
|
+
Site: <siteId> · public clientId: <appId> · dashboard: <url> · live: <url>
|
|
45
|
+
Skill files involved: <templates/<vertical>/seed/seed-<v>.mjs, templates/<vertical>/INSTRUCTIONS.md, install/setup.mjs, ...>
|
|
46
|
+
Other ids: <product / service / form / event ids created this run, as relevant>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Narrative:**
|
|
50
|
+
|
|
51
|
+
- In the user's words: what they added when you offered, verbatim, secrets redacted. Skip when empty.
|
|
52
|
+
- User intent and run summary: what they set out to build and the arc of the session in a few
|
|
53
|
+
sentences, what worked and what fought back.
|
|
54
|
+
- Conversation and agent flow: a condensed play-by-play, the key exchanges, the scripts and calls
|
|
55
|
+
you ran, what came back, the decisions and course corrections. Distilled, not a transcript.
|
|
56
|
+
- Friction points: the heart of it. Every place something got in the way, each with the step or
|
|
57
|
+
endpoint, the status and message, the gap, the workaround and what you expected instead, with a
|
|
58
|
+
minimal repro where there is one. Include the ones you recovered from.
|
|
59
|
+
|
|
60
|
+
**Attribution**, per significant friction point, your best diagnosis tagged with one of: API
|
|
61
|
+
behavior, API schema, API reference docs, docs articles or examples, Wix harness (CLI, auth, hosting),
|
|
62
|
+
this skill's shipped code, this skill's playbook, other or unsure; and whether you confirmed it or
|
|
63
|
+
are assuming. A wrong route is worse than "unsure".
|
|
64
|
+
|
|
65
|
+
**Bottom line**: one or two sentences naming the single most important problem and its impact,
|
|
66
|
+
worst first, plainly, in a professional register.
|
|
67
|
+
|
|
68
|
+
Confirm the final wording with the user before sending. Never include secrets (no bearer tokens,
|
|
69
|
+
refresh tokens, API keys, credentials) and no personal data beyond what the feedback needs.
|
|
70
|
+
|
|
71
|
+
## Send it
|
|
72
|
+
|
|
73
|
+
The call identifies the human account, so it needs a user-scoped bearer from the bare token
|
|
74
|
+
command, not the site-scoped one the seeds use (`token --site` carries a metaSiteId and the service
|
|
75
|
+
rejects it as anonymous).
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
TOKEN=$(npx @wix/cli@latest token)
|
|
79
|
+
curl -sS -w "\nHTTP_STATUS:%{http_code}" \
|
|
80
|
+
-X POST "https://www.wixapis.com/mcp-serverless/v1/headless-feedback" \
|
|
81
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
82
|
+
-H "Content-Type: application/json" \
|
|
83
|
+
-d '{"message":"<composed feedback>"}'
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- `HTTP_STATUS:200` with `{}`: sent. Tell the user.
|
|
87
|
+
- `500` "Unable to determine target user id, anonymous messages are not allowed": the token was
|
|
88
|
+
site-scoped. Re-mint with the bare command and retry once.
|
|
89
|
+
- `401` or `403`: the CLI session expired. `npx @wix/cli@latest login` (surface the URL and code to
|
|
90
|
+
the user), re-mint, retry once. If it still fails, show the response and stop.
|
|
91
|
+
|
|
92
|
+
## Rules
|
|
93
|
+
|
|
94
|
+
- Offer whenever the run warrants it; send only after an explicit yes.
|
|
95
|
+
- One submission per issue; no retries beyond the one named above, no duplicates.
|
|
96
|
+
- Specific and factual; wording confirmed first.
|
|
97
|
+
- No tokens, secrets, credentials or unnecessary personal data in the message.
|
|
98
|
+
- Not for the user's site content and not a support channel.
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
# A migration preview: a site being moved to headless
|
|
2
2
|
|
|
3
3
|
Read when setup reports `mode: "migrate"`, or when a folder holds a `wix.config.json` and
|
|
4
|
-
`node <SKILL_ROOT>/install/context.mjs` prints `migration.active: true`. The brief
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
`node <SKILL_ROOT>/install/context.mjs` prints `migration.active: true`. The brief is the prompt
|
|
5
|
+
the Wix dashboard's Headless settings hand the owner after "Go Headless": download the project from
|
|
6
|
+
`https://manage.wix.com/download-headless-business/<siteId>/download.zip`, the names of the apps
|
|
7
|
+
the site already has, and the instruction not to probe, install or seed anything. The zip holds
|
|
8
|
+
`wix.config.json` (the deploy site and its app) beside the CLI's blank Astro starter.
|
|
9
|
+
|
|
10
|
+
**What `.env.local` says.** `wix env pull` copies the project's `prod` environment: the parent's
|
|
11
|
+
`WIX_CLIENT_ID`, and the migration's own variables, `EDITOR_MIGRATION_STATUS` (`ACTIVE` while the
|
|
12
|
+
migration is under way, `COMPLETED` once the parent serves this frontend), `EDITOR_MIGRATION_PARENT_SITE_ID`,
|
|
13
|
+
`EDITOR_MIGRATION_CHILD_SITE_ID` and `EDITOR_MIGRATION_CHILD_APP_ID`. `context.mjs` reads the first
|
|
14
|
+
two; the shape is `migration` whenever the status is active, whatever else the folder holds.
|
|
7
15
|
|
|
8
16
|
**Two sites, one project.** `wix.config.json` names a site created only to host the deployment:
|
|
9
17
|
`wix release` goes there and nowhere else. `.env.local` (what `wix env pull` writes; setup and
|
|
@@ -28,16 +36,19 @@ manages. So:
|
|
|
28
36
|
`read-site.mjs` sizes the content as in `guides/existing-site.md`; when it says not to probe,
|
|
29
37
|
design from the brief.
|
|
30
38
|
|
|
31
|
-
**The run.** `setup.mjs --vertical <vertical> [--stack <stack>]` in the folder: it
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
**The run.** `setup.mjs --vertical <vertical>[,<vertical>…] [--stack <stack>]` in the folder (every vertical the brief needs, in one call): it keeps the
|
|
40
|
+
starter the download carries and deploys the vertical's code and dependencies into it (a bare config
|
|
41
|
+
gets the composed template copied in around it), starts the install, writes the project's AGENTS.md
|
|
42
|
+
with the migration recorded, and skips the seed. Then
|
|
34
43
|
SKILL.md steps 4 and 5 as for any run. `attach.mjs` refuses a migration folder on purpose: the
|
|
35
44
|
app, hosting and credentials came with the download; nothing is provisioned or re-pointed.
|
|
36
45
|
|
|
37
46
|
**The close.** The release is a **preview** on the deploy site. Close with the preview URL (copied
|
|
38
47
|
from the `wix release` output), the parent's dashboard link, and the two facts: the original site
|
|
39
48
|
is unchanged, and completing the migration, which makes the parent serve this frontend and retires
|
|
40
|
-
the deploy site, is the user's next step
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
the deploy site, is the user's next step once they approve the preview: the dashboard hands them
|
|
50
|
+
a second prompt for it (`wix env pull`, `wix finalize-migration`, `wix build`, `wix release`, in
|
|
51
|
+
that order). That step is not part of this skill and the command may not be in the installed CLI
|
|
52
|
+
yet; do not invent one, do not run `wix release` against the parent, and do not edit
|
|
53
|
+
`wix.config.json`. On every stack the code already carries the parent's client id,
|
|
43
54
|
so completion needs no redeploy from here.
|