respira-builder-edits
Installation
SKILL.md
Respira Builder Edits
Common Mistakes
| Mistake | Correct approach |
|---|---|
Using respira_update_page to change a heading, image, or button |
Use respira_find_element then respira_update_element. The page tool replaces the whole body and the builder loses every node. |
Calling respira_update_page without checking respira_get_builder_info |
Always identify the builder first. Update_page destroys builder JSON on builder-managed pages. |
| Editing raw builder JSON by guessing field names | Read the current structure with respira_read_page, respira_find_element, or respira_get_builder_inline_schemas before writing. |
| Making large changes without a snapshot | Always call respira_create_page_duplicate before multi-element edits. |
| Assuming Divi 5 uses the same field as Divi 4 | Divi 4 stores shortcodes in post_content. Divi 5 stores blocks plus a per-node attrs._nodeId minted by the complexifier. By-id matching needs the _nodeId fallback (added in v7.0.30). |
Passing nested Divi 5 payloads through children only |
Divi 5 also accepts Divi-vocabulary aliases rows / cols / modules (folded in v7.0.32). Pre-v7.0.32 these silently dropped. |
| Using a non-existent Beaver Builder module type | The content_field_map covers Heading, Text, Button, Image, HTML, Video, Sidebar, and Box (added in v7.0.13). Unknown types fall through without an error. |
Passing flat updates like {"button_text": "Go"} |
Pass either flat OR {settings: {button_text: "Go"}}. v7.0.16 deep-merges both into the settings object. v7.0.19 extended this through Divi 4. v7.0.29 extended it through update_module and apply_builder_patch. |
Skipping respira_get_page_outline for "what is on this page" reads |
The outline is lighter than extract_builder_content and ships per-row child counts plus a primary heading. Use it before deciding which element to edit. |