Migrate Oxygen to Bricks
Version: 2.1.0
Updated: 2026-08-04
Freshly updated: v2.1.0 adds design-token awareness: conversion writes now register the colors and typography they carry as named design tokens in Bricks' own global styles, and converted pages reference those tokens instead of carrying value copies. Reuse registered tokens instead of re-inlining raw values, and report the registration in the migration summary.
Full-site migration from Oxygen Builder to Bricks Builder. Audits every Oxygen-built page, maps components to their Bricks equivalents, builds a migration plan for approval, and executes page-by-page conversion into Bricks' JSON format — all through duplicates so your live site stays untouched. Use this skill whenever someone mentions migrating from Oxygen to Bricks, switching from Oxygen to Bricks, converting Oxygen pages to Bricks, or replacing Oxygen with Bricks Builder.
What This Skill Does
Oxygen and Bricks are both modern, developer-oriented builders with similar mental models — containers, sections, flexbox layouts, dynamic data. This makes Oxygen-to-Bricks one of the most straightforward builder migrations. The structural concepts translate almost 1:1, but the underlying data formats are completely different (Oxygen's JSON shortcodes in ct_builder_shortcodes vs. Bricks' JSON array in _bricks_page_content_2), so content must be extracted, mapped, and re-encoded.
This skill reads every Oxygen page, extracts the builder content, translates each component to its Bricks equivalent, and writes the result to duplicate pages in Bricks format — giving you a complete parallel version of your site to review before going live.
Handles:
- Section → Bricks Section mapping
- Container/Div → Bricks Container mapping
- Heading, Text, Image, Button, Video, Icon components
- Flexbox layout settings (direction, alignment, gap, wrap)
- Column/grid structures
- Custom CSS classes and inline styles
- Link elements and CTAs
- Code blocks and custom HTML
- Repeater/dynamic data placeholders (flagged for manual review)
What This Skill Does NOT Do
- Migrate Oxygen's Global Styles or Style Sheets — Bricks uses its own theme style system
- Convert Oxygen conditions (visibility rules) — these must be rebuilt in Bricks
- Migrate Oxygen's custom PHP/code block logic — flagged for manual porting
- Recreate Oxygen templates (headers, footers, archives) — Bricks templates are structurally different and must be rebuilt
- Transfer WooCommerce builder templates — product/shop templates need separate handling
- Guarantee pixel-perfect visual parity — some spacing/sizing will need fine-tuning in Bricks
Requirements
- Respira for WordPress plugin installed and connected
- MCP connection active (desktop or WebMCP)
- Oxygen Builder active on the source site
- Bricks Builder installed on the target site (can be the same site)
- Read access to scan Oxygen content
- Write access to create duplicates with Bricks content
Trigger Phrase
- "migrate oxygen to bricks"
Alternative Triggers
- "convert oxygen to bricks"
- "switch from oxygen to bricks"
- "move oxygen pages to bricks"
- "replace oxygen with bricks"
- "oxygen to bricks migration"
Builder Technical Context
Source: Oxygen Builder
- Content stored in post_meta key
ct_builder_shortcodes
- JSON-based structure encoding nested components
- Read via
respira_extract_builder_content with builder=oxygen
- Components:
ct_section, ct_div, ct_headline, ct_text_block, ct_image, ct_link_button, etc.
Target: Bricks Builder
- Content stored in post_meta key
_bricks_page_content_2 as a JSON array
- Each element is an object with
id, name, parent, settings, children
- Write via
respira_inject_builder_content with builder=bricks
- Elements:
section, container, heading, text, image, button, etc.
Execution Workflow
Phase 1: Pre-Migration Audit
- Verify Respira + MCP connection via
respira_get_site_context. If unavailable, stop and show setup guidance.
- Detect Oxygen presence via
respira_get_builder_info or respira_list_plugins.
- Inventory and scope the source pages first:
respira_find_builder_targets with builder=oxygen — a fast, ranked list of every Oxygen-managed page/post before you touch anything
- Fall back to
respira_list_pages / respira_list_posts + respira_get_builder_info to confirm builder per item where needed
- For each Oxygen page, extract content:
respira_extract_builder_content with builder=oxygen
- Catalog: component types used, nesting depth, custom CSS, dynamic data usage, code blocks
- Produce an Audit Report:
- Total pages/posts using Oxygen
- Component type frequency (how many sections, headings, images, etc.)
- Complexity flags (custom PHP, conditions, dynamic data, WooCommerce templates)
- Estimated migration difficulty per page (simple / moderate / complex)
Phase 2: Migration Plan
Present a structured migration plan:
## Oxygen → Bricks Migration Plan
### Site Overview
- Total Oxygen pages: X
- Simple pages (direct mapping): X
- Moderate pages (some manual review needed): X
- Complex pages (significant manual work): X
### Component Mapping
| Oxygen Component | Bricks Equivalent | Notes |
|---|---|---|
| ct_section | section | Direct mapping |
| ct_div | container | Direct mapping |
| ct_headline | heading | Direct mapping |
| ... | ... | ... |
### Migration Order
1. [Page Title] — Simple — estimated 2 min
2. [Page Title] — Moderate — estimated 5 min
...
### Items Requiring Manual Attention
- [Page X] — Custom PHP code block (line 45)
- [Page Y] — Oxygen condition logic
- Global Styles — must be recreated in Bricks Theme Styles
Then ask:
Here's the migration plan. Would you like me to:
- Migrate all pages (creates duplicates for review)
- Migrate only simple pages first
- Migrate specific pages you choose
- Just keep this as a reference — no changes
Wait for explicit confirmation before proceeding.
Phase 3: Page-by-Page Migration
For each approved page:
- Extract Oxygen content via
respira_extract_builder_content with builder=oxygen
- Map each Oxygen component to its Bricks equivalent:
- Translate component types (ct_section → section, ct_div → container, etc.)
- Convert layout properties (flexbox settings, spacing, sizing)
- Map CSS classes and inline styles
- Preserve text content, image URLs, link targets
- Flag any unmappable components (custom PHP, conditions) with inline comments
- Build the Bricks JSON array structure
- Create a duplicate via
respira_create_page_duplicate or respira_create_post_duplicate
- Before writing, take a snapshot with
respira_get_snapshot so the duplicate's pre-write state can be restored if anything goes wrong
- Inject Bricks content via
respira_inject_builder_content with builder=bricks
- Surgical fix pass — if the injected page has validation issues (collapsed flex/column widths, broken parent refs, a misconverted component), do not re-inject the whole page. Locate the specific element with
respira_find_element and correct it with respira_update_element. For repeated fixes across many elements or several pages, batch them with respira_batch_update
- Log the migration result (success, warnings, manual review items)
Phase 4: Post-Migration Verification
- Summarize all migrated pages with status:
- Design tokens registered in Bricks' global styles (token names and counts)
- Clean migrations (no issues)
- Migrations with warnings (flagged items needing review)
- Failed migrations (if any)
- List all manual review items:
- Custom PHP code blocks that need porting
- Dynamic data references that need reconnecting
- Oxygen conditions that need rebuilding in Bricks
- Provide review instructions:
- Where to find duplicates in WordPress admin
- How to preview Bricks pages
- How to delete duplicates if not wanted
Design Tokens
Conversion writes now register the colors and typography they carry as named design tokens in Bricks' own global styles, and the converted pages reference those tokens instead of carrying value copies. When fixing or extending a migrated page, reuse the registered tokens (respira_list_design_tokens shows them) rather than re-inlining raw hex values or font stacks. And say so when you finish: the migration summary should name the tokens that were registered and note that migrated pages reference them.
Safety Model
- Read-only analysis first — full Oxygen content audit before any changes
- Explicit user confirmation before creating any duplicates
- Duplicate-first only — never modifies live/published Oxygen content
- Never auto-publishes duplicates
- Snapshot before every write —
respira_get_snapshot captures the duplicate's pre-write state, and respira_restore_snapshot rolls it back if an injection goes wrong
- Two explicit rollback paths: restore the snapshot to revert a bad write, or delete the draft duplicates entirely to undo the migration
- Preserves all original Oxygen content untouched
Honest Disclaimer
This skill converts Oxygen page structures to Bricks format and creates duplicates for review.
It cannot:
- Guarantee pixel-perfect visual parity between builders
- Migrate Oxygen Global Styles or conditions automatically
- Convert custom PHP code blocks to Bricks equivalents
- Handle WooCommerce template migrations
- Replace a thorough manual QA pass on every page
It can:
- Map 80-90% of standard Oxygen components to Bricks equivalents
- Preserve content, images, links, and layout structure
- Save days of manual rebuild work
- Identify exactly what needs manual attention
Tooling
Core WordPress tools
respira_get_site_context
respira_get_builder_info
respira_list_pages
respira_list_posts
respira_list_plugins
respira_find_builder_targets
respira_extract_builder_content
respira_inject_builder_content
respira_create_page_duplicate
respira_create_post_duplicate
respira_read_page
respira_read_post
Safety and surgical-fix tools
respira_get_snapshot
respira_restore_snapshot
respira_find_element
respira_update_element
respira_batch_update
Telemetry
After run completion, send fire-and-forget usage tracking to:
POST https://www.respira.press/api/skills/track-usage
Include:
skill_slug = migrate-oxygen-to-bricks
- site/version context
- duration and success
- pages audited, pages migrated, warnings count
- tools used
Never block user flow on telemetry failure.
Related Skills
- WordPress Site DNA (understand site structure before migrating)
- Technical Debt Audit (clean up before or after migration)
- SEO & AEO Amplifier (verify SEO preservation post-migration)
Built by Respira Team
https://respira.press/skills/migrate-oxygen-to-bricks
1---2name: migrate-oxygen-to-bricks3description: "Use when the user says 'migrate oxygen to bricks', 'convert oxygen to bricks', or 'replace oxygen with bricks'. Maps Oxygen Builder component trees to Bricks JSON elements and creates draft duplicates for review."4license: MIT5metadata:6 author: Respira for WordPress7 author_url: https://respira.press8 version: 2.1.09 mcp-server: respira-wordpress10 category: migration11---1213# Migrate Oxygen to Bricks1415**Version:** 2.1.016**Updated:** 2026-08-0417**Freshly updated:** v2.1.0 adds design-token awareness: conversion writes now register the colors and typography they carry as named design tokens in Bricks' own global styles, and converted pages reference those tokens instead of carrying value copies. Reuse registered tokens instead of re-inlining raw values, and report the registration in the migration summary.1819Full-site migration from Oxygen Builder to Bricks Builder. Audits every Oxygen-built page, maps components to their Bricks equivalents, builds a migration plan for approval, and executes page-by-page conversion into Bricks' JSON format — all through duplicates so your live site stays untouched. Use this skill whenever someone mentions migrating from Oxygen to Bricks, switching from Oxygen to Bricks, converting Oxygen pages to Bricks, or replacing Oxygen with Bricks Builder.2021## What This Skill Does2223Oxygen and Bricks are both modern, developer-oriented builders with similar mental models — containers, sections, flexbox layouts, dynamic data. This makes Oxygen-to-Bricks one of the most straightforward builder migrations. The structural concepts translate almost 1:1, but the underlying data formats are completely different (Oxygen's JSON shortcodes in `ct_builder_shortcodes` vs. Bricks' JSON array in `_bricks_page_content_2`), so content must be extracted, mapped, and re-encoded.2425This skill reads every Oxygen page, extracts the builder content, translates each component to its Bricks equivalent, and writes the result to duplicate pages in Bricks format — giving you a complete parallel version of your site to review before going live.2627**Handles:**28- Section → Bricks Section mapping29- Container/Div → Bricks Container mapping30- Heading, Text, Image, Button, Video, Icon components31- Flexbox layout settings (direction, alignment, gap, wrap)32- Column/grid structures33- Custom CSS classes and inline styles34- Link elements and CTAs35- Code blocks and custom HTML36- Repeater/dynamic data placeholders (flagged for manual review)3738## What This Skill Does NOT Do3940- Migrate Oxygen's Global Styles or Style Sheets — Bricks uses its own theme style system41- Convert Oxygen conditions (visibility rules) — these must be rebuilt in Bricks42- Migrate Oxygen's custom PHP/code block logic — flagged for manual porting43- Recreate Oxygen templates (headers, footers, archives) — Bricks templates are structurally different and must be rebuilt44- Transfer WooCommerce builder templates — product/shop templates need separate handling45- Guarantee pixel-perfect visual parity — some spacing/sizing will need fine-tuning in Bricks4647## Requirements4849- Respira for WordPress plugin installed and connected50- MCP connection active (desktop or WebMCP)51- Oxygen Builder active on the source site52- Bricks Builder installed on the target site (can be the same site)53- Read access to scan Oxygen content54- Write access to create duplicates with Bricks content5556## Trigger Phrase5758- "migrate oxygen to bricks"5960## Alternative Triggers6162- "convert oxygen to bricks"63- "switch from oxygen to bricks"64- "move oxygen pages to bricks"65- "replace oxygen with bricks"66- "oxygen to bricks migration"6768## Builder Technical Context6970**Source: Oxygen Builder**71- Content stored in post_meta key `ct_builder_shortcodes`72- JSON-based structure encoding nested components73- Read via `respira_extract_builder_content` with `builder=oxygen`74- Components: `ct_section`, `ct_div`, `ct_headline`, `ct_text_block`, `ct_image`, `ct_link_button`, etc.7576**Target: Bricks Builder**77- Content stored in post_meta key `_bricks_page_content_2` as a JSON array78- Each element is an object with `id`, `name`, `parent`, `settings`, `children`79- Write via `respira_inject_builder_content` with `builder=bricks`80- Elements: `section`, `container`, `heading`, `text`, `image`, `button`, etc.8182## Execution Workflow8384### Phase 1: Pre-Migration Audit85861. Verify Respira + MCP connection via `respira_get_site_context`. If unavailable, stop and show setup guidance.872. Detect Oxygen presence via `respira_get_builder_info` or `respira_list_plugins`.883. Inventory and scope the source pages first:89 - `respira_find_builder_targets` with `builder=oxygen` — a fast, ranked list of every Oxygen-managed page/post before you touch anything90 - Fall back to `respira_list_pages` / `respira_list_posts` + `respira_get_builder_info` to confirm builder per item where needed914. For each Oxygen page, extract content:92 - `respira_extract_builder_content` with `builder=oxygen`93 - Catalog: component types used, nesting depth, custom CSS, dynamic data usage, code blocks945. Produce an **Audit Report**:95 - Total pages/posts using Oxygen96 - Component type frequency (how many sections, headings, images, etc.)97 - Complexity flags (custom PHP, conditions, dynamic data, WooCommerce templates)98 - Estimated migration difficulty per page (simple / moderate / complex)99100### Phase 2: Migration Plan101102Present a structured migration plan:103104```105## Oxygen → Bricks Migration Plan106107### Site Overview108- Total Oxygen pages: X109- Simple pages (direct mapping): X110- Moderate pages (some manual review needed): X111- Complex pages (significant manual work): X112113### Component Mapping114| Oxygen Component | Bricks Equivalent | Notes |115|---|---|---|116| ct_section | section | Direct mapping |117| ct_div | container | Direct mapping |118| ct_headline | heading | Direct mapping |119| ... | ... | ... |120121### Migration Order1221. [Page Title] — Simple — estimated 2 min1232. [Page Title] — Moderate — estimated 5 min124...125126### Items Requiring Manual Attention127- [Page X] — Custom PHP code block (line 45)128- [Page Y] — Oxygen condition logic129- Global Styles — must be recreated in Bricks Theme Styles130```131132Then ask:133134> Here's the migration plan. Would you like me to:135> 1. Migrate all pages (creates duplicates for review)136> 2. Migrate only simple pages first137> 3. Migrate specific pages you choose138> 4. Just keep this as a reference — no changes139140Wait for explicit confirmation before proceeding.141142### Phase 3: Page-by-Page Migration143144For each approved page:1451461. Extract Oxygen content via `respira_extract_builder_content` with `builder=oxygen`1472. Map each Oxygen component to its Bricks equivalent:148 - Translate component types (ct_section → section, ct_div → container, etc.)149 - Convert layout properties (flexbox settings, spacing, sizing)150 - Map CSS classes and inline styles151 - Preserve text content, image URLs, link targets152 - Flag any unmappable components (custom PHP, conditions) with inline comments1533. Build the Bricks JSON array structure1544. Create a duplicate via `respira_create_page_duplicate` or `respira_create_post_duplicate`1555. Before writing, take a snapshot with `respira_get_snapshot` so the duplicate's pre-write state can be restored if anything goes wrong1566. Inject Bricks content via `respira_inject_builder_content` with `builder=bricks`1577. Surgical fix pass — if the injected page has validation issues (collapsed flex/column widths, broken parent refs, a misconverted component), do not re-inject the whole page. Locate the specific element with `respira_find_element` and correct it with `respira_update_element`. For repeated fixes across many elements or several pages, batch them with `respira_batch_update`1588. Log the migration result (success, warnings, manual review items)159160### Phase 4: Post-Migration Verification1611621. Summarize all migrated pages with status:163 - Design tokens registered in Bricks' global styles (token names and counts)164 - Clean migrations (no issues)165 - Migrations with warnings (flagged items needing review)166 - Failed migrations (if any)1672. List all manual review items:168 - Custom PHP code blocks that need porting169 - Dynamic data references that need reconnecting170 - Oxygen conditions that need rebuilding in Bricks1713. Provide review instructions:172 - Where to find duplicates in WordPress admin173 - How to preview Bricks pages174 - How to delete duplicates if not wanted175176## Design Tokens177178Conversion writes now register the colors and typography they carry as named design tokens in Bricks' own global styles, and the converted pages reference those tokens instead of carrying value copies. When fixing or extending a migrated page, reuse the registered tokens (`respira_list_design_tokens` shows them) rather than re-inlining raw hex values or font stacks. And say so when you finish: the migration summary should name the tokens that were registered and note that migrated pages reference them.179180## Safety Model181182- Read-only analysis first — full Oxygen content audit before any changes183- Explicit user confirmation before creating any duplicates184- Duplicate-first only — never modifies live/published Oxygen content185- Never auto-publishes duplicates186- Snapshot before every write — `respira_get_snapshot` captures the duplicate's pre-write state, and `respira_restore_snapshot` rolls it back if an injection goes wrong187- Two explicit rollback paths: restore the snapshot to revert a bad write, or delete the draft duplicates entirely to undo the migration188- Preserves all original Oxygen content untouched189190## Honest Disclaimer191192This skill converts Oxygen page structures to Bricks format and creates duplicates for review.193194It cannot:195- Guarantee pixel-perfect visual parity between builders196- Migrate Oxygen Global Styles or conditions automatically197- Convert custom PHP code blocks to Bricks equivalents198- Handle WooCommerce template migrations199- Replace a thorough manual QA pass on every page200201It can:202- Map 80-90% of standard Oxygen components to Bricks equivalents203- Preserve content, images, links, and layout structure204- Save days of manual rebuild work205- Identify exactly what needs manual attention206207## Tooling208209**Core WordPress tools**210- `respira_get_site_context`211- `respira_get_builder_info`212- `respira_list_pages`213- `respira_list_posts`214- `respira_list_plugins`215- `respira_find_builder_targets`216- `respira_extract_builder_content`217- `respira_inject_builder_content`218- `respira_create_page_duplicate`219- `respira_create_post_duplicate`220- `respira_read_page`221- `respira_read_post`222223**Safety and surgical-fix tools**224- `respira_get_snapshot`225- `respira_restore_snapshot`226- `respira_find_element`227- `respira_update_element`228- `respira_batch_update`229230## Telemetry231232After run completion, send fire-and-forget usage tracking to:233234- `POST https://www.respira.press/api/skills/track-usage`235236Include:237- `skill_slug = migrate-oxygen-to-bricks`238- site/version context239- duration and success240- pages audited, pages migrated, warnings count241- tools used242243Never block user flow on telemetry failure.244245## Related Skills246247- WordPress Site DNA (understand site structure before migrating)248- Technical Debt Audit (clean up before or after migration)249- SEO & AEO Amplifier (verify SEO preservation post-migration)250251---252253Built by Respira Team254https://respira.press/skills/migrate-oxygen-to-bricks