cloudflare-api
Hit the Cloudflare REST API directly for operations that wrangler and MCP can't handle well. Bulk DNS, custom hostnames, email routing, cache purge, WAF rules,…
Create and manage Shopify products via the Admin GraphQL API or CSV import. Workflow: gather data, choose method, execute, verify. Use whenever the user wants to add products to Shopify, bulk-import a catalog from CSV/spreadsheet/URL, update variants or prices, manage inventory
$ npx -y skills add jezweb/claude-skills --skill shopify-products --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/shopify-productsContext preview
The summary Claude sees to decide when to auto-load this skill.
Create and manage Shopify products via the Admin GraphQL API or CSV import. Workflow: gather data, choose method, execute, verify. Use whenever the user wants to add products to Shopify, bulk-import a catalog from CSV/spreadsheet/URL, update variants or prices, manage inventory
name: shopify-products description: "Create and manage Shopify products via the Admin GraphQL API or CSV import. Workflow: gather data, choose method, execute, verify. Use whenever the user wants to add products to Shopify, bulk-import a catalog from CSV/spreadsheet/URL, update variants or prices, manage inventory quantities, upload product images, or assign products to collections." compatibility: claude-code-only
Create, update, and bulk-import Shopify products. Produces live products in the store via the GraphQL Admin API or CSV import.
Determine what the user wants to create or update:
Accept data from:
| Scenario | Method | |----------|--------| | 1-5 products | GraphQL mutations | | 6-20 products | GraphQL with batching | | 20+ products | CSV import via admin | | Updates to existing | GraphQL mutations | | Inventory adjustments | `inventorySetQuantities` mutation |
---
mutation productCreate($product: ProductCreateInput!) {
productCreate(product: $product) {
product {
id
title
handle
status
variants(first: 100) {
edges {
node { id title price sku inventoryQuantity }
}
}
}
userErrors { field message }
}
}Variables:
{
"product": {
"title": "Example T-Shirt",
"descriptionHtml": "<p>Premium cotton tee</p>",
"vendor": "My Brand",
"productType": "T-Shirts",
"tags": ["summer", "cotton"],
"status": "DRAFT",
"options": ["Size", "Colour"],
"variants": [
{
"optionValues": [
{"optionName": "Size", "name": "S"},
{"optionName": "Colour", "name": "Black"}
],
"price": "29.95",
"sku": "TSHIRT-S-BLK",
"inventoryPolicy": "DENY",
"inventoryItem": { "tracked": true }
},
{
"optionValues": [
{"optionName": "Size", "name": "M"},
{"optionName": "Colour", "name": "Black"}
],
"price": "29.95",
"sku": "TSHIRT-M-BLK"
},
{
"optionValues": [
{"optionName": "Size", "name": "L"},
{"optionName": "Colour", "name": "Black"}
],
"price": "29.95",
"sku": "TSHIRT-L-BLK"
}
],
"seo": {
"title": "Example T-Shirt | My Brand",
"description": "Premium cotton tee in multiple sizes"
}
}
}Curl example:
curl -s https://{store}/admin/api/2025-01/graphql.json \
-H "Content-Type: application/json" \
-H "X-Shopify-Access-Token: {token}" \
-d '{"query": "mutation productCreate($product: ProductCreateInput!) { productCreate(product: $product) { product { id title } userErrors { field message } } }", "variables": { ... }}'**Batching multiple products**: Create products sequentially with a short delay between each to respect rate limits (1,000 cost points/second).
mutation productUpdate($input: ProductInput!) {
productUpdate(input: $input) {
product { id title }
userErrors { field message }
}
}Variables include `id` (required) plus any fields to update.
mutation productDelete($input: ProductDeleteInput!) {
productDelete(input: $input) {
deletedProductId
userErrors { field message }
}
}Add variants to an existing product:
mutation productVariantsBulkCreate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {
productVariantsBulkCreate(productId: $productId, variants: $variants) {
productVariants { id title price }
userErrors { field message }
}
}mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {
productVariantsBulkUpdate(productId: $productId, variants: $variants) {
productVariants { id title price }
userErrors { field message }
}
}---
For 20+ products, generate a CSV and import through Shopify admin.
**Required columns:**
| Column | Description | Example | |--------|-------------|---------| | `Handle` | URL slug (unique per product) | `classic-tshirt` | | `Title` | Product name (first row per product) | `Classic T-Shirt` | | `Body (HTML)` | Description in HTML | `<p>Premium cotton</p>` | | `Vendor` | Brand or manufacturer | `My Brand` | | `Product Category` | Shopify standard taxonomy | `Apparel & Accessories > Clothing > Shirts & Tops` | | `Type` | Custom product type | `T-Shirts` | | `Tags` | Comma-separated tags | `summer, cotton, casual` | | `Published` | Whether product is visible | `TRUE` or `FALSE` |
**Variant columns:**
| Column | Description | Example | |--------|-------------|---------| | `Option1 Name` | First option name | `Size` | | `Option1 Value` | First option value | `Medium` | | `Option2 Name` | Second option name | `Colour` | | `Option2 Value` | Second option value | `Black` | | `Option3 Name` | Third option name | `Material` | | `Option3 Value` | Third option value | `Cotton` | | `Variant SKU` | Stock keeping unit | `TSHIRT-M-BLK` | | `Variant Grams` | Weight in grams | `200` | | `Variant Inventory Qty` | Sto
Production workflow skills for Claude Code. Each skill guides Claude through a recipe to produce tangible output — scaffolded projects, generated assets, professional documents, deployed services. Ten plugins of practical, production-oriented skills.
Repo: jezweb/claude-skills
Hit the Cloudflare REST API directly for operations that wrangler and MCP can't handle well. Bulk DNS, custom hostnames, email routing, cache purge, WAF rules,…
Scaffold and deploy Cloudflare Workers with Hono routing, Vite plugin, and Static Assets. Describe project, scaffold structure, configure bindings, deploy. Use…
Generate Drizzle ORM schemas for Cloudflare D1 databases with correct D1-specific patterns. Produces schema files, migration commands, type exports, and…
Cloudflare D1 migration workflow: generate with Drizzle, inspect SQL for gotchas, apply to local and remote, fix stuck migrations, handle partial failures. Use…
Generate database seed scripts with realistic sample data. Reads Drizzle schemas or SQL migrations, respects foreign key ordering, produces idempotent…
Scaffold Hono API routes for Cloudflare Workers. Produces route files, middleware, typed bindings, Zod validation, error handling, and API_ENDPOINTS.md…