Build a Shopify section (Liquid + JSON schema + snippets + assets) from a Figma frame, following Dawn/Horizon conventions. Use when the user asks to "build this Figma section in Shopify", "convert Figma to a Shopify section", "turn this design into a section", "implement this Figma frame on the theme", or pastes a Figma frame URL/node ID and asks for a section. The skill enforces a preview-and-verify loop: it wires the section into a template JSON, loads the preview URL through a browser MCP, screenshots each breakpoint, diffs against the Figma frame, and only then declares done.
How this skill is triggered — by the user, by Claude, or both
Slash command
/figma-to-shopify-section:figma-to-shopify-sectionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Build a Shopify section from a Figma frame. Read the theme first, follow its conventions, wire the new section into a template so it renders, preview through a browser MCP, and **verify visually against the Figma source before declaring done**.
examples/hero-banner/README.mdexamples/hero-banner/assets/section-hero-banner.cssexamples/hero-banner/locales/en.default.schema.jsonexamples/hero-banner/sections/hero-banner.liquidexamples/hero-banner/templates/index.preview.jsonreferences/css-and-tokens.mdreferences/gotchas.mdreferences/images-videos-fonts.mdreferences/javascript-patterns.mdreferences/prerequisites-and-setup.mdreferences/preview-and-verify.mdreferences/reading-the-theme.mdreferences/section-anatomy.mdreferences/sliders.mdreferences/translation-files.mdscripts/validate-section.shBuild a Shopify section from a Figma frame. Read the theme first, follow its conventions, wire the new section into a template so it renders, preview through a browser MCP, and verify visually against the Figma source before declaring done.
This skill is structured for progressive disclosure. Read the relevant references/*.md file for each phase rather than holding everything in working memory.
git add) and suggest a commit message. The developer commits.Run each phase in order. Don't skip ahead to "generate liquid" without doing the prerequisites and theme-reading phases — that's how the output drifts from the theme's conventions.
Verify the environment before reading any Figma data. Read references/prerequisites-and-setup.md for the full check.
Quick checklist:
mcp__figma* tools in the deferred-tools list or active tool list)mcp__claude-in-chrome__* or Chrome DevTools MCP)http://127.0.0.1:9292, but check shopify.theme.toml in the theme root for an override.If any fail, stop and tell the developer specifically what's missing and how to add it.
Before generating anything, read the theme's actual conventions rather than assuming Dawn defaults. Read references/reading-the-theme.md for the full procedure.
Minimum reads:
sections/*.liquid (closest to what you're about to build) — learn their CSS approach (BEM? Tailwind? CSS variables?), JS pattern, schema style.config/settings_schema.json — color schemes, typography tokens, container widths the theme exposes.templates/*.json similar to where this section will live — to know what JSON shape to emit when wiring it in.loading, srcset, sizes, playsinline conventions exactly.Write the section file, its CSS, its JS (only if it has interactive behavior), its snippets, and its asset SVGs. Read references/section-anatomy.md for the scaffold and schema rules. Read references/css-and-tokens.md, references/javascript-patterns.md, references/images-videos-fonts.md, references/translation-files.md for each concern.
Stamp the Figma frame ID at the top of the section file as a comment so re-runs can detect and update instead of duplicating:
{%- comment -%} figma:<file-key>:<node-id> {%- endcomment -%}
A section file alone renders nothing. Add it to a template JSON. Read references/preview-and-verify.md for the wiring rules and sample-content guidance.
Two strategies:
templates/index.json (or the contextually correct template) at the end of order. Simple, but pollutes the developer's real template.templates/page.preview-{section}.json and have the developer hit /pages/preview-{section}. Cleaner, but requires the page handle to exist.Default to direct insertion unless the developer says otherwise. Always populate sample content in the section's settings (heading, image alt, button label, etc.) drawn from the Figma text layers — empty defaults look broken in preview and produce a false negative diff.
The work isn't done until the verify loop passes. Read references/preview-and-verify.md § Verify for the full procedure.
In order:
#1A1A1A, Figma says #0F0F0F"; "vertical padding is 32px, Figma says 40px." Vague "looks close" is a fail.shopify theme check is installed, run it and report any new issues introduced.git add the new files and suggest a commit message. Don't commit.If the diff has any issue, iterate inside this phase — don't declare done with known mismatches.
style="color: #..." from Figma fills, hardcoding colors that should come from color_scheme settings.t:sections.foo.settings.bar strings in the editor.blocks/*.liquid in an app extension), different schema conventions.| File | When to read |
|---|---|
references/prerequisites-and-setup.md | Phase 1 — every run |
references/reading-the-theme.md | Phase 2 — every run |
references/section-anatomy.md | Phase 3 — every run |
references/css-and-tokens.md | Phase 3 — when generating CSS |
references/javascript-patterns.md | Phase 3 — when the section has interactive behavior |
references/images-videos-fonts.md | Phase 3 — when the section has images, videos, or text with custom fonts |
references/sliders.md | Phase 3 — when the section has a horizontal slider, carousel, or "swipe to see more" pattern |
references/translation-files.md | Phase 3 — every run (schema labels need translation entries) |
references/preview-and-verify.md | Phases 4 & 5 — every run |
references/gotchas.md | When something is broken or behaves oddly |
| Path | Purpose |
|---|---|
examples/hero-banner/ | Canonical generated section showing every convention. Read when in doubt about the expected output shape. |
scripts/validate-section.sh | Bash sanity check on a generated section. Run in Phase 5 before declaring done. Usage: bash <plugin-root>/skills/figma-to-shopify-section/scripts/validate-section.sh <theme-root> <section-name> |
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub haydonpowershopify/figma-to-shopify-section --plugin figma-to-shopify-section