Migrates Elementor-built WordPress pages to Oxygen Builder by parsing JSON widget trees from post meta, mapping widgets to components, generating a migration plan for approval, and updating target pages.
npx claudepluginhub respira-press/agent-skills-wordpressThis skill uses the workspace's default tool permissions.
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...
Migrates WordPress sites from Oxygen Builder to Bricks Builder by auditing pages, mapping components to equivalents, building approval plans, and converting via duplicates to preserve live site.
Edit Elementor pages on WordPress sites: WP-CLI for text/image updates, browser automation for styling, layouts, sections, and templates.
Converts React/HTML/Next.js codebases into pixel-perfect WordPress themes with preserved SEO, dynamic CMS features, and strict UI audits. Use for high-fidelity frontend-to-WP migrations.
Share bugs, ideas, or general feedback.
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