**Version:** 2.0.0 **Updated:** 2026-06-30 **Freshly updated:** v2.0.0 weaves in the current Respira safety and precision flow — `respira_find_builder_targets` to inventory and scope the WPBakery source pages up front, a `respira_get_snapshot` checkpoint before any write, and
Installs just this skill. Get the whole plugin for auto-invocation.
⚡ How it fires
How this skill gets triggered: by you, by Claude, or both.
Fires itselfClaude auto-loads it when your prompt matches the work.
You can call itInvoke it directly when you want it.
Slash command/migrate-wpbakery-to-gutenberg
👁️ Context preview
The summary Claude sees to decide when to auto-load this skill.
**Version:** 2.0.0 **Updated:** 2026-06-30 **Freshly updated:** v2.0.0 weaves in the current Respira safety and precision flow — `respira_find_builder_targets` to inventory and scope the WPBakery source pages up front, a `respira_get_snapshot` checkpoint before any write, and
# Migrate WPBakery to Gutenberg
**Version:** 2.0.0
**Updated:** 2026-06-30
**Freshly updated:** v2.0.0 weaves in the current Respira safety and precision flow — `respira_find_builder_targets` to inventory and scope the WPBakery source pages up front, a `respira_get_snapshot` checkpoint before any write, and surgical fixes via `respira_find_element` + `respira_update_element` (and `respira_batch_update` for multi-block or multi-page corrections) instead of rewriting whole pages. Rollback is now explicit (restore the snapshot, delete the draft duplicates). Reflects the current 16 supported builders.
Converts WPBakery Page Builder (formerly Visual Composer) pages to native Gutenberg blocks. Parses WPBakery's shortcode-based content from post_content, maps each element to its closest core block equivalent, generates a migration plan for approval, and writes clean block markup to the target pages. Use this skill whenever someone wants to move from WPBakery to Gutenberg, eliminate the WPBakery dependency, switch to native blocks, or modernize an older WordPress site still running WPBakery.
## What This Skill Does
WPBakery is one of the oldest and most widely-installed WordPress page builders — millions of sites still run it. It stores content as shortcodes in `post_content` using the `[vc_*]` prefix. The good news: WPBakery's shortcode structure is relatively straightforward compared to Divi's encoding complexities. The challenge: many WPBakery sites are older and may use deprecated elements, custom shortcodes from themes, or VC-specific plugins that add nonstandard elements.
This skill parses the WPBakery shortcode tree, extracts content and settings, and generates equivalent Gutenberg blocks. The result is clean, modern WordPress content free from shortcode dependencies.
**Handles:**
- vc_row/vc_column → Columns and Column blocks
- All text content and HTML formatting within vc_column_text
- Image URLs, alt text, link targets
- Heading text and hierarchy
- Button labels, URLs, and basic styles
- Video embed URLs
- Gallery image collections
- Code/HTML block contents
- CSS classes applied via `el_class` attribute
- Custom element IDs via `el_id` attribute
## What This Skill Does NOT Do
- **Theme-bundled WPBakery elements** — Many themes add custom WPBakery elements (portfolio grids, team members, testimonial carousels, etc.). These are theme-specific and cannot be auto-mapped. They are flagged for manual recreation.
- **WPBakery addons** — Ultimate Addons for WPBakery, Starter Templates, etc. add proprietary shortcodes that are flagged, not converted.
- **vc_grid/vc_masonry_grid** — Post grid elements with complex query settings need manual recreation using Query Loop block or a posts plugin.
- **Design options** — WPBakery's Design Options panel (accessed via `css` attribute containing encoded CSS) stores background, border, padding as a single encoded string. Basic properties are extracted; complex combinations may be simplified.
- **Frontend editor layouts** — Some WPBakery designs rely on the frontend editor's pixel-precise positioning which has no block equivalent.
- **WooCommerce elements** — vc_wp_product, cart, and checkout elements need WooCommerce blocks.
- **Revolution Slider, Layer Slider** — Often bundled with WPBakery themes but are separate plugins.
- **Templates** — WPBakery saved templates are not migrated as reusable blocks automatically.
## Requirements
- Respira for WordPress plugin installed and connected
- MCP connection active (desktop or WebMCP)
- WPBakery Page Builder plugin active (to ensure shortcodes render/parse)
- WordPress 6.0+ (6.3+ recommended for Details block)
- A block-compatible theme (often needed since WPBakery sites tend to run older themes)
- Read access to scan WPBakery content
- Write access to create duplicates with Gutenberg content
## Trigger Phrase
- "migrate wpbakery to gutenberg"
## Alternative Triggers
- "convert wpbakery to blocks"
- "switch from wpbakery to gutenberg"
- "migrate visual composer to gutenberg"
- "remove wpbakery"
- "rebuild wpbakery pages with blocks"
- "wpbakery to block editor"
- "decommission wpbakery"
- "get rid of visual composer"
## Source Builder: WPBakery
WPBakery stores content as shortcodes in `post_content`:
- Map Design Options CSS to block style attributes where possible
- Apply `el_class` as `className` in block attributes
- Apply `el_id` as `anchor` in block attributes
- Flag unmappable elements with `<!-- MIGRATION NOTE: ... -->`
4. Assemble block markup
5. Take a `respira_get_snapshot` checkpoint of the target before any write, so the page can be restored exactly if the conversion needs unwinding
6. Create duplicate via `respira_create_page_duplicate` or `respira_create_post_duplicate`
7. Write the block markup to the duplicate via `respira_update_page` or `respira_update_post`
8. Surgical fixes (not a rewrite): when a single block lands wrong — a heading, a button label, a column width — locate it with `respira_find_element` and correct it in place with `respira_update_element`. For repeated corrections across many blocks or several migrated pages, batch them with `respira_batch_update` rather than regenerating and re-writing whole pages.
9. Report: elements converted, flagged, layout notes
### Phase 4: Post-Migration Verification
1. Summarize all migrations
2. For each migrated page:
- Link to edit in Gutenberg
- Flagged items
- Design Options settings that were simplified
3. Post-migration checklist:
- [ ] Open each duplicate in block editor — verify all blocks are valid
- [ ] Check that vc_column_text HTML parsed into correct block types
- [ ] Verify images (check that image IDs still resolve)
- [ ] Test all buttons (decoded URLs working correctly)
- [ ] Check responsive preview
- [ ] Recreate theme-bundled custom elements manually
- [ ] Set up any needed block patterns for repeated layouts
- [ ] Consider theme modernization if using an older WPBakery-bundled theme
- [ ] Test page speed (expect significant improvement)
- [ ] Search for any remaining vc_ shortcode remnants
## Safety Model
- Read-only analysis first — full content scan before any changes
- Explicit user confirmation required before creating duplicates
- Original WPBakery pages are never modified or deleted
- All migrated content goes to draft duplicates only
- Never auto-publishes migrated pages
- Takes a `respira_get_snapshot` checkpoint before each write
- Explicit rollback: restore the snapshot via `respira_restore_snapshot`, or delete the draft duplicates if they are not wanted
- Warns about theme-bundled element dependencies
## Honest Disclaimer
This skill converts WPBakery page content to Gutenberg blocks and creates draft duplicates for review.
It cannot:
- Convert theme-specific custom WPBakery elements
- Migrate WPBakery addon plugin elements
- Perfectly translate complex Design Options CSS
- Convert post grids (vc_grid) to Query Loop automatically
- Handle Revolution Slider or other bundled plugins
- Replace visual review and manual adjustment
It can:
- Convert 70-85% of standard WPBakery elements to clean blocks
- Parse and decode WPBakery's URL encoding and CSS attributes
- Handle nested row/column structures including inner rows
- Split vc_column_text HTML into proper individual blocks
- Dramatically reduce page weight and load time
- Modernize older WordPress sites
- Keep original pages completely safe
## Tooling
**Core WordPress tools**
- `respira_get_site_context`
- `respira_list_plugins`
- `respira_list_pages`
- `respira_list_posts`
- `respira_read_page`
- `respira_read_post`
- `respira_get_builder_info`
- `respira_extract_builder_content`
- `respira_find_builder_targets`
- `respira_create_page_duplicate`
- `respira_create_post_duplicate`
- `respira_update_page`
- `respira_update_post`
- `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: