shopify-catalog
Manage Shopify catalog — Product, Variant, and Option models, collections, metafields and metaobjects, inventory management, product taxonomy, bulk operations, and media. Use when working with Shopify product data.
Best use case
shopify-catalog is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Manage Shopify catalog — Product, Variant, and Option models, collections, metafields and metaobjects, inventory management, product taxonomy, bulk operations, and media. Use when working with Shopify product data.
Teams using shopify-catalog should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/shopify-catalog/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How shopify-catalog Compares
| Feature / Agent | shopify-catalog | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Manage Shopify catalog — Product, Variant, and Option models, collections, metafields and metaobjects, inventory management, product taxonomy, bulk operations, and media. Use when working with Shopify product data.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Shopify Catalog Management
## Before writing code
**Fetch live docs**:
1. Web-search `site:shopify.dev graphql admin api product` for product queries and mutations
2. Web-search `site:shopify.dev metafields metaobjects` for custom data APIs
3. Web-search `site:shopify.dev inventory management api` for inventory operations
4. Fetch `https://shopify.dev/docs/api/admin-graphql` and search for `productCreate`, `metafieldsSet`, `bulkOperationRunQuery` for current input schemas
5. Web-search `site:shopify.dev product variant options 2025` for latest variant limits and option changes
## Product Model
### Hierarchy
```
Product
├── Title, description, vendor, type, tags
├── Status: ACTIVE, DRAFT, ARCHIVED
├── Options (up to 3): Size, Color, Material
├── Variants (combinations of options)
│ ├── Price, compare-at price
│ ├── SKU, barcode
│ ├── Inventory (per location)
│ └── Weight, dimensions
├── Media (images, video, 3D models)
├── Metafields (custom data)
└── Collections (many-to-many)
```
### Options vs Variants
- **Options** define the axes of variation (e.g., Size, Color) — max 3 per product
- **Variants** are specific combinations of option values (e.g., Small/Red, Medium/Blue)
- A product with 3 sizes and 4 colors = 12 variants
- Each variant has its own price, SKU, inventory, and barcode
- Maximum 2,000 variants per product (increased from 100 in 2024 — verify current limit in live docs)
### Key Mutations
| Operation | Mutation | Notes |
|-----------|----------|-------|
| Create product | `productCreate` | Returns product ID + userErrors |
| Update product | `productUpdate` | Partial updates supported |
| Delete product | `productDelete` | Removes all variants and media |
| Create variant | `productVariantCreate` | Specify options + price + inventory |
| Bulk update variants | `productVariantsBulkUpdate` | Up to 100 variants per call |
| Manage media | `productCreateMedia` | Images, video, 3D models |
| Set metafield | `metafieldsSet` | Works on any resource |
> **Fetch live docs** for exact mutation input types and required fields — these evolve with each quarterly API version.
### Minimal Query Pattern
```graphql
# Pattern: paginated product query with cursor
# Fetch live docs for current available fields
query Products($first: Int!, $after: String) {
products(first: $first, after: $after) {
edges {
node {
id
title
handle
status
variants(first: 10) {
edges { node { id sku price } }
}
}
}
pageInfo { hasNextPage endCursor }
}
}
```
## Collections
Two types:
- **Manual collections** — merchant adds products individually
- **Smart collections** — rule-based automatic membership (tags, price, vendor, type, etc.)
Smart collection rules support: `tag`, `title`, `type`, `vendor`, `variant_price`, `variant_compare_at_price`, `variant_weight`, `variant_inventory`, `variant_title`.
## Metafields
Typed key-value pairs on any resource:
- Namespace + key = unique identifier (e.g., `custom.care_instructions`)
- Accessible from Liquid: `{{ product.metafields.custom.care_instructions.value }}`
- Configurable for Storefront API access via metafield definition
### Metafield Types
| Type | Example Value | Use Case |
|------|--------------|----------|
| `single_line_text` | `"Organic cotton"` | Short text |
| `multi_line_text` | `"Line 1\nLine 2"` | Descriptions |
| `number_integer` | `42` | Counts, quantities |
| `number_decimal` | `3.14` | Measurements |
| `boolean` | `true` | Flags |
| `date` | `"2025-01-15"` | Dates |
| `json` | `{"key": "value"}` | Structured data |
| `url` | `"https://..."` | Links |
| `color` | `"#FF0000"` | Colors |
| `file_reference` | GID | Images, files |
| `product_reference` | GID | Related products |
| `list.single_line_text` | `["a", "b"]` | Multi-value |
> **Fetch live docs** for the full list of metafield types — new types are added periodically (e.g., `money`, `rating`, `dimension`).
### Metafield Pattern
```graphql
# Pattern: set metafields on any resource
mutation MetafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
metafields { id namespace key value }
userErrors { field message }
}
}
# Fetch live docs for MetafieldsSetInput fields — ownerId, namespace, key, type, value
```
## Metaobjects
Standalone custom content types:
- Define schema with fields and types (similar to metafield types)
- Create entries (instances) via `metaobjectCreate`
- Usable in themes via section settings (dynamic sources)
- Queryable via Admin and Storefront APIs
- Use cases: size charts, FAQs, team members, custom lookbooks
> **Fetch live docs**: Web-search `site:shopify.dev metaobject definition create` for schema creation and entry management.
## Inventory
Multi-location inventory tracking:
- `inventoryAdjustQuantities` — adjust stock by delta (+/-)
- `inventorySetQuantities` — set absolute quantity
- Inventory items linked to variants (one-to-one)
- Fulfillment service integration for third-party warehouses
- Reason codes: `received`, `correction`, `shrinkage`, `promotion`, etc.
> **Fetch live docs** for `InventoryAdjustQuantitiesInput` fields — the input shape and available reason codes evolve.
## Product Taxonomy
Shopify's standard product taxonomy:
- Structured category hierarchy (e.g., Apparel > Shirts > T-Shirts)
- Used for: tax calculations, product feeds, Shop app categorization
- Set via `productCategory` field on products
- Recommended for all products for accurate tax and discoverability
## Bulk Operations
For large catalog operations (> 250 items):
### Export Pattern
1. `bulkOperationRunQuery` — submit a GraphQL query for bulk export
2. Poll with `currentBulkOperation` query until status is `COMPLETED`
3. Download JSONL result from the `url` field
4. Each line is a JSON object (parent-child relationships via `__parentId`)
### Import Pattern
1. `stagedUploadsCreate` — get a presigned URL
2. Upload JSONL file with product data
3. `bulkOperationRunMutation` — process the staged upload
4. Poll for completion
> **Fetch live docs**: Web-search `site:shopify.dev bulk operations` for current input format, JSONL structure, and polling patterns.
## Best Practices
- Use GraphQL mutations (not REST) for all catalog operations
- Set metafield types explicitly — untyped metafields are deprecated
- Use bulk operations for imports/exports over 250 items
- Use smart collections for dynamic grouping
- Optimize images before upload — Shopify CDN serves them but original size affects processing
- Use product taxonomy for accurate categorization
- Store custom product data in metafields, not tags (tags are untyped strings)
- Always check `userErrors` in mutation responses — 200 status does not mean success
- Use cursor pagination for product listing (not offset-based)
Fetch the Shopify product and metafield API documentation for exact mutation inputs, metafield types, and bulk operation patterns before implementing.Related Skills
woo-catalog
Work with WooCommerce catalog — product types, categories, tags, attributes, product queries, search, related products, and product visibility. Use when managing products programmatically or customizing the catalog display.
spree-catalog
Build and customize Spree's catalog — Products with Variants and OptionTypes/OptionValues, Taxonomies and Taxons (nested set), Properties, Images via ActiveStorage, multi-currency Prices, the v5.3+ PriceList feature for customer/segment overrides, MeiliSearch faceted search (v5.4+), product archiving/activation, CSV import/export, and SEO. Use when modeling products, customizing the catalog UI, indexing search, or importing inventory.
shopify-webhooks
Implement Shopify webhooks — subscription methods (HTTP, EventBridge, Pub/Sub, SQS), HMAC verification, mandatory GDPR webhooks, delivery methods, retry policy, and idempotency. Use when building event-driven Shopify integrations.
shopify-themes
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.
shopify-testing
Test Shopify applications — app testing with Vitest and Playwright, theme testing with Theme Check, Function testing, webhook testing, extension testing, and CI/CD pipelines. Use when writing tests for Shopify projects.
shopify-setup
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.
shopify-security
Secure Shopify applications — HMAC webhook verification, session token validation, OAuth scope management, Content Security Policy, GDPR mandatory webhooks, input validation, and secure coding practices. Use when implementing Shopify security features.
shopify-polaris
Build Shopify app UIs with Polaris — component categories, Web Components transition, React legacy components, App Design Guidelines, accessibility, @shopify/draggable, and design tokens. Use when building Shopify admin app interfaces.
shopify-performance
Optimize Shopify performance — Liquid rendering, asset optimization, CDN strategies, Core Web Vitals, Hydrogen caching, image optimization, preloading, and lazy loading. Use when improving Shopify store speed.
shopify-liquid
Write Shopify Liquid templates — objects, tags, filters, global objects, section schema, Online Store 2.0 JSON templates, and Liquid best practices. Use when customizing Shopify theme templates.
shopify-hydrogen
Build headless Shopify storefronts with Hydrogen — Remix-based framework, Oxygen deployment, storefront.query(), caching strategies, cart, customer accounts, SEO, and analytics. Use when building custom Shopify storefronts.
shopify-functions
Build Shopify Functions — serverless WebAssembly extensions for discounts, delivery customization, payment customization, cart validation, cart transforms, and order routing. Use when extending Shopify's backend logic.