From shopify-admin-skills
Detects duplicate SKUs or barcodes across all Shopify product variants via read-only GraphQL queries. Flags issues causing inventory sync failures and order routing errors.
npx claudepluginhub 40rty-ai/shopify-admin-skills --plugin shopify-admin-skillsThis skill uses the workspace's default tool permissions.
Scans all product variants and identifies duplicate SKUs or barcodes — two or more variants sharing the same identifier. Duplicate SKUs cause inventory sync failures, incorrect order routing, and accounting mismatches. Read-only — no mutations.
Audits Shopify products and variants for missing images or fewer than a minimum count using read-only GraphQL queries. Flags issues for merchandising and inventory cleanup.
Manages Shopify products, variants, collections, and inventory with GraphQL Admin API. Handles CRUD for catalog integrations, including product options and inventory quantities.
Creates and manages Shopify products via GraphQL Admin API or CSV imports. Bulk import/update variants, inventory, images, assign to collections.
Share bugs, ideas, or general feedback.
Scans all product variants and identifies duplicate SKUs or barcodes — two or more variants sharing the same identifier. Duplicate SKUs cause inventory sync failures, incorrect order routing, and accounting mismatches. Read-only — no mutations.
shopify store auth --store <domain> --scopes read_productsread_products| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| check_skus | bool | no | true | Check for duplicate SKUs |
| check_barcodes | bool | no | true | Check for duplicate barcodes |
| include_blank | bool | no | false | Flag variants with blank/null SKU |
| format | string | no | human | Output format: human or json |
ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.
OPERATION: productVariants — query
Inputs: first: 250, select sku, barcode, product { title }, pagination cursor
Expected output: All variants with SKU and barcode values; paginate until hasNextPage: false
Build in-memory map of sku → [variants] and barcode → [variants]
Report all keys with more than one variant (duplicates)
If include_blank: additionally flag variants where sku is null or empty string
# productVariants:query — validated against api_version 2025-01
query VariantIdentifiers($after: String) {
productVariants(first: 250, after: $after) {
edges {
node {
id
sku
barcode
title
product {
id
title
handle
status
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Duplicate SKU/Barcode Detector ║
║ Store: <store domain> ║
║ Started: <YYYY-MM-DD HH:MM UTC> ║
╚══════════════════════════════════════════════╝
After each step, emit:
[N/TOTAL] <QUERY|MUTATION> <OperationName>
→ Params: <brief summary of key inputs>
→ Result: <count or outcome>
On completion, emit:
For format: human (default):
══════════════════════════════════════════════
DUPLICATE SKU / BARCODE REPORT
Variants scanned: <n>
Duplicate SKUs found: <n> groups
Duplicate barcodes: <n> groups
Blank SKUs: <n>
Duplicate SKU groups:
SKU "ABC-123" — used by 2 variants:
Product A / Blue / L
Product B / Navy / XL
Output: duplicates_<date>.csv
══════════════════════════════════════════════
For format: json, emit:
{
"skill": "duplicate-sku-barcode-detector",
"store": "<domain>",
"variants_scanned": 0,
"duplicate_sku_groups": 0,
"duplicate_barcode_groups": 0,
"blank_skus": 0,
"output_file": "duplicates_<date>.csv"
}
CSV file duplicates_<YYYY-MM-DD>.csv with columns:
issue_type, duplicate_value, variant_id, product_title, variant_title, sku, barcode
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| No duplicates found | Clean catalog | Exit with ✅ no issues found |
include_blank: true to surface them.productVariantsBulkUpdate mutation to correct SKU values.