Claude reads the Figma file and generates each top-level section as a HubSpot module. Because hs cms watch is running, every file Claude writes syncs to HubSpot instantly.
!
Always consult the HubSpot Fields Reference first
Before generating any module, Claude must read hubspot-fields-reference.md and familiarise itself with the valid field types, their exact property names, and default value shapes. HubSpot is strict — field types like video, videoplayer, form, file, embed, menu, simplemenu, link, cta, backgroundimage, icon and others each have their own required default structure, and misspelling a type or property key will cause silent upload failures or broken editor UI. Never guess field types — look them up every time.
For every top-level Figma frame, four files are produced:
fields.json — editable fields with defaults pulled from the Figma content
module.html — HubL template rendering the section
module.css — scoped styles
meta.json — with content_types array so the module is available on pages
Local Module Standard — Two-Tab Structure
Every Local Module must follow this structure. Global modules (header, footer, nav) are exempt — they have their own field shapes.
Content Tab:
- Layout dropdown as the first field — only if the design has layout variations
- Section-specific fields extracted from the Figma frame
section_id text field as the last field — drives anchor / jump links
Style Tab (mandatory, identical on every Local Module):
heading_tag — H1 / H2 / H3 / H4
background_type — Color / Image
background_color — dynamic choices from Style Guide colour tokens
background_image — visible only when type = Image
padding_top / padding_bottom — dynamic choices from Style Guide spacing scale
hubspot-fields-reference.md — all field types & properties
figma-to-hubspot-automation.md → Module Field Standards