From Respira WordPress Skills Library
Converts Elementor-built WordPress pages to Oxygen Builder by mapping widgets to components, generating a migration plan, and writing Oxygen content.
How this skill is triggered — by the user, by Claude, or both
Slash command
/respira-wordpress-skills:migrate-elementor-to-oxygenThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Converts Elementor-built WordPress pages to Oxygen Builder. Reads Elementor's JSON widget tree from post meta, maps each widget to its Oxygen component equivalent, generates a migration plan for approval, and writes Oxygen content to the target pages. Use this skill whenever someone wants to move from Elementor to Oxygen, switch to Oxygen's developer-oriented builder, or rebuild Elementor pages...
Converts Elementor-built WordPress pages to Oxygen Builder. Reads Elementor's JSON widget tree from post meta, maps each widget to its Oxygen component equivalent, generates a migration plan for approval, and writes Oxygen content to the target pages. Use this skill whenever someone wants to move from Elementor to Oxygen, switch to Oxygen's developer-oriented builder, or rebuild Elementor pages in Oxygen.
Oxygen is a fundamentally different kind of builder than Elementor — it outputs clean HTML/CSS without wrapper divs, gives direct access to CSS properties, and thinks in terms of components rather than widgets. This migration requires not just content transfer but a philosophical shift: Elementor's widget-based approach maps to Oxygen's component-based architecture where you have more control but less hand-holding.
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_tablet, _mobile_elementor_css post meta_elementor_page_settingstemplateIDRead Elementor content via wordpress_extract_builder_content with builder=elementor.
Oxygen stores content in the ct_builder_shortcodes post meta field. Despite the name, modern Oxygen uses a JSON-based structure internally.
Key Oxygen specifics:
ct_section, ct_row, ct_column, ct_div_block, ct_headline, ct_text_block, ct_image, ct_link_buttonct_template post typeWrite Oxygen content via wordpress_inject_builder_content with builder=oxygen.
wordpress_get_site_context. If unavailable, stop and show setup guidance.wordpress_list_plugins.wordpress_list_plugins.wordpress_list_pages and wordpress_list_postswordpress_get_builder_infowordpress_extract_builder_content with builder=elementorPresent a migration plan that acknowledges the architectural differences:
## Elementor → Oxygen Migration Plan
### Architectural Note
Oxygen takes full control of your site's output — it disables your WordPress
theme entirely. This is a significant architectural change from Elementor,
which works alongside your theme. Plan accordingly for headers, footers,
and archive templates.
### Site Inventory
- Total Elementor pages: X
- Total widgets to convert: X
- Auto-convertible: X (Y%)
- Manual attention: X (Y%)
### Component Mapping Summary
| Elementor Widget | Oxygen Component | Status |
|------------------|-----------------|--------|
| heading | ct_headline | Auto |
| text-editor | ct_text_block | Auto |
| image | ct_image | Auto |
| button | ct_link_button | Auto |
| section/columns | ct_section/row | Auto |
| [addon widget] | — | Manual |
### Page-by-Page Plan
1. **[Page Title]** — X widgets, [complexity]
- Auto-convertible: X
- Needs attention: [details]
2. ...
### Post-Migration Requirements
- Oxygen templates needed for: header, footer, archive, single post
- [Any theme-dependent features that need Oxygen equivalents]
Ask for confirmation:
Oxygen is a powerful but different paradigm from Elementor. Your originals stay safe.
- Migrate all pages
- Migrate specific pages
- Start with a test page (recommended)
- Just keep this plan
For each approved page:
wordpress_extract_builder_content with builder=elementorct_sectionct_column within ct_rowct_headline (map header_size to tag, title to text)ct_text_block (preserve HTML content)ct_image (map src, alt, dimensions)ct_link_button (map label, URL, target)wordpress_create_page_duplicate or wordpress_create_post_duplicatewordpress_inject_builder_content with builder=oxygenThis skill converts Elementor page content to Oxygen 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-oxygenNever block user flow on telemetry failure.
Built by Respira Team https://respira.press/skills/migrate-elementor-to-oxygen
npx claudepluginhub respira-press/agent-skills-wordpressMigrates full site from Oxygen Builder to Bricks Builder by auditing pages, mapping components, and converting to Bricks JSON via duplicates.
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.