Shopify Dawn theme customization workspace. Built following OS 2.0 best practices.
- Shopify CLI installed
- Cursor IDE (for AI-assisted development with rules)
- Authenticated to your Shopify store
shopify auth login --store bhautik-mehta.myshopify.comshopify theme listCopy the theme IDs and add them to shopify.theme.toml.
shopify theme dev --store bhautik-mehta.myshopify.comOpens a live preview URL at http://127.0.0.1:9292 with hot reload.
dawn-custom/
├── .cursor/
│ └── rules/ ← Cursor AI rules (auto-loaded)
│ ├── shopify-liquid.mdc ← Liquid coding standards
│ ├── theme-structure.mdc ← File organization rules
│ ├── javascript.mdc ← JS standards
│ ├── performance.mdc ← Core Web Vitals rules
│ ├── accessibility.mdc ← WCAG 2.1 AA rules
│ └── git-workflow.mdc ← Branch & commit standards
│
├── .shopify/
│ └── metafields.json ← Custom metafield reference
│
├── assets/
│ ├── custom-base.css ← ✏️ YOUR global CSS overrides
│ ├── custom-main.js ← ✏️ YOUR global JS
│ └── [Dawn's original assets...] ← 🔒 DO NOT TOUCH
│
├── config/
│ ├── settings_schema.json ← Add custom settings at end
│ └── settings_data.json ← 🔒 Managed by Shopify
│
├── layout/
│ ├── theme.liquid ← Load custom assets here
│ └── password.liquid ← 🔒 DO NOT TOUCH
│
├── locales/
│ ├── en.default.json ← Add new translation keys here
│ └── [other locales...]
│
├── sections/
│ ├── custom-hero-banner.liquid ← ✏️ Example custom section
│ └── [Dawn's original sections...] ← 🔒 DO NOT TOUCH
│
├── snippets/
│ ├── custom-product-badge.liquid ← ✏️ Example custom snippet
│ └── [Dawn's original snippets...] ← 🔒 DO NOT TOUCH
│
├── templates/ ← 🔒 DO NOT TOUCH (use JSON templates)
│
├── .gitignore
├── .shopifyignore
├── shopify.theme.toml ← Environment config
└── README.md
| Command | Description |
|---|---|
shopify theme dev |
Start dev server with hot reload |
shopify theme push |
Push to default theme |
shopify theme push --environment staging |
Push to staging theme |
shopify theme pull |
Pull latest from Shopify |
shopify theme list |
List all themes with IDs |
shopify theme check |
Lint Liquid code |
shopify theme package |
Create .zip for download |
- Create
sections/custom-[name].liquid - Add
{% schema %}block with presets - Section appears in Theme Editor → Add section
- Create
snippets/custom-[name].liquid - Use with
{% render 'custom-[name]', param: value %}
- Create
assets/custom-[name].css - Load in
layout/theme.liquid(scoped) orcustom-base.css(global)
- Create
assets/custom-[name].js - Load in
layout/theme.liquidwith{{ 'custom-[name].js' | asset_url | script_tag }}
- Never edit Dawn's original files — always create
custom-prefixed files - Never hardcode text — use
{{ 'key' | t }}anden.default.json - Never use
{% include %}— always use{% render %} - Never commit
settings_data.json— it's in.gitignore - Always test in theme editor — sections must work with Shopify's live editor