dist/codex/shopify-commerce/skills/shopify-setup/SKILL.md
Set up a Shopify development environment — Shopify CLI installation, Partner account, development stores, environment variables, project structures for themes, apps, and Hydrogen. Use when starting a new Shopify project.
npx skillsauth add orcaqubits/agentic-commerce-claude-plugins shopify-setupInstall 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/api/shopify-cli for CLI installation and commandssite:shopify.dev getting started app development for app setupsite:shopify.dev theme development getting started for theme setupAll Shopify development starts with a Partner account:
Two types:
The primary development tool:
npm install -g @shopify/cli or brew install shopify-clishopify auth loginshopify app init, shopify theme init, shopify hydrogen initshopify-app/
├── app/
│ ├── routes/
│ │ ├── app._index.tsx # App dashboard
│ │ ├── app.products.tsx # Products page
│ │ └── webhooks.tsx # Webhook handler
│ ├── shopify.server.ts # Shopify API client
│ └── root.tsx
├── extensions/
│ ├── my-function/ # Shopify Function
│ └── my-checkout-ui/ # Checkout UI extension
├── shopify.app.toml # App configuration
├── package.json
└── .env
my-theme/
├── assets/ # CSS, JS, images
├── config/
│ ├── settings_schema.json # Theme settings
│ └── settings_data.json # Default settings values
├── layout/
│ └── theme.liquid # Main layout
├── locales/ # Translations
├── sections/ # Reusable sections
├── snippets/ # Reusable Liquid snippets
├── templates/
│ ├── index.json # Homepage template
│ └── product.json # Product page template
└── .shopify/ # CLI metadata
hydrogen-storefront/
├── app/
│ ├── routes/
│ │ ├── ($locale)._index.tsx
│ │ ├── ($locale).products.$handle.tsx
│ │ └── ($locale).collections.$handle.tsx
│ ├── components/
│ ├── lib/
│ │ └── context.ts
│ └── root.tsx
├── server.ts
├── hydrogen.config.ts
├── remix.config.js
└── .env
SHOPIFY_API_KEY=your-api-key
SHOPIFY_API_SECRET=your-api-secret
SHOPIFY_APP_URL=https://your-app.example.com
SCOPES=read_products,write_products,read_orders
SHOPIFY_STORE=your-dev-store.myshopify.com
Never hardcode secrets — always use .env files (excluded from version control) or your platform's secret manager.
Do NOT use these deprecated tools:
shopify theme CLI commandsshopify app init or shopify theme init to scaffold projects — do not set up manuallyhttps://shopify.dev/docs/api/usage/versioning).env in .gitignoreshopify app dev for local development with hot reload and tunnelshopify theme check before deploying themesFetch the Shopify CLI docs and getting-started guides for exact commands and latest project structures before setting up.
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.