Agent skill

Shopify Products

by jezweb in jezweb/claude-skills

Create and manage Shopify products via the Admin GraphQL API or CSV import.

MITAuto-check passedDocuments & Office

Install Shopify Products

skills CLI
$ npx skills add jezweb/claude-skills --skill shopify-products -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jezweb/claude-skills shopify-products --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/shopify/skills/shopify-products .claude/skills/shopify-products && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
shopify-products
GitHub stars
1.1k
Token cost
~3k tokens
SKILL.md length
749 words
Files
2 (incl. assets)
Skills in repo
52
Repo updated
First seen
Licence
MIT

At a glance

Create and manage Shopify products via the Admin GraphQL API or CSV import.

  • Works in 6 steps: Gather Product Data → Choose Method → Upload Product Images → …
  • The user wants to add products to Shopify
  • SKILL.md covers Prerequisites, Workflow, Critical Patterns and Asset Files
  • Calls curl

What it does

Shopify Products is an agent skill from jezweb/claude-skills. 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.

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including assets. Compatibility notes: claude-code-only

It sits in Documents & Office, covering GraphQL, CSV and tabular files and Excel spreadsheets. It works with Shopify and GraphQL. The repository describes itself as: Skills for Claude Code CLI such as full stack dev Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.

When your agent uses it

  • The user wants to add products to Shopify
  • Bulk-import a catalog from CSV/spreadsheet/URL
  • Update variants
  • Manage inventory quantities

Example prompts

  • “/shopify-products”

Requirements

  • Compatibility (from SKILL.md): claude-code-only

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Gather Product Data
  2. Choose Method
  3. Upload Product Images
  4. Assign to Collections
  5. Set Inventory
  6. Verify

What it can do on your machine

Read from SKILL.md and the folder at commit 1260fa7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    claude-code-only

    From compatibility in the SKILL.md frontmatter.

Context cost

Shopify Products loads about 3k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 749 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jezweb/claude-skills at commit 1260fa7, republished under its MIT licence (© jezweb). 749 words, ~2,981 tokens.

Download SKILL.mdSave it as .claude/skills/shopify-products/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
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

Shopify Products

Create, update, and bulk-import Shopify products. Produces live products in the store via the GraphQL Admin API or CSV import.

Prerequisites

  • Admin API access token (use the shopify-setup skill if not configured)
  • Store URL and API version from shopify.config.json or .dev.vars

Workflow

Step 1: Gather Product Data

Determine what the user wants to create or update:

  • Product basics: title, description (HTML), product type, vendor, tags
  • Variants: options (size, colour, material), prices, SKUs, inventory quantities
  • Images: URLs to upload, or local files
  • SEO: page title, meta description, URL handle
  • Organisation: collections, product type, tags

Accept data from:

  • Direct conversation (user describes products)
  • Spreadsheet/CSV file (user provides a file)
  • Website scraping (user provides a URL to extract from)
Step 2: Choose Method
ScenarioMethod
1-5 productsGraphQL mutations
6-20 productsGraphQL with batching
20+ productsCSV import via admin
Updates to existingGraphQL mutations
Inventory adjustmentsinventorySetQuantities mutation

productCreate
graphql
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:

json
{
  "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:

bash
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).

productUpdate
graphql
mutation productUpdate($input: ProductInput!) {
  productUpdate(input: $input) {
    product { id title }
    userErrors { field message }
  }
}

Variables include id (required) plus any fields to update.

productDelete
graphql
mutation productDelete($input: ProductDeleteInput!) {
  productDelete(input: $input) {
    deletedProductId
    userErrors { field message }
  }
}
productVariantsBulkCreate

Add variants to an existing product:

graphql
mutation productVariantsBulkCreate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {
  productVariantsBulkCreate(productId: $productId, variants: $variants) {
    productVariants { id title price }
    userErrors { field message }
  }
}
productVariantsBulkUpdate
graphql
mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {
  productVariantsBulkUpdate(productId: $productId, variants: $variants) {
    productVariants { id title price }
    userErrors { field message }
  }
}

Step 3b: Bulk Import via CSV

For 20+ products, generate a CSV and import through Shopify admin.

CSV Column Reference

Required columns:

ColumnDescriptionExample
HandleURL slug (unique per product)classic-tshirt
TitleProduct name (first row per product)Classic T-Shirt
Body (HTML)Description in HTML<p>Premium cotton</p>
VendorBrand or manufacturerMy Brand
Product CategoryShopify standard taxonomyApparel & Accessories > Clothing > Shirts & Tops
TypeCustom product typeT-Shirts
TagsComma-separated tagssummer, cotton, casual
PublishedWhether product is visibleTRUE or FALSE

Variant columns:

ColumnDescriptionExample
Option1 NameFirst option nameSize
Option1 ValueFirst option valueMedium
Option2 NameSecond option nameColour
Option2 ValueSecond option valueBlack
Option3 NameThird option nameMaterial
Option3 ValueThird option valueCotton
Variant SKUStock keeping unitTSHIRT-M-BLK
Variant GramsWeight in grams200
Variant Inventory QtyStock quantity50
Variant PriceVariant price29.95
Variant Compare At PriceOriginal price (for sales)39.95
Variant Requires ShippingPhysical productTRUE
Variant TaxableSubject to taxTRUE

Image columns:

ColumnDescriptionExample
Image SrcImage URLhttps://example.com/img.jpg
Image PositionDisplay order (1-based)1
Image Alt TextAlt text for accessibilityClassic T-Shirt front view

SEO columns:

ColumnDescriptionExample
SEO TitlePage title tag`Classic T-Shirt
SEO DescriptionMeta descriptionPremium cotton tee in 5 colours
Multi-Variant Row Format

The first row has the product title and details. Subsequent rows for the same product have only the Handle and variant-specific columns:

csv
Handle,Title,Body (HTML),Vendor,Type,Tags,Published,Option1 Name,Option1 Value,Variant SKU,Variant Price,Variant Inventory Qty,Image Src
classic-tshirt,Classic T-Shirt,<p>Premium cotton</p>,My Brand,T-Shirts,"summer,cotton",TRUE,Size,Small,TSH-S,29.95,50,https://example.com/tshirt.jpg
classic-tshirt,,,,,,,,Medium,TSH-M,29.95,75,
classic-tshirt,,,,,,,,Large,TSH-L,29.95,60,
Show full SKILL.md (309 more words)Show less
CSV Rules
  • UTF-8 encoding required
  • Maximum 50MB file size
  • Handle must be unique per product -- duplicate handles update existing products
  • Leave variant columns blank on variant rows for fields that don't change
  • Images can be on any row -- they're associated by Handle
  • Published = TRUE makes the product immediately visible
Import Steps
  1. Generate CSV using the column format above
  2. Use the template from assets/product-csv-template.csv if available
  3. Navigate to https://{store}.myshopify.com/admin/products/import
  4. Upload the CSV file
  5. Review the preview and confirm import

Use browser automation to assist with the upload if needed.


Step 4: Upload Product Images

Images require a two-step process -- staged upload then attach.

stagedUploadsCreate
graphql
mutation stagedUploadsCreate($input: [StagedUploadInput!]!) {
  stagedUploadsCreate(input: $input) {
    stagedTargets {
      url
      resourceUrl
      parameters { name value }
    }
    userErrors { field message }
  }
}

Input per file:

json
{
  "filename": "product-image.jpg",
  "mimeType": "image/jpeg",
  "httpMethod": "POST",
  "resource": "IMAGE"
}

Then upload to the staged URL, and attach with productCreateMedia:

productCreateMedia
graphql
mutation productCreateMedia($productId: ID!, $media: [CreateMediaInput!]!) {
  productCreateMedia(productId: $productId, media: $media) {
    media { alt status }
    mediaUserErrors { field message }
  }
}

Shortcut: If images are already hosted at a public URL, pass src directly in the product creation:

json
{
  "images": [
    { "src": "https://example.com/image.jpg", "alt": "Product front view" }
  ]
}

Step 5: Assign to Collections
collectionAddProducts
graphql
mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {
  collectionAddProducts(id: $id, productIds: $productIds) {
    collection { title productsCount }
    userErrors { field message }
  }
}

To find collection IDs:

graphql
{
  collections(first: 50) {
    edges {
      node { id title handle productsCount }
    }
  }
}

Step 6: Set Inventory
inventorySetQuantities
graphql
mutation inventorySetQuantities($input: InventorySetQuantitiesInput!) {
  inventorySetQuantities(input: $input) {
    inventoryAdjustmentGroup { reason }
    userErrors { field message }
  }
}

Input:

json
{
  "reason": "correction",
  "name": "available",
  "quantities": [{
    "inventoryItemId": "gid://shopify/InventoryItem/123",
    "locationId": "gid://shopify/Location/456",
    "quantity": 50
  }]
}

To find location IDs:

graphql
{
  locations(first: 10) {
    edges {
      node { id name isActive }
    }
  }
}

Step 7: Verify

Query back the created products to confirm:

graphql
{
  products(first: 50) {
    edges {
      node {
        id title handle status productType vendor
        variants(first: 10) {
          edges { node { id title price sku inventoryQuantity } }
        }
        images(first: 3) { edges { node { url altText } } }
      }
    }
    pageInfo { hasNextPage endCursor }
  }
}

Provide the admin URL for the user to review: https://{store}.myshopify.com/admin/products


Critical Patterns

Product Status

New products default to DRAFT. To make them visible:

json
{ "status": "ACTIVE" }

Always confirm with the user before setting status to ACTIVE.

Variant Limits

Shopify allows max 100 variants per product and 3 options (e.g. Size, Colour, Material). If you need more, split into separate products.

Price Formatting

Prices are strings, not numbers. Always quote them: "price": "29.95" not "price": 29.95.

HTML Descriptions

Product descriptions accept HTML. Keep it simple -- Shopify's editor handles basic tags:

  • <p>, <strong>, <em>, <ul>, <ol>, <li>, <h2>-<h6>
  • <a href="..."> for links
  • <img> is stripped -- use product images instead
Bulk Operations for Large Imports

For 50+ products via API, use Shopify's bulk operation:

graphql
mutation {
  bulkOperationRunMutation(
    mutation: "mutation ($input: ProductInput!) { productCreate(input: $input) { product { id } userErrors { message } } }"
    stagedUploadPath: "tmp/bulk-products.jsonl"
  ) {
    bulkOperation { id status }
    userErrors { message }
  }
}

This accepts a JSONL file with one product per line, processed asynchronously.


Asset Files

  • assets/product-csv-template.csv -- Blank CSV template with Shopify import headers

© jezweb, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (assets) in plugins/shopify/skills/shopify-products of jezweb/claude-skills.

  • SKILL.md
  • assets/product-csv-template.csv

Open the folder on GitHubat commit 1260fa7

Compare with similar skills

Shopify Products next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Shopify Products compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Shopify Products this skilljezweb/claude-skills1.1k—~3kAutomated safety check: PassMIT
Spreadsheet QAOneWave-AI/claude-skills336—~2.2kAutomated safety check: PassMIT
ShopifyShopify/Shopify-AI-Toolkit592—~4.2kAutomated safety check: PassMIT
Shopify Developmentdavila7/claude-code-templates33k7 repos~2.2kAutomated safety check: PassMIT
Shopify ExpertJeffallan/claude-skills12k—~1.8kAutomated safety check: PassMIT
Blog TaxonomyAgriciDaniel/claude-blog2.3k1 repos~2.5kAutomated safety check: PassMIT

Similar skills

  • Spreadsheet QA

    OneWave-AI/claude-skills

    Answers business questions about the user's own spreadsheet or data export (CSV, TSV, XLSX from a CRM, Shopify, Stripe, QuickBooks, ad platforms, HR or payroll systems) correctly and auditably.

    336 GitHub stars~2.2k tokensUpdated 8 days ago
    Documents & OfficeAuto-check passed
  • Shopify

    Shopify/Shopify-AI-Toolkit

    Official

    Build anything on Shopify. An agent skill from Shopify/Shopify-AI-Toolkit.

    592 GitHub stars~4.2k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • Shopify Development

    davila7/claude-code-templates

    Build Shopify apps, extensions, themes using GraphQL Admin API, Shopify CLI, Polaris UI, and Liquid.

    33k GitHub starsUsed in 7 repos~2.2k tokens
    Backend & APIsAuto-check passed
  • Shopify Expert

    Jeffallan/claude-skills

    Builds Shopify themes in Liquid, custom apps, Storefront API storefronts and checkout extensions, using the Shopify CLI to lint, run locally and deploy.

    12k GitHub stars~1.8k tokensUpdated 6 days ago
    Backend & APIsAuto-check passed
  • Blog Taxonomy

    AgriciDaniel/claude-blog

    Extract, suggest, and sync tags and categories for blog posts across all major CMS platforms.

    2.3k GitHub starsUsed in 1 repo~2.5k tokens
    Backend & APIsAuto-check passed
  • Shopify Developer Reference

    tech-leads-club/agent-skills

    Reference for Shopify work: Liquid templates, OS 2.0 themes, Admin and Storefront GraphQL APIs, apps, Functions and Hydrogen, on API version 2026-01.

    7k GitHub stars~1.9k tokensUpdated yesterday
    Backend & APIsAuto-check passed

More from jezweb/claude-skills

All 52 skills in this repo
  • Favicon Gen

    jezweb/claude-skills

    Generate custom favicons from logos, text, or brand colours.

    1.1k GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Tailwind Theme Builder

    jezweb/claude-skills

    Set up Tailwind v4 + shadcn/ui themed UI with dark mode. An agent skill from jezweb/claude-skills.

    1.1k GitHub starsUsed in 1 repo~3.2k tokens
    Auto-check passed
  • Elevenlabs Agents

    jezweb/claude-skills

    Build conversational AI voice agents on the ElevenLabs platform.

    1.1k GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Responsiveness Check

    jezweb/claude-skills

    Test website responsiveness across viewport widths using browser automation.

    1.1k GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • MCP Builder

    jezweb/claude-skills

    Build MCP servers in Python with FastMCP. An agent skill from jezweb/claude-skills.

    1.1k GitHub stars~3.1k tokensUpdated yesterday
    Auto-check: notes
  • GitHub Release

    jezweb/claude-skills

    Prepare and publish GitHub releases. An agent skill from jezweb/claude-skills.

    1.1k GitHub stars~944 tokensUpdated yesterday
    Auto-check: notes

Works with

Questions about Shopify Products

What does Shopify Products do?

Create and manage Shopify products via the Admin GraphQL API or CSV import. Shopify Products is an agent skill from jezweb/claude-skills. Create and manage Shopify products via the Admin GraphQL API or CSV import.

When should I use Shopify Products?

Shopify Products fits situations like: the user wants to add products to Shopify; bulk-import a catalog from CSV/spreadsheet/URL; update variants; manage inventory quantities.

How do I install Shopify Products in Claude Code?

Run `npx skills add jezweb/claude-skills --skill shopify-products -a claude-code`. Or copy the skill folder (plugins/shopify/skills/shopify-products in jezweb/claude-skills) into .claude/skills/shopify-products in your project. Claude Code loads it when a task matches its description.

How do I install Shopify Products in Codex?

Run `npx skills add jezweb/claude-skills --skill shopify-products -a codex`. Or copy the skill folder (plugins/shopify/skills/shopify-products in jezweb/claude-skills) into .agents/skills/shopify-products in your project. Codex loads it when a task matches its description.

Can I use Shopify Products in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jezweb/claude-skills --skill shopify-products -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/shopify-products, .gemini/skills/shopify-products, .github/skills/shopify-products and .opencode/skills/shopify-products in your project.

What does Shopify Products need to run?

Going by SKILL.md and its folder, Shopify Products needs the command-line tools its instructions call (curl). Compatibility (from SKILL.md): claude-code-only.

Does Shopify Products access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Shopify Products safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Shopify Products use?

Shopify Products is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Shopify Products use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Shopify Products?

Skills that share tags, products or a category with Shopify Products: Spreadsheet QA (OneWave-AI/claude-skills, 336 stars), Shopify (Shopify/Shopify-AI-Toolkit, 592 stars), Shopify Development (davila7/claude-code-templates, 33k stars) and Shopify Expert (Jeffallan/claude-skills, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Shopify Products?

jezweb (a GitHub user) maintains it in jezweb/claude-skills, which has 1,055 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on October 9, 2026.

Source: jezweb/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.