@lacneu/wix-openclaw 0.2.0 → 0.2.1

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/CHANGELOG.md CHANGED
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.1] - 2026-04-29
11
+
12
+ ### Added
13
+ - `examples/recommended-skill.md` — companion skill template that
14
+ operators can copy into agent workspaces
15
+ (`~/.openclaw/workspace-<agent>/skills/wix/SKILL.md`) to give the LLM
16
+ business context, recipes and guardrails for the plugin. Skills are
17
+ not part of the OpenClaw plugin SDK by design — they live in the
18
+ workspace — so the template ships as a static file and gets included
19
+ in the npm package via the `files` array.
20
+
21
+ ### Changed
22
+ - Added `examples/` to the `files` array of `package.json` so the
23
+ template is shipped with the npm publish.
24
+ - README now has a "Recommended companion skill" section linking to
25
+ the template.
26
+
10
27
  ## [0.2.0] - 2026-04-29
11
28
 
12
29
  ### Added
package/README.md CHANGED
@@ -498,6 +498,31 @@ use an empty array to disable gating entirely (not recommended in production).
498
498
 
499
499
  ---
500
500
 
501
+ ## Recommended companion skill
502
+
503
+ OpenClaw plugins ship code (tools, hooks); they do **not** ship skills.
504
+ Skills live in agent workspaces and carry the business context that makes
505
+ the LLM use the tools correctly (audience, tone, recipes, guardrails).
506
+
507
+ To get an agent up and running with this plugin, copy
508
+ [`examples/recommended-skill.md`](examples/recommended-skill.md) into the
509
+ target workspace at `~/.openclaw/workspace-<agent>/skills/wix/SKILL.md`,
510
+ then replace the `<PLACEHOLDER>` values with your own (organisation name,
511
+ domain, contributors, tone). Duplicate the file for each agent that
512
+ should benefit from the skill.
513
+
514
+ The template covers:
515
+
516
+ - Conversational triggers (encoded in the `description` frontmatter as
517
+ per OpenClaw skill convention)
518
+ - 5 usage recipes (publish article, list real drafts, read leads,
519
+ manage bookings, design request)
520
+ - Behavioural guardrails (approval recap before publish, app-not-installed
521
+ handling, PII rules)
522
+ - Tool mapping (short reference; the README is the source of truth)
523
+
524
+ ---
525
+
501
526
  ## Development
502
527
 
503
528
  ### Project layout
@@ -0,0 +1,188 @@
1
+ ---
2
+ name: wix
3
+ description: Site officiel <YOUR_SITE_NAME> (<your-site.com>) sur Wix — articles de blog, brouillons, médias, formulaires/leads, RDV, services, FAQ, avis. Utilise ce skill quand l'utilisateur dit "publier un article", "brouillon de blog", "ajouter une image au site", "voir les leads", "soumissions de formulaire", "modifier les services", "répondre à un avis", "FAQ", "<your-site.com>", "site officiel".
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Wix — Recommended skill template
8
+
9
+ > **This is a template** — copy it to your workspace
10
+ > (`~/.openclaw/workspace-<agent>/skills/wix/SKILL.md`), then replace every
11
+ > `<PLACEHOLDER>` with values specific to your site and organisation.
12
+ > Skills are loaded per workspace, so duplicate the file for each agent
13
+ > that should benefit from it.
14
+
15
+ This skill gives an OpenClaw agent the business context, recipes and
16
+ behavioural guardrails it needs to operate the
17
+ [`@lacneu/wix-openclaw`](https://www.npmjs.com/package/@lacneu/wix-openclaw)
18
+ plugin correctly. The plugin itself ships generic tools; this skill wraps
19
+ them into your specific site, voice and audience.
20
+
21
+ ## Business context (replace with yours)
22
+
23
+ `<ORGANIZATION>` is `<short pitch — what you do, who you serve>`. The
24
+ public site `<your-site.com>` runs on **Wix Editor classic** (the plugin
25
+ also targets Wix Studio sites — adjust if relevant). It is locked at the
26
+ plugin level to a single `siteId` (set in `allowedSiteIds`).
27
+
28
+ **Tone for site content** — `<sober / playful / formal / informal>`,
29
+ `<language>`, `<audience>`. Preserve the voice of the human contributors
30
+ when they dictate or proofread; do not normalize their phrasing.
31
+
32
+ **Site language** — `<fr / en / ...>`.
33
+
34
+ **Human contributors / collaborators** — list them with their role:
35
+
36
+ - `<Name 1>` — `<role>`
37
+ - `<Name 2>` — `<role>`
38
+ - `<...>`
39
+
40
+ ## Conversational triggers (when this skill is relevant)
41
+
42
+ - "Publish an article about X" / "Publier un article sur X"
43
+ - "Prepare a draft about Y" / "Prépare un brouillon sur Y"
44
+ - "Add this image to the site" / "Ajoute cette image au site"
45
+ - "How many leads this week?" / "Combien de leads cette semaine ?"
46
+ - "Update this service" / "Mets à jour ce service"
47
+ - "What appointments today?" / "Quels RDV aujourd'hui ?"
48
+ - "Reply to this review" / "Réponds à cet avis"
49
+ - "Add this FAQ entry" / "Ajoute cette question à la FAQ"
50
+ - Any mention of `<your-site.com>`, "Wix", "official site", "site officiel"
51
+
52
+ ## When this skill does NOT apply
53
+
54
+ The plugin **cannot** modify the site's design (Wix Editor classic does
55
+ not expose this through any public API):
56
+
57
+ - Colours, typography, page layout
58
+ - Individual graphic components (buttons, sections, backgrounds)
59
+ - Page structure (navigation, header, footer)
60
+
61
+ Pure-design requests should be redirected to the **(e) Design request**
62
+ recipe below.
63
+
64
+ ## Usage patterns
65
+
66
+ ### (a) Draft and publish a blog article
67
+
68
+ 1. **Cover image** — if the user provides a URL (or asks for an
69
+ AI-generated image): use `wix_media_upload` to push it into Wix Media
70
+ Manager. Capture the returned `id` for step 2.
71
+ 2. **Create draft** — `wix_blog_create_draft` with:
72
+ - `title`
73
+ - `richContent` (Wix Ricos format — Wix Blog's native rich-text)
74
+ - `coverMedia.imageId` from step 1
75
+ - `tagIds`, `categoryIds` if appropriate (look them up first via
76
+ `wix_blog_list_tags` / `wix_blog_list_categories`)
77
+ 3. **User-facing recap** — show this in plain business language, NEVER
78
+ mention tool names or HTTP details:
79
+
80
+ > Draft ready:
81
+ > **Title**: <title>
82
+ > **Lead paragraph**: <first ~80 words>
83
+ > **Cover image**: <displayName or short description>
84
+ > **Tags**: <readable list>
85
+ >
86
+ > Reply `publish` to go live, or tell me what to adjust.
87
+
88
+ 4. **Publish on explicit confirmation only** — `wix_blog_publish_draft`
89
+ with the draft id. OpenClaw approval-gates this call; the recap above
90
+ helps the human decide knowingly.
91
+
92
+ ### (b) List actual drafts (not the published-post snapshots)
93
+
94
+ Wix Blog v3 quirk: `wix_blog_list_drafts` without filter returns mirror
95
+ drafts for already-published posts (auto-snapshots).
96
+
97
+ To see only **drafts being actively written**: pass `status: "UNPUBLISHED"`.
98
+ Other useful values: `IN_REVIEW`, `SCHEDULED`.
99
+
100
+ If the user asks "how many drafts do I have?" and the unfiltered count
101
+ looks unexpectedly large, explain in plain words ("some are mirror
102
+ copies of published articles") and re-query with `status: "UNPUBLISHED"`.
103
+
104
+ ### (c) Read form submissions / leads
105
+
106
+ - `wix_forms_list_submissions` with:
107
+ - `namespace: "wix.form_app.form"` (default — keep unless using a
108
+ custom forms app)
109
+ - `paging.limit: 20` (or more)
110
+ - `sort` to put recent first when supported
111
+
112
+ Present leads in business language (name, email, message, date). Do not
113
+ expose technical `id`s.
114
+
115
+ ### (d) Manage bookings
116
+
117
+ - `wix_bookings_services_list` — list bookable services
118
+ - `wix_bookings_query_bookings` with a `startDate` filter (e.g.
119
+ `$gt: "2026-01-01T00:00:00Z"`) for upcoming bookings
120
+ - `wix_bookings_cancel` / `wix_bookings_reschedule` — both gated; ask for
121
+ explicit confirmation before invoking.
122
+
123
+ ### (e) Design request (assumed limitation)
124
+
125
+ If the user asks for a visual change (colour, layout, styled button…),
126
+ respond along these lines:
127
+
128
+ > I can't change the site's visual components directly (Wix Editor
129
+ > classic doesn't expose that via API). I can however prepare a design
130
+ > brief (palette, typography, suggested copy) and generate a mockup
131
+ > image — you'll then apply it manually in the Wix editor. Want to go
132
+ > that route?
133
+
134
+ If yes: use `wix_design_brief` to structure the brief, then
135
+ `image_generate` (or your preferred image-gen tool) for the mockup.
136
+
137
+ ## Behavioural guardrails
138
+
139
+ 1. **Before any publication** (`wix_blog_publish_draft`, modifying
140
+ `wix_bookings_*`, public review replies) — always show a business
141
+ recap and wait for explicit confirmation. OpenClaw gates the HTTP
142
+ call already; the recap helps the human decide.
143
+ 2. **"App not installed" / `428` / `404` / "Wix Code not enabled"** — do
144
+ not insist or retry. Explain in plain terms that the relevant Wix app
145
+ must be activated in the
146
+ [Wix App Market](https://www.wix.com/app-market). Apps concerned: Wix
147
+ Events, Wix Reviews, Wix FAQ, Wix Multilingual, Velo (for
148
+ `wix_data_*`).
149
+ 3. **Site whitelist** — the plugin is locked to `<your_site_id>`. Any
150
+ other `siteId` is rejected before reaching Wix. Do not try to bypass.
151
+ 4. **PII / sensitive data** — form submissions and contacts contain
152
+ names, emails, phone numbers, sometimes confidential messages. **Do
153
+ not log, do not embed in long-term knowledge stores** (vector DB,
154
+ shared memory) without explicit user consent. Surface only what is
155
+ asked.
156
+
157
+ ## Available tools (short mapping)
158
+
159
+ - **Blog** — drafts (create, list, update, publish), posts, categories,
160
+ tags
161
+ - **Media** — upload, list
162
+ - **Site** — `sites_list`, `url_get`, `business_info`
163
+ - **CMS / Wix Data** — collections, items CRUD (requires Velo enabled)
164
+ - **Forms** — `submissions` (list, get)
165
+ - **Contacts** — CRUD + labels + search
166
+ - **Bookings** — services, bookings (CRUD, cancel, reschedule)
167
+ - **Events** (requires Wix Events app)
168
+ - **Reviews** (requires Wix Reviews app) — moderation, replies
169
+ - **FAQ** (requires Wix FAQ app)
170
+ - **Multilingual** (requires Wix Multilingual app)
171
+ - **Design** — `wix_design_brief`
172
+
173
+ Full reference and live signatures:
174
+ <https://github.com/OlivierNeu/wix-openclaw-plugin#tools>
175
+
176
+ ## Operating rules
177
+
178
+ 1. **Voice of `<ORGANIZATION>` first** — preserve phrasings dictated by
179
+ `<contributors>`, do not normalize them.
180
+ 2. **No technical jargon to end-users** — never expose tool names
181
+ (`wix_*`), Wix object ids, or HTTP error codes. Rephrase in business
182
+ terms.
183
+ 3. **Explicit confirmation** before any public-facing publication or
184
+ modification.
185
+ 4. **Single source of truth** — the official site at `<your-site.com>`.
186
+ Do not attempt other `siteId`s.
187
+ 5. **Unexpected behaviour** — escalate to the operator (admin agent /
188
+ maintainer) in a separate session, not in the user-facing channel.
@@ -2,7 +2,7 @@
2
2
  "id": "wix-openclaw",
3
3
  "name": "Wix",
4
4
  "description": "Wix REST API plugin for OpenClaw — manage blog, CMS data, forms, bookings, contacts, events, FAQ on a single Wix site with site_id whitelist and approval gating on destructive ops",
5
- "version": "0.2.0",
5
+ "version": "0.2.1",
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lacneu/wix-openclaw",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "description": "Wix REST API plugin for OpenClaw — manage blog, CMS data, forms, bookings, contacts, events, FAQ on a single Wix site with site_id whitelist and approval gating on destructive ops",
6
6
  "license": "MIT",
@@ -29,6 +29,7 @@
29
29
  "types": "./dist/index.d.ts",
30
30
  "files": [
31
31
  "dist",
32
+ "examples",
32
33
  "openclaw.plugin.json",
33
34
  "README.md",
34
35
  "CHANGELOG.md",