---
name: theme-development
description: Build, customize, and deploy Shopify themes. Use this skill for creating new themes, modifying existing themes, understanding theme architecture, working with sections/blocks, and optimizing theme performance. Covers Skeleton theme, Dawn theme, layouts, templates, and the theme editor customization experience.
license: MIT
compatibility: Requires Shopify CLI, Node.js 18+, and a Shopify Partner account
metadata:
author: shopify-agent-skills
version: "1.0"
shopify-api-version: "2025-01"
---
# Shopify Theme Development
## When to use this skill
Use this skill when:
- Creating a new Shopify theme from scratch
- Modifying or customizing an existing theme
- Understanding Shopify theme architecture
- Working with sections, blocks, and templates
- Setting up the development environment
- Deploying themes to a Shopify store
- Optimizing theme performance
## Theme Architecture Overview
### Directory Structure
A Shopify theme must follow this structure:
```
your-theme/
├── assets/ # CSS, JS, images, fonts
├── config/ # Theme settings (settings_schema.json, settings_data.json)
├── layout/ # Layout files (theme.liquid required)
├── locales/ # Translation files (en.default.json, etc.)
├── sections/ # Reusable section components
├── snippets/ # Reusable code snippets
└── templates/ # Page templates (JSON or Liquid)
└── customers/ # Customer account templates
```
**Minimum Requirements:** Only `layout/theme.liquid` is required for upload.
### Component Hierarchy
```
Layout (theme.liquid)
└── Template (product.json)
└── Sections (product-details.liquid)
└── Blocks (price, quantity, add-to-cart)
└── Snippets (icon-cart.liquid)
```
## Getting Started
### 1. Initialize a New Theme
Use the Skeleton theme as a starting point:
```bash
# Clone the Skeleton theme
shopify theme init my-theme
# Navigate to your theme
cd my-theme
```
The [Skeleton theme](https://github.com/shopify/skeleton-theme) is minimal and follows Shopify best practices.
### 2. Start Development Server
```bash
# Start local development with hot reload
shopify theme dev
# Connect to a specific store
shopify theme dev --store your-store.myshopify.com
```
This opens a local preview URL with live reloading.
### 3. Push to Shopify
```bash
# Upload as a new theme
shopify theme push --unpublished
# Push to an existing theme
shopify theme push --theme THEME_ID
```
## Key Concepts
### Layouts
Layouts wrap all pages. The main layout file is `layout/theme.liquid`:
```liquid