@respira/wordpress-mcp-server 7.2.18 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/acf-tools.d.ts +0 -10
  2. package/dist/acf-tools.d.ts.map +1 -1
  3. package/dist/acf-tools.js +0 -15
  4. package/dist/acf-tools.js.map +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +31 -36
  7. package/dist/config.js.map +1 -1
  8. package/dist/server.d.ts +0 -47
  9. package/dist/server.d.ts.map +1 -1
  10. package/dist/server.js +1155 -605
  11. package/dist/server.js.map +1 -1
  12. package/dist/wordpress-client.d.ts +61 -29
  13. package/dist/wordpress-client.d.ts.map +1 -1
  14. package/dist/wordpress-client.js +271 -148
  15. package/dist/wordpress-client.js.map +1 -1
  16. package/package.json +2 -2
  17. package/skills/activity-report-composer/README.md +38 -0
  18. package/skills/activity-report-composer/SKILL.md +167 -0
  19. package/skills/activity-report-composer/metadata.json +42 -0
  20. package/skills/brand-voice-synthesizer/README.md +43 -0
  21. package/skills/brand-voice-synthesizer/SKILL.md +259 -0
  22. package/skills/brand-voice-synthesizer/metadata.json +46 -0
  23. package/skills/build-oxygen6-page/SKILL.md +59 -0
  24. package/skills/conversion-audit/README.md +37 -0
  25. package/skills/conversion-audit/SKILL.md +185 -0
  26. package/skills/conversion-audit/metadata.json +46 -0
  27. package/skills/custom-post-type-architect/README.md +34 -0
  28. package/skills/custom-post-type-architect/SKILL.md +158 -0
  29. package/skills/custom-post-type-architect/metadata.json +39 -0
  30. package/skills/design-system-synthesizer/README.md +46 -0
  31. package/skills/design-system-synthesizer/SKILL.md +395 -0
  32. package/skills/design-system-synthesizer/metadata.json +57 -0
  33. package/skills/figma-to-elementor/SKILL.md +204 -0
  34. package/skills/html-to-bricks/README.md +43 -0
  35. package/skills/html-to-bricks/SKILL.md +135 -0
  36. package/skills/html-to-bricks/metadata.json +41 -0
  37. package/skills/internal-link-builder/SKILL.md +258 -0
  38. package/skills/internal-link-builder/metadata.json +46 -0
  39. package/skills/migrate-beaver-builder-to-bricks/SKILL.md +251 -0
  40. package/skills/migrate-beaver-builder-to-gutenberg/SKILL.md +248 -0
  41. package/skills/migrate-brizy-to-gutenberg/SKILL.md +248 -0
  42. package/skills/migrate-divi-to-breakdance/SKILL.md +312 -0
  43. package/skills/migrate-divi-to-bricks/SKILL.md +321 -0
  44. package/skills/migrate-divi-to-gutenberg/SKILL.md +328 -0
  45. package/skills/migrate-elementor-to-breakdance/SKILL.md +287 -0
  46. package/skills/migrate-elementor-to-bricks/SKILL.md +289 -0
  47. package/skills/migrate-elementor-to-gutenberg/SKILL.md +327 -0
  48. package/skills/migrate-elementor-to-oxygen/SKILL.md +300 -0
  49. package/skills/migrate-oxygen-to-breakdance/SKILL.md +235 -0
  50. package/skills/migrate-oxygen-to-bricks/SKILL.md +237 -0
  51. package/skills/migrate-thrive-architect-to-gutenberg/SKILL.md +257 -0
  52. package/skills/migrate-visual-composer-to-gutenberg/SKILL.md +261 -0
  53. package/skills/migrate-wpbakery-to-bricks/SKILL.md +336 -0
  54. package/skills/migrate-wpbakery-to-gutenberg/SKILL.md +345 -0
  55. package/skills/mobile-experience-report/SKILL.md +719 -0
  56. package/skills/mobile-experience-report/telemetry.ts +137 -0
  57. package/skills/page-template-library/README.md +41 -0
  58. package/skills/page-template-library/SKILL.md +175 -0
  59. package/skills/page-template-library/metadata.json +44 -0
  60. package/skills/prime-the-agent/README.md +49 -0
  61. package/skills/prime-the-agent/SKILL.md +225 -0
  62. package/skills/prime-the-agent/metadata.json +46 -0
  63. package/skills/respira-setup-assistant/SKILL.md +386 -0
  64. package/skills/respira-setup-assistant/metadata.json +36 -0
  65. package/skills/seo-aeo-amplifier/README.md +61 -0
  66. package/skills/seo-aeo-amplifier/SKILL.md +277 -0
  67. package/skills/seo-aeo-amplifier/metadata.json +62 -0
  68. package/skills/stale-content-detector/README.md +41 -0
  69. package/skills/stale-content-detector/SKILL.md +156 -0
  70. package/skills/stale-content-detector/metadata.json +43 -0
  71. package/skills/technical-debt-audit/SKILL.md +691 -0
  72. package/skills/technical-debt-audit/telemetry.ts +142 -0
  73. package/skills/woocommerce-health-check/SKILL.md +719 -0
  74. package/skills/woocommerce-health-check/telemetry.ts +137 -0
  75. package/skills/wordpress-ai-image-optimizer/README.md +49 -0
  76. package/skills/wordpress-ai-image-optimizer/SKILL.md +232 -0
  77. package/skills/wordpress-ai-image-optimizer/metadata.json +63 -0
  78. package/skills/wordpress-site-dna/README.md +81 -0
  79. package/skills/wordpress-site-dna/SKILL.md +669 -0
  80. package/skills/wordpress-site-dna/telemetry.ts +137 -0
  81. package/dist/__tests__/acf-tool-routing.test.d.ts +0 -2
  82. package/dist/__tests__/acf-tool-routing.test.d.ts.map +0 -1
  83. package/dist/__tests__/acf-tool-routing.test.js +0 -37
  84. package/dist/__tests__/acf-tool-routing.test.js.map +0 -1
  85. package/dist/__tests__/cowork-bootstrap.test.d.ts +0 -2
  86. package/dist/__tests__/cowork-bootstrap.test.d.ts.map +0 -1
  87. package/dist/__tests__/cowork-bootstrap.test.js +0 -61
  88. package/dist/__tests__/cowork-bootstrap.test.js.map +0 -1
@@ -0,0 +1,287 @@
1
+ # Migrate Elementor to Breakdance
2
+
3
+ **Version:** 2.0.0
4
+ **Updated:** 2026-06-30
5
+ **Freshly updated:** v2.0.0 wires in current Respira safety and precision. Pre-migration now inventories source pages with `respira_find_builder_targets`. Every write is preceded by a `respira_get_snapshot`, and the existing draft-duplicate path is kept. After the initial `respira_inject_builder_content`, validation issues (column widths, broken refs) are corrected surgically with `respira_find_element` + `respira_update_element` (and `respira_batch_update` for multi-element or multi-page fixes) instead of re-injecting whole pages. Snapshot restore and draft deletion are now explicit rollback paths. Reflects the current 16 supported builders.
6
+
7
+ Converts Elementor-built WordPress pages to Breakdance Builder. Reads Elementor's JSON widget tree from post meta, maps each widget to its Breakdance element equivalent, generates a migration plan for approval, and writes Breakdance content to the target pages. Use this skill whenever someone wants to move from Elementor to Breakdance, switch builders from Elementor to Breakdance, or rebuild Elementor pages in Breakdance.
8
+
9
+ ## What This Skill Does
10
+
11
+ Breakdance is a newer builder created by the Oxygen team with a focus on clean output and familiar visual editing. Both Elementor and Breakdance are widget/element-based builders, making this a relatively smooth migration path. The main challenge is mapping Elementor's JSON widget tree (`_elementor_data`) to Breakdance's post meta format, translating settings names, and handling the structural differences in how each builder handles sections, columns, and responsive design. Both sit among the 16 page builders Respira reads and writes natively, so extraction and injection run through the same builder-aware tooling Respira uses everywhere else.
12
+
13
+ **Handles:**
14
+ - Section/Column layouts → Breakdance Section/Div elements
15
+ - Text Editor, Heading, Image, Video, Button → native Breakdance equivalents
16
+ - Icon, Icon Box, Image Box → Breakdance icon and media elements
17
+ - Tabs, Accordion, Toggle → Breakdance interactive elements
18
+ - Form widgets → Breakdance form element
19
+ - Spacer, Divider → Breakdance spacing and separator elements
20
+ - Google Maps → Breakdance map element
21
+ - Image Gallery → Breakdance gallery element
22
+ - Pricing Table → Breakdance pricing element
23
+ - Progress Bar, Counter → Breakdance equivalents
24
+ - Custom CSS → Breakdance custom CSS fields
25
+ - Responsive visibility → Breakdance breakpoint controls
26
+
27
+ **Preserves:**
28
+ - All text content, headings, links, and inline formatting
29
+ - Image URLs, alt text, captions
30
+ - Typography settings (font, size, weight, line-height)
31
+ - Color values and gradients
32
+ - Spacing (margin, padding)
33
+ - Background images and overlays
34
+ - Border and shadow settings
35
+ - Button styles, links, and targets
36
+ - CSS classes and custom attributes
37
+
38
+ ## What This Skill Does NOT Do
39
+
40
+ - **Third-party Elementor addons** — Widgets from Essential Addons, JetElements, Crocoblock, etc. are flagged for manual migration.
41
+ - **Elementor Pro dynamic tags** — ACF fields, custom loops, and dynamic content need Breakdance's dynamic data system configured separately.
42
+ - **Theme Builder templates** — Elementor headers, footers, archive templates are not page content and require Breakdance's own template system.
43
+ - **Popup content** — Elementor popups need to be rebuilt as Breakdance popups manually.
44
+ - **WooCommerce widgets** — Elementor's WooCommerce elements need Breakdance's WooCommerce builder.
45
+ - **Motion effects** — Parallax, entrance animations, and scroll effects have different implementations in Breakdance.
46
+ - **Global widgets** — Referenced by `templateID` in Elementor; these are resolved to inline content. Breakdance global blocks must be set up separately.
47
+
48
+ ## Requirements
49
+
50
+ - Respira for WordPress plugin installed and connected
51
+ - MCP connection active (desktop or WebMCP)
52
+ - Elementor plugin active (to read source content)
53
+ - Breakdance plugin installed and active (to write target content)
54
+ - Read access to scan Elementor content
55
+ - Write access to create duplicates with Breakdance content
56
+
57
+ ## Trigger Phrase
58
+
59
+ - "migrate elementor to breakdance"
60
+
61
+ ## Alternative Triggers
62
+
63
+ - "convert elementor to breakdance"
64
+ - "switch from elementor to breakdance"
65
+ - "rebuild elementor pages in breakdance"
66
+ - "move from elementor to breakdance"
67
+ - "elementor to breakdance migration"
68
+
69
+ ## Source Builder: Elementor
70
+
71
+ Elementor stores page content in the `_elementor_data` post meta field as a JSON string. The structure is a nested tree:
72
+
73
+ ```
74
+ Document
75
+ └─ Section (type: "section")
76
+ ├─ settings: { structure, layout, content_width, ... }
77
+ └─ elements: [
78
+ Column (type: "column")
79
+ ├─ settings: { _column_size, ... }
80
+ └─ elements: [
81
+ Widget (type: "widget", widgetType: "heading")
82
+ └─ settings: { title, size, header_size, ... }
83
+ ]
84
+ ]
85
+ ```
86
+
87
+ Key Elementor specifics:
88
+ - **Widget types** are in the `widgetType` field (e.g., `heading`, `text-editor`, `image`, `button`)
89
+ - **Responsive settings** use suffixes: `margin`, `margin_tablet`, `margin_mobile`
90
+ - **CSS** is cached in `_elementor_css` post meta
91
+ - **Page settings** in `_elementor_page_settings`
92
+ - **Global widgets** reference a template via `templateID`
93
+
94
+ Read Elementor content via `respira_extract_builder_content` with `builder=elementor`.
95
+
96
+ ## Target Builder: Breakdance
97
+
98
+ Breakdance stores content in post meta. Elements follow a structured format with type, settings, and children.
99
+
100
+ Key Breakdance specifics:
101
+ - Elements have types like `EssentialElements\\Heading`, `EssentialElements\\Text`, `EssentialElements\\Image`
102
+ - Section/Div structure for layouts (similar conceptual model to Elementor sections/columns)
103
+ - Clean CSS output — Breakdance generates minimal, optimized CSS
104
+ - Built-in WooCommerce support, form builder, and popup system
105
+ - Responsive design uses breakpoint-specific settings within element properties
106
+
107
+ Write Breakdance content via `respira_inject_builder_content` with `builder=breakdance`.
108
+
109
+ ## Execution Workflow
110
+
111
+ ### Phase 1: Pre-Migration Audit
112
+
113
+ 1. Verify Respira + MCP connection via `respira_get_site_context`. If unavailable, stop and show setup guidance.
114
+ 2. Confirm Elementor is active via `respira_list_plugins`.
115
+ 3. Confirm Breakdance is installed and active via `respira_list_plugins`.
116
+ 4. Inventory and scope the source pages with `respira_find_builder_targets` (builder=elementor) — a fast, ranked list of every Elementor-built 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.
117
+ 5. For each Elementor page, extract content via `respira_extract_builder_content` with `builder=elementor`
118
+ 6. Build an inventory:
119
+ - Total pages/posts using Elementor
120
+ - Widget types used (frequency count)
121
+ - Third-party addon widgets detected
122
+ - Pro widgets that need Breakdance Pro equivalents
123
+ - Global widgets and dynamic tags
124
+ - Complexity per page (simple/moderate/complex)
125
+
126
+ ### Phase 2: Migration Plan
127
+
128
+ Present a migration plan:
129
+
130
+ ```
131
+ ## Elementor → Breakdance Migration Plan
132
+
133
+ ### Site Inventory
134
+ - Total Elementor pages: X
135
+ - Total widgets to convert: X
136
+ - Auto-convertible: X (Y%)
137
+ - Manual attention: X (Y%)
138
+
139
+ ### Widget Mapping Summary
140
+ | Elementor Widget | Breakdance Element | Status |
141
+ |-----------------|-------------------|--------|
142
+ | heading | Heading | Auto |
143
+ | text-editor | Text | Auto |
144
+ | image | Image | Auto |
145
+ | button | Button | Auto |
146
+ | tabs | Tabs | Auto |
147
+ | form | Form | Partial|
148
+ | [addon widget] | — | Manual |
149
+
150
+ ### Page-by-Page Plan
151
+ 1. **[Page Title]** — X widgets, [complexity]
152
+ - Auto-convertible: X
153
+ - Needs attention: [details]
154
+ 2. ...
155
+
156
+ ### Migration Advantages
157
+ - Breakdance produces cleaner CSS output
158
+ - Better WooCommerce integration (if applicable)
159
+ - Similar visual editing workflow — team adjustment is minimal
160
+ ```
161
+
162
+ Ask for confirmation:
163
+ > Ready to migrate? Your original Elementor pages remain untouched.
164
+ > 1. Migrate all pages
165
+ > 2. Migrate specific pages
166
+ > 3. Start with a test page
167
+ > 4. Just keep this plan
168
+
169
+ ### Phase 3: Page-by-Page Migration
170
+
171
+ For each approved page:
172
+
173
+ 1. Read full Elementor content via `respira_extract_builder_content` with `builder=elementor`
174
+ 2. Walk the Elementor JSON tree and map each widget:
175
+ - Convert Section → Breakdance Section
176
+ - Convert Column → Breakdance Div (with flex layout)
177
+ - Convert each widget → appropriate Breakdance element
178
+ - Map typography, color, spacing, background, border settings
179
+ - Convert responsive suffixes to Breakdance breakpoint format
180
+ - Resolve global widgets to inline content
181
+ - Flag unmappable widgets with migration notes
182
+ 3. Generate valid Breakdance element structure
183
+ 4. Create a duplicate via `respira_create_page_duplicate` or `respira_create_post_duplicate`
184
+ 5. Before writing, take a snapshot with `respira_get_snapshot` so the duplicate's pre-write state can be restored if anything goes wrong
185
+ 6. Write Breakdance content to the duplicate via `respira_inject_builder_content` with `builder=breakdance`
186
+ 7. Surgical fix pass — if the injected page has validation issues (collapsed column widths, broken parent refs, a misconverted element), 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`
187
+ 8. Report status before moving to next page
188
+
189
+ ### Phase 4: Post-Migration Verification
190
+
191
+ 1. Summarize all migrations:
192
+ - Pages migrated, widgets converted, items flagged
193
+ 2. For each migrated page:
194
+ - Link to edit in Breakdance
195
+ - Flagged items list
196
+ - Settings that may need fine-tuning
197
+ 3. Post-migration checklist:
198
+ - [ ] Open each duplicate in Breakdance editor and verify layout
199
+ - [ ] Check responsive views (tablet, mobile)
200
+ - [ ] Verify images and media
201
+ - [ ] Test links and buttons
202
+ - [ ] Recreate flagged widgets manually
203
+ - [ ] Test forms and interactive elements
204
+ - [ ] Check Breakdance's CSS output for clean rendering
205
+ - [ ] Compare with Elementor original
206
+
207
+ ## Safety Model
208
+
209
+ - Read-only analysis first — full content scan before any changes
210
+ - Explicit user confirmation required before creating duplicates
211
+ - Original Elementor pages are never modified or deleted
212
+ - All migrated content goes to draft duplicates only
213
+ - Never auto-publishes migrated pages
214
+ - Takes a `respira_get_snapshot` of each duplicate before any write, so its pre-write state can be restored
215
+ - Two explicit rollback paths: restore the snapshot with `respira_restore_snapshot`, or delete the draft duplicates entirely with `respira_delete_page` / `respira_delete_post`
216
+ - Surgical fixes (`respira_find_element` + `respira_update_element`, or `respira_batch_update`) replace whole-page re-injection, so corrections stay scoped and reversible
217
+
218
+ ## Honest Disclaimer
219
+
220
+ This skill converts Elementor page content to Breakdance format and creates draft duplicates for review.
221
+
222
+ It cannot:
223
+ - Migrate third-party addon widgets automatically
224
+ - Convert Elementor Pro dynamic tags to Breakdance dynamic data
225
+ - Guarantee pixel-perfect visual match
226
+ - Migrate theme builder templates or popups
227
+ - Replace manual QA and visual review
228
+
229
+ It can:
230
+ - Convert 85-95% of standard Elementor widgets to Breakdance equivalents
231
+ - Preserve all text content, images, links, and core styling
232
+ - Take advantage of Breakdance's cleaner CSS output
233
+ - Save days of manual rebuilding
234
+ - Clearly flag everything that needs manual attention
235
+ - Keep original pages safe throughout the process
236
+
237
+ ## Tooling
238
+
239
+ **Core WordPress tools**
240
+ - `respira_get_site_context`
241
+ - `respira_list_plugins`
242
+ - `respira_list_pages`
243
+ - `respira_list_posts`
244
+ - `respira_read_page`
245
+ - `respira_read_post`
246
+ - `respira_get_builder_info`
247
+ - `respira_extract_builder_content`
248
+ - `respira_inject_builder_content`
249
+ - `respira_find_builder_targets`
250
+ - `respira_create_page_duplicate`
251
+ - `respira_create_post_duplicate`
252
+
253
+ **Safety and precision tools**
254
+ - `respira_get_snapshot`
255
+ - `respira_restore_snapshot`
256
+ - `respira_find_element`
257
+ - `respira_update_element`
258
+ - `respira_batch_update`
259
+ - `respira_delete_page`
260
+ - `respira_delete_post`
261
+
262
+ ## Telemetry
263
+
264
+ After run completion, send fire-and-forget usage tracking to:
265
+
266
+ - `POST https://www.respira.press/api/skills/track-usage`
267
+
268
+ Include:
269
+ - `skill_slug = migrate-elementor-to-breakdance`
270
+ - site/version context
271
+ - duration and success
272
+ - pages migrated, widgets converted, widgets flagged counts
273
+ - tools used
274
+
275
+ Never block user flow on telemetry failure.
276
+
277
+ ## Related Skills
278
+
279
+ - WordPress Site DNA (understand site structure before migrating)
280
+ - Internal Link Builder (verify internal links post-migration)
281
+ - SEO & AEO Amplifier (verify SEO preservation post-migration)
282
+ - Technical Debt Audit (clean up post-migration)
283
+
284
+ ---
285
+
286
+ Built by Respira Team
287
+ https://respira.press/skills/migrate-elementor-to-breakdance
@@ -0,0 +1,289 @@
1
+ # Migrate Elementor to Bricks
2
+
3
+ **Version:** 2.0.0
4
+ **Updated:** 2026-06-30
5
+ **Freshly updated:** v2.0.0 wires in current Respira safety and precision. Pre-migration now inventories source pages with `respira_find_builder_targets`. Every write is preceded by a `respira_get_snapshot`, and the existing draft-duplicate path is kept. After the first `respira_inject_builder_content`, validation issues (column widths, broken refs) are corrected surgically with `respira_find_element` + `respira_update_element` (and `respira_batch_update` for multi-element or multi-page fixes) instead of re-injecting whole pages. Snapshot restore and draft deletion are now explicit rollback paths. Reflects the current 16 supported builders.
6
+
7
+ Converts Elementor-built WordPress pages to Bricks Builder. Reads Elementor's JSON widget tree from post meta, maps each widget to its closest Bricks element equivalent, generates a migration plan for approval, and writes clean Bricks JSON to the target pages. Use this skill whenever someone wants to move from Elementor to Bricks, rebuild Elementor pages in Bricks, or switch page builders from Elementor to Bricks.
8
+
9
+ ## What This Skill Does
10
+
11
+ Elementor and Bricks are both visual page builders, but they store content in fundamentally different formats — Elementor uses a nested JSON widget tree in `_elementor_data`, while Bricks uses a flat-ish JSON array in `_bricks_page_content_2`. This skill bridges that gap by reading every Elementor widget, understanding its purpose, and recreating it as the appropriate Bricks element. Both Elementor and Bricks are among the 16 page builders Respira reads and writes natively, so the extraction and injection run through the same builder-aware tooling Respira uses everywhere else.
12
+
13
+ **Handles:**
14
+ - Section/Column layouts → Bricks Section/Container elements
15
+ - Text Editor, Heading, Image, Video, Button widgets → native Bricks equivalents
16
+ - Icon, Icon Box, Image Box, Star Rating → Bricks icon and media elements
17
+ - Tabs, Accordion, Toggle → Bricks interactive elements
18
+ - Form widgets → Bricks form elements (where available)
19
+ - Spacer, Divider, Google Maps → utility element equivalents
20
+ - Custom CSS from Elementor's Advanced tab → Bricks custom CSS fields
21
+ - Responsive visibility settings → Bricks breakpoint visibility
22
+ - Motion effects and entrance animations → Bricks interaction settings (where supported)
23
+ - Inner Section nesting → Bricks nested container structure
24
+ - Global widget references → resolved to inline content (Bricks templates noted for manual setup)
25
+
26
+ **Preserves:**
27
+ - Content text, images, links, and media references
28
+ - Typography settings (font family, size, weight, line-height, letter-spacing)
29
+ - Color values (hex, rgb, rgba, CSS variables)
30
+ - Spacing (margin, padding) and sizing
31
+ - Background images, overlays, gradients
32
+ - Border and border-radius settings
33
+ - Box shadow values
34
+ - Link targets and rel attributes
35
+ - CSS classes and IDs
36
+
37
+ ## What This Skill Does NOT Do
38
+
39
+ - **Third-party Elementor addons** — Widgets from Essential Addons, JetElements, Crocoblock, PowerPack, etc. are flagged for manual migration. The skill cannot map proprietary addon widgets to Bricks equivalents automatically.
40
+ - **Elementor Pro dynamic tags** — Dynamic content (ACF fields, custom field displays, loop templates) require Bricks' own dynamic data system, which has different capabilities. These are flagged, not auto-converted.
41
+ - **Theme Builder templates** — Elementor's header/footer/archive/single templates use a different storage mechanism. This skill migrates page content, not theme builder templates.
42
+ - **Popup/modal content** — Elementor popups are stored separately and are not included in page migration.
43
+ - **WooCommerce widgets** — Elementor Pro's product grid, cart, checkout widgets need Bricks' WooCommerce elements configured separately.
44
+ - **Pixel-perfect recreation** — Bricks uses a different rendering engine. Spacing and alignment will be close but may need manual fine-tuning.
45
+
46
+ ## Requirements
47
+
48
+ - Respira for WordPress plugin installed and connected
49
+ - MCP connection active (desktop or WebMCP)
50
+ - Elementor plugin active (to read source content)
51
+ - Bricks theme installed and active (to write target content)
52
+ - Read access to scan Elementor content
53
+ - Write access to create duplicates with Bricks content
54
+
55
+ ## Trigger Phrase
56
+
57
+ - "migrate elementor to bricks"
58
+
59
+ ## Alternative Triggers
60
+
61
+ - "convert elementor to bricks"
62
+ - "switch from elementor to bricks"
63
+ - "rebuild elementor pages in bricks"
64
+ - "move my site from elementor to bricks"
65
+ - "elementor to bricks migration"
66
+
67
+ ## Source Builder: Elementor
68
+
69
+ Elementor stores page content in the `_elementor_data` post meta field as a JSON string. The structure is a nested tree:
70
+
71
+ ```
72
+ Document
73
+ └─ Section (type: "section")
74
+ ├─ settings: { structure, layout, content_width, ... }
75
+ └─ elements: [
76
+ Column (type: "column")
77
+ ├─ settings: { _column_size, ... }
78
+ └─ elements: [
79
+ Widget (type: "widget", widgetType: "heading")
80
+ └─ settings: { title, size, header_size, ... }
81
+ ]
82
+ ]
83
+ ```
84
+
85
+ Key Elementor specifics:
86
+ - **Widget types** are in the `widgetType` field (e.g., `heading`, `text-editor`, `image`, `button`)
87
+ - **Responsive settings** use suffixes: `margin`, `margin_tablet`, `margin_mobile`
88
+ - **CSS** is cached in `_elementor_css` post meta — not needed for migration but useful for verification
89
+ - **Page settings** in `_elementor_page_settings` (page layout, hide title, etc.)
90
+ - **Global widgets** reference a template via `templateID` — must be resolved before mapping
91
+
92
+ Read Elementor content via `respira_extract_builder_content` with `builder=elementor`.
93
+
94
+ ## Target Builder: Bricks
95
+
96
+ Bricks stores content in `_bricks_page_content_2` as a JSON array. Each element is a flat object with parent references:
97
+
98
+ ```json
99
+ [
100
+ { "id": "abc123", "name": "section", "parent": 0, "settings": {...} },
101
+ { "id": "def456", "name": "container", "parent": "abc123", "settings": {...} },
102
+ { "id": "ghi789", "name": "heading", "parent": "def456", "settings": { "tag": "h2", "text": "..." } }
103
+ ]
104
+ ```
105
+
106
+ Key Bricks specifics:
107
+ - Elements use `name` (not widgetType): `section`, `container`, `heading`, `text-basic`, `image`, `button`, `video`, `icon`
108
+ - Parent-child relationships use `parent` field referencing parent `id`
109
+ - IDs are short alphanumeric strings (6 chars typical)
110
+ - Settings keys differ from Elementor (e.g., `tag` not `header_size`, `text` not `title`)
111
+ - Responsive settings use `_breakpoints` key within settings
112
+
113
+ Write Bricks content via `respira_inject_builder_content` with `builder=bricks`.
114
+
115
+ ## Execution Workflow
116
+
117
+ ### Phase 1: Pre-Migration Audit
118
+
119
+ 1. Verify Respira + MCP connection via `respira_get_site_context`. If unavailable, stop and show setup guidance.
120
+ 2. Confirm Elementor is active via `respira_list_plugins`.
121
+ 3. Confirm Bricks theme is installed via `respira_get_site_context`.
122
+ 4. Inventory and scope the source pages with `respira_find_builder_targets` (builder=elementor) — this gives a fast, ranked list of every Elementor-built 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.
123
+ 5. For each Elementor page, extract content via `respira_extract_builder_content` with `builder=elementor`
124
+ 6. Build an inventory:
125
+ - Total pages/posts using Elementor
126
+ - Widget types used across the site (frequency count)
127
+ - Third-party addon widgets detected (flagged for manual handling)
128
+ - Global widgets referenced
129
+ - Dynamic tags usage
130
+ - Estimated migration complexity per page (simple/moderate/complex)
131
+
132
+ ### Phase 2: Migration Plan
133
+
134
+ Present a clear migration plan:
135
+
136
+ ```
137
+ ## Elementor → Bricks Migration Plan
138
+
139
+ ### Site Inventory
140
+ - Total Elementor pages: X
141
+ - Total widgets to convert: X
142
+ - Auto-convertible widgets: X (Y%)
143
+ - Manual attention needed: X (Y%)
144
+
145
+ ### Widget Mapping Summary
146
+ | Elementor Widget | Bricks Element | Status |
147
+ |-----------------|----------------|--------|
148
+ | heading | heading | Auto |
149
+ | text-editor | text-basic | Auto |
150
+ | image | image | Auto |
151
+ | [addon widget] | — | Manual |
152
+
153
+ ### Page-by-Page Plan
154
+ 1. **[Page Title]** — X widgets, [simple/moderate/complex]
155
+ - Auto-convertible: X widgets
156
+ - Needs attention: [list any flagged widgets]
157
+ 2. ...
158
+
159
+ ### Flagged Items (Require Manual Work)
160
+ - [List of third-party widgets, dynamic tags, etc.]
161
+ ```
162
+
163
+ Ask for confirmation:
164
+ > Ready to proceed? I'll create Bricks duplicates of each page — your original Elementor pages stay untouched.
165
+ > 1. Migrate all pages
166
+ > 2. Migrate specific pages (pick from list)
167
+ > 3. Start with a test page first
168
+ > 4. Just keep this plan as reference
169
+
170
+ ### Phase 3: Page-by-Page Migration
171
+
172
+ For each approved page:
173
+
174
+ 1. Read full Elementor content via `respira_extract_builder_content` with `builder=elementor`
175
+ 2. Walk the Elementor JSON tree and map each widget:
176
+ - Convert Section → Bricks `section`
177
+ - Convert Column → Bricks `container` (assign parent)
178
+ - Convert each widget → appropriate Bricks element
179
+ - Map settings: typography, colors, spacing, backgrounds, borders
180
+ - Convert responsive suffixes (`_tablet`, `_mobile`) to Bricks breakpoint format
181
+ - Resolve global widgets to inline content
182
+ - Flag unmappable widgets with `<!-- MIGRATION NOTE: ... -->` comments
183
+ 3. Generate valid Bricks JSON array with proper `id`, `name`, `parent`, `settings`
184
+ 4. Create a duplicate page via `respira_create_page_duplicate` or `respira_create_post_duplicate`
185
+ 5. Before writing, take a snapshot with `respira_get_snapshot` so the duplicate's pre-write state can be restored if anything goes wrong
186
+ 6. Write Bricks content to the duplicate via `respira_inject_builder_content` with `builder=bricks`
187
+ 7. Surgical fix pass — if the injected page has validation issues (collapsed column widths, broken parent refs, a misconverted element), 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`
188
+ 8. Report status for this page before moving to next
189
+
190
+ ### Phase 4: Post-Migration Verification
191
+
192
+ 1. Summarize all migrations:
193
+ - Pages migrated successfully
194
+ - Total widgets converted
195
+ - Items flagged for manual attention
196
+ 2. For each migrated page, provide:
197
+ - Link to the Bricks duplicate in wp-admin
198
+ - List of any flagged widgets or settings that need manual review
199
+ - Comparison notes (what was preserved vs. what needs adjustment)
200
+ 3. Provide a post-migration checklist:
201
+ - [ ] Open each duplicate in Bricks editor and review layout
202
+ - [ ] Check responsive views (tablet, mobile)
203
+ - [ ] Verify all images and media load correctly
204
+ - [ ] Test all links and buttons
205
+ - [ ] Review flagged items and recreate manually
206
+ - [ ] Check forms and interactive elements
207
+ - [ ] Compare side-by-side with Elementor original
208
+
209
+ ## Safety Model
210
+
211
+ - Read-only analysis first — full Elementor content scan before any changes
212
+ - Explicit user confirmation required before creating any duplicates
213
+ - Original Elementor pages are never modified or deleted
214
+ - All migrated content goes to draft duplicates only
215
+ - Never auto-publishes migrated pages
216
+ - Takes a `respira_get_snapshot` of each duplicate before any write, so its pre-write state can be restored
217
+ - Two explicit rollback paths: restore the snapshot with `respira_restore_snapshot`, or delete the draft duplicates entirely with `respira_delete_page` / `respira_delete_post`
218
+ - Surgical fixes (`respira_find_element` + `respira_update_element`, or `respira_batch_update`) replace whole-page re-injection, so corrections stay scoped and reversible
219
+
220
+ ## Honest Disclaimer
221
+
222
+ This skill converts Elementor page content to Bricks Builder format and creates draft duplicates for review.
223
+
224
+ It cannot:
225
+ - Migrate third-party Elementor addon widgets automatically
226
+ - Recreate Elementor Pro dynamic tags or loop templates
227
+ - Guarantee pixel-perfect visual parity
228
+ - Migrate theme builder templates (headers, footers, archives)
229
+ - Convert Elementor popups or modal content
230
+ - Replace manual QA and visual review
231
+
232
+ It can:
233
+ - Convert 80-90% of standard Elementor widgets to Bricks equivalents
234
+ - Preserve text content, images, links, and basic styling
235
+ - Save days of manual page rebuilding
236
+ - Provide a clear map of what needs manual attention
237
+ - Keep your original pages completely safe during the process
238
+
239
+ ## Tooling
240
+
241
+ **Core WordPress tools**
242
+ - `respira_get_site_context`
243
+ - `respira_list_plugins`
244
+ - `respira_list_pages`
245
+ - `respira_list_posts`
246
+ - `respira_read_page`
247
+ - `respira_read_post`
248
+ - `respira_get_builder_info`
249
+ - `respira_extract_builder_content`
250
+ - `respira_inject_builder_content`
251
+ - `respira_find_builder_targets`
252
+ - `respira_create_page_duplicate`
253
+ - `respira_create_post_duplicate`
254
+
255
+ **Safety and precision tools**
256
+ - `respira_get_snapshot`
257
+ - `respira_restore_snapshot`
258
+ - `respira_find_element`
259
+ - `respira_update_element`
260
+ - `respira_batch_update`
261
+ - `respira_delete_page`
262
+ - `respira_delete_post`
263
+
264
+ ## Telemetry
265
+
266
+ After run completion, send fire-and-forget usage tracking to:
267
+
268
+ - `POST https://www.respira.press/api/skills/track-usage`
269
+
270
+ Include:
271
+ - `skill_slug = migrate-elementor-to-bricks`
272
+ - site/version context
273
+ - duration and success
274
+ - pages migrated, widgets converted, widgets flagged counts
275
+ - tools used
276
+
277
+ Never block user flow on telemetry failure.
278
+
279
+ ## Related Skills
280
+
281
+ - WordPress Site DNA (understand site structure before migrating)
282
+ - Internal Link Builder (rebuild internal links after migration)
283
+ - SEO & AEO Amplifier (verify SEO preservation post-migration)
284
+ - Technical Debt Audit (clean up post-migration)
285
+
286
+ ---
287
+
288
+ Built by Respira Team
289
+ https://respira.press/skills/migrate-elementor-to-bricks