dist/codex/shopify-commerce/skills/shopify-themes/SKILL.md
Develop Shopify themes — file structure, Online Store 2.0, sections and blocks, settings schema, Dawn reference theme, Theme Check linting, asset pipeline, and theme deployment. Use when building or customizing Shopify themes.
npx skillsauth add orcaqubits/agentic-commerce-claude-plugins shopify-themesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch live docs:
https://shopify.dev/docs/storefronts/themes for theme documentationsite:shopify.dev theme architecture online store 2.0 for OS 2.0 patternssite:shopify.dev theme section schema blocks for section and block schemasite:github.com shopify dawn for Dawn reference theme sourcesite:shopify.dev settings schema json for theme settings input typestheme/
├── assets/ # CSS, JS, images, fonts
├── config/
│ ├── settings_schema.json # Theme-level settings definition
│ └── settings_data.json # Current settings values
├── layout/
│ ├── theme.liquid # Main layout (required)
│ └── password.liquid # Password page layout
├── locales/
│ ├── en.default.json # Default translations
│ └── fr.json # Additional languages
├── sections/ # Reusable, configurable sections
├── snippets/ # Reusable Liquid fragments
├── templates/
│ ├── index.json # Homepage
│ ├── product.json # Product page
│ ├── collection.json # Collection page
│ ├── page.json # Static page
│ ├── blog.json # Blog listing
│ ├── article.json # Blog article
│ ├── cart.json # Cart page
│ ├── 404.json # Not found
│ └── customers/
│ ├── login.json # Login page
│ └── account.json # Account dashboard
└── templates/*.json # All OS 2.0 templates are JSON
The current theme architecture:
{
"sections": {
"main": {
"type": "main-product",
"settings": {}
},
"recommendations": {
"type": "product-recommendations",
"settings": {
"heading": "You may also like"
}
}
},
"order": ["main", "recommendations"]
}
Templates reference section types by name. The order array controls rendering order. Merchants edit sections and their settings in the theme editor.
Sections are the building blocks of OS 2.0 themes:
.liquid file containing template + schema{% comment %} sections/featured-collection.liquid {% endcomment %}
<div class="featured-collection">
<h2>{{ section.settings.heading }}</h2>
{% for block in section.blocks %}
{% case block.type %}
{% when 'product_card' %}
<div {{ block.shopify_attributes }}>
{{ block.settings.product.title }}
</div>
{% when 'text' %}
<p {{ block.shopify_attributes }}>{{ block.settings.text }}</p>
{% endcase %}
{% endfor %}
</div>
{% schema %}
{
"name": "Featured Collection",
"settings": [
{
"type": "text",
"id": "heading",
"label": "Heading",
"default": "Featured Products"
},
{
"type": "collection",
"id": "collection",
"label": "Collection"
}
],
"blocks": [
{
"type": "product_card",
"name": "Product Card",
"settings": [
{ "type": "product", "id": "product", "label": "Product" }
]
},
{
"type": "text",
"name": "Text Block",
"settings": [
{ "type": "richtext", "id": "text", "label": "Text" }
]
}
],
"presets": [
{ "name": "Featured Collection" }
],
"enabled_on": {
"templates": ["index", "collection"]
}
}
{% endschema %}
| Type | Renders As | Example Use |
|------|-----------|-------------|
| text | Text input | Headings, labels |
| textarea | Multi-line text | Descriptions |
| richtext | Rich text editor | Formatted content |
| number | Number input | Counts, spacing |
| checkbox | Toggle | Show/hide elements |
| select | Dropdown | Layout options |
| color | Color picker | Theme colors |
| font_picker | Font selector | Typography |
| image_picker | Image upload | Hero images, logos |
| url | URL input | Links |
| product | Product picker | Featured products |
| collection | Collection picker | Featured collections |
| page | Page picker | Links to pages |
| blog | Blog picker | Blog references |
Fetch live docs for the full list of setting input types — new types are added (e.g.,
color_scheme,inline_richtext). Web-searchsite:shopify.dev theme input settings types.
Defines theme-wide settings organized into groups (tabs in theme editor):
name and array of settings{{ settings.setting_id }} in LiquidFetch live docs for current settings_schema.json structure — the format and available group types evolve.
Shopify's official reference theme:
https://github.com/Shopify/dawnshopify theme init — scaffold from Dawn or create blank themeshopify theme dev — local development server with hot reloadshopify theme check — lint for errors and best practicesshopify theme push — upload to development storeshopify theme publish — make theme liveLinting tool for Shopify themes:
shopify theme check or configure in CIFetch live docs: Web-search
site:shopify.dev theme checkfor current rules and configuration options.
shopify theme dev)shopify theme push/shopify theme pullimage_url with width parameters for responsive images{{ block.shopify_attributes }} on block wrappers for theme editor integrationFetch the Shopify theme documentation, Dawn source, and section schema reference for exact schema options, setting types, and best practices before implementing.
development
Build with Spree's headless Next.js storefront — the official `spree/storefront` repo (Next.js 16 App Router with Server Actions and Turbopack, React 19 Server Components, Tailwind CSS 4, TypeScript 5, `@spree/sdk`, Sentry), server-only auth (httpOnly JWT cookies + publishable key), MeiliSearch faceted catalog, one-page checkout with Apple/Google Pay/Klarna/Affirm/SEPA, multi-region market routing, GA4 + JSON-LD SEO, and Vercel/Docker deployment. Use when forking or customizing the storefront, or evaluating headless adoption.
tools
Build Spree extensions as Rails engines — gem scaffolding, `bin/rails g spree:extension`, mounting routes/migrations/assets, the modern `prepend` decorator pattern (`*_decorator.rb` with `self.prepended(base)`), generators (`spree:model_decorator`, `spree:controller_decorator`), the four customization surfaces in preference order (Events > Webhooks > Dependencies > Decorators), Spree::Dependencies for swapping service objects, gem release/versioning, and the deprecated Deface engine. Use when building a reusable Spree extension or adding non-trivial customization to an app.
development
Build with Spree's event bus and Webhooks 2.0 — `Spree::Events` publication, `Spree::Subscriber` DSL with `subscribes_to` and `on`, wildcard matching, lifecycle events (`{model}.created/.updated/.deleted` via `publishes_lifecycle_events`), the canonical event catalog (order.*, payment.*, shipment.*, product.*), Webhooks 2.0 endpoints, HMAC-SHA256 signing (`X-Spree-Webhook-Signature`), exponential-backoff retries, and Sidekiq job orchestration. Use when wiring event-driven business logic, building webhook consumers, or replacing ActiveSupport callback chains.
tools
Cross-cutting Spree development patterns — the customization preference hierarchy (Events > Webhooks > Dependencies > Decorators), `Spree::Dependencies` service-object swapping, the `_decorator.rb` + `prepend` + `self.prepended` idiom, idempotent subscribers and webhook receivers, multi-store scoping discipline, prefixed IDs, calculator polymorphism (shipping/promotion/tax share the base), service-object composition with `dry-monads` or simple results, why to avoid `class_eval` reopening and Deface, and Spree-on-Rails idioms (Hotwire/Turbo Stimulus, ActiveStorage, Action Cable, Sidekiq). Use when designing the architecture of a Spree extension or solving cross-cutting concerns.