agentCLAWHUBUnverified

SiteAgent Elementor Studio

Helps with WordPress + Elementor work via the elementor-mcp MCP server — building new pages, editing existing ones, inspecting site state, or exploring what's possible. Auto-detects Elementor Pro (native Form, Theme Builder, Loop Grid, Popups, Dynamic Tags, Sticky/Motion vs free-tier workarounds) AND the page engine (classic vs Elementor 4 atomic/V4 — atomic uses add-flexbox/add-atomic-* tools since classic writes don't persist on a V4 page). Detects ACF + Crocoblock/JetEngine for dynamic-data binding (Tier-0; bind ACF via Pro dynamic tags, place Jet widgets via add-widget with runtime-verified types). On atomic (V4) sites, authors the Elementor 4 design system — Global Classes, Variables (design tokens), and per-element Interactions — and recovers from the fork's schema-in-error and governance responses. Asks what the user wants before acting. Use when the user references the Elementor MCP, invokes `/siteagent-elementor-studio`, or runs `mcp__elementor__elementor-mcp-*` tools. Also covers initial install of the MCP Adapter + elementor-mcp plugins, app-password auth wiring, schema-loading discipline, and the widget-vs-HTML decision tree. SKIP for Bricks, Divi, Beaver Builder, or non-Elementor WordPress builds.

OpenClaw

Rank

62

Safety

84

Downloads

1.1k

Updated

Oct 11, 2026

Version

1.7.1

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 11, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 11, 2026
Adoption signal
1.1K downloadsadoption · observed Oct 11, 2026
Latest release
1.7.1release · observed Sep 14, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17b8qfjfq0g8kveh2g8v1179h83ejwb:siteagent-elementor-studio
  1. Install using `clawhub skill install s17b8qfjfq0g8kveh2g8v1179h83ejwb:siteagent-elementor-studio` in an isolated environment before connecting it to live workloads.
  2. No published capability contract is available yet, so validate auth and request/response behavior manually.
  3. Review the upstream CLAWHUB listing at https://clawhub.ai/benkalsky/siteagent-elementor-studio before using production credentials.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-benkalsky-siteagent-elementor-studio/snapshot"

Documentation

CLAWHUB

156,277 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: siteagent-elementor-studio
version: 1.7.1
license: MIT
description: Helps with WordPress + Elementor work via the elementor-mcp MCP server — building new pages, editing existing ones, inspecting site state, or exploring what's possible. Auto-detects Elementor Pro (native Form, Theme Builder, Loop Grid, Popups, Dynamic Tags, Sticky/Motion vs free-tier workarounds) AND the page engine (classic vs Elementor 4 atomic/V4 — atomic uses add-flexbox/add-atomic-* tools since classic writes don't persist on a V4 page). Detects ACF + Crocoblock/JetEngine for dynamic-data binding (Tier-0; bind ACF via Pro dynamic tags, place Jet widgets via add-widget with runtime-verified types). On atomic (V4) sites, authors the Elementor 4 design system — Global Classes, Variables (design tokens), and per-element Interactions — and recovers from the fork's schema-in-error and governance responses. Asks what the user wants before acting. Use when the user references the Elementor MCP, invokes `/siteagent-elementor-studio`, or runs `mcp__elementor__elementor-mcp-*` tools. Also covers initial install of the MCP Adapter + elementor-mcp plugins, app-password auth wiring, schema-loading discipline, and the widget-vs-HTML decision tree. SKIP for Bricks, Divi, Beaver Builder, or non-Elementor WordPress builds.
permissions:
  shell: "Runs the bundled setup script (files/setup-elementor-mcp.sh) — only on explicit user confirmation. It shells out to curl/unzip/zip/python3 and, for Local sites, drives Local by Flywheel's bundled WP-CLI (plugin install/activate) against the running site's PHP + MySQL socket."
  network:
    - "GitHub release download over HTTPS from the trusted Digitizers/elementor-mcp repo (api.github.com + release asset host) — the elementor-mcp plugin zip. By default the release this kit pins (EMCP_DEFAULT_VERSION in the setup script), checked before it is unpacked or installed against the sha256 recorded beside the pin — out of band from the download. EMCP_PIN_VERSION=<tag> or =latest selects another release, checked against the digest that release publishes (integrity, not provenance) or EMCP_EXPECTED_SHA256. Nothing is installed unverified"
    - "The target WordPress site's REST API (/wp-json/ — auth check, plugin list/install, MCP route verification). Plaintext http:// is refused for a non-local host unless that exact host is named in WP_ALLOW_HTTP, because the run sends a reusable application password on every request"
  filesystem:
    - "Writes .mcp.json in the current working directory, created mode 600 before the credential is written (it embeds a reusable Basic-Auth WordPress credential), and appends .mcp.json to .gitignore there"
    - "Reads Local by Flywheel site paths + bundled WP-CLI/PHP binaries; creates a temp working dir for the plugin zip"
  env:
    - "WP_URL / WP_USERNAME / WP_APP_PASSWORD (when used to supply the target site + Application Password auth)"
    - "EMCP_PIN_VERSION (optional — a release tag, or latest, instead of the re

_meta.json

{
  "ownerId": "kn7afv05r120atbc75whrv1zkx825tt5",
  "slug": "siteagent-elementor-studio",
  "version": "1.7.1",
  "publishedAt": 1789427139989
}

references/atomic-v4.md

# Building on Elementor 4 (atomic / V4) — reference

## Building on Elementor 4 (atomic / V4)

Apply this section **only when you detected the atomic engine** (atomic tools
present). On a classic-engine site, ignore it and use the classic widget tools
everywhere. **Never mix:** classic `add-heading`/`add-container` writes do not
persist on an atomic page, and atomic writes don't belong on a classic page.

### Atomic tool family — use instead of the classic ones

| Need | Classic (don't use on V4) | **Atomic (V4)** |
|---|---|---|
| Flex container | `add-container` | `add-flexbox` *(direction/justify/align/gap/wrap/padding/background_color)* |
| Block container | `add-container` | `add-div-block` |
| Heading | `add-heading` | `add-atomic-heading` |
| Body text | `add-text-editor` | `add-atomic-paragraph` |
| Button | `add-button` | `add-atomic-button` |
| Image | `add-image` | `add-atomic-image` |
| SVG / video / divider | `add-icon` / `add-html` | `add-atomic-svg` / `add-atomic-youtube` / `add-atomic-video` / `add-atomic-divider` |
| Anything else | `add-widget` | `add-atomic-widget` *(any atomic type; pass raw `$$type` settings — correct on every version, see note)* / `update-atomic-widget` |

### The atomic data model (what's different)

- **Typed props (`$$type`).** Atomic settings are typed values, not flat strings.
  For the **dedicated** helper tools (`add-atomic-heading`, `add-atomic-paragraph`,
  `add-atomic-button`, `add-flexbox`, …) the MCP wraps them for you — **pass simple
  flat values** (e.g. `title: "Hello"`, a hex `color`, a `{size,unit}` dimension) and
  it stores them in the `$$type` format Elementor's atomic engine expects.
  **For the universal `add-atomic-widget` / `update-atomic-widget`, always pass raw
  `$$type` values** (fetch the shape with `get-widget-schema`). That is correct on
  every plugin version: since 1.27.0 the save path coerces flat values through
  `Atomic_Props::coerce_tree()`, and already-typed props pass through it untouched —
  whereas on older builds those two tools wrote settings verbatim and a flat value
  was silently saved as empty. Typed values work either way, and the version is not
  always knowable mid-session, so don't make the write depend on it.

  **A direct `_elementor_data` patch has no wrapper on any version.** It bypasses the
  plugin entirely, so every prop must be raw `$$type` there too.
- **Styles live in a separate `styles` map**, not inline on the element. Layout
  props on `add-flexbox` (direction/justify/align/gap) are written as local styles
  automatically — you don't hand-build the styles map.

  **Since plugin 1.28.1, `update-atomic-widget` takes flat style params too**
  (`padding`, `width`, `border_*`, `css_position`, `shadow_*`, typography, …) and
  merges them into the element's base style variant, preserving props it wasn't
  asked to change. Before that it wrote only `settings`, so a padding sent there
  saved, reported success and rendered nothing — which is why older no

references/brand-kit.md

# Brand kit — token vocabulary & intake

The studio's brand tokens. Every client site sets these once; every build
references them **by name, never raw hex/font**. Tokens map to **named Elementor
custom globals** (the `update-global-colors` / `update-global-typography` tools
write `custom_colors` / `custom_typography`, merged by `_id`).

## Color tokens (8 named custom globals)

| token `_id` | title | role |
|---|---|---|
| `brand` | Brand | primary brand color — buttons, links, emphasis |
| `accent` | Accent | secondary highlight |
| `heading` | Heading | heading text color |
| `text` | Text | body text color |
| `bg` | Background | page background |
| `surface` | Surface | card / section panel background |
| `muted` | Muted | secondary / subtle text, captions |
| `border` | Border | hairlines, dividers, card borders |

If a client supplies fewer than 8, derive and state it: `surface` = a light tint of
`bg`; `muted` = `text` at ~60% contrast; `border` = `text` at ~12% / a light grey.

## Typography tokens (2 named custom globals)

| token `_id` | title | role |
|---|---|---|
| `heading-font` | Heading Font | headings |
| `body-font` | Body Font | body / UI |

## Type scale (applied per-widget by recipes — not a global object)

| step | size (px, desktop) | typical use |
|---|---|---|
| h1 | 48 | hero title |
| h2 | 36 | section title |
| h3 | 28 | card title |
| h4 | 22 | sub-heading |
| body-lg | 18 | lead paragraph |
| body | 16 | default text |
| small | 14 | captions, labels |

Defaults: heading weight 700, heading line-height 1.15; body weight 400, body
line-height 1.6. Scale down ~15–20% on mobile.

## Logo

Record the logo media id / URL in the intake record. Header recipes use the Site
Logo widget (Pro/UAE) or a Heading fallback.

## Intake template (fill one per client)

```json
{
  "client": "Acme",
  "colors": {
    "brand": "#1A56DB",
    "accent": "#F59E0B",
    "heading": "#0F172A",
    "text": "#334155",
    "bg": "#FFFFFF",
    "surface": "#F8FAFC",
    "muted": "#64748B",
    "border": "#E2E8F0"
  },
  "fonts": { "heading-font": "Rubik", "body-font": "Inter" },
  "logo": "https://acme.example/logo.svg"
}
```

## Applying it (MCP tool shapes)

`update-global-colors` — one entry per color token:

```json
{ "colors": [
  { "_id": "brand",   "title": "Brand",      "color": "#1A56DB" },
  { "_id": "accent",  "title": "Accent",     "color": "#F59E0B" },
  { "_id": "heading", "title": "Heading",    "color": "#0F172A" },
  { "_id": "text",    "title": "Text",       "color": "#334155" },
  { "_id": "bg",      "title": "Background",  "color": "#FFFFFF" },
  { "_id": "surface", "title": "Surface",    "color": "#F8FAFC" },
  { "_id": "muted",   "title": "Muted",      "color": "#64748B" },
  { "_id": "border",  "title": "Border",     "color": "#E2E8F0" }
] }
```

`update-global-typography` — one entry per font token:

```json
{ "typography": [
  { "_id": "heading-font", "title": "Heading Font",
    "typography_font_family": "Rubik",
    "ty

references/design-system-crud.md

# Elementor 4 design system CRUD — Global Classes, Variables, Interactions

Apply this only on an **atomic (V4) site** (atomic tools present) with the matching
Elementor experiments on. These tools author the *shared design system* — the same
Class Manager / Variables / Interactions an editor user would build by hand — so an
agent can create reusable styling instead of re-styling every element inline.

All three families register **conditionally**. If the tools below aren't in your
`mcp__elementor__elementor-mcp-*` list, the site's engine/experiments don't support
them — fall back to inline atomic local styles (see `atomic-v4.md`).

> **Permissions.** Every *write* here needs `manage_options` (mutating the shared
> design system / kit is site-wide, not per-post). Variable/interaction *reads*
> (`list-variables`, `get-variable`, `list-interactions`) need `edit_posts`;
> interaction tools additionally require `edit_post` on the target page. If a call
> returns a `forbidden` error, the connected app-password user lacks the cap.

---

## 1. Global Classes (reusable style bundles) — Elementor 4 Class Manager

A Global Class is a named, reusable set of styles (a `g-<7hex>` id) you author once and
apply to many atomic elements — the design-system equivalent of a CSS utility class.
Companion read tool: `list-global-classes` (resolves opaque `g-` ids → names + CSS).

| Tool | Does | Key params |
|---|---|---|
| `create-global-class` | Author a new class | `label` (e.g. `"card-base"`), `styles` (CSS-prop→value map), optional `variants` |
| `update-global-class` | Edit in place, **keeps the `g-` id** so bindings survive | `class_id`, any of `label` / `styles` / `variants` |
| `delete-global-class` | Remove by id | `class_id` |
| `apply-global-class` | Bind an existing class to one element | `class_id`, `post_id`, `element_id` |

- **Ergonomic styles.** `styles` is a plain map like `{"color":"#111","padding":24,"font-size":"1.25rem"}`.
  The tool wraps values into Elementor's atomic `$$type` props automatically. Colors
  (`color`, `border-color`, …), sizes (`padding`, `margin`, `width`, `font-size`, …),
  and unitless numbers (`z-index`, `flex-grow`, …) are typed correctly; anything else
  is stored as a string prop.
- **`styles` replaces only the base/desktop variant** on `update-global-class` — other
  variants are kept. `variants` replaces matching breakpoint/state variants (see
  Responsive below). `label` renames without touching styles.
- **`apply-global-class` is idempotent** — re-applying an already-present class is a
  no-op. It appends the `g-` id to the element's `settings.classes`. A **non-atomic**
  element (no `classes` control) is rejected with error code `not_atomic`, and the
  error embeds the element's compact settings schema so you can see what it *is*.
- **Delete does not cascade.** Elementor ignores dangling `g-` references left on
  elements — those elements simply lose that styling, the page isn't rewritten.
- **Cap: 100 classes.** `cr
Github ReposUpdated 2d agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/benkalsky/skills/siteagent-elementor-studio",
      "sourceUrl": "https://clawhub.ai/benkalsky/skills/siteagent-elementor-studio",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T11:08:17.193Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-benkalsky-siteagent-elementor-studio/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-benkalsky-siteagent-elementor-studio/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-11T11:08:17.193Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.1K downloads",
      "href": "https://clawhub.ai/benkalsky/siteagent-elementor-studio",
      "sourceUrl": "https://clawhub.ai/benkalsky/siteagent-elementor-studio",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T11:08:17.193Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.7.1",
      "href": "https://clawhub.ai/benkalsky/siteagent-elementor-studio",
      "sourceUrl": "https://clawhub.ai/benkalsky/siteagent-elementor-studio",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-09-14T23:05:39.989Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-benkalsky-siteagent-elementor-studio/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-benkalsky-siteagent-elementor-studio/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.7.1",
      "description": "siteagent-elementor-studio 1.7.1 - Updated installer to pin and describe the new Digitizers/elementor-mcp fork v1.34.1 (was v1.24.0). - Noted in documentation that the fork now includes a built-in update checker (since v1.28.0), surfacing new GitHub releases in the WordPress Updates screen. - Clarified not to use the fork together with the Premium plugin due to naming conflicts. - Removed redundant documentation file (skill-card.md). - Minor documentation and setup instruction improvements.",
      "href": "https://clawhub.ai/benkalsky/siteagent-elementor-studio",
      "sourceUrl": "https://clawhub.ai/benkalsky/siteagent-elementor-studio",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-09-14T23:05:39.989Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 11, 2026.

Sponsored

Ads related to SiteAgent Elementor Studio and adjacent AI workflows.