Best for
- Use when the user says 'migrate divi to gutenberg', 'convert divi to blocks', 'get off divi', or 'decommission divi'.
respira-press/agent-skills-wordpress/skills/migrate-divi-to-gutenberg/SKILL.md
Use when the user says 'migrate divi to gutenberg', 'convert divi to blocks', 'get off divi', or 'decommission divi'. Parses Divi shortcodes, maps modules to core blocks, and creates draft duplicates for review.
Decision brief
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 the block editor's own global styles, and converted pages reference those tokens instead of carry…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/respira-press/agent-skills-wordpress --skill "skills/migrate-divi-to-gutenberg"Inspect the Agent Skill "migrate-divi-to-gutenberg" from https://github.com/respira-press/agent-skills-wordpress/blob/10821eaabe362fe9052f6ee81ecdd62e5d2f2980/skills/migrate-divi-to-gutenberg/SKILL.md at commit 10821eaabe362fe9052f6ee81ecdd62e5d2f2980. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Verify Respira + MCP connection via respiragetsitecontext. If unavailable, stop and show setup guidance. 2. Confirm Divi is active (theme or plugin) via respiralistplugins and respiragetsitecontext. 3. Check WordPress version (6.0+ required, 6.3+ ideal). 4. Important: If usin…
1. Verify Respira + MCP connection via respiragetsitecontext. If unavailable, stop and show setup guidance. 2. Confirm Divi is active (theme or plugin) via respiralistplugins and respiragetsitecontext. 3. Check WordPress version (6.0+ required, 6.3+ ideal). 4. Important: If usin…
Present a plan that sets realistic expectations:
1. Read full Divi content via respiraextractbuildercontent with builder=divi 2. Parse the Divi shortcode tree: - Identify section/row/column hierarchy - Decode any encoded content (HTML entities, percent-encoding) - Resolve global module references to inline content 3. Map each…
1. Summarize all migrations - Design tokens registered in the block editor's global styles (token names and counts) 2. For each migrated page: - Link to edit in Gutenberg - Flagged items - Layout simplification notes 3. Post-migration checklist: - [ ] Open each duplicate in bloc…
Permission review
The documentation includes network, browsing, or remote request actions.
[et_pb_button button_text="Click Me" button_url="https://..." _builder_version="4.x"][/et_pb_button]Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 87/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 40 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
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 the block editor's 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.
Converts Divi-built WordPress pages to native Gutenberg blocks. Parses Divi's shortcode-based content from post_content, maps each module 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 Divi to Gutenberg, eliminate the Divi dependency, switch to native blocks, or simplify their WordPress stack by removing Elegant Themes' builder.
Divi stores everything as nested shortcodes directly in post_content — a fundamentally different approach from JSON-based builders. The content is a hierarchy of [et_pb_section], [et_pb_row], [et_pb_column], and [et_pb_module] shortcodes with settings as attributes. Converting this to Gutenberg blocks means parsing that shortcode tree, extracting content and settings, and generating the equivalent <!-- wp:block --> markup.
This is one of the more complex migrations because Divi shortcodes often contain escaped HTML, base64-encoded content, and deeply nested attribute strings that need careful parsing.
Handles:
Preserves:
et_pb_layout post type. These are resolved to inline content during migration; Gutenberg reusable blocks can be created manually afterward.Divi stores content as shortcodes in post_content. The module structure follows a strict hierarchy:
[et_pb_section fb_built="1" _builder_version="4.x"]
[et_pb_row _builder_version="4.x"]
[et_pb_column type="4_4" _builder_version="4.x"]
[et_pb_text _builder_version="4.x"]
<p>Your content here</p>
[/et_pb_text]
[et_pb_image src="image.jpg" alt="Alt text" _builder_version="4.x"][/et_pb_image]
[et_pb_button button_text="Click Me" button_url="https://..." _builder_version="4.x"][/et_pb_button]
[/et_pb_column]
[/et_pb_row]
[/et_pb_section]
Key Divi specifics:
type attribute — 4_4 (full), 1_2 (half), 1_3 (third), 2_3 (two-thirds), 1_4 (quarter), 3_4 (three-quarters)background_color, text_orientation, custom_margin, custom_padding, etc._builder_version attribute on every element%22, %91, %93), and occasional base64global_module attribute pointing to an et_pb_layout postcustom_css_main_element, custom_css_before, custom_css_after attributesRead Divi content via respira_extract_builder_content with builder=divi.
Gutenberg stores content in post_content as HTML with block comment delimiters:
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group">
<!-- wp:heading {"level":2} -->
<h2 class="wp-block-heading">Title Here</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Content text.</p>
<!-- /wp:paragraph -->
</div>
<!-- /wp:group -->
Key Gutenberg specifics:
wp:group, wp:columns, wp:columnstyle attribute in block JSONpost_content — no separate metaWrite Gutenberg content via respira_update_page or respira_update_post targeting the content field.
respira_get_site_context. If unavailable, stop and show setup guidance.respira_list_plugins and respira_get_site_context.respira_list_pages and respira_list_posts — identify all contentrespira_find_builder_targets with builder=divi — inventory the Divi-managed pages to scope the migrationrespira_get_builder_inforespira_extract_builder_content with builder=diviPresent a plan that sets realistic expectations:
## Divi → Gutenberg Migration Plan
### Important Context
Divi and Gutenberg have very different design philosophies. Divi offers
extensive visual customization through its settings panel; Gutenberg
prioritizes clean, semantic content. Expect simpler but faster-loading pages.
If you are using the Divi theme (not just the plugin), you will need a
block-compatible theme (e.g., Twenty Twenty-Four, Astra, Kadence).
### Site Inventory
- Total Divi pages: X
- Total modules to convert: X
- Direct equivalents: X (Y%)
- Approximate equivalents: X (Y%)
- Manual recreation needed: X (Y%)
### Module Mapping Summary
| Divi Module | Gutenberg Block | Fidelity |
|------------------|-----------------|--------------|
| et_pb_text | wp:paragraph | Exact |
| et_pb_image | wp:image | Exact |
| et_pb_blurb | wp:group combo | Approximate |
| et_pb_slider | wp:group/gallery| Simplified |
| et_pb_contact | — | Manual |
### Shortcode Parsing Notes
- [Any encoding issues found]
- [Specialty sections that need layout interpretation]
- [Global modules that will be inlined]
### Page-by-Page Plan
1. **[Page Title]** — X modules, [complexity]
2. ...
Ask for confirmation:
Divi → Gutenberg is a significant simplification. Pages will be cleaner but less visually elaborate.
- Migrate all pages
- Migrate specific pages
- Start with a test page (strongly recommended)
- Just keep this plan
For each approved page:
respira_extract_builder_content with builder=diviet_pb_section → <!-- wp:group --> (with full-width if fullwidth section)et_pb_row + et_pb_column → <!-- wp:columns --> + <!-- wp:column {"width":"X%"} -->4_4→100%, 1_2→50%, 1_3→33.33%, 2_3→66.66%, 1_4→25%, 3_4→75%et_pb_text → <!-- wp:paragraph --> (or multiple blocks if content has headings)et_pb_blurb → Group containing Image + Heading + Paragraphet_pb_image → <!-- wp:image -->et_pb_button → <!-- wp:buttons --><!-- wp:button --><!-- MIGRATION NOTE: ... -->respira_get_snapshot checkpoint of the target before any write, so the page can be restored exactly if the conversion needs unwindingrespira_create_page_duplicate or respira_create_post_duplicaterespira_update_page or respira_update_postrespira_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.Conversion writes now register the colors and typography they carry as named design tokens in the block editor's 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.
respira_get_snapshot checkpoint before each writerespira_restore_snapshot, or delete the draft duplicates if they are not wantedThis skill converts Divi page content to Gutenberg blocks and creates draft duplicates for review.
It cannot:
It can:
Core WordPress tools
respira_get_site_contextrespira_list_pluginsrespira_list_pagesrespira_list_postsrespira_read_pagerespira_read_postrespira_get_builder_inforespira_extract_builder_contentrespira_find_builder_targetsrespira_create_page_duplicaterespira_create_post_duplicaterespira_update_pagerespira_update_postrespira_get_snapshotrespira_restore_snapshotrespira_find_elementrespira_update_elementrespira_batch_updateAfter run completion, send fire-and-forget usage tracking to:
POST https://www.respira.press/api/skills/track-usageInclude:
skill_slug = migrate-divi-to-gutenbergNever block user flow on telemetry failure.
Built by Respira Team https://respira.press/skills/migrate-divi-to-gutenberg
Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
coreyhaines31/marketingskills
When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies. Also use when the user mentions 'churn,' 'cancel flow,' 'offboarding,' 'save offer,' 'dunning,' 'failed payment recovery,' 'win-back,' 'retention,' 'exit survey,' 'pause subscription,' 'involuntary churn,' 'people keep canceling,' 'churn rate is too high,' 'how do I keep users,' or 'customers are leaving.' Use this whenever someone is losing subscribers o
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
JasonColapietro/suede-creator-skills
Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).