From Respira WordPress Skills Library
Converts Elementor-built WordPress pages to Bricks Builder by reading Elementor's JSON widget tree, mapping widgets to Bricks equivalents, and generating a migration plan.
How this skill is triggered — by the user, by Claude, or both
Slash command
/respira-wordpress-skills:migrate-elementor-to-bricksThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Converts Elementor-built WordPress pages to Bricks Builder. Reads Elementor's JSON widget tree from post meta, maps each widget to its closest Bricks element equivalent, generates a migration plan for approval, and writes clean Bricks JSON to the target pages. Use this skill whenever someone wants to move from Elementor to Bricks, rebuild Elementor pages in Bricks, or switch page builders from ...
Converts Elementor-built WordPress pages to Bricks Builder. Reads Elementor's JSON widget tree from post meta, maps each widget to its closest Bricks element equivalent, generates a migration plan for approval, and writes clean Bricks JSON to the target pages. Use this skill whenever someone wants to move from Elementor to Bricks, rebuild Elementor pages in Bricks, or switch page builders from Elementor to Bricks.
Elementor and Bricks are both visual page builders, but they store content in fundamentally different formats — Elementor uses a nested JSON widget tree in _elementor_data, while Bricks uses a flat-ish JSON array in _bricks_page_content_2. This skill bridges that gap by reading every Elementor widget, understanding its purpose, and recreating it as the appropriate Bricks element.
Handles:
Preserves:
Elementor stores page content in the _elementor_data post meta field as a JSON string. The structure is a nested tree:
Document
└─ Section (type: "section")
├─ settings: { structure, layout, content_width, ... }
└─ elements: [
Column (type: "column")
├─ settings: { _column_size, ... }
└─ elements: [
Widget (type: "widget", widgetType: "heading")
└─ settings: { title, size, header_size, ... }
]
]
Key Elementor specifics:
widgetType field (e.g., heading, text-editor, image, button)margin, margin_tablet, margin_mobile_elementor_css post meta — not needed for migration but useful for verification_elementor_page_settings (page layout, hide title, etc.)templateID — must be resolved before mappingRead Elementor content via wordpress_extract_builder_content with builder=elementor.
Bricks stores content in _bricks_page_content_2 as a JSON array. Each element is a flat object with parent references:
[
{ "id": "abc123", "name": "section", "parent": 0, "settings": {...} },
{ "id": "def456", "name": "container", "parent": "abc123", "settings": {...} },
{ "id": "ghi789", "name": "heading", "parent": "def456", "settings": { "tag": "h2", "text": "..." } }
]
Key Bricks specifics:
name (not widgetType): section, container, heading, text-basic, image, button, video, iconparent field referencing parent idtag not header_size, text not title)_breakpoints key within settingsWrite Bricks content via wordpress_inject_builder_content with builder=bricks.
wordpress_get_site_context. If unavailable, stop and show setup guidance.wordpress_list_plugins.wordpress_get_site_context.wordpress_list_pages and wordpress_list_postswordpress_get_builder_infowordpress_extract_builder_content with builder=elementorPresent a clear migration plan:
## Elementor → Bricks Migration Plan
### Site Inventory
- Total Elementor pages: X
- Total widgets to convert: X
- Auto-convertible widgets: X (Y%)
- Manual attention needed: X (Y%)
### Widget Mapping Summary
| Elementor Widget | Bricks Element | Status |
|-----------------|----------------|--------|
| heading | heading | Auto |
| text-editor | text-basic | Auto |
| image | image | Auto |
| [addon widget] | — | Manual |
### Page-by-Page Plan
1. **[Page Title]** — X widgets, [simple/moderate/complex]
- Auto-convertible: X widgets
- Needs attention: [list any flagged widgets]
2. ...
### Flagged Items (Require Manual Work)
- [List of third-party widgets, dynamic tags, etc.]
Ask for confirmation:
Ready to proceed? I'll create Bricks duplicates of each page — your original Elementor pages stay untouched.
- Migrate all pages
- Migrate specific pages (pick from list)
- Start with a test page first
- Just keep this plan as reference
For each approved page:
wordpress_extract_builder_content with builder=elementorsectioncontainer (assign parent)_tablet, _mobile) to Bricks breakpoint format<!-- MIGRATION NOTE: ... --> commentsid, name, parent, settingswordpress_create_page_duplicate or wordpress_create_post_duplicatewordpress_inject_builder_content with builder=bricksThis skill converts Elementor page content to Bricks Builder format and creates draft duplicates for review.
It cannot:
It can:
Core WordPress tools
wordpress_get_site_contextwordpress_list_pluginswordpress_list_pageswordpress_list_postswordpress_read_pagewordpress_read_postwordpress_get_builder_infowordpress_extract_builder_contentwordpress_inject_builder_contentwordpress_find_builder_targetswordpress_create_page_duplicatewordpress_create_post_duplicateAfter run completion, send fire-and-forget usage tracking to:
POST https://www.respira.press/api/skills/track-usageInclude:
skill_slug = migrate-elementor-to-bricksNever block user flow on telemetry failure.
Built by Respira Team https://respira.press/skills/migrate-elementor-to-bricks
npx claudepluginhub respira-press/agent-skills-wordpressConverts WPBakery Page Builder pages to Bricks Builder. Parses shortcodes, maps elements, generates migration plan, and writes Bricks JSON. Use for migrating from WPBakery to Bricks.
Edit Elementor pages on WordPress sites: WP-CLI for text/image updates, browser automation for styling, layouts, sections, and templates.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.