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.
Create and manage Shopify products via the Admin GraphQL API or CSV import.
$ npx skills add jezweb/claude-skills --skill shopify-products -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jezweb/claude-skills shopify-products --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "shopify-products" agent skill from https://github.com/jezweb/claude-skills/tree/main/plugins/shopify/skills/shopify-products into .claude/skills/shopify-products/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify-products", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jezweb/claude-skills/tree/main/plugins/shopify/skills/shopify-productsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jezweb/claude-skills --skill shopify-products -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jezweb/claude-skills shopify-products --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/shopify/skills/shopify-products .agents/skills/shopify-products && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "shopify-products" agent skill from https://github.com/jezweb/claude-skills/tree/main/plugins/shopify/skills/shopify-products into .agents/skills/shopify-products/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify-products", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jezweb/claude-skills --skill shopify-products -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jezweb/claude-skills shopify-products --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/shopify/skills/shopify-products .cursor/skills/shopify-products && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "shopify-products" agent skill from https://github.com/jezweb/claude-skills/tree/main/plugins/shopify/skills/shopify-products into .cursor/skills/shopify-products/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify-products", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jezweb/claude-skills.git --path plugins/shopify/skills/shopify-products--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jezweb/claude-skills --skill shopify-products -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jezweb/claude-skills shopify-products --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/shopify/skills/shopify-products .gemini/skills/shopify-products && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "shopify-products" agent skill from https://github.com/jezweb/claude-skills/tree/main/plugins/shopify/skills/shopify-products into .gemini/skills/shopify-products/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify-products", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jezweb/claude-skills shopify-productsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jezweb/claude-skills --skill shopify-products -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/shopify/skills/shopify-products .github/skills/shopify-products && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "shopify-products" agent skill from https://github.com/jezweb/claude-skills/tree/main/plugins/shopify/skills/shopify-products into .github/skills/shopify-products/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify-products", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jezweb/claude-skills --skill shopify-products -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jezweb/claude-skills shopify-products --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/shopify/skills/shopify-products .opencode/skills/shopify-products && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "shopify-products" agent skill from https://github.com/jezweb/claude-skills/tree/main/plugins/shopify/skills/shopify-products into .opencode/skills/shopify-products/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify-products", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
shopify-productsCreate 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. 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.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1260fa7. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
claude-code-only
From compatibility in the SKILL.md frontmatter.
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.
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.
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.
The full file from jezweb/claude-skills at commit 1260fa7, republished under its MIT licence (© jezweb). 749 words, ~2,981 tokens.
.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.Create, update, and bulk-import Shopify products. Produces live products in the store via the GraphQL Admin API or CSV import.
shopify.config.json or .dev.varsDetermine 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 | Stock quantity | 50 |
Variant Price | Variant price | 29.95 |
Variant Compare At Price | Original price (for sales) | 39.95 |
Variant Requires Shipping | Physical product | TRUE |
Variant Taxable | Subject to tax | TRUE |
Image columns:
| Column | Description | Example |
|---|---|---|
Image Src | Image URL | https://example.com/img.jpg |
Image Position | Display order (1-based) | 1 |
Image Alt Text | Alt text for accessibility | Classic T-Shirt front view |
SEO columns:
| Column | Description | Example |
|---|---|---|
SEO Title | Page title tag | `Classic T-Shirt |
SEO Description | Meta description | Premium cotton tee in 5 colours |
The first row has the product title and details. Subsequent rows for the same product have only the Handle and variant-specific columns:
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,Published = TRUE makes the product immediately visibleassets/product-csv-template.csv if availablehttps://{store}.myshopify.com/admin/products/importUse browser automation to assist with the upload if needed.
Images require a two-step process -- staged upload then attach.
mutation stagedUploadsCreate($input: [StagedUploadInput!]!) {
stagedUploadsCreate(input: $input) {
stagedTargets {
url
resourceUrl
parameters { name value }
}
userErrors { field message }
}
}Input per file:
{
"filename": "product-image.jpg",
"mimeType": "image/jpeg",
"httpMethod": "POST",
"resource": "IMAGE"
}Then upload to the staged URL, and attach with productCreateMedia:
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:
{
"images": [
{ "src": "https://example.com/image.jpg", "alt": "Product front view" }
]
}mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {
collectionAddProducts(id: $id, productIds: $productIds) {
collection { title productsCount }
userErrors { field message }
}
}To find collection IDs:
{
collections(first: 50) {
edges {
node { id title handle productsCount }
}
}
}mutation inventorySetQuantities($input: InventorySetQuantitiesInput!) {
inventorySetQuantities(input: $input) {
inventoryAdjustmentGroup { reason }
userErrors { field message }
}
}Input:
{
"reason": "correction",
"name": "available",
"quantities": [{
"inventoryItemId": "gid://shopify/InventoryItem/123",
"locationId": "gid://shopify/Location/456",
"quantity": 50
}]
}To find location IDs:
{
locations(first: 10) {
edges {
node { id name isActive }
}
}
}Query back the created products to confirm:
{
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
New products default to DRAFT. To make them visible:
{ "status": "ACTIVE" }Always confirm with the user before setting status to ACTIVE.
Shopify allows max 100 variants per product and 3 options (e.g. Size, Colour, Material). If you need more, split into separate products.
Prices are strings, not numbers. Always quote them: "price": "29.95" not "price": 29.95.
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 insteadFor 50+ products via API, use Shopify's bulk operation:
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.
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
SKILL.md and 1 other file (assets) in plugins/shopify/skills/shopify-products of jezweb/claude-skills.
Open the folder on GitHubat commit 1260fa7
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Shopify Products this skilljezweb/claude-skills | 1.1k | — | ~3k | Automated safety check: Pass | MIT | |
| Spreadsheet QAOneWave-AI/claude-skills | 336 | — | ~2.2k | Automated safety check: Pass | MIT | |
| ShopifyShopify/Shopify-AI-Toolkit | 592 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Shopify Developmentdavila7/claude-code-templates | 33k | 7 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Shopify ExpertJeffallan/claude-skills | 12k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Blog TaxonomyAgriciDaniel/claude-blog | 2.3k | 1 repos | ~2.5k | Automated safety check: Pass | MIT |
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.
Shopify/Shopify-AI-Toolkit
Build anything on Shopify. An agent skill from Shopify/Shopify-AI-Toolkit.
davila7/claude-code-templates
Build Shopify apps, extensions, themes using GraphQL Admin API, Shopify CLI, Polaris UI, and Liquid.
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.
AgriciDaniel/claude-blog
Extract, suggest, and sync tags and categories for blog posts across all major CMS platforms.
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.
jezweb/claude-skills
Generate custom favicons from logos, text, or brand colours.
jezweb/claude-skills
Set up Tailwind v4 + shadcn/ui themed UI with dark mode. An agent skill from jezweb/claude-skills.
jezweb/claude-skills
Build conversational AI voice agents on the ElevenLabs platform.
jezweb/claude-skills
Test website responsiveness across viewport widths using browser automation.
jezweb/claude-skills
Build MCP servers in Python with FastMCP. An agent skill from jezweb/claude-skills.
jezweb/claude-skills
Prepare and publish GitHub releases. An agent skill from jezweb/claude-skills.
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.