Tool dell'editor
Il server MCP di una bozza offre 54 tool. Come collegarsi è in MCP di Webround Editor. Le descrizioni dei tool e dei parametri vengono dal registro e sono in inglese.
Ogni tool richiede il permesso site:update sulla bozza, anche quelli che si limitano a leggere: site:read non basta per usare l'MCP.
Al client viene detto quali tool leggono soltanto (readOnlyHint) e quali tolgono qualcosa (destructiveHint), così può decidere su cosa chiederti conferma.
| Tool | Tipo | Cosa fa |
|---|---|---|
check | Lettura | Checks the code: images without alt text, headings out of order, links and buttons with no name, repeated ids. |
inspect | Lettura | Opens a page in a browser and reports what a visitor would hit: errors in the console, failed requests, the dev server's error screen, and what the checks find in the page. |
screenshot | Lettura | A picture of a page (a JPEG file), with the same report as inspect. |
diagnose | Lettura | Everything that is wrong right now, in one answer: the dev server's errors, the code's problems, and what the page shows. |
file-list | Lettura | Lists the files of the site (code and data) under a folder, with their size: src/ by default, or public/. Never node_modules, vendor, dist or hidden files. |
file-read | Lettura | Reads a text file of the site (up to 48 KB) and gives back its content. |
file-write | Scrittura | Writes a text file of the site (up to 48 KB): the folders it needs are made, a file that is there is replaced (unless overwrite is false), and it is written whole or not at all. A .json file must be valid JSON. The dev server shows the change at once. |
file-delete | Distruttivo | Deletes a file of the site. One file, never a folder; there is no undo. |
dependency-list | Lettura | Lists the packages the site depends on (package.json), with the version it asks for, the one that is installed, and whether it is installed (installed, missing or outdated). |
dependency-add | Scrittura | Adds a package to the site (npm install name@version) and installs it; with a package that is there already, changes the version it asks for. The version is from the registry (1.2.3, ^1.2.3, ~1.2.3, >=1.2.3, a tag such as latest). Several at once with packages (["[email protected]", "[email protected]"], one npm install): for packages that need each other's versions. If npm fails, package.json is as it was. |
dependency-remove | Distruttivo | Takes a package away from the site (npm uninstall name). The ones the site does not run without (@webround/core, @webround/editor, react, react-dom) are refused. |
dependency-install | Scrittura | Installs what package.json asks for (npm install, from the lockfile): for a project whose package.json was changed by hand, or whose node_modules lacks something. |
kit-apply | Scrittura | Puts a kit on the site (shop: the shop's pages, components, texts and packages). Deterministic and all or nothing: if a file of the site is in the way, nothing is written and every conflict is told. A site that has the kit's packages already is left as it is. dryRun tells what it would do. |
page-list | Lettura | The pages of the site: name, component, and whether the shared header and footer are shown on each. |
page-create | Scrittura | Creates a page: its component, its (empty) JSON of values and its entry in the routes. |
page-delete | Distruttivo | Deletes a page: its component, its JSON of values, its comments and its entry in the routes. |
page-update | Scrittura | Changes a page: renames it or its component, loads it lazily or not, shows or hides the shared header and footer on it. |
node-get | Lettura | One element of a page: what kind it is, the values written in the code (src, href…) and the ones in the JSON (texts per language, hidden…). |
node-set | Scrittura | Sets one value of an element: where it is stored (the code, or the JSON) is decided by its kind's schema. A translated value (a text, an alt, the labels of a menu's entries) is written in the language asked for, and the other languages are kept; a list (items of a nav) is given whole, as a list of { label, href }. A text's content is HTML; plain text is fine. |
node-insert | Scrittura | Adds markup to a page, next to an element or inside one (a section). Give the JSX itself, or the id of a block of the catalog (blocks-list). Ids that are taken are renumbered; the imports and the indentation are taken care of. The result has the final ids. |
node-delete | Distruttivo | Deletes an element with everything it contains, and the JSON values (texts, translations…) and the comments of all of them. The root of the header or footer cannot be deleted. |
node-move | Scrittura | Moves an element, with everything it contains, to another place in the same page (or header, or footer). It answers where it was. |
node-source | Lettura | The markup of an element with everything it contains, as written in the code, and the JSON values (texts, translations…) of all of them: what node-insert takes, so a copy is one insert away (this is how an element is duplicated). |
json-prune | Distruttivo | Removes from the JSON the values of elements that are no longer in the code (their keys stay behind when an element is deleted or renamed in the code, and come back with the old text if the id is used again). Refuses when some element computes its id: a key that looks unused might be its. |
page-outline | Lettura | What is on a page, as a tree: for each element its id, kind, tag, text, the attributes that matter, what it says in each language (values), whether it is hidden, and where in the code it is. Header and footer are listed on their own (_shared/header, _shared/footer), and the shared components the page uses (a card…) are inside it, each element with its scope (_shared/product-card): that name is the page to use to change them. |
page-content | Lettura | Everything on a page that is translated (texts, alt texts, labels), in every language of the site, and which languages are missing for each. The default language is called "default" in the values. |
blocks-list | Lettura | The catalog of ready-made blocks the editor offers (sections, layouts, elements): each is JSX that node-insert takes by its id. |
langs-get | Lettura | The languages of the site: the default one and all the available ones. null while the site is not multilingual. |
langs-set | Scrittura | Sets the languages of the site. Texts already written in a language that is taken away stay in the JSON (and come back if it is added again). |
seo-get | Lettura | What search engines and social networks read: the site's data (address, name, title template, favicon, picture, extra sitemaps) and, for a page, its title and description in every language, picture, noindex and canonical. |
seo-suggest | Lettura | A title and a description for a page, taken from what it says: its first heading and its first paragraph, in the language asked (nothing for a language the page is not translated in). Only a proposal: nothing is written. |
seo-set | Scrittura | Sets what a page tells search engines and social networks. Title, description, pictures and the texts for social networks are written in one language (the default one unless lang says otherwise); an empty text takes the value away. |
seo-site-set | Scrittura | Sets what is the same for the whole site: its public address (needed for canonical links, hreflang and the sitemaps), name, how page titles are shown, the favicon, the default sharing picture, the Google Search Console verification code, and the sitemaps the site does not write itself. An empty text takes the value away. |
seo-sync | Scrittura | Writes robots.txt, sitemap-index.xml and sitemap-pages.xml in public/ from the pages, the languages and the SEO data. The dev server does it by itself whenever those change: this is for when it is not running. Needs the site's public address (seo-site-set). |
seo-snapshot-targets | Lettura | The pages a build prerenders as HTML for search engines and bots (each page in each language, without those marked noindex), with the address of each and the file it is written to. |
theme-get | Lettura | The theme of the site: its custom properties (--wr-*, colors, spacing…; a property has dark too when the site has a dark theme), Google fonts and custom fonts, and dark: whether the site has a dark theme (a .dark block). |
theme-set | Scrittura | Sets one item of the theme: a custom property { kind: "property", key: "--wr-…", value, dark? } (a --wr-color-\<name\> is also a class, bg-\<name\>: it is mapped for you; dark is its value in the dark theme, when the site has one), a Google font { kind: "google-font", key: "Inter", weights? } or a custom font { kind: "custom-font", key, faces }. It replaces the item if it is there. |
theme-remove | Distruttivo | Removes one item of the theme. |
theme-dark | Scrittura | Turns the dark theme of the site on (a .dark block in theme.css that starts as a copy of the light colors, to be changed with theme-set dark) or off (the block is taken away). A site has a dark theme only if it has that block. |
comment-add | Scrittura | Leaves a comment on an element of a page (or on the page, or on a shared component, when no element is given): a note for the people who work on the site, or for the agent that works on it. It is plain text, kept apart from the site (it is never published). |
comment-list | Lettura | The comments left on the site: the open ones by default (what people asked for). Each has where it is (page and element), who wrote it, what the element was, and orphan when the element is no longer in the code. Start here when you are asked to work on the site. |
comment-resolve | Scrittura | Marks a comment as dealt with (or open again): it stays in the list of resolved ones. Do it after acting on what it asked, so the next run does not do it twice. |
comment-delete | Distruttivo | Deletes a comment for good (resolve it to keep it as done). |
style-catalog | Lettura | Every style property an element can have (padding, text color, width…), with what each one means, its values (with their CSS meaning) and the breakpoints they can be set at. Read this to know what style-set accepts. |
style-get | Lettura | How an element is styled: for each property set on it, at which breakpoint and to what (in words, with its CSS meaning and the Tailwind class), plus the classes this does not manage (hover:, dark:, your own) and the shared styles it uses (sets). editable: false when the element's classes are written by code. With set instead of id: the same for a shared style. |
style-set | Scrittura | Changes how an element looks: one property at one breakpoint ({ property: "padding-x", breakpoint: "md", value: "6" }), or several at once (changes). A value of null takes it away at that breakpoint. Only the classes of that property and breakpoint change; everything else in the element's classes stays. Read style-catalog for the properties and values. |
style-copy | Scrittura | Copies the style classes of one screen (and one state) to another, or to all of them. to: a breakpoint (the classes of from are written there: the same properties are replaced, nothing else changes) or "all" (one clean list: the look the element has at from becomes what every screen has, and every breakpoint class is taken away; from "base" that only removes the overrides). hover:, dark: and the project's own classes are never touched. |
styleset-list | Lettura | The shared styles of the site: each a name (the class is s-name), the Tailwind classes it holds, what that comes to in words, and where it is used. An element uses one by having its class: change the style and every element that uses it changes. |
styleset-create | Scrittura | Makes a shared style. With id: from that element's classes, which move into the style and the element then uses it (apply: false leaves the element as it is); classes of the element that Tailwind cannot apply (its own, other shared styles) stay on it. Without id: from classes (a text of Tailwind classes), or empty. The name is lowercase words (card, hero-title); its class is s-<name>. |
styleset-apply | Scrittura | Puts a shared style on an element: everything the element had in its classes is replaced by the style's class (the element then looks like the style and changes with it). |
styleset-detach | Scrittura | Takes a shared style off an element, keeping how it looks: the style's classes are written on the element (where the element has classes of its own for the same thing, its own win). name: only that style (default: every one the element uses). |
styleset-detach-all | Scrittura | Takes a shared style off every element that uses it, keeping how each looks (the style's classes are written on each, under the classes the element has of its own). Afterwards the style can be deleted. Not undoable from the editor: it touches many files. |
styleset-rename | Scrittura | Gives a shared style another name: its rule in theme.css and the class in every element that uses it change together (each keeps its place among the element's other classes). The new name is lowercase words (hero-card); it cannot be one another style has. |
styleset-delete | Distruttivo | Deletes a shared style. Refused while any element uses it: it says where, and what to do (styleset-detach-all, or detach it from those elements). |
check
Checks the code: images without alt text, headings out of order, links and buttons with no name, repeated ids.
Nessun parametro.
inspect
Opens a page in a browser and reports what a visitor would hit: errors in the console, failed requests, the dev server's error screen, and what the checks find in the page.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
path | string | / | the page to open, e.g. /about |
viewport | mobile | tablet | desktop | desktop | the screen size |
screenshot
A picture of a page (a JPEG file), with the same report as inspect.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
path | string | / | the page to open, e.g. /about |
viewport | mobile | tablet | desktop | desktop | the screen size |
fullPage | boolean | false | the whole page, not only what fits the screen |
diagnose
Everything that is wrong right now, in one answer: the dev server's errors, the code's problems, and what the page shows.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
path | string | / | the page to open, e.g. /about |
viewport | mobile | tablet | desktop | desktop | the screen size |
file-list
Lists the files of the site (code and data) under a folder, with their size: src/ by default, or public/. Never node_modules, vendor, dist or hidden files.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
path | string | src | the folder: src or public, or a folder inside them |
file-read
Reads a text file of the site (up to 48 KB) and gives back its content.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
path (obbligatorio) | string | the file, relative to the project and inside src or public: e.g. src/components/Card.tsx |
file-write
Writes a text file of the site (up to 48 KB): the folders it needs are made, a file that is there is replaced (unless overwrite is false), and it is written whole or not at all. A .json file must be valid JSON. The dev server shows the change at once.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
path (obbligatorio) | string | the file, relative to the project and inside src or public: e.g. src/components/Card.tsx | |
content (obbligatorio) | string | the whole text of the file (a REST call carries up to 16 KB, an MCP message up to 64 KB) | |
overwrite | boolean | true | false: refuse (409, file-exists) if the file is already there |
file-delete
Deletes a file of the site. One file, never a folder; there is no undo.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
path (obbligatorio) | string | the file, relative to the project and inside src or public: e.g. src/components/Card.tsx |
dependency-list
Lists the packages the site depends on (package.json), with the version it asks for, the one that is installed, and whether it is installed (installed, missing or outdated).
Nessun parametro.
dependency-add
Adds a package to the site (npm install name@version) and installs it; with a package that is there already, changes the version it asks for. The version is from the registry (1.2.3, ^1.2.3, ~1.2.3, >=1.2.3, a tag such as latest). Several at once with packages (["[email protected]", "[email protected]"], one npm install): for packages that need each other's versions. If npm fails, package.json is as it was.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
name | string | the package, e.g. react-icons or @webround/commerce-react (or packages) | |
version | string | latest | 1.2.3, ^1.2.3, ~1.2.3, >=1.2.3, or a tag (latest) |
packages | array | several packages at once, each name@version, instead of name and version |
dependency-remove
Takes a package away from the site (npm uninstall name). The ones the site does not run without (@webround/core, @webround/editor, react, react-dom) are refused.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
name (obbligatorio) | string | the package, e.g. react-icons |
dependency-install
Installs what package.json asks for (npm install, from the lockfile): for a project whose package.json was changed by hand, or whose node_modules lacks something.
Nessun parametro.
kit-apply
Puts a kit on the site (shop: the shop's pages, components, texts and packages). Deterministic and all or nothing: if a file of the site is in the way, nothing is written and every conflict is told. A site that has the kit's packages already is left as it is. dryRun tells what it would do.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
kit (obbligatorio) | string | the kit, e.g. shop | |
dryRun | boolean | false | say what it would do, change nothing |
page-list
The pages of the site: name, component, and whether the shared header and footer are shown on each.
Nessun parametro.
page-create
Creates a page: its component, its (empty) JSON of values and its entry in the routes.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
pageName (obbligatorio) | string | the page name: it is the URL (letters, digits, - and _) | |
component (obbligatorio) | string | the name of its component, e.g. About (a file in src/pages/) | |
lazy | boolean | false | load the page only when it is visited |
page-delete
Deletes a page: its component, its JSON of values, its comments and its entry in the routes.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
pageName (obbligatorio) | string | the page to delete |
page-update
Changes a page: renames it or its component, loads it lazily or not, shows or hides the shared header and footer on it.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
pageName (obbligatorio) | string | the page | |
newPageName | string | a new name (its JSON of values moves with it) | |
newComponent | string | a new component name (its file moves with it) | |
lazy | boolean | load the page only when it is visited | |
header | boolean | show the shared header on this page | |
footer | boolean | show the shared footer on this page |
node-get
One element of a page: what kind it is, the values written in the code (src, href…) and the ones in the JSON (texts per language, hidden…).
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id (obbligatorio) | string | the element id (its data-wr-id) |
node-set
Sets one value of an element: where it is stored (the code, or the JSON) is decided by its kind's schema. A translated value (a text, an alt, the labels of a menu's entries) is written in the language asked for, and the other languages are kept; a list (items of a nav) is given whole, as a list of { label, href }. A text's content is HTML; plain text is fine.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id (obbligatorio) | string | the element id | |
key (obbligatorio) | string | the value: content, alt, src, href, hidden, ariaLabel… (what the element's kind has) | |
value (obbligatorio) | any | the new value; null takes a code value (src, href…) away | |
lang | string | the language of a translated value, or of the translated fields of the entries of a list (a menu's labels): a code of langs-get; the default language if not said |
node-insert
Adds markup to a page, next to an element or inside one (a section). Give the JSX itself, or the id of a block of the catalog (blocks-list). Ids that are taken are renumbered; the imports and the indentation are taken care of. The result has the final ids.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
anchor | object | where: { id: "<element id>" } or { root: true } (the page itself); what the editor sends | |
anchorId | string | where, as just the element id; without it (and without anchor) the page itself | |
mode | before | after | first-child | last-child | before, after, first-child or last-child of the anchor (default: after an element, last-child of the page) | |
block | string | the id of a block of the catalog (blocks-list) | |
jsx | string | markup to insert: one or more elements, written the way you would write them by hand | |
uniqueIds | boolean | true | renumber ids that are already taken (false refuses instead) |
jsonSeed | object | initial JSON values for the new elements: { "<id>": { … } } |
node-delete
Deletes an element with everything it contains, and the JSON values (texts, translations…) and the comments of all of them. The root of the header or footer cannot be deleted.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id (obbligatorio) | string | the element id | |
pruneImports | boolean | false | also remove the imports nothing uses any more |
node-move
Moves an element, with everything it contains, to another place in the same page (or header, or footer). It answers where it was.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id (obbligatorio) | string | the element to move | |
anchor | object | where: { id: "<element id>" } or { root: true } (the page itself); what the editor sends | |
anchorId | string | where, as just the element id; without it (and without anchor) the page itself | |
mode (obbligatorio) | before | after | first-child | last-child | before, after, first-child or last-child of the anchor |
node-source
The markup of an element with everything it contains, as written in the code, and the JSON values (texts, translations…) of all of them: what node-insert takes, so a copy is one insert away (this is how an element is duplicated).
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id (obbligatorio) | string | the element id |
json-prune
Removes from the JSON the values of elements that are no longer in the code (their keys stay behind when an element is deleted or renamed in the code, and come back with the old text if the id is used again). Refuses when some element computes its id: a key that looks unused might be its.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | only this page (or a shared component: _shared/header, _shared/footer, _shared/<name>); every page by default |
page-outline
What is on a page, as a tree: for each element its id, kind, tag, text, the attributes that matter, what it says in each language (values), whether it is hidden, and where in the code it is. Header and footer are listed on their own (_shared/header, _shared/footer), and the shared components the page uses (a card…) are inside it, each element with its scope (_shared/product-card): that name is the page to use to change them.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page (obbligatorio) | string | the page name (page-list shows them) |
page-content
Everything on a page that is translated (texts, alt texts, labels), in every language of the site, and which languages are missing for each. The default language is called "default" in the values.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page (obbligatorio) | string | the page name (page-list shows them) | |
lang | string | only this language (a code of langs-get) |
blocks-list
The catalog of ready-made blocks the editor offers (sections, layouts, elements): each is JSX that node-insert takes by its id.
Nessun parametro.
langs-get
The languages of the site: the default one and all the available ones. null while the site is not multilingual.
Nessun parametro.
langs-set
Sets the languages of the site. Texts already written in a language that is taken away stay in the JSON (and come back if it is added again).
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
default (obbligatorio) | string | the default language code (it is not in the URL), e.g. it | |
available (obbligatorio) | array | every language code of the site, the default included |
seo-get
What search engines and social networks read: the site's data (address, name, title template, favicon, picture, extra sitemaps) and, for a page, its title and description in every language, picture, noindex and canonical.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | a page; without it only the site's data |
seo-suggest
A title and a description for a page, taken from what it says: its first heading and its first paragraph, in the language asked (nothing for a language the page is not translated in). Only a proposal: nothing is written.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page (obbligatorio) | string | the page | |
lang | string | the language: default (the default one) or a language code of the site |
seo-set
Sets what a page tells search engines and social networks. Title, description, pictures and the texts for social networks are written in one language (the default one unless lang says otherwise); an empty text takes the value away.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page (obbligatorio) | string | the page | |
lang | string | the language of the texts and pictures (title, description, image, ogTitle, ogDescription, ogImage, meta, jsonLd): default (the default one) or a language code of the site | |
title | string | the title of the page (what the browser tab and search results show) | |
description | string | a sentence or two for search results (about 150 characters) | |
image | string | picture shown when the page is shared: a path in the site (/media/x.jpg) or a full address (written in lang: a language with none uses the default one's) | |
noindex | boolean | keep the page out of search engines and out of the sitemap | |
canonical | string | the page this one is a copy of (a path in the site or a full address) | |
robots | string | the robots directives in full, e.g. "noindex, follow" or "max-snippet:-1"; they replace what noindex says | |
ogTitle | string | the title social networks show, when it must not be the page's own (written in lang) | |
ogDescription | string | the description social networks show, when it must not be the page's own (written in lang) | |
ogImage | string | the picture social networks show, when it must not be the page's own (written in lang) | |
ogType | string | the Open Graph type: website (the default), article, product… | |
twitterCard | summary | summary_large_image | how the page looks when shared on X/Twitter | |
twitterSite | string | the account of the site on X/Twitter (@acme), for this page | |
twitterCreator | string | the account of the author on X/Twitter (@jane), for this page | |
meta | array | any other <meta> the page needs: a list of { name | property, content }, the whole list; content is written in lang | |
jsonLd | any | structured data (JSON-LD) of this page: a list of objects with a "@type" (or JSON text of one), written for lang; [] takes it away. It is added to the site's |
seo-site-set
Sets what is the same for the whole site: its public address (needed for canonical links, hreflang and the sitemaps), name, how page titles are shown, the favicon, the default sharing picture, the Google Search Console verification code, and the sitemaps the site does not write itself. An empty text takes the value away.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
siteUrl | string | the public address, no path: https://www.example.com | |
siteName | string | the name of the site (written in lang) | |
titleTemplate | string | how a title is shown, %s being the page's title: "%s | Acme" (written in lang) | |
favicon | string | the icon of the site (browser tab, search results): a path in the site (/favicon.png) or a full address | |
image | string | the sharing picture of pages that have none: a path in the site or a full address (written in lang) | |
searchConsole | string | the code that proves the site is yours to Google Search Console: the code, or the whole <meta name="google-site-verification"…> tag as Google shows it (only the code is kept); it is written in every page's head | |
extraSitemaps | array | sitemaps the index must point to besides the site's own, e.g. ["sitemap-products.xml"] (the shop writes it); a list, [] for none | |
twitterSite | string | the account of the site on X/Twitter (@acme), for every page | |
twitterCreator | string | the account of the author on X/Twitter (@jane), for every page | |
lang | string | the language of siteName, titleTemplate, image and jsonLd: default (the default one) or a language code of the site | |
jsonLd | any | structured data (JSON-LD) of every page — the organisation, the website: a list of objects with a "@type" (or JSON text of one), written for lang; [] takes it away |
seo-sync
Writes robots.txt, sitemap-index.xml and sitemap-pages.xml in public/ from the pages, the languages and the SEO data. The dev server does it by itself whenever those change: this is for when it is not running. Needs the site's public address (seo-site-set).
Nessun parametro.
seo-snapshot-targets
The pages a build prerenders as HTML for search engines and bots (each page in each language, without those marked noindex), with the address of each and the file it is written to.
Nessun parametro.
theme-get
The theme of the site: its custom properties (--wr-*, colors, spacing…; a property has dark too when the site has a dark theme), Google fonts and custom fonts, and dark: whether the site has a dark theme (a .dark block).
Nessun parametro.
theme-set
Sets one item of the theme: a custom property { kind: "property", key: "--wr-…", value, dark? } (a --wr-color-\<name\> is also a class, bg-\<name\>: it is mapped for you; dark is its value in the dark theme, when the site has one), a Google font { kind: "google-font", key: "Inter", weights? } or a custom font { kind: "custom-font", key, faces }. It replaces the item if it is there.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
item (obbligatorio) | object | the item: { kind, key, … } as theme-get returns them |
theme-remove
Removes one item of the theme.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
kind (obbligatorio) | property | google-font | custom-font | what it is | |
key (obbligatorio) | string | the property (--wr-…) or the font family |
theme-dark
Turns the dark theme of the site on (a .dark block in theme.css that starts as a copy of the light colors, to be changed with theme-set dark) or off (the block is taken away). A site has a dark theme only if it has that block.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
enabled (obbligatorio) | boolean | true: a dark theme; false: only the light one |
comment-add
Leaves a comment on an element of a page (or on the page, or on a shared component, when no element is given): a note for the people who work on the site, or for the agent that works on it. It is plain text, kept apart from the site (it is never published).
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name>) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id | string | the element the comment is about; without it, about the page (or shared component) itself | |
text (obbligatorio) | string | what to say (plain text, up to 2000 characters) | |
author | object | { name, kind }: kind is user (a person) or ai; an agent that does not say who it is, is ai |
comment-list
The comments left on the site: the open ones by default (what people asked for). Each has where it is (page and element), who wrote it, what the element was, and orphan when the element is no longer in the code. Start here when you are asked to work on the site.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | only this page (or a shared component: _shared/header, _shared/<name>…) | |
id | string | only this element (with page) | |
status | open | resolved | all | open | open (default), resolved or all |
comment-resolve
Marks a comment as dealt with (or open again): it stays in the list of resolved ones. Do it after acting on what it asked, so the next run does not do it twice.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
comment (obbligatorio) | string | the comment's id (from comment-list) | |
resolved | boolean | true | false opens it again |
comment-delete
Deletes a comment for good (resolve it to keep it as done).
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
comment (obbligatorio) | string | the comment's id (from comment-list) |
style-catalog
Every style property an element can have (padding, text color, width…), with what each one means, its values (with their CSS meaning) and the breakpoints they can be set at. Read this to know what style-set accepts.
Nessun parametro.
style-get
How an element is styled: for each property set on it, at which breakpoint and to what (in words, with its CSS meaning and the Tailwind class), plus the classes this does not manage (hover:, dark:, your own) and the shared styles it uses (sets). editable: false when the element's classes are written by code. With set instead of id: the same for a shared style.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id | string | the element id (its data-wr-id) | |
set | string | instead of id: the name of a shared style (see styleset-list), to change what every element that uses it looks like |
style-set
Changes how an element looks: one property at one breakpoint ({ property: "padding-x", breakpoint: "md", value: "6" }), or several at once (changes). A value of null takes it away at that breakpoint. Only the classes of that property and breakpoint change; everything else in the element's classes stays. Read style-catalog for the properties and values.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id | string | the element id (its data-wr-id) | |
set | string | instead of id: the name of a shared style (see styleset-list), to change what every element that uses it looks like | |
property | padding | padding-x | padding-y | padding-top | padding-right | padding-bottom | padding-left | margin | margin-x | margin-y | margin-top | margin-right | margin-bottom | margin-left | gap | gap-x | gap-y | width | height | max-width | font-size | font-weight | text-align | text-decoration | text-color | background-color | gradient-direction | gradient-from | gradient-via | gradient-to | border-color | border-width | border-width-x | border-width-y | border-width-top | border-width-right | border-width-bottom | border-width-left | border-radius | border-radius-tl | border-radius-tr | border-radius-bl | border-radius-br | shadow | opacity | scale | translate-y | transition | duration | ease | animation | display | flex-direction | align-items | justify-content | grid-columns | flex-wrap | what to change (see style-catalog) | |
breakpoint | base | mobile | sm | md | lg | xl | base | from which screen width up it holds: base (every screen), sm, md (tablet), lg (desktop), xl |
value | any | the value (4, accent, center… see style-catalog), or null to take the property away at that breakpoint. Spacing and sizes take any number, not only the listed ones (27 is px-27), and a width or height a fraction (3/7) | |
state | hover | focus | active | for a property that can change with one (see style-catalog, states): the state it is for: hover, focus or active (pressed). Without it, always | |
changes | array | instead of property, breakpoint and value: a list of { property, breakpoint, value, state? }, all made as one change | |
everywhere | boolean | false | make the change hold on every screen: it is made at the breakpoint named, and then what the element looks like there (for those properties only) is what all screens have, the overrides of the other screens taken away; a null value takes it away from every screen |
style-copy
Copies the style classes of one screen (and one state) to another, or to all of them. to: a breakpoint (the classes of from are written there: the same properties are replaced, nothing else changes) or "all" (one clean list: the look the element has at from becomes what every screen has, and every breakpoint class is taken away; from "base" that only removes the overrides). hover:, dark: and the project's own classes are never touched.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id | string | the element id (its data-wr-id) | |
set | string | instead of id: the name of a shared style (see styleset-list), to change what every element that uses it looks like | |
from (obbligatorio) | base | mobile | sm | md | lg | xl | the screen to copy from: base (every screen), mobile, sm, md (tablet), lg (desktop), xl | |
to (obbligatorio) | base | mobile | sm | md | lg | xl | all | the screen to copy to, or "all" for one clean list that every screen shares | |
state | hover | focus | active | copy the classes of that state (hover, focus, active) instead of the ones that hold always |
styleset-list
The shared styles of the site: each a name (the class is s-name), the Tailwind classes it holds, what that comes to in words, and where it is used. An element uses one by having its class: change the style and every element that uses it changes.
Nessun parametro.
styleset-create
Makes a shared style. With id: from that element's classes, which move into the style and the element then uses it (apply: false leaves the element as it is); classes of the element that Tailwind cannot apply (its own, other shared styles) stay on it. Without id: from classes (a text of Tailwind classes), or empty. The name is lowercase words (card, hero-title); its class is s-<name>.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id | string | the element id (its data-wr-id) | |
name (obbligatorio) | string | what the style is called: lowercase words and numbers joined by dashes (card, hero-title) | |
classes | string | without id: the Tailwind classes it holds (all must be ones Tailwind knows) | |
apply | boolean | true | with id: the element uses the new style (default), or keeps its classes as they are |
styleset-apply
Puts a shared style on an element: everything the element had in its classes is replaced by the style's class (the element then looks like the style and changes with it).
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id | string | the element id (its data-wr-id) | |
name (obbligatorio) | string | the shared style (see styleset-list) |
styleset-detach
Takes a shared style off an element, keeping how it looks: the style's classes are written on the element (where the element has classes of its own for the same thing, its own win). name: only that style (default: every one the element uses).
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
page | string | the page (its name, e.g. home) or a shared component (_shared/header, _shared/footer, _shared/<name> as declared in config/shared.json) | |
file | string | instead of page: the code file, relative to src/ (what the editor's own page sends) | |
id | string | the element id (its data-wr-id) | |
name | string | which shared style to take off (default: all the element uses) |
styleset-detach-all
Takes a shared style off every element that uses it, keeping how each looks (the style's classes are written on each, under the classes the element has of its own). Afterwards the style can be deleted. Not undoable from the editor: it touches many files.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
name (obbligatorio) | string | the shared style (see styleset-list) |
styleset-rename
Gives a shared style another name: its rule in theme.css and the class in every element that uses it change together (each keeps its place among the element's other classes). The new name is lowercase words (hero-card); it cannot be one another style has.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
name (obbligatorio) | string | the shared style (see styleset-list) | |
to (obbligatorio) | string | the new name |
styleset-delete
Deletes a shared style. Refused while any element uses it: it says where, and what to do (styleset-detach-all, or detach it from those elements).
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
name (obbligatorio) | string | the shared style (see styleset-list) |