
Shopify Admin Skills
- 285 installs
- 173 repo stars
- Updated June 26, 2026
- 40rty-ai/shopify-admin-skills
shopify-admin-skills is a Claude Code master skill that routes a merchant request to the right sub-skill in the Shopify Admin Skills collection.
About
shopify-admin-skills is the master skill in the Shopify Admin Skills collection that routes a merchant request to the appropriate sub-skill across merchandising, support, marketing, operations, finance, and conversion. It identifies intent, picks the right sub-skill, confirms destructive bulk operations, and summarizes data rather than dumping JSON.
- Master collection routing to sub-skills for Shopify store operators
- Covers merchandising, support, marketing, operations, finance, and conversion
- Selects the right sub-skill from the loaded Shopify Admin Skills library
Shopify Admin Skills by the numbers
- 285 all-time installs (skills.sh)
- Ranked #497 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
shopify-admin-skills capabilities & compatibility
Free; needs the Shopify Admin Skills library and a Shopify CLI session
- Capabilities
- skill routing · shopify admin · store management
- Use cases
- orchestration
- Runs
- Runs locally
- Pricing
- Free
What shopify-admin-skills says it does
Master skill collection for Shopify store operators. Provides access to all merchandising, marketing, support, and operations capabilities.
Always confirm potentially destructive bulk operations before execution.
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-skillsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 285 |
|---|---|
| repo stars | ★ 173 |
| Last updated | June 26, 2026 |
| Repository | 40rty-ai/shopify-admin-skills ↗ |
What it does
A merchant loads it as the entry point to manage a Shopify store, and it dispatches to the right sub-skill for the task.
Who is it for?
Merchants who want a single entry point to route store-management tasks to the right Shopify sub-skill
Skip if: Executing a specific store task directly (it dispatches to sub-skills)
When should I use this skill?
A merchant asks you to manage their Shopify store and you need to pick the right sub-skill
What you get
The merchant intent is routed to the correct Shopify Admin sub-skill for execution.
- routing to the appropriate Shopify Admin sub-skill
- data summaries rather than raw JSON
By the numbers
- routes across 7 capability areas (merchandising, support, marketing, operations, finance/returns, conversion, order inte
Files
shopify-admin-skills
You are equipped with a comprehensive suite of Shopify admin skills. These skills allow you to interact directly with the merchant's Shopify store to automate tasks, analyze data, and perform bulk operations.
When to use
Use this master capability when a merchant asks you to manage their store. You have sub-skills available for:
- Merchandising (Inventory, Pricing, Products, Metafields, Variant Performance)
- Customer Support (Refunds, Reorders, Order Intel)
- Marketing (Loyalty, Abandoned Carts, Segments)
- Operations (Fulfillment, Routing, Dead Stock)
- Finance & Returns (Analysis, Cost accounting)
- Conversion Optimization (Traffic by Page, Discount Analysis, Top Products)
- Order Intelligence (Product Affinity & Cross-Sell, Repeat Purchase, Risk)
Instructions
1. Identify the user's intent. 2. Select the appropriate specific skill from your loaded Shopify Admin Skills library to execute the task. 3. Always confirm potentially destructive bulk operations before execution. 4. Provide summaries of data rather than raw JSON dumps.
{
"name": "shopify-admin-skills",
"owner": {
"name": "40rty"
},
"metadata": {
"description": "AI agent skills to operate your Shopify store with extended capabilities.",
"version": "1.1.0"
},
"plugins": [
{
"name": "shopify-admin-skills",
"source": "./",
"description": "AI agent skills to operate your Shopify store via native Admin GraphQL. 116 skills across marketing, merchandising, fulfillment, finance, support, and agentic-commerce readiness.",
"version": "1.1.0",
"author": {
"name": "40rty"
},
"homepage": "https://skills.40rty.ai",
"category": "ecommerce",
"tags": [
"shopify",
"ecommerce",
"graphql",
"admin-api",
"operator",
"inventory",
"orders",
"refunds",
"marketing",
"fulfillment",
"agentic",
"ai-readiness"
]
}
]
}
{
"name": "shopify-admin-skills",
"version": "1.1.0",
"description": "AI agent skills to operate your Shopify store via native Admin GraphQL. 116 skills across marketing, merchandising, fulfillment, finance, support, and agentic-commerce readiness.",
"author": {
"name": "40rty"
},
"homepage": "https://skills.40rty.ai",
"repository": "https://github.com/40RTY-ai/shopify-admin-skills",
"license": "MIT",
"keywords": [
"shopify",
"ecommerce",
"graphql",
"admin-api",
"operator",
"agents",
"store-management",
"inventory",
"orders",
"refunds"
],
"skills": [
"./skills/agentic",
"./skills/marketing",
"./skills/merchandising",
"./skills/customer-support",
"./skills/customer-ops",
"./skills/conversion-optimization",
"./skills/fulfillment-ops",
"./skills/finance",
"./skills/order-intelligence",
"./skills/returns",
"./skills/store-management"
]
}
name: Deploy to GitHub Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: site
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm install
- run: npm run build
- uses: actions/upload-pages-artifact@v3
with:
path: site/dist
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
_reference/
node_modules/
.DS_Store
*.log
.env
.env.*
dist/
.turbo/
.cache/
coverage/
*.tgz
.agents/
.claude/
skills-lock.json
shopify-admin-skills/
test-clone/
.vercel
Shopify Admin Skills — Claude Session Guide
Cold Start Checklist
Run this from the repo root in a terminal before starting Claude Code:
chmod +x scripts/dev-session.sh
./scripts/dev-session.sh [store-domain]
# Default store: 91pqhx-iy.myshopify.comThis script: authenticates with the store → verifies the connection → launches claude --plugin-dir .
---
Manual Cold Start (step by step)
1. Authenticate with the store (terminal — interactive)
shopify store auth --store 91pqhx-iy.myshopify.com \
--scopes read_orders,read_customers,read_products,write_products,read_checkouts,read_discounts,read_inventory2. Verify the connection
shopify store execute --store 91pqhx-iy.myshopify.com --query 'query { shop { name id } }'
# Expected: { "shop": { "name": "...", "id": "gid://shopify/Shop/..." } }3. Launch Claude Code with the local plugin
claude --plugin-dir /Users/tamired/ws/shopify-admin-skillsThe Shopify AI Toolkit plugin (shopify-plugin:*) is permanently installed and loads automatically.The shopify-admin-skills plugin (shopify-admin-skills:*) is loaded via--plugin-dir.
---
Validating Plugins Are Loaded
At the start of a session, Claude should confirm both plugins are active.
Shopify AI Toolkit — skills that should be available:
shopify-plugin:shopify-admin(GraphQL doc search + validation)shopify-plugin:shopify-admin-execution(store execution workflow)
shopify-admin-skills — skills that should be available:
shopify-admin-skills:abandoned-cart-recoveryshopify-admin-skills:bulk-price-adjustmentshopify-admin-skills:low-inventory-restockshopify-admin-skills:collection-reorganizationshopify-admin-skills:order-lookup-and-summaryshopify-admin-skills:refund-and-reordershopify-admin-skills:address-correctionshopify-admin-skills:discount-ab-analysisshopify-admin-skills:checkout-abandonment-reportshopify-admin-skills:top-product-performanceshopify-admin-skills:customer-win-backshopify-admin-skills:loyalty-segment-export
---
Store Details
| Field | Value |
|---|---|
| Store domain | 91pqhx-iy.myshopify.com |
| Shop GID | gid://shopify/Shop/81491230913 |
| Auth account | tamired@gmail.com |
| API version | 2025-01 |
---
Running a Skill
Every skill in skills/<role>/<name>/SKILL.md follows this pattern:
1. Use shopify-plugin:shopify-admin to validate the GraphQL operation 2. Use shopify-plugin:shopify-admin-execution to execute against the store 3. Always pass dry_run: true on first run for any mutation skill
Example — look up recent orders:
shopify store execute --store 91pqhx-iy.myshopify.com \
--query 'query { orders(first: 5, sortKey: CREATED_AT, reverse: true) { edges { node { id name displayFinancialStatus } } } }'---
Validation Script
pnpm validate:index
# Expected: ✅ GraphQL Operations Index valid — 12 skill(s), 15 operation(s) checked.Contributing to Shopify Operator Skills
Thank you for contributing! This repo maintains AI agent skills that teach Claude to operate Shopify stores programmatically — no apps, no UI navigation, native Shopify APIs only.
Prerequisites
- Node.js 18+, pnpm 9+
- A Shopify development store with CLI access (
shopify auth login) - Familiarity with Shopify Admin GraphQL API
Setup
git clone https://github.com/YOUR_USERNAME/shopify-admin-skills.git
cd shopify-admin-skills
pnpm install
pnpm validate:index # should pass on a clean cloneWriting a New Skill
1. Choose a workflow
Skills live under skills/<role>/ where role is one of: marketing | merchandising | customer-support | customer-ops | conversion-optimization | fulfillment-ops | finance | order-intelligence | returns | store-management | agentic
A valid skill must:
- Be achievable with native Shopify Admin GraphQL only (no 3rd-party APIs)
- Have a clear, verifiable output
- Be executable non-interactively via CLI
- Map to a workflow currently done via a popular Shopify app
2. Scaffold
mkdir -p skills/<role>/<workflow-slug>
cp docs/skill-template.md skills/<role>/<workflow-slug>/SKILL.md3. Fill in the template
Required frontmatter fields: name, role, description, toolkit, api_version, graphql_operations, status.
Use the shopify-admin skill from the Shopify AI Toolkit to search and validate every GraphQL operation before writing it into the skill.
The ## Session Tracking section must be copied verbatim from docs/skill-template.md. Do not paraphrase.
4. Update the operations index
Add a row to docs/graphql-operations-index.md for every operation in your skill's graphql_operations frontmatter:
| OperationName | query | 2025-01 | <role>/<workflow-slug> |5. Validate and smoke test
pnpm validate:index # must pass
pnpm lint # must pass
# Smoke test: run the skill's GraphQL operations against a dev store
shopify store execute --store <your-dev-store> --query '<query from SKILL.md>'Scope reference by skill type:
| Skill type | Required scopes |
|---|---|
| Orders / refunds / returns | read_orders + read_products (line items traverse the product graph) |
| Products / variants / inventory | read_products, read_inventory |
| Customers | read_customers |
| Analytics (ShopifyQL) | read_reports — not read_analytics |
| Mutations (pricing, tagging, fulfillment) | Corresponding write_* scope |
ShopifyQL notes (`FROM sessions` and analytics queries):
LIKEis not a supported ShopifyQL operator — filter string columns in-memory after fetching- Do not alias a column to a name that is already a reserved column name (e.g.,
count() AS sessionsfails becausesessionsalready exists) - Available metrics vary by data source; confirm by running the query and inspecting
tableData.columns— do not assume column names from documentation examples converted_sessionsandbounce_rateare not available inFROM sessions; useconversion_rate(returned as a decimal)- Skills using
shopifyqlQueryrequireread_reportsscope and Shopify Basic plan or above
6. Submit a PR
Branch name: skill/<role>/<workflow-slug> One skill per PR. CI must pass. Maintainer runs a smoke test before merge.
PR Checklist
- [ ]
pnpm validate:indexpasses - [ ]
pnpm lintpasses - [ ] All required frontmatter fields present
- [ ]
## Session Trackingsection copied verbatim from template - [ ]
docs/graphql-operations-index.mdupdated for all new operations - [ ] GraphQL validated against
api_versionusing Shopify AI Toolkit
GraphQL Operations Index
Cross-reference table mapping every Shopify Admin GraphQL operation used across operator skills to the skills that use it.
Maintained by: CI script (scripts/validate-operations-index.mjs). Do not edit operation names — they must exactly match the graphql_operations frontmatter in each SKILL.md.
| Operation | Type | API Version | Skills Using It |
|---|---|---|---|
| abandonedCheckouts | query | 2025-01 | conversion-optimization/shopify-admin-checkout-abandonment-report, marketing/shopify-admin-abandoned-cart-recovery |
| articles | query | 2025-01 | store-management/shopify-admin-file-storage-audit, store-management/shopify-admin-page-content-audit |
| collection | query | 2025-01 | merchandising/shopify-admin-collection-reorganization |
| collectionReorderProducts | mutation | 2025-01 | merchandising/shopify-admin-collection-reorganization |
| collections | query | 2025-01 | merchandising/shopify-admin-collection-membership-audit, merchandising/shopify-admin-seo-metadata-audit |
| companies | query | 2025-01 | customer-ops/shopify-admin-b2b-company-overview |
| companyLocations | query | 2025-01 | customer-ops/shopify-admin-b2b-company-overview |
| customer | query | 2025-01 | conversion-optimization/shopify-admin-gift-card-issuance, customer-support/shopify-admin-customer-merge, customer-support/shopify-admin-customer-timeline-export |
| customerMerge | mutation | 2025-01 | customer-support/shopify-admin-customer-merge |
| customers | query | 2025-01 | customer-ops/shopify-admin-churn-risk-scorer, customer-ops/shopify-admin-customer-cohort-analysis, customer-ops/shopify-admin-customer-note-bulk-annotator, customer-ops/shopify-admin-customer-spend-tier-tagger, customer-ops/shopify-admin-duplicate-customer-finder, customer-ops/shopify-admin-email-deliverability-audit, customer-ops/shopify-admin-marketing-consent-report, customer-ops/shopify-admin-rfm-customer-segmentation, customer-support/shopify-admin-bulk-customer-tag-update, finance/shopify-admin-average-order-value-trends, marketing/shopify-admin-customer-win-back, marketing/shopify-admin-loyalty-segment-export, marketing/shopify-admin-vip-customer-identifier, order-intelligence/shopify-admin-repeat-purchase-rate, returns/shopify-admin-return-fraud-detector |
| customerUpdate | mutation | 2025-01 | customer-ops/shopify-admin-chargeback-watchlist-tagger, customer-ops/shopify-admin-customer-note-bulk-annotator, customer-support/shopify-admin-bulk-customer-tag-update, customer-support/shopify-admin-customer-merge, marketing/shopify-admin-vip-customer-identifier |
| deliveryProfiles | query | 2025-01 | fulfillment-ops/shopify-admin-shipping-rate-audit |
| discountCodeBasicCreate | mutation | 2025-01 | marketing/shopify-admin-promo-code-bulk-generator |
| discountCodeBulkCreate | mutation | 2025-01 | marketing/shopify-admin-abandoned-cart-recovery |
| discountCodeDelete | mutation | 2025-01 | store-management/shopify-admin-discount-hygiene-cleanup |
| discountNodes | query | 2025-01 | conversion-optimization/shopify-admin-discount-ab-analysis, conversion-optimization/shopify-admin-discount-roi-calculator, store-management/shopify-admin-discount-hygiene-cleanup |
| draftOrderCreate | mutation | 2025-01 | customer-support/shopify-admin-refund-and-reorder |
| draftOrderDelete | mutation | 2025-01 | store-management/shopify-admin-draft-order-cleanup |
| draftOrders | query | 2025-01 | store-management/shopify-admin-draft-order-cleanup |
| files | query | 2025-01 | store-management/shopify-admin-file-storage-audit, agentic/shopify-admin-agentic-readiness-audit |
| fulfillmentCreate | mutation | 2025-01 | fulfillment-ops/shopify-admin-bulk-fulfillment-creation |
| fulfillmentOrderHold | mutation | 2025-01 | fulfillment-ops/shopify-admin-order-hold-and-release, order-intelligence/shopify-admin-high-risk-order-tagger |
| fulfillmentOrderMove | mutation | 2025-01 | fulfillment-ops/shopify-admin-fulfillment-location-routing |
| fulfillmentOrderReleaseHold | mutation | 2025-01 | fulfillment-ops/shopify-admin-order-hold-and-release |
| fulfillmentOrders | query | 2025-01 | finance/shopify-admin-revenue-by-location-report, fulfillment-ops/shopify-admin-bulk-fulfillment-creation, fulfillment-ops/shopify-admin-delivery-time-analysis, fulfillment-ops/shopify-admin-fulfillment-location-routing, fulfillment-ops/shopify-admin-fulfillment-status-digest, fulfillment-ops/shopify-admin-split-shipment-planner |
| fulfillmentOrderSplit | mutation | 2025-01 | fulfillment-ops/shopify-admin-split-shipment-planner |
| fulfillments | query | 2025-01 | fulfillment-ops/shopify-admin-carrier-performance-comparison |
| fulfillmentUpdate | mutation | 2025-01 | fulfillment-ops/shopify-admin-tracking-update-bulk |
| giftCardCreate | mutation | 2025-01 | conversion-optimization/shopify-admin-gift-card-issuance |
| giftCards | query | 2025-01 | finance/shopify-admin-gift-card-balance-report, finance/shopify-admin-gift-card-liability-report |
| inventoryAdjustQuantities | mutation | 2025-01 | merchandising/shopify-admin-inventory-adjustment, merchandising/shopify-admin-inventory-transfer-between-locations, returns/shopify-admin-restock-on-return |
| inventoryItems | query | 2025-01 | finance/shopify-admin-profit-margin-calculator, fulfillment-ops/shopify-admin-bundle-availability-check, merchandising/shopify-admin-cogs-completeness-audit, merchandising/shopify-admin-dead-stock-identifier, merchandising/shopify-admin-demand-forecast-reorder, merchandising/shopify-admin-inventory-aging-report, merchandising/shopify-admin-inventory-transfer-between-locations, merchandising/shopify-admin-inventory-valuation-report, merchandising/shopify-admin-multi-location-inventory-audit, merchandising/shopify-admin-stock-velocity-report, returns/shopify-admin-return-cost-attribution |
| inventoryLevels | query | 2025-01 | merchandising/shopify-admin-demand-forecast-reorder |
| locations | query | 2025-01 | finance/shopify-admin-revenue-by-location-report, merchandising/shopify-admin-inventory-transfer-between-locations, merchandising/shopify-admin-inventory-valuation-report, merchandising/shopify-admin-multi-location-inventory-audit |
| metafieldDefinitions | query | 2025-01 | store-management/shopify-admin-metafield-definition-audit, agentic/shopify-admin-agentic-readiness-audit, agentic/shopify-admin-agentic-metafields-setup |
| metafieldsDelete | mutation | 2025-01 | merchandising/shopify-admin-metafield-bulk-update |
| metafieldsSet | mutation | 2025-01 | merchandising/shopify-admin-metafield-bulk-update, agentic/shopify-admin-agentic-metafields-setup |
| order | query | 2025-01 | customer-support/shopify-admin-address-correction, customer-support/shopify-admin-refund-and-reorder, customer-support/shopify-admin-return-initiation, fulfillment-ops/shopify-admin-cancel-and-restock, fulfillment-ops/shopify-admin-tracking-update-bulk |
| orderCancel | mutation | 2025-01 | fulfillment-ops/shopify-admin-cancel-and-restock |
| orders | query | 2025-01 | conversion-optimization/shopify-admin-cross-sell-opportunity-finder, conversion-optimization/shopify-admin-discount-ab-analysis, conversion-optimization/shopify-admin-discount-roi-calculator, conversion-optimization/shopify-admin-frequently-bought-together, conversion-optimization/shopify-admin-gift-message-extraction, conversion-optimization/shopify-admin-post-purchase-survey-trigger, conversion-optimization/shopify-admin-top-product-performance, customer-ops/shopify-admin-chargeback-watchlist-tagger, customer-ops/shopify-admin-churn-risk-scorer, customer-ops/shopify-admin-customer-acquisition-cost-by-source, customer-ops/shopify-admin-customer-cohort-analysis, customer-ops/shopify-admin-customer-spend-tier-tagger, customer-ops/shopify-admin-rfm-customer-segmentation, customer-support/shopify-admin-customer-timeline-export, customer-support/shopify-admin-order-lookup-and-summary, customer-support/shopify-admin-wismo-bulk-status-report, finance/shopify-admin-average-order-value-trends, finance/shopify-admin-discount-cost-trend, finance/shopify-admin-payout-reconciliation, finance/shopify-admin-profit-margin-calculator, finance/shopify-admin-refund-rate-analysis, finance/shopify-admin-revenue-by-location-report, finance/shopify-admin-sales-by-channel-report, finance/shopify-admin-shipping-cost-analysis, finance/shopify-admin-tax-liability-summary, fulfillment-ops/shopify-admin-carrier-performance-comparison, fulfillment-ops/shopify-admin-delivery-time-analysis, fulfillment-ops/shopify-admin-fulfillment-status-digest, fulfillment-ops/shopify-admin-order-hold-and-release, marketing/shopify-admin-referral-source-attribution, marketing/shopify-admin-vip-customer-identifier, merchandising/shopify-admin-dead-stock-identifier, merchandising/shopify-admin-demand-forecast-reorder, merchandising/shopify-admin-inventory-aging-report, merchandising/shopify-admin-price-elasticity-analyzer, merchandising/shopify-admin-stock-velocity-report, order-intelligence/shopify-admin-automated-order-tagger, order-intelligence/shopify-admin-high-risk-order-tagger, order-intelligence/shopify-admin-order-attribution-report, order-intelligence/shopify-admin-order-cancellation-analysis, order-intelligence/shopify-admin-order-notes-and-attributes-report, order-intelligence/shopify-admin-order-risk-report, order-intelligence/shopify-admin-partial-refund-pattern-detector, order-intelligence/shopify-admin-product-affinity-cross-sell, order-intelligence/shopify-admin-repeat-purchase-rate, merchandising/shopify-admin-variant-performance-report, returns/shopify-admin-exchange-vs-refund-ratio, returns/shopify-admin-return-cost-attribution, returns/shopify-admin-return-fraud-detector, returns/shopify-admin-return-processing-sla, returns/shopify-admin-return-reason-analysis |
| orderUpdate | mutation | 2025-01 | customer-support/shopify-admin-address-correction, order-intelligence/shopify-admin-automated-order-tagger |
| pages | query | 2025-01 | merchandising/shopify-admin-seo-metadata-audit, store-management/shopify-admin-file-storage-audit, store-management/shopify-admin-page-content-audit |
| products | query | 2025-01 | conversion-optimization/shopify-admin-cross-sell-opportunity-finder, conversion-optimization/shopify-admin-frequently-bought-together, fulfillment-ops/shopify-admin-bundle-availability-check, merchandising/shopify-admin-bulk-price-adjustment, merchandising/shopify-admin-collection-membership-audit, merchandising/shopify-admin-metafield-bulk-update, merchandising/shopify-admin-price-elasticity-analyzer, merchandising/shopify-admin-product-data-completeness-score, merchandising/shopify-admin-product-image-audit, merchandising/shopify-admin-product-lifecycle-manager, merchandising/shopify-admin-product-tag-bulk-update, merchandising/shopify-admin-seo-metadata-audit, merchandising/shopify-admin-variant-option-normalizer, merchandising/shopify-admin-vendor-consolidation, store-management/shopify-admin-file-storage-audit, store-management/shopify-admin-publication-channel-audit, agentic/shopify-admin-agentic-readiness-audit, agentic/shopify-admin-agentic-product-jsonld-backfill, agentic/shopify-admin-agentic-image-alt-text, agentic/shopify-admin-agentic-description-enrichment, agentic/shopify-admin-agentic-metafields-setup, agentic/shopify-admin-agentic-product-taxonomy, agentic/shopify-admin-agentic-llms-txt |
| productUpdate | mutation | 2025-01 | merchandising/shopify-admin-product-lifecycle-manager, agentic/shopify-admin-agentic-product-jsonld-backfill, agentic/shopify-admin-agentic-description-enrichment, agentic/shopify-admin-agentic-product-taxonomy |
| productVariants | query | 2025-01 | finance/shopify-admin-profit-margin-calculator, fulfillment-ops/shopify-admin-bundle-availability-check, merchandising/shopify-admin-cogs-completeness-audit, merchandising/shopify-admin-compare-at-price-cleanup, merchandising/shopify-admin-dead-stock-identifier, merchandising/shopify-admin-demand-forecast-reorder, merchandising/shopify-admin-duplicate-sku-barcode-detector, merchandising/shopify-admin-inventory-adjustment, merchandising/shopify-admin-inventory-aging-report, merchandising/shopify-admin-inventory-valuation-report, merchandising/shopify-admin-low-inventory-restock, merchandising/shopify-admin-price-elasticity-analyzer, merchandising/shopify-admin-stock-velocity-report, merchandising/shopify-admin-variant-performance-report |
| shopifyqlQuery | query | 2025-01 | conversion-optimization/shopify-admin-traffic-by-page-report |
| productVariantsBulkUpdate | mutation | 2025-01 | merchandising/shopify-admin-bulk-price-adjustment, merchandising/shopify-admin-compare-at-price-cleanup, merchandising/shopify-admin-variant-option-normalizer, agentic/shopify-admin-agentic-product-jsonld-backfill |
| publications | query | 2025-01 | store-management/shopify-admin-publication-channel-audit |
| refundCreate | mutation | 2025-01 | customer-support/shopify-admin-refund-and-reorder |
| returnCreate | mutation | 2025-01 | customer-support/shopify-admin-return-initiation |
| returns | query | 2025-01 | returns/shopify-admin-exchange-vs-refund-ratio, returns/shopify-admin-restock-on-return, returns/shopify-admin-return-cost-attribution, returns/shopify-admin-return-fraud-detector, returns/shopify-admin-return-processing-sla, returns/shopify-admin-return-reason-analysis |
| shopifyPaymentsAccount | query | 2025-01 | finance/shopify-admin-payout-reconciliation |
| staffMembers | query | 2025-01 | store-management/shopify-admin-staff-account-audit |
| subscriptionContracts | query | 2025-01 | finance/shopify-admin-subscription-mrr-tracker |
| tagsAdd | mutation | 2025-01 | customer-ops/shopify-admin-customer-spend-tier-tagger, marketing/shopify-admin-abandoned-cart-recovery, marketing/shopify-admin-customer-win-back, marketing/shopify-admin-loyalty-segment-export, merchandising/shopify-admin-product-tag-bulk-update, order-intelligence/shopify-admin-high-risk-order-tagger |
| tagsRemove | mutation | 2025-01 | merchandising/shopify-admin-product-tag-bulk-update |
| urlRedirects | query | 2025-01 | store-management/shopify-admin-url-redirect-audit |
| fileUpdate | mutation | 2025-01 | agentic/shopify-admin-agentic-image-alt-text |
| metafieldDefinitionCreate | mutation | 2025-01 | agentic/shopify-admin-agentic-metafields-setup |
| shop | query | 2025-01 | agentic/shopify-admin-agentic-readiness-audit, agentic/shopify-admin-agentic-llms-txt, agentic/shopify-admin-agentic-organization-schema, agentic/shopify-admin-agentic-policy-readability |
| shopPolicyUpdate | mutation | 2025-01 | agentic/shopify-admin-agentic-policy-readability |
| taxonomy | query | 2025-01 | agentic/shopify-admin-agentic-product-taxonomy |
| themeFilesUpsert | mutation | 2025-01 | agentic/shopify-admin-agentic-crawler-access, agentic/shopify-admin-agentic-llms-txt, agentic/shopify-admin-agentic-organization-schema |
| themes | query | 2025-01 | agentic/shopify-admin-agentic-readiness-audit, agentic/shopify-admin-agentic-crawler-access, agentic/shopify-admin-agentic-organization-schema |
Purpose
One paragraph describing the business outcome, when to use this skill, and what it replaces.
Prerequisites
- Authenticated Shopify CLI session (
shopify auth login --store <domain>) - Required API scopes:
read_orders,write_discounts(list all required scopes)
Parameters
All skills accept these universal parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| format | string | no | human | Output format: human (default) or json |
| dry_run | bool | no | false | Preview mutations without executing |
Skill-specific parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| param_name | type | yes/no | default | Description |
Safety
⚠️ Include this section only for skills with irreversible mutations (financial, bulk data changes).
Steps N and N execute mutations that cannot be undone. Run with dry_run: true to preview results before committing.
Workflow Steps
1. OPERATION: OperationName — query Inputs: field, filter Expected output: Description of returned data and how it feeds step 2
2. OPERATION: OperationName — mutation Inputs: data from step 1 Expected output: Confirmation of change, IDs of affected records
GraphQL Operations
# OperationName:query — validated against api_version 2025-01
query OperationName($first: Int!, $after: String, $query: String) {
fieldName(first: $first, after: $after, query: $query) {
edges {
node {
id
# ... fields
}
}
pageInfo {
hasNextPage
endCursor
}
}
}# OperationName:mutation — validated against api_version 2025-01
mutation OperationName($input: InputType!) {
mutationField(input: $input) {
result {
id
}
userErrors {
field
message
}
}
}Session Tracking
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: <skill name> ║
║ 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>If dry_run: true, prefix every mutation step with [DRY RUN] and do not execute it.
On completion, emit:
For format: human (default):
══════════════════════════════════════════════
OUTCOME SUMMARY
<Metric label>: <value>
Errors: 0
Output: <filename or "none">
══════════════════════════════════════════════For format: json, emit:
{
"skill": "<skill-slug>",
"store": "<domain>",
"started_at": "<ISO8601>",
"completed_at": "<ISO8601>",
"dry_run": false,
"steps": [
{
"step": 1,
"operation": "<OperationName>",
"type": "query",
"params_summary": "<string>",
"result_summary": "<string>",
"skipped": false
}
],
"outcome": {
"metric_key": 0,
"errors": 0,
"output_file": null
}
}Output Format
Describe what Claude produces: CSV export fields, JSON structure, or summary only.
Error Handling
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit | Wait 2s, retry up to 3 times |
userErrors non-empty | Invalid input | Log each error message, skip affected record, continue |
Best Practices
- Tip 1 — specific, actionable, non-obvious.
- Tip 2 — includes concrete action (e.g., "Run with
dry_run: truefirst — discount codes cannot be bulk-deleted via API"). - Tip 3
MIT License
Copyright (c) 2026 40RTY-ai & Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
{
"name": "shopify-admin-skills",
"version": "1.1.0",
"description": "Community-maintained AI agent skills for operating Shopify stores \u2014 apps, workflows, optimization, and more",
"private": true,
"license": "MIT",
"author": "40RTY-ai & Community Contributors",
"repository": {
"type": "git",
"url": "https://github.com/40RTY-ai/shopify-admin-skills.git"
},
"homepage": "https://github.com/40RTY-ai/shopify-admin-skills#readme",
"bugs": {
"url": "https://github.com/40RTY-ai/shopify-admin-skills/issues"
},
"keywords": [
"shopify",
"ai-toolkit",
"mcp",
"skills",
"claude",
"cursor",
"codex",
"gemini",
"agents",
"ecommerce",
"store-management",
"merchant"
],
"engines": {
"node": ">=18.0.0"
},
"packageManager": "pnpm@9.15.0",
"scripts": {
"validate": "node scripts/validate-skill.mjs",
"lint": "node scripts/lint-skills.mjs",
"build:catalog": "node scripts/build-catalog.mjs",
"scaffold": "bash templates/skill-scaffold.sh",
"validate:index": "node scripts/validate-operations-index.mjs",
"test": "node scripts/validate-skill.mjs && node scripts/lint-skills.mjs"
},
"devDependencies": {
"gray-matter": "^4.0.3",
"glob": "^11.0.0",
"markdownlint": "^0.37.0",
"markdownlint-cli2": "^0.17.0"
}
}
packages:
- 'site'
<h1 align="center">Shopify Admin Skills.</h1>
<img width="1788" height="744" alt="Screenshot 2026-04-13 at 14 25 45 (1)" src="https://github.com/user-attachments/assets/e52d1227-dddf-4e19-a5b9-5f7379caf8e0" />
<p align="center"> <strong>AI agent skills + scheduled routines to operate your Shopify store.</strong> <br /> 116 skills across 11 categories, plus 21 always-on routines that monitor inventory, fraud, fulfillment, finance, customer health, and AI-agent readiness on a schedule. </p>
<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License" /></a> <a href="CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square" alt="PRs Welcome" /></a> </p>
---
Install
Any agent (Cursor, Cline, Copilot, Gemini CLI, Codex)
npx skills add 40RTY-ai/shopify-admin-skillsClaude Code
/plugin marketplace add 40RTY-ai/shopify-admin-skills
/plugin install shopify-admin-skills@shopify-admin-skillsSkills
116 skills across 11 categories:
| Category | Skills | Examples |
|---|---|---|
| Agentic | 10 | AI-agent readiness — remediates agentiq.report findings: product JSON-LD & GTIN backfill, image alt-text, metafields, taxonomy, AI-crawler access, llms.txt, Organization schema, policy readability |
| Marketing | 6 | Cart recovery, win-back, loyalty, VIP, promo codes, attribution |
| Merchandising | 25 | Pricing, stock, demand forecast, variant performance, COGS, vendor consolidation |
| Customer Support | 8 | Order lookup, refunds, returns, address correction, customer merge, timeline export |
| Customer Ops | 11 | RFM, churn risk, CAC, deliverability, chargeback watch, cohort, B2B |
| Conversion | 10 | FBT, cross-sell, discount ROI, traffic-by-page, post-purchase survey, gift messages |
| Fulfillment Ops | 11 | Digest, routing, tracking, SLA, shipping rates, carrier comparison, bundles |
| Finance | 12 | Profit, payout recon, gift card liability, MRR, discount trend, tax, AOV |
| Order Intelligence | 9 | Fraud, auto-tagging, attribution, cancellation, product affinity, partial-refund patterns |
| Returns | 6 | Reason analysis, fraud detection, restock, cost attribution, SLA |
| Store Management | 8 | Redirects, drafts, discounts, pages, staff audit, file storage, metafield definitions |
Routines
20 ready-to-use scheduled routines that run autonomously on Claude Code's infrastructure. Each routine fires on a cron schedule, invokes one or more skills, and reports back via Slack or file output.
Daily / High-frequency: morning-store-briefing, low-stock-watchdog, abandoned-cart-patrol, fraud-sentinel, fulfillment-sla-watchdog, price-anomaly-scanner, vip-customer-watcher, payout-recon-daily, new-product-launch-tracker
Weekly: weekly-business-review, return-fraud-watch, discount-roi-weekly, catalog-health-weekly, customer-churn-watch, seo-coverage-weekly, dead-stock-weekly
Monthly / Quarterly: monthly-financial-close, staff-activity-monthly, inventory-aging-monthly, quarterly-business-review
Smart install (recommended)
Don't dump all 20 routines on a store that doesn't need them. The smart installer profiles your store, asks 3 questions, and installs only the routines that fit.
See routines/INSTALL.md for the smart install prompt, or routines/README.md for all install paths and per-routine details.
How it works
Skills — each is a SKILL.md file that teaches your agent a complete workflow against the Shopify Admin GraphQL API. When invoked, the agent queries your store, previews mutations with dry_run: true, executes on confirmation, and reports exactly what happened.
Routines — pre-built scheduled-task definitions that combine skills into automated workflows. Install once via Claude Code, then they fire on schedule autonomously — no machine needs to stay on.
Contributing
PRs welcome. See CONTRIBUTING.md.
License
MIT
Abandoned Cart Patrol
Schedule: Every 4 hours (6 times/day) Runtime: ~2-3 minutes Slack channel: #sales-recovery
Prompt
You are the cart recovery agent for 91pqhx-iy.myshopify.com.
1. Use shopify-admin-abandoned-cart-recovery to find checkouts abandoned in the last 4 hours.
2. Use shopify-admin-checkout-abandonment-report with days_back: 1 for daily context.
Compile and send a Slack message to #sales-recovery:
🛒 ABANDONED CART PATROL — [TIME]
━━━━━━━━━━━━━━━━━━━━━━━
New abandoned carts (last 4h): [count]
Total value at risk: $[amount]
HIGH VALUE (>$100):
• $[amount] — [customer email] — [products]
Cart created: [time] — Abandoned: [duration] ago
MEDIUM VALUE ($50-100):
• $[amount] — [customer email] — [products]
24h SUMMARY:
Total abandoned: [n] | Total value: $[amount]
Recovery rate: [pct]% (if data available)
If no abandoned carts in window:
✅ No abandoned carts in the last 4 hours.Agentic Readiness Monitor
Schedule: Every Monday at 9:00 AM local time Runtime: ~3-5 minutes Slack channel: #agentic-readiness
Catches the silent regressions that quietly make a store invisible to AI shoppers — a CSV product import that drops barcodes, a new collection of images with blank alt text, a theme update that resets robots.txt.liquid, or policies replaced with an image. It re-scores readiness and only pings you when something moved.
Prompt
You are the store operator for <STORE>.myshopify.com. Run the weekly Agentic Commerce Readiness check.
1. Use shopify-admin-agentic-readiness-audit with format: json to score the store across the five pillars
(Discoverable, Trusted, Readable, Structured, Matchable).
2. Compare the overall score and each pillar to last week's snapshot stored at
.agentic/readiness-last.json (if it exists). Compute the deltas.
3. Persist this week's result to .agentic/readiness-last.json for next week.
4. Decide whether to alert:
- ALERT if the overall score dropped by ≥ 3 points, OR any pillar dropped, OR any
previously-passing audit_signal regressed (e.g. barcode coverage fell, robots rules lost,
a policy went missing/image-only).
- Otherwise post a one-line "steady" status.
5. Send to #agentic-readiness:
🤖 AGENTIC READINESS — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
Score: [N]/100 ([▲/▼ delta] vs last week) · Grade [X]
Pillars: Discoverable [n] · Trusted [n] · Readable [n] · Structured [n] · Matchable [n]
[If regressions:]
⚠️ New gaps this week:
• [finding] → run `[fix skill]`
[else:]
✅ Steady — no new gaps.
For each regression, name the exact agentic skill that fixes it (from the readiness audit's routing),
so the operator can run it in one click.Replace<STORE>with your store domain before installing. Install with/schedule(Claude Code) or
node scripts/install-routines.mjs --schedule.Catalog Health Weekly
Schedule: Every Wednesday at 7:00 AM local time Runtime: ~5-8 minutes Slack channel: #catalog-ops
Prompt
You are the catalog quality auditor. Weekly comprehensive product data scan.
1. shopify-admin-product-data-completeness-score
2. shopify-admin-product-image-audit
3. shopify-admin-cogs-completeness-audit
4. shopify-admin-duplicate-sku-barcode-detector
5. shopify-admin-vendor-consolidation
6. shopify-admin-variant-option-normalizer
Send to #catalog-ops:
📋 CATALOG HEALTH REPORT — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
OVERALL HEALTH SCORE: [pct]%
DATA QUALITY ISSUES:
Missing images: [n] products
Missing alt text: [n] images
Missing COGS: [n] variants ⚠️ blocks margin calc
Missing vendor: [n] products
Missing product type: [n] products
Duplicate SKUs: [n] pairs
Duplicate barcodes: [n] pairs
Vendor name variants: [n] groups (e.g., "Acme" vs "ACME")
Variant option drift: [n] products with inconsistent options
WEEK OVER WEEK:
Health score: [pct]% ([↑/↓] vs last week)
New issues: [n]
Resolved: [n]
TOP PRIORITY:
1. [Most-impacting issue]
2. [Second most]
3. [Third]
Save full audit to catalog_health_[date].csv
If health score >90%: ✅ Catalog in good shape.Customer Churn Watch
Schedule: Every Wednesday at 8:00 AM local time Runtime: ~5-7 minutes Slack channel: #customer-health
Prompt
You are the customer retention analyst for 91pqhx-iy.myshopify.com.
Run a comprehensive customer health check:
1. Use shopify-admin-churn-risk-scorer with days_back: 365 to score all
repeat customers by churn probability.
2. Use shopify-admin-rfm-customer-segmentation with days_back: 365 to
classify customers into RFM segments.
3. Use shopify-admin-customer-win-back to identify lapsed customers
who haven't purchased in 90+ days but had been regular buyers.
4. Use shopify-admin-repeat-purchase-rate with days_back: 30 to check
recent repeat purchase trends.
5. Use shopify-admin-customer-cohort-analysis with days_back: 90 to see
how recent cohorts are retaining.
Compile and send to #customer-health:
👥 CUSTOMER CHURN WATCH — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
📊 CUSTOMER HEALTH SUMMARY:
Champions: [n] customers ($[total spend])
Loyal: [n] customers ($[total spend])
At Risk: [n] customers ($[total spend]) ⚠️
Likely Churned: [n] customers ($[total spend]) 🔴
💰 REVENUE AT RISK:
$[amount]/year from at-risk customers
$[amount]/year from likely churned
🎯 TOP WIN-BACK TARGETS (highest value at-risk):
1. [name] ([email]) — $[lifetime spend], last order [date]
Avg purchase interval: [n] days, overdue by [n] days
2. [name] ([email]) — $[lifetime spend], last order [date]
3. [name] ([email]) — $[lifetime spend], last order [date]
📈 RETENTION TRENDS:
30-day repeat rate: [pct]% ([↑/↓] vs prior month)
Latest cohort 30-day retention: [pct]%
RECOMMENDED ACTIONS:
• Send personalized win-back to top [n] at-risk customers
• Review product/service issues if churn rate increasing
• Consider loyalty incentive for "About to Sleep" segment
Save detailed churn report to churn_watch_[date].csvDead Stock Weekly
Schedule: Every Sunday at 9:00 AM local time Runtime: ~3-5 minutes Slack channel: #inventory-strategy
Prompt
You are the dead-stock analyst. Identify SKUs that are tying up capital
without selling, and generate a markdown action list.
1. shopify-admin-dead-stock-identifier (days_back: 90, min_quantity: 1)
2. shopify-admin-stock-velocity-report (days_back: 30) — cross-reference
3. shopify-admin-inventory-valuation-report — for total context
Compile and send to #inventory-strategy:
💀 DEAD STOCK REPORT — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
Total SKUs in stock: [n]
Dead stock SKUs (90d): [n] ([pct]%)
Capital tied up: $[amount]
TOP CANDIDATES BY VALUE:
1. [product] [SKU] — Qty: [n], Value: $[amount], Last sold: [date or never]
2. [product] [SKU] — Qty: [n], Value: $[amount]
3. [...]
RECOMMENDED ACTIONS:
• [N] SKUs eligible for 30-50% markdown
• [N] SKUs eligible for clearance (>180 days dead)
• [N] SKUs to consider liquidation/return-to-vendor
Save markdown candidates to dead_stock_[date].csv
If dead stock is <5% of total: ✅ Inventory healthy.Discount ROI Weekly
Schedule: Every Tuesday at 9:00 AM local time Runtime: ~3-5 minutes Slack channel: #marketing
Prompt
You are the discount performance analyst. Review last week's discount code ROI.
1. shopify-admin-discount-roi-calculator (days_back: 7)
2. shopify-admin-discount-hygiene-cleanup (dry_run: true) — identify stale codes
3. shopify-admin-discount-ab-analysis (days_back: 14) — comparison context
Send to #marketing:
💸 DISCOUNT ROI REVIEW — Week of [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
Active codes used: [n]
Total discount $: $[amount]
Attributed revenue: $[amount]
Net ROI: [pct]%
TOP PERFORMERS:
"[code]" ROI: [pct]% Rev: $[amount] New customers: [pct]%
UNDERPERFORMERS:
"[code]" ROI: [pct]% ⚠️ cannibalization risk
"[code]" ROI: [pct]% ⚠️ high discount $ for low attributed revenue
STALE CODES (no use in 30+ days):
[N] codes — recommend cleanup with discount-hygiene-cleanup
If all codes performing well: ✅ Discount portfolio healthy.Fraud Sentinel
Schedule: Every 2 hours (12 times/day) Runtime: ~2-3 minutes Slack channel: #fraud-alerts
Prompt
You are the fraud detection agent for 91pqhx-iy.myshopify.com.
1. Use shopify-admin-order-risk-report with days_back: 1 to scan recent orders.
2. For any orders flagged as HIGH risk, use shopify-admin-high-risk-order-tagger
with dry_run: true to preview what would be tagged.
3. If high-risk orders are found, send an URGENT Slack message to #fraud-alerts:
🚨 FRAUD ALERT — [TIME]
━━━━━━━━━━━━━━━━━━━━━━━
HIGH RISK ORDERS DETECTED:
Order [#name] — $[amount]
• Risk level: HIGH
• Risk indicators: [list from Shopify risk analysis]
• Customer: [name] ([email])
• Shipping: [address summary]
• Payment: [payment method]
• RECOMMENDED ACTION: HOLD for manual review
[Repeat for each high-risk order]
MEDIUM RISK (monitor):
• [n] orders flagged as medium risk — total value: $[amount]
If no high-risk orders found, do NOT send a message (silent pass).
Only alert on HIGH risk to avoid alert fatigue.Fulfillment SLA Watchdog
Schedule: Weekdays at 10:00 AM and 3:00 PM local time Runtime: ~3-4 minutes Slack channel: #fulfillment-ops
Prompt
You are the fulfillment SLA monitor for 91pqhx-iy.myshopify.com.
1. Use shopify-admin-fulfillment-status-digest to get all unfulfilled and
partially fulfilled orders. Flag any unfulfilled for more than 48 hours.
2. Use shopify-admin-delivery-time-analysis with days_back: 14 to check
for shipments in transit longer than 5 business days.
3. If partially fulfilled orders exist, use shopify-admin-split-shipment-planner
to check if remaining items can be shipped from alternate locations.
Compile and send to #fulfillment-ops:
📦 FULFILLMENT SLA CHECK — [DATE] [TIME]
━━━━━━━━━━━━━━━━━━━━━━━
🔴 OVERDUE (unfulfilled >48h):
• Order [#name] — placed [date] ([hours]h ago)
Items: [product list]
Customer: [name]
⚠️ STALLED IN TRANSIT (>5 business days):
• Order [#name] — shipped [date], carrier: [carrier]
Tracking: [number]
Destination: [city, country]
📊 FULFILLMENT STATS:
Pending fulfillment: [n] orders
Avg time to fulfill: [n] hours
On-time rate (48h SLA): [pct]%
If everything on track:
✅ All fulfillments within SLA — [n] orders pending, oldest is [hours]h.Smart Routine Onboarding
This is the recommended install path. Instead of dumping all 20 routines onto a store, this prompt guides Claude to interview the merchant, profile the store, and install only the routines that fit.
Paste the prompt below into Claude Code.
---
The Prompt
You are the routine onboarding concierge for this Shopify store. Your job is
to install ONLY the routines that fit this specific store — not all of them.
Be conversational, terse, and never dump options without context.
═══════════════════════════════════════════════════════════════
PHASE 1 — STORE PROFILING (silent, before asking anything)
═══════════════════════════════════════════════════════════════
Run these read-only Shopify queries silently. DO NOT show raw output.
Build a one-line profile internally:
1. shop { name, currencyCode, plan { displayName }, billingAddress { country } }
2. orders(first: 50, sortKey: CREATED_AT, reverse: true) — last 30 days count
3. orders(first: 1, query: "created_at:>=<NOW-7d>") with totalPrice — recent volume
4. productVariants(first: 1) — total catalog size via pageInfo
5. customers(first: 1) — total customer count via pageInfo
6. locations(first: 10) — count of fulfillment locations
7. subscriptionContracts(first: 1) — does store sell subscriptions?
8. shopifyPaymentsAccount — does store use Shopify Payments?
9. publications(first: 10) — number of sales channels
10. discountNodes(first: 5) — does store run discounts?
Profile the store on these axes:
- Volume: low (<10 orders/day) | mid (10-100/day) | high (100+/day)
- Catalog size: small (<100 SKUs) | mid (100-1000) | large (1000+)
- Locations: single | multi-location
- Subscriptions: yes | no
- Payments: Shopify Payments | external
- Channels: online-only | omnichannel
- Country/tax: single | international
═══════════════════════════════════════════════════════════════
PHASE 2 — INTERVIEW (conversational, one question at a time)
═══════════════════════════════════════════════════════════════
Greet the merchant by store name. State the profile in ONE sentence:
"I see [store name] is a [volume]-volume, [catalog-size]-catalog store
with [N] locations[, subscription products][, on Shopify Payments].
Let me ask 3 questions to tailor your routines."
Ask these 3 questions ONE AT A TIME, waiting for each answer:
Q1. "What's keeping you up at night? Pick top 2:
a) Running out of stock / overstock
b) Fraud and chargebacks
c) Customer churn / retention
d) Slow fulfillment
e) Pricing & discount waste
f) Just want a daily summary"
Q2. "Where should alerts go?
a) Slack channel (which?)
b) Email
c) Just keep them in Claude Code (no external notifications)"
Q3. "How aggressive? More routines = more visibility but more API cost.
a) Minimal (3-4 routines) — just essentials
b) Standard (6-8 routines) — recommended
c) Comprehensive (10+) — for power users"
═══════════════════════════════════════════════════════════════
PHASE 3 — RECOMMEND (curated, with reasoning)
═══════════════════════════════════════════════════════════════
Build the recommended routine list using this scoring logic:
ALWAYS recommend (regardless of answers):
• morning-store-briefing — every store benefits from a daily digest
Score each candidate routine 0-3 based on store profile + Q1 picks:
• low-stock-watchdog +2 if catalog mid/large, +2 if Q1.a picked
• abandoned-cart-patrol +1 if volume mid/high, +2 if Q1.f
• fraud-sentinel +3 if Q1.b, +1 if volume mid/high
• fulfillment-sla-watchdog +2 if Q1.d, +1 if multi-location
• weekly-business-review +2 always (but freq varies by Q3)
• price-anomaly-scanner +1 if catalog mid/large, +2 if Q1.e
• customer-churn-watch +2 if Q1.c, +1 if customer count >500
• monthly-financial-close +2 if Shopify Payments, +1 always
• dead-stock-weekly +2 if catalog mid/large
• inventory-aging-monthly +2 if catalog large
• discount-roi-weekly +2 if Q1.e, +1 if active discounts exist
• vip-customer-watcher +2 if customer count >1000
• return-fraud-watch +1 if Q1.b
• seo-coverage-weekly +1 if catalog mid/large
• catalog-health-weekly +2 if catalog large
• payout-recon-daily +2 if Shopify Payments
• staff-activity-monthly +1 always
• new-product-launch-tracker +1 if catalog mid/large, +1 if frequent launches
• subscription-mrr-tracker ONLY if subscriptions=yes (skip otherwise)
• quarterly-business-review +1 always
Apply Q3 cap:
• Minimal: 4 highest-scoring
• Standard: 8 highest-scoring
• Comprehensive: 12 highest-scoring
Adjust cron based on volume:
• If volume=low: bump every-2h to every-4h, every-4h to every-8h
• If volume=high: keep defaults
Tailor the prompts:
• Replace generic Slack channel placeholders with merchant's answer to Q2
• Replace store domain placeholders with actual domain
• If Q2.c (no external), strip Slack-send instructions, use file output only
═══════════════════════════════════════════════════════════════
PHASE 4 — CONFIRM (show plan before installing)
═══════════════════════════════════════════════════════════════
Show this digest:
📋 RECOMMENDED ROUTINES FOR [store name]
1. morning-store-briefing → Daily 8am → #[channel]
2. low-stock-watchdog → Daily 7am → #[channel]
3. fraud-sentinel → Every 4h → #[channel]
[...]
Skipped (with one-line reason):
• subscription-mrr-tracker — no subscription products detected
• payout-recon-daily — store uses external payments
• [...]
Estimated cost: ~[N] Claude Code sessions per day
Install? (yes / edit / cancel)
═══════════════════════════════════════════════════════════════
PHASE 5 — INSTALL (only after merchant confirms)
═══════════════════════════════════════════════════════════════
For each approved routine:
1. Read the corresponding file in routines/<routine-id>.md
2. Parse YAML frontmatter for cron + description
3. Extract prompt from "### Prompt" code block
4. Apply tailoring from Phase 3 (cron adjust, channel substitution, store domain)
5. Call mcp__scheduled-tasks__create_scheduled_task with:
taskId: <routine_id>
cronExpression: <tailored cron>
description: <description>
prompt: <tailored prompt>
notifyOnCompletion: true
After install, run mcp__scheduled-tasks__list_scheduled_tasks. Confirm all
installed. Show next-fire times. End with:
✅ Installed [N] routines. First fires:
• [routine] → tomorrow at 8:00am
• [routine] → in 2 hours
[...]
Manage with /schedule list. Pause any with /schedule update <id> --enabled false.
═══════════════════════════════════════════════════════════════
RULES
═══════════════════════════════════════════════════════════════
- Never install a routine the merchant didn't approve.
- Never recommend more than the Q3 cap.
- If the merchant types "edit" in Phase 4, ask which routines to add/remove.
- If any phase fails (auth error, missing scope), explain in plain language
what's missing and how to fix it. Don't dump stack traces.
- All Slack mentions are conditional on Q2. If merchant chose file-only, keep
outputs as CSV/markdown files in current working directory.
- If you're unsure whether a feature applies (e.g., subscriptions exist but
with 0 active contracts), ask before recommending the related routine.---
Why this exists
A blanket install of all 20 routines on a 5-orders-a-day store burns API budget on routines that find nothing. A blanket install on a 1000-orders-a-day store with no subscriptions still installs subscription-mrr-tracker and wastes a session every Monday.
The smart installer: 1. Profiles the store from real data (no merchant guessing) 2. Asks only 3 questions 3. Scores routines against the profile 4. Trims to the merchant's chosen aggressiveness level 5. Tailors cron + alert destination 6. Shows plan before installing — never blindsides
For the bare-bones "just install everything" path, see README.md → Option C. Most merchants should not use that path.
Inventory Aging Monthly
Schedule: 15th of every month at 7:00 AM local time Runtime: ~5-7 minutes Slack channel: #inventory-strategy
Prompt
You are the inventory aging analyst. Generate the monthly aging report.
1. shopify-admin-inventory-aging-report (carrying_cost_pct: 25)
2. shopify-admin-inventory-valuation-report — total context
Compile and send to #inventory-strategy:
📦 INVENTORY AGING REPORT — [MONTH YEAR]
━━━━━━━━━━━━━━━━━━━━━━━
Total SKUs: [n]
Total inventory value: $[amount]
─────────────────────────────
AGING DISTRIBUTION:
0-30 days: [n] SKUs ($[value], [pct]%) ✅
31-60 days: [n] SKUs ($[value], [pct]%) ⚠️
61-90 days: [n] SKUs ($[value], [pct]%) ⚠️
91-180 days: [n] SKUs ($[value], [pct]%) 🔴
181+ days: [n] SKUs ($[value], [pct]%) 🔴
Monthly carrying cost: $[amount]
Annual carrying cost: $[amount]
TREND:
91+ day stock vs last month: [↑/↓][pct]%
ACTIONS:
• [N] SKUs crossed 90-day threshold this month — markdown trigger
• [N] SKUs in 181+ bucket need liquidation decision
Save full aging report to inventory_aging_[YYYY-MM].csvLow Stock Watchdog
Schedule: Every day at 7:00 AM local time Runtime: ~3-5 minutes Slack channel: #inventory-alerts
Prompt
You are the inventory watchdog for 91pqhx-iy.myshopify.com.
1. Use shopify-admin-demand-forecast-reorder with:
- days_back: 90
- forecast_days: 30
- lead_time_days: 14
- safety_stock_days: 7
- only_low_stock: true
2. Use shopify-admin-low-inventory-restock to find items below threshold.
3. Use shopify-admin-stock-velocity-report with days_back: 30 to cross-reference
velocity data for flagged items.
Compile and send a Slack alert to #inventory-alerts:
🔴 LOW STOCK ALERT — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
URGENT (stockout <7 days):
• [product] [SKU] — [qty] left, selling [n]/day → ORDER BY [date]
Suggested reorder: [qty] units
⚠️ WATCH (stockout 7-30 days):
• [product] [SKU] — [qty] left, [n] days of stock remaining
If no low-stock items found:
✅ All inventory levels healthy — no action needed.
Always save results to low_stock_report_[date].csv in the current directory.Monthly Financial Close
Schedule: First of every month at 8:00 AM local time Runtime: ~10-15 minutes Slack channel: #finance
Prompt
You are the financial close agent. Generate the monthly financial close report
for the previous month.
Determine date range: previous calendar month (e.g., if today is May 1,
analyze April 1 - April 30).
Run these skills with days_back set to cover the previous month:
1. shopify-admin-profit-margin-calculator (days_back: 31, group_by: order)
2. shopify-admin-payout-reconciliation (days_back: 31)
3. shopify-admin-tax-liability-summary (days_back: 31)
4. shopify-admin-refund-rate-analysis (days_back: 31)
5. shopify-admin-revenue-by-location-report (days_back: 31)
6. shopify-admin-discount-cost-trend (days_back: 31)
7. shopify-admin-gift-card-liability-report
Compile into a Slack message:
📊 MONTHLY FINANCIAL CLOSE — [PREV MONTH YEAR]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
REVENUE & PROFIT
Gross revenue: $[amount]
Total COGS: $[amount]
Shipping costs: $[amount]
Tx fees: $[amount]
Refunds: $[amount] ([pct]% refund rate)
Discounts given: $[amount]
─────────────────────────────
Net profit: $[amount] (margin: [pct]%)
PAYOUTS
Payouts received: $[amount] ([n] payouts)
Reconciliation: ✅ matched / ⚠️ [n] discrepancies
TAX LIABILITY
Total collected: $[amount]
Top jurisdictions: [list]
REVENUE BY LOCATION
[location]: $[amount] ([pct]%)
[...]
GIFT CARD LIABILITY
Outstanding balance: $[amount]
ATTENTION ITEMS:
• [Any reconciliation discrepancies]
• [Refund rate changes month-over-month]
• [Discount spend trends]
Save full close report to monthly_close_[YYYY-MM].csvMorning Store Briefing
Schedule: Every day at 8:00 AM local time Runtime: ~3-5 minutes Slack channel: #daily-store-briefing
Prompt
You are the store operator for 91pqhx-iy.myshopify.com. Generate a morning briefing.
Run these skills in order and compile a digest:
1. Use shopify-admin-order-lookup-and-summary to get orders from the last 24 hours.
Report: total orders, total revenue, new vs returning customer split.
2. Use shopify-admin-fulfillment-status-digest to check unfulfilled orders.
Flag: any orders unfulfilled for more than 48 hours as URGENT.
3. Use shopify-admin-top-product-performance with days_back: 1 for yesterday's top sellers.
4. Use shopify-admin-average-order-value-trends with days_back: 7, bucket: day.
Compare yesterday's AOV to 7-day average.
Compile results into a briefing. Format as a Slack message and send to #daily-store-briefing:
📊 MORNING BRIEFING — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
ORDERS (24h): [count] | Revenue: $[amount]
New customers: [n] | Returning: [n]
AOV: $[amount] (vs 7d avg: $[amount]) [↑/↓]
🏆 TOP SELLERS:
1. [product] — [units] sold
2. [product] — [units] sold
3. [product] — [units] sold
⚠️ ATTENTION NEEDED:
- [n] orders unfulfilled >48h
- [any other issues]
━━━━━━━━━━━━━━━━━━━━━━━
If no issues found, end with: ✅ All clear — store running smoothly.New Product Launch Tracker
Schedule: Every day at 10:00 AM local time Runtime: ~3-4 minutes Slack channel: #merchandising
Prompt
You are the product launch analyst. Track performance of products published
in the last 14 days.
1. shopify-admin-product-lifecycle-manager — find products published <14 days ago
2. shopify-admin-stock-velocity-report (days_back: 14) — for new products only
3. shopify-admin-top-product-performance (days_back: 14)
Send to #merchandising:
🚀 NEW PRODUCT LAUNCH TRACKER — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
PRODUCTS LAUNCHED (last 14d): [n]
STRONG STARTS:
"[product]" — Day [n]: [units] sold, $[revenue]
Velocity: [n]/day → trending well
MODERATE:
"[product]" — Day [n]: [units] sold
WEAK STARTS (zero or near-zero sales after 7+ days):
"[product]" — Day [n]: [units] sold
→ Suggest: review pricing, listing quality, traffic sources
ATTENTION:
• [N] products with zero sales after 14 days — review or unpublish
• [N] products selling out faster than restock cadence
Save launch tracker to launch_tracker_[date].csv
If no new products in window: skip notification (silent pass).Payout Reconciliation Daily
Schedule: Every day at 6:00 AM local time Runtime: ~2-3 minutes Slack channel: #finance Note: Only useful for stores using Shopify Payments.
Prompt
You are the payout reconciliation agent.
1. shopify-admin-payout-reconciliation (days_back: 7)
Match each payout against the orders that contributed to it. Flag any
discrepancies.
If all matched cleanly, send a brief confirmation to #finance:
✅ PAYOUT RECON — [DATE]
Last 7d: [n] payouts, $[amount] total — all matched.
If discrepancies found, send detailed alert:
⚠️ PAYOUT RECONCILIATION ISSUE — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
Payout [id] dated [date]: $[expected] expected, $[actual] received
Difference: $[delta]
Possible causes:
• Refund processed in payout window
• Chargeback withheld
• Adjustment / fee
• Hold released
Affected orders: [N]
Save reconciliation detail to payout_recon_[date].csv
→ Recommend manual review with Shopify Payments dashboard.Price Anomaly Scanner
Schedule: Every day at 6:00 AM local time Runtime: ~2-3 minutes Slack channel: #pricing-alerts
Prompt
You are the pricing integrity watchdog for 91pqhx-iy.myshopify.com.
Scan all active products for pricing anomalies. Use the Shopify Admin API directly:
1. Query all active product variants. For each, check:
a. Price is $0 or negative → CRITICAL
b. Compare-at price is set but LOWER than or equal to current price → ERROR
c. Compare-at price is set but discount is >70% → WARNING (possible error)
d. Price differs from other variants of same product by >300% → WARNING
e. Price is $0.01 or $999999 (placeholder values) → CRITICAL
2. Use shopify-admin-product-data-completeness-score to check for
products missing prices entirely.
If any anomalies found, send to #pricing-alerts:
💲 PRICE ANOMALY ALERT — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
🔴 CRITICAL:
• [product] [variant] — Price: $0.00 (likely missing)
• [product] [variant] — Placeholder price: $999999
⚠️ ERRORS:
• [product] [variant] — Compare-at $[lower] < Price $[higher] (inverted)
⏳ WARNINGS:
• [product] [variant] — 75% discount ($[compare] → $[price]) — verify intentional
• [product] [variant] — Price $[high] vs sibling variant $[low] (300%+ spread)
Total anomalies: [n]
Products affected: [n]
If no anomalies:
✅ All [n] active product prices verified — no anomalies detected.Quarterly Business Review
Schedule: Jan 1, Apr 1, Jul 1, Oct 1 at 9:00 AM local time Runtime: ~15-20 minutes Slack channel: #leadership
Prompt
You are the QBR analyst. Generate the comprehensive quarterly business review
for the previous quarter (90 days).
Run all of these skills with days_back: 90:
1. shopify-admin-profit-margin-calculator (group_by: product)
2. shopify-admin-sales-by-channel-report
3. shopify-admin-average-order-value-trends (bucket: month)
4. shopify-admin-customer-cohort-analysis
5. shopify-admin-rfm-customer-segmentation
6. shopify-admin-repeat-purchase-rate
7. shopify-admin-top-product-performance
8. shopify-admin-stock-velocity-report
9. shopify-admin-churn-risk-scorer
10. shopify-admin-discount-roi-calculator
Compare Q over Q where possible (use days_back: 180 to capture two quarters).
Compile into a Slack canvas or long message:
📈 Q[N] [YEAR] BUSINESS REVIEW
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
EXECUTIVE SUMMARY (3 lines max)
PERFORMANCE
Revenue: $[amount] ([↑/↓][pct]% QoQ)
Orders: [n] ([↑/↓][pct]% QoQ)
AOV: $[amount] ([↑/↓]$[delta] QoQ)
Net profit: $[amount] (margin: [pct]%)
CUSTOMERS
New: [n]
Returning: [n] ([pct]%)
Champions: [n]
At-risk: [n] ($[revenue at risk])
Cohort retention 30/60/90: [pct]% / [pct]% / [pct]%
PRODUCTS
Top 5 by revenue: [list]
Top 5 by margin: [list]
Bottom 5 by velocity: [list — markdown candidates]
CHANNELS
[channel]: $[amount] ([pct]%) [↑/↓]
DISCOUNT EFFECTIVENESS
Spend: $[amount] | Attributed revenue: $[amount] | ROI: [pct]%
STRATEGIC TAKEAWAYS (3-5 bullets):
• [Biggest growth driver]
• [Biggest concern]
• [Customer segment opportunity]
• [Product/inventory action item]
• [Operational issue to address]
Save full QBR to qbr_[year]_q[n].csvStore Operator Routines
Pre-built Claude Code routine definitions that turn your Shopify store into an always-on, self-monitoring operation. Each routine combines multiple skills into automated workflows that run on a schedule.
What Are Routines?
Claude Code routines are scheduled agents that fire on a cron expression and run autonomously. Each fire is a full Claude Code session that can:
- Invoke any skill in this repo
- Query the Shopify Admin GraphQL API
- Send Slack/email alerts via configured MCP servers
- Persist state to files or databases
Routines run on Claude Code's scheduling infrastructure — your machine doesn't need to be on.
Available Routines
Daily / High-frequency
| Routine | Schedule | Purpose |
|---|---|---|
| morning-store-briefing | Daily 8 AM | Orders, revenue, fulfillment digest |
| low-stock-watchdog | Daily 7 AM | Inventory + demand forecast alerts |
| abandoned-cart-patrol | Every 4h | Cart recovery opportunities |
| fraud-sentinel | Every 2h | High-risk order alerting |
| fulfillment-sla-watchdog | Weekdays 10 AM + 3 PM | Overdue fulfillments |
| price-anomaly-scanner | Daily 6 AM | Pricing error detection |
| vip-customer-watcher | Daily 9 AM | VIP order + issue alerts |
| payout-recon-daily | Daily 6 AM | Shopify Payments reconciliation |
| new-product-launch-tracker | Daily 10 AM | First-week performance of new products |
Weekly
| Routine | Schedule | Purpose |
|---|---|---|
| weekly-business-review | Monday 8 AM | Comprehensive weekly performance |
| return-fraud-watch | Monday 9 AM | Suspicious return patterns |
| discount-roi-weekly | Tuesday 9 AM | Discount campaign performance |
| catalog-health-weekly | Wednesday 7 AM | Product data quality scan |
| customer-churn-watch | Wednesday 8 AM | At-risk customer identification |
| seo-coverage-weekly | Thursday 7 AM | SEO metadata gap report |
| dead-stock-weekly | Sunday 9 AM | Markdown candidates report |
Monthly / Quarterly
| Routine | Schedule | Purpose |
|---|---|---|
| monthly-financial-close | 1st @ 8 AM | Monthly P&L, payouts, taxes, refunds |
| staff-activity-monthly | 1st @ 10 AM | Staff permission audit |
| inventory-aging-monthly | 15th @ 7 AM | Aging buckets + carrying cost |
| quarterly-business-review | Quarterly @ 9 AM | Comprehensive QBR with trends + cohorts |
Install
Prerequisites
1. Claude Code with the shopify-admin-skills plugin loaded 2. Authenticated Shopify session — recommended: a Shopify Custom App with a permanent Admin API access token (CLI tokens expire and routines run headlessly) 3. Optional: Slack MCP configured if you want alerts pushed to a channel
Option A — Smart onboarding (recommended)
The smart installer profiles your store, asks 3 questions, and installs only the routines that fit. Don't dump all 20 routines on a store that doesn't need them.
Paste the prompt from INSTALL.md into Claude Code. Claude will: 1. Silently profile your store (volume, catalog size, locations, subscriptions, payments) 2. Ask 3 questions about your priorities, alert destination, and aggressiveness 3. Score and recommend a tailored routine set 4. Show the plan with reasoning before installing 5. Tailor cron schedules and Slack channels to your answers
This is the path you want for most stores.
Option B — Per-routine via /schedule
For one routine at a time, use the built-in /schedule command in Claude Code. Open the target routine markdown file, copy the contents of the ### Prompt code block, and paste it along with the cron expression from the frontmatter.
Option C — Bulk install (advanced, not recommended for new stores)
Paste this into Claude Code to install every routine without filtering:
Install all routines from routines/ in this repo. For each .md file
in routines/ (skip README.md and INSTALL.md), parse the YAML frontmatter
to get routine_id, description, and cron, then extract the prompt from
the "### Prompt" code block.
For each routine, call mcp__scheduled-tasks__create_scheduled_task with:
taskId: <routine_id>
cronExpression: <cron>
description: <description>
prompt: <extracted prompt>
notifyOnCompletion: true
After all routines are created, run mcp__scheduled-tasks__list_scheduled_tasks
and confirm each routine is enabled and shows next run time.This installs all 20 routines blindly. Use only if you've already vetted each routine for your store.
Option D — Programmatic via install script
node scripts/install-routines.mjs # print plan + Claude install prompt
node scripts/install-routines.mjs --json # emit routine config as JSON
node scripts/install-routines.mjs --schedule # emit /schedule commandsThe script parses each routine markdown file and emits ready-to-use install data.
Manage Installed Routines
In Claude Code:
- List:
/schedule list(or callmcp__scheduled-tasks__list_scheduled_tasks) - Pause/resume:
/schedule update <taskId> --enabled false - Modify cron:
/schedule update <taskId> --cron "<new expression>"
Authoring New Routines
Routine markdown files use this format:
---
routine_id: my-routine-id
description: "One-line description"
cron: "0 8 * * *"
skills_used:
- skill-name-1
- skill-name-2
notify: slack
---
## Routine Title
### Prompt
The full prompt that Claude will execute on each fire. Reference skills by name — Claude will invoke them. \```
Run `node scripts/install-routines.mjs` after adding to verify your file parses correctly.
## Cost Considerations
Each routine fire is a full Claude Code session. With all 8 routines at default frequencies, expect ~20–25 sessions per day. Adjust frequencies or pause routines you don't need.
Return Fraud Watch
Schedule: Every Monday at 9:00 AM local time Runtime: ~3-5 minutes Slack channel: #fraud-alerts
Prompt
You are the returns fraud analyst. Weekly scan for suspicious return patterns.
1. shopify-admin-return-fraud-detector (days_back: 90)
2. shopify-admin-return-reason-analysis (days_back: 30)
3. shopify-admin-exchange-vs-refund-ratio (days_back: 30)
Send to #fraud-alerts:
🔍 RETURN FRAUD WATCH — Week of [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
SERIAL RETURNERS (>40% return rate, 3+ orders):
🔴 [customer email] — [n] orders, [n] returns ([pct]% rate)
Lifetime spend: $[amount], lifetime refunded: $[amount]
→ RECOMMEND: review or block from future orders
WARDROBING SUSPECTS (full-order returns within window):
⚠️ [customer email] — [n] orders, all returned within [n] days
Pattern: [description]
REFUND TRENDS:
Refund rate this week: [pct]% ([↑/↓] vs prior week)
Top return reason: [reason] ([pct]% of returns)
Exchange:Refund ratio: [n]:[n]
If no fraud patterns: ✅ Returns within normal parameters.SEO Coverage Weekly
Schedule: Every Thursday at 7:00 AM local time Runtime: ~3-5 minutes Slack channel: #growth
Prompt
You are the SEO health monitor. Weekly catalog SEO audit.
1. shopify-admin-seo-metadata-audit
2. shopify-admin-product-data-completeness-score (focus on SEO fields)
3. shopify-admin-url-redirect-audit
Send to #growth:
🔍 SEO COVERAGE REPORT — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
CATALOG SEO HEALTH:
Products audited: [n]
Missing meta title: [n] ([pct]%)
Missing meta description: [n] ([pct]%)
Missing alt text on images: [n] ([pct]%)
Duplicate meta titles: [n]
URL REDIRECTS:
Active redirects: [n]
Broken redirects: [n]
Orphan redirects: [n]
WEEK OVER WEEK:
SEO completeness: [pct]% ([↑/↓] vs last week)
TOP PRIORITY FIXES:
1. [n] high-traffic products missing meta titles
2. [n] products with duplicate titles (cannibalization risk)
3. [n] images missing alt text
Save full SEO gap list to seo_audit_[date].csv
If completeness >95%: ✅ SEO catalog healthy.Staff Activity Monthly
Schedule: 1st of every month at 10:00 AM local time Runtime: ~2-3 minutes Slack channel: #security
Prompt
You are the staff access auditor. Monthly review of staff accounts.
1. shopify-admin-staff-account-audit
Send to #security:
🔐 STAFF ACCESS REVIEW — [MONTH YEAR]
━━━━━━━━━━━━━━━━━━━━━━━
ACCOUNT INVENTORY:
Total staff: [n]
Active (last 30d): [n]
Inactive (>90d): [n] ⚠️ candidates for offboarding
Owner accounts: [n]
Full-permission staff: [n]
ATTENTION ITEMS:
🔴 [name] — last login [date] ([n]d ago) — recommend offboarding
⚠️ [name] — full permissions but role doesn't require it
⚠️ [n] accounts without 2FA enabled (if data available)
PERMISSIONS DISTRIBUTION:
Limited: [n]
Custom roles: [n]
Full access: [n]
If all accounts active and appropriately permissioned:
✅ Staff access in good standing.VIP Customer Watcher
Schedule: Every day at 9:00 AM local time Runtime: ~3-5 minutes Slack channel: #vip-care
Prompt
You are the VIP customer concierge. Daily check on VIP customer activity.
1. shopify-admin-vip-customer-identifier (top 5%, dry_run: true) — get current VIPs
2. shopify-admin-order-lookup-and-summary (days_back: 1) — find any VIP orders
3. shopify-admin-churn-risk-scorer (days_back: 365) — filter to VIPs
Cross-reference: any VIPs in the at-risk segment? Any VIPs with orders that
have issues (held, refunded, complained)?
Send to #vip-care:
👑 VIP CUSTOMER WATCH — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━
NEW VIP ORDERS (last 24h):
• [name] ($[lifetime spend]) → Order [#name] $[amount]
Status: [fulfillment status]
→ Action: ensure expedited handling
VIP ATTENTION REQUIRED:
🔴 [name] — last order disputed/refunded — reach out
⚠️ [name] — churn risk score [n] — overdue by [n] days
VIP HEALTH:
Total VIPs: [n]
Active (last 30d): [n]
At risk: [n]
Lifetime VIP rev: $[amount]
If no VIP issues: ✅ All VIPs orders flowing smoothly.Weekly Business Review
Schedule: Every Monday at 8:00 AM local time Runtime: ~8-12 minutes (runs 10 skills) Slack channel: #weekly-review
Prompt
You are the business analyst for 91pqhx-iy.myshopify.com. Generate the Weekly Business Review.
Run each skill with days_back: 7 (comparing to prior week where possible) and compile results:
1. REVENUE & ORDERS
- shopify-admin-sales-by-channel-report (days_back: 7)
- shopify-admin-average-order-value-trends (days_back: 14, bucket: week) — compare this week vs last
- shopify-admin-profit-margin-calculator (days_back: 7, group_by: product)
2. PRODUCTS
- shopify-admin-top-product-performance (days_back: 7)
- shopify-admin-stock-velocity-report (days_back: 7)
3. CUSTOMERS
- shopify-admin-repeat-purchase-rate (days_back: 7)
- shopify-admin-customer-cohort-analysis (days_back: 7)
- shopify-admin-churn-risk-scorer (days_back: 365, report only summary counts)
4. CONVERSION
- shopify-admin-checkout-abandonment-report (days_back: 7)
- shopify-admin-refund-rate-analysis (days_back: 7)
Format as a comprehensive Slack message to #weekly-review:
📈 WEEKLY BUSINESS REVIEW — Week of [DATE]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💰 REVENUE
Total revenue: $[amount] ([↑/↓][pct]% vs last week)
Orders: [n] ([↑/↓][pct]%)
AOV: $[amount] ([↑/↓]$[delta])
Est. net profit: $[amount] (margin: [pct]%)
By channel:
• Online Store: $[amount] ([pct]%)
• [Other channels...]
🏆 TOP PRODUCTS
1. [product] — [units] sold, $[revenue]
2. [product] — [units] sold, $[revenue]
3. [product] — [units] sold, $[revenue]
👥 CUSTOMERS
New customers: [n]
Repeat rate: [pct]%
At-risk customers: [n] (total revenue at risk: $[amount])
🔄 CONVERSION HEALTH
Cart abandonment: [pct]%
Refund rate: [pct]% ($[amount] refunded)
📦 INVENTORY
Fast movers: [top 3 by velocity]
Slow movers: [bottom 3 by velocity]
KEY TAKEAWAYS:
• [Biggest positive trend]
• [Biggest concern or action item]
• [Recommendation]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━#!/usr/bin/env bash
# Cold-start helper for shopify-admin-skills development sessions.
# Usage: ./scripts/dev-session.sh [store-domain]
# Default store: 91pqhx-iy.myshopify.com
set -e
STORE="${1:-91pqhx-iy.myshopify.com}"
echo "==> Checking Shopify CLI version..."
SHOPIFY_VERSION=$(shopify version 2>/dev/null || echo "not found")
echo " shopify CLI: $SHOPIFY_VERSION"
if [[ "$SHOPIFY_VERSION" < "3.93" ]]; then
echo " ⚠️ Upgrade required: npm install -g @shopify/cli@latest"
exit 1
fi
echo ""
echo "==> Authenticating with $STORE..."
echo " Scopes: read_orders, read_customers, read_products, write_products,"
echo " read_checkouts, read_discounts, read_inventory"
shopify store auth --store "$STORE" \
--scopes read_orders,read_customers,read_products,write_products,read_checkouts,read_discounts,read_inventory
echo ""
echo "==> Verifying store connection..."
RESULT=$(shopify store execute --store "$STORE" --query 'query { shop { name id } }' 2>&1)
if echo "$RESULT" | grep -q '"name"'; then
SHOP_NAME=$(echo "$RESULT" | grep '"name"' | sed 's/.*"name": "\(.*\)".*/\1/')
echo " ✅ Connected to: $SHOP_NAME ($STORE)"
else
echo " ❌ Connection failed. Re-run auth:"
echo " shopify store auth --store $STORE --scopes read_orders,read_customers"
exit 1
fi
echo ""
echo "==> Launching Claude Code with shopify-admin-skills plugin..."
echo " Shopify AI Toolkit plugin: loaded from installed plugins"
echo " shopify-admin-skills: loaded from $(pwd)"
echo ""
claude --plugin-dir "$(pwd)"
#!/usr/bin/env node
// Parse routine markdown files and emit install commands.
//
// Usage:
// node scripts/install-routines.mjs # print install plan (human readable)
// node scripts/install-routines.mjs --json # emit JSON for each routine (taskId, cron, prompt)
// node scripts/install-routines.mjs --schedule # emit /schedule commands for copy-paste
//
// To actually create routines, paste the prompt printed by --plan into Claude Code.
// Claude reads each routine file and calls the scheduled-tasks MCP tool to create the task.
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const ROUTINES_DIR = path.resolve(__dirname, '..', 'routines');
function parseFrontmatter(content) {
const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
if (!match) return { data: {}, body: content };
const yaml = match[1];
const body = match[2];
const data = {};
let key = null;
let listKey = null;
for (const line of yaml.split('\n')) {
if (/^[a-z_]+:\s*$/i.test(line)) {
listKey = line.split(':')[0];
data[listKey] = [];
key = null;
} else if (/^\s+-\s/.test(line) && listKey) {
data[listKey].push(line.replace(/^\s+-\s+/, '').replace(/^"|"$/g, ''));
} else {
const m = line.match(/^([a-z_]+):\s*(.*)$/i);
if (m) {
const v = m[2].trim().replace(/^"|"$/g, '');
data[m[1]] = v;
key = m[1];
listKey = null;
}
}
}
return { data, body };
}
function extractPrompt(body) {
const m = body.match(/### Prompt\s*\n+```\s*\n([\s\S]*?)\n```/);
return m ? m[1].trim() : null;
}
function loadRoutines() {
const files = fs.readdirSync(ROUTINES_DIR)
.filter(f => f.endsWith('.md') && f !== 'README.md');
return files.map(file => {
const content = fs.readFileSync(path.join(ROUTINES_DIR, file), 'utf-8');
const { data, body } = parseFrontmatter(content);
return {
file,
taskId: data.routine_id,
description: data.description,
cron: data.cron,
prompt: extractPrompt(body),
};
}).filter(r => r.taskId && r.cron && r.prompt);
}
const args = new Set(process.argv.slice(2));
const routines = loadRoutines();
if (args.has('--json')) {
console.log(JSON.stringify(routines, null, 2));
} else if (args.has('--schedule')) {
for (const r of routines) {
console.log(`# ${r.file}`);
console.log(`/schedule create --id ${r.taskId} --cron "${r.cron}" --description "${r.description}" --prompt "${r.prompt.replace(/"/g, '\\"').slice(0, 100)}..."`);
console.log();
}
} else {
console.log(`\n📋 Found ${routines.length} routines in routines/\n`);
for (const r of routines) {
console.log(` ✓ ${r.taskId.padEnd(28)} cron: "${r.cron}"`);
}
console.log(`
═══════════════════════════════════════════════════════
INSTALL ROUTINES IN CLAUDE CODE
═══════════════════════════════════════════════════════
Copy this prompt into Claude Code and Claude will install
all routines via the scheduled-tasks MCP tool:
───────────────────────────────────────────────────────
Install all routines from routines/ in this repo. For each
.md file in routines/ (skip README.md), parse the YAML
frontmatter to get routine_id, description, and cron, then
extract the prompt from the "### Prompt" code block.
For each routine, call mcp__scheduled-tasks__create_scheduled_task with:
taskId: <routine_id>
cronExpression: <cron>
description: <description>
prompt: <extracted prompt>
notifyOnCompletion: true
After all routines are created, run mcp__scheduled-tasks__list_scheduled_tasks
and confirm each routine is enabled and shows next run time.
───────────────────────────────────────────────────────
Or install one at a time with: /schedule
Or run: node scripts/install-routines.mjs --json
`);
}
#!/usr/bin/env node
// Validates that graphql_operations frontmatter in every SKILL.md
// matches the entries in docs/graphql-operations-index.md
// Exits with code 1 if any mismatch is found.
import { readFileSync, existsSync } from 'fs'
import { join, dirname } from 'path'
import { fileURLToPath } from 'url'
import matter from 'gray-matter'
import { glob } from 'glob'
const __dirname = dirname(fileURLToPath(import.meta.url))
const ROOT = join(__dirname, '..')
async function main() {
const skillFiles = await glob('skills/**/SKILL.md', { cwd: ROOT, absolute: true })
if (skillFiles.length === 0) {
console.log('No skill files found under skills/ — nothing to validate.')
process.exit(0)
}
// Parse frontmatter from each skill
const skillOps = new Map() // skillPath -> Set<"OperationName:type">
for (const file of skillFiles) {
const content = readFileSync(file, 'utf8')
const { data } = matter(content)
const ops = data.graphql_operations ?? []
if (!Array.isArray(ops)) {
console.error(`ERROR: ${file}: graphql_operations must be an array`)
process.exit(1)
}
for (const op of ops) {
if (!/^[A-Za-z][A-Za-z0-9_]*:(query|mutation)$/.test(op)) {
console.error(`ERROR: ${file}: invalid graphql_operations entry "${op}" — must be "OperationName:query" or "OperationName:mutation"`)
process.exit(1)
}
}
const relativePath = file.replace(ROOT + '/', '')
skillOps.set(relativePath, new Set(ops))
}
// Parse operations index table
const indexPath = join(ROOT, 'docs/graphql-operations-index.md')
if (!existsSync(indexPath)) {
console.error('ERROR: docs/graphql-operations-index.md not found')
process.exit(1)
}
const indexContent = readFileSync(indexPath, 'utf8')
const indexOps = new Map() // "OperationName:type" -> Set<skillPath>
for (const line of indexContent.split('\n')) {
// Match table rows: | OperationName | query|mutation | version | skills |
const match = line.match(/^\|\s*([A-Za-z]+)\s*\|\s*(query|mutation)\s*\|[^|]*\|\s*([^|]+)\|/)
if (!match) continue
const opKey = `${match[1]}:${match[2]}`
const skillsCell = match[3].trim()
const indexedSkills = skillsCell.split(',').map(s => s.trim()).filter(Boolean)
indexOps.set(opKey, new Set(indexedSkills))
}
const errors = []
// Every op in skill frontmatter must be in the index
for (const [skillPath, ops] of skillOps) {
for (const op of ops) {
if (!indexOps.has(op)) {
errors.push(`MISSING FROM INDEX: "${op}" used in ${skillPath} but not found in docs/graphql-operations-index.md`)
} else {
// The skill should be listed in the index row
const indexedSkills = indexOps.get(op)
const skillDir = skillPath.replace('/SKILL.md', '').replace('skills/', '')
const found = [...indexedSkills].some(s => s.trim() === skillDir)
if (!found) {
errors.push(`SKILL NOT LISTED: "${op}" index row does not include ${skillDir} — add it to docs/graphql-operations-index.md`)
}
}
}
}
// Every op in the index must be used by at least one skill
for (const [opKey, indexedSkills] of indexOps) {
const usedByAnySkill = [...skillOps.values()].some(ops => ops.has(opKey))
if (!usedByAnySkill) {
errors.push(`STALE INDEX ENTRY: "${opKey}" is in the index but not used by any skill`)
}
}
if (errors.length > 0) {
console.error('\n❌ GraphQL Operations Index validation failed:\n')
for (const err of errors) console.error(` • ${err}`)
console.error(`\n${errors.length} error(s) found. Update docs/graphql-operations-index.md to fix.\n`)
process.exit(1)
}
console.log(`✅ GraphQL Operations Index valid — ${skillFiles.length} skill(s), ${indexOps.size} operation(s) checked.`)
}
main().catch(err => { console.error(err); process.exit(1) })
# build output
dist/
# generated types
.astro/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store
# jetbrains setting folder
.idea/
.vercel
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}
// @ts-check
import { defineConfig } from 'astro/config';
import react from '@astrojs/react';
export default defineConfig({
site: 'https://skills.40rty.ai',
base: '/',
output: 'static',
integrations: [react()],
});
{
"name": "site",
"type": "module",
"version": "0.0.1",
"engines": {
"node": ">=22.12.0"
},
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/react": "^5.0.4",
"astro": "^6.1.5",
"gray-matter": "^4.0.3",
"motion": "^12.38.0",
"react": "^19.2.5",
"react-dom": "^19.2.5"
},
"devDependencies": {
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3"
}
}# Shopify Admin Skills — Full Documentation for AI Agents
**Version:** 1.1
**Last Updated:** 2026-06-03
**Source:** https://skills.40rty.ai
**Summary file:** https://skills.40rty.ai/llms.txt
---
## 1. Product Overview
**Shopify Admin Skills** is a free, open-source library of 106+ structured AI agent skills and 22 automated routines for Shopify store operators. Built by 40rty.
Each skill is a structured prompt that guides an AI agent through a specific Shopify store operation using the Shopify Admin GraphQL API. Skills work with any MCP-compatible AI agent: Claude (claude.ai), Claude Code (CLI), Claude Cowork, Cursor, Cline, GitHub Copilot, and Gemini CLI.
**Key differentiator:** Unlike generic Shopify automation tools, these are agent-native — designed to run inside the AI assistant the merchant already uses, with no separate dashboard, no SaaS subscription, and no vendor lock-in.
---
## 2. Installation
### Option A — Terminal (any agent)
```
npx skills add 40RTY-ai/shopify-admin-skills
```
Works with Claude Code, Claude Cowork, Cursor, Cline, Copilot, Gemini CLI.
### Option B — Claude / Claude Cowork (guided)
Paste the install prompt into Claude or Claude Cowork. Claude acts as a concierge: installs plugins, authenticates with your Shopify store, and walks you through your first skill interactively.
### What gets installed
- **106+ skills** — on-demand agent workflows for every Shopify operation
- **22 routines** — scheduled agents that run automatically on a cron
### Authentication
During setup, the agent authenticates with your Shopify Admin API using this default scope set:
`read_products, write_products, read_orders, write_orders, read_customers, write_customers, read_inventory, write_inventory, read_discounts, write_discounts, read_fulfillments, write_fulfillments, read_returns, write_returns, read_price_rules, write_price_rules, read_publications, write_publications, read_shopify_payments_payouts`
---
## 3. Skills Reference (106 skills across 10 categories)
### 3.1 Marketing
- Abandoned cart recovery — finds and surfaces abandoned checkouts with customer contact info
- Customer win-back campaigns — identifies lapsed customers and generates outreach lists
- Loyalty segment export — extracts high-LTV customer segments for loyalty programs
### 3.2 Merchandising (Catalog & Inventory)
- Bulk price adjustment — updates prices across collections by percentage or fixed amount
- Multi-location inventory audit — surfaces stock discrepancies across warehouse locations
- Dead stock identification — finds slow-moving SKUs tying up working capital
- SEO metadata audit — flags products missing titles, descriptions, or alt text
- Duplicate SKU & barcode detector — finds catalog integrity issues before they cause fulfillment errors
- Variant normalization — standardizes size/color option naming across product families
### 3.3 Customer Support
- Order lookup — retrieves full order detail, status, and timeline by order number or email
- Refund & reorder — processes refunds and creates replacement orders in one workflow
- Return initiation — opens return requests against Shopify's returns API
- Address correction — updates shipping address on unfulfilled orders
- WISMO reports — generates "Where Is My Order" status summaries for support teams
### 3.4 Customer Ops
- Customer spend tier tagger — tags customers as VIP/Standard/At-Risk by LTV thresholds
- Cohort analysis — groups customers by acquisition month and tracks retention
- Duplicate customer finder — merges or flags duplicate customer records
- Bulk note annotation — mass-adds tags or notes to customer segments
- B2B company overview — surfaces company accounts, contacts, and order history
### 3.5 Conversion Optimization
- Discount A/B analysis — compares redemption rates across active discount codes
- Checkout abandonment report — quantifies cart abandonment revenue loss by time window
- Gift card issuance — creates and sends gift cards programmatically
- Top product performance — ranks products by revenue, units, and margin contribution
### 3.6 Fulfillment Ops
- Bulk fulfillment creation — creates fulfillments for batches of open orders
- Split shipment planning — identifies orders that need to ship from multiple locations
- Fulfillment location routing — recommends optimal fulfillment location per order
- Tracking number updates — bulk-pushes tracking numbers to orders and notifies customers
- Hold & release — applies or removes fulfillment holds across order segments
### 3.7 Finance
- Revenue by location report — breaks revenue down by fulfillment location or market
- AOV trends — tracks average order value over time with rolling comparisons
- Refund rate analysis — monitors refund rates by product, category, and time period
- Gift card balance report — surfaces outstanding gift card liability
- Sales by channel report — breaks down revenue by sales channel (online, POS, wholesale)
- Tax liability summary — aggregates tax collected by jurisdiction for filing
- Shipping cost analysis — compares carrier costs against shipping revenue collected
### 3.8 Order Intelligence
- High-risk order tagging — flags orders above Shopify's fraud risk threshold
- Risk report — generates a full fraud risk summary for a time window
- Order notes & attributes report — extracts custom order attributes for ops reporting
- Repeat purchase rate — calculates what percentage of customers reorder
### 3.9 Returns
- Return reason analysis — aggregates return reasons to surface product quality issues
- Return processing SLA — tracks average time to resolve returns against targets
- Exchange vs refund ratio — measures whether customers prefer exchanges or refunds
- Return fraud watch — flags customers with anomalous return patterns
### 3.10 Store Management
- Discount hygiene cleanup — archives expired or unused discount codes
- Draft order cleanup — surfaces and cancels stale draft orders
- Page content audit — identifies store pages with thin or missing content
- URL redirect audit — checks for broken or circular redirects
- Publication channel audit — verifies product publication status across sales channels
---
## 4. Routines Reference (22 scheduled agents)
Routines are always-on agents installed via `mcp__scheduled-tasks__create_scheduled_task`. They run on a cron, profile your store, and alert when thresholds are breached.
| Routine | Schedule | Purpose |
|---------|----------|---------|
| Morning Store Briefing | Daily 8am | Yesterday's revenue, orders, top SKUs |
| Fraud Sentinel | Every 2 hours | Flags high-risk orders for review |
| Low Stock Watchdog | Every 4 hours | Alerts on variants below reorder threshold |
| Abandoned Cart Patrol | Every 6 hours | Surfaces recoverable abandoned checkouts |
| Shipping Watch / Fulfillment SLA Watchdog | Twice daily | Tracks delivery SLA violations |
| Customer Churn Watch | Weekly (Wed) | Monitors churn risk signals |
| Weekly Business Review | Weekly (Mon) | Revenue, orders, and AOV vs prior week |
| Catalog Health Weekly | Weekly | SEO, variant, and content quality scores |
| Dead Stock Weekly | Weekly | Inventory aging and dead stock accumulation |
| Discount ROI Weekly | Weekly | Discount code performance and redemption trends |
| SEO Coverage Weekly | Weekly | Products missing SEO metadata |
| New Product Launch Tracker | Daily (configurable) | Monitors new product adoption and early sales |
| Price Anomaly Scanner | Daily | Flags unusual price changes across catalog |
| Return Fraud Watch | Daily | Anomalous return patterns by customer |
| VIP Customer Watcher | Weekly | Tracks VIP customer purchase cadence |
| Payout Reconciliation | Daily | Validates Shopify Payments payouts vs orders |
| Inventory Aging Monthly | Monthly | Full aging analysis of slow-moving stock |
| Monthly Financial Close | Monthly | Revenue, refunds, fees, and net payout summary |
| Quarterly Business Review | Quarterly | Full store performance vs prior quarter |
| Staff Activity Monthly | Monthly | Staff account activity and permission audit |
---
## 5. Technical Details
### Compatibility
- **Claude** (claude.ai web + desktop)
- **Claude Code** (CLI)
- **Claude Cowork** (team workspace)
- **Cursor**
- **Cline**
- **GitHub Copilot**
- **Gemini CLI**
- Any agent supporting the `npx skills` protocol or MCP tool calling
### How Skills Work
Each skill is a SKILL.md file containing:
- Structured frontmatter (name, description, category, required scopes)
- Step-by-step agent instructions using Shopify Admin GraphQL
- Output format specification
- Error handling guidance
Agents read the skill file, authenticate with the merchant's Shopify store, execute the GraphQL operations, and return results as a clean human-readable summary.
### Data & Privacy
- Skills run locally in the merchant's AI agent
- No data is sent to 40rty servers
- Shopify API credentials are stored locally by the agent
- All operations use official Shopify Admin API — no scraping
### License
MIT — free to use, fork, and extend.
---
## 6. Frequently Asked Questions
**What AI agents does this work with?**
Claude (claude.ai), Claude Code (CLI), Claude Cowork, Cursor, Cline, GitHub Copilot, Gemini CLI, and any MCP-compatible agent.
**Is this free?**
Yes. Fully open source under MIT. No account, no credit card, no usage limits imposed by 40rty.
**What is a skill vs a routine?**
A skill is an on-demand workflow you trigger manually ("find abandoned carts from the last 7 days"). A routine is a scheduled agent that runs automatically on a cron (e.g., every morning).
**Does it change my Shopify store automatically?**
Only when you explicitly ask it to. Read operations (audits, reports) are always safe. Write operations (refunds, price changes, fulfillments) require the agent to propose changes and wait for your confirmation.
**How is this different from Shopify Flow?**
Shopify Flow runs rule-based automations. Shopify Admin Skills uses language model reasoning — your agent interprets open-ended requests, adapts to context, and handles edge cases that rules can't anticipate.
**What Shopify plan do I need?**
Skills work on all Shopify plans. Some features (B2B, multi-location inventory) require Shopify Plus.
**How do I request a new skill?**
Open a GitHub issue at https://github.com/40RTY-ai/shopify-admin-skills or email the 40rty team via https://40rty.ai.
**Who built this?**
40rty — the team behind AgentIQ, the Answer Engine Optimization (AEO) platform that helps Shopify merchants get their products selected by ChatGPT, Perplexity, Gemini, and other AI shopping agents.
---
## 7. Use Case Queries (semantic search intents)
- "Shopify AI agent automation"
- "Claude Code Shopify skills"
- "Claude Cowork Shopify integration"
- "AI agent Shopify store management"
- "automate Shopify with AI"
- "Shopify abandoned cart recovery AI agent"
- "Shopify inventory audit AI"
- "Shopify fraud detection AI"
- "Claude Shopify Admin API"
- "Shopify MCP tools"
- "AI skills npx install"
- "Shopify scheduled AI routines"
- "open source Shopify automation"
- "Shopify AI reporting agent"
- "Cursor Shopify plugin"
- "Cline Shopify integration"
---
## 8. Related Products
**AgentIQ by 40rty** — the commercial Shopify app that optimizes your product catalog for AI-driven product discovery and Answer Engine Optimization (AEO). Makes your products visible and selectable by ChatGPT, Perplexity, Gemini, and Copilot.
- Site: https://40rty.ai
- Shopify App Store: https://apps.shopify.com/fourty-ai
---
## 9. Source & Links
- Skills site: https://skills.40rty.ai
- Skills directory: https://skills.40rty.ai/skills/
- Routines directory: https://skills.40rty.ai/routines/
- GitHub: https://github.com/40RTY-ai/shopify-admin-skills
- Summary (llms.txt): https://skills.40rty.ai/llms.txt
- 40rty main site: https://40rty.ai
- 40rty llms.txt: https://40rty.ai/llms.txt
- License: MIT
# Shopify Admin Skills
> 106+ pre-built AI agent skills and 22 automated routines for Shopify store operators. Open source. Free. Built by 40rty.
Shopify Admin Skills is an open-source library of structured AI agent skills that let Shopify merchants operate their stores through Claude, Claude Code, Claude Cowork, Cursor, Cline, Copilot, or Gemini CLI — on demand or on a schedule.
## What is this?
A free, open-source collection of 106+ skills and 22 routines. Install once; your agent can recover abandoned carts, audit inventory, process refunds, run fraud detection, generate reports, and more — without custom code.
## Install
```
npx skills add 40RTY-ai/shopify-admin-skills
```
Or paste the guided install prompt into Claude or Claude Cowork — Claude walks you through setup interactively.
## Skill Categories (106 skills)
- **Marketing** — Abandoned cart recovery, customer win-back campaigns, loyalty segment export
- **Merchandising** — Bulk price adjustment, multi-location inventory audit, dead stock identification, SEO metadata audit, duplicate SKU detection, variant normalization
- **Customer Support** — Order lookup, refund & reorder, return initiation, address correction, WISMO reports
- **Customer Ops** — Spend tier tagging, cohort analysis, duplicate customer finder, bulk note annotation, B2B company overview
- **Conversion Optimization** — Discount A/B analysis, checkout abandonment report, gift card issuance, top product performance
- **Fulfillment Ops** — Bulk fulfillment creation, split shipment planning, location routing, tracking updates, hold & release
- **Finance** — Revenue by location, AOV trends, refund rate analysis, gift card balance, sales by channel, tax liability, shipping cost analysis
- **Order Intelligence** — High-risk order tagging, risk reports, order notes & attributes, repeat purchase rate
- **Returns** — Return reason analysis, processing SLA, exchange vs refund ratio, return initiation
- **Store Management** — Discount hygiene cleanup, draft order cleanup, page content audit, URL redirect audit, publication channel audit
## Routines (22 automated agents)
Always-on scheduled agents that run on a cron and monitor your store:
- Fraud Watch — scans high-risk orders every 2 hours
- Morning Briefing — daily store summary every morning
- Low Stock Alerts — flags variants needing reorder
- Churn Watch — monitors customer churn signals weekly
- Shipping Watch — tracks delivery SLA violations twice daily
- Weekly Review — performance summary every Monday
## Key Pages
- Skills directory: https://skills.40rty.ai/skills/
- Routines directory: https://skills.40rty.ai/routines/
- GitHub source: https://github.com/40RTY-ai/shopify-admin-skills
- Full documentation: https://skills.40rty.ai/llms-full.txt
- Built by: https://40rty.ai
## Frequently Asked Questions
**What AI agents does this work with?**
Claude (claude.ai), Claude Code (CLI), Claude Cowork, Cursor, Cline, GitHub Copilot, Gemini CLI, and any agent supporting the skills/MCP protocol.
**Is this free?**
Yes. Fully open source under the MIT license. No account required.
**What is a skill vs a routine?**
A skill is an on-demand workflow you trigger manually. A routine is a scheduled agent that runs automatically on a cron.
**Does it require Shopify API credentials?**
Yes. During setup the agent walks you through authenticating with your Shopify store via the Admin API.
**How do I install it?**
Run `npx skills add 40RTY-ai/shopify-admin-skills` or paste the guided install prompt into Claude. The agent handles the rest.
**What Shopify operations can it perform?**
Products, orders, customers, inventory, discounts, fulfillments, returns, price rules, publications, and payouts — read and write.
**Who built this?**
40rty — the team behind AgentIQ, the Answer Engine Optimization (AEO) platform for Shopify merchants.
## Use Cases (semantic search intents)
- "Shopify AI agent automation"
- "Claude Code Shopify skills"
- "Claude Cowork Shopify"
- "AI agent Shopify store management"
- "automate Shopify with AI"
- "Shopify abandoned cart recovery AI agent"
- "Shopify inventory audit AI"
- "Claude Shopify integration"
- "Shopify MCP tools"
- "AI agent skills npx install"
- "Shopify scheduled AI routines"
- "open source Shopify automation"
## Source & License
- GitHub: https://github.com/40RTY-ai/shopify-admin-skills
- Site: https://skills.40rty.ai
- Full docs: https://skills.40rty.ai/llms-full.txt
- Built by: 40rty — https://40rty.ai
- License: MIT
User-agent: *
Allow: /
Sitemap: https://skills.40rty.ai/sitemap.xml
# AI agent documentation
# Summary: https://skills.40rty.ai/llms.txt
# Full docs: https://skills.40rty.ai/llms-full.txt
Astro Starter Kit: Minimal
pnpm create astro@latest -- --template minimal🧑🚀 Seasoned astronaut? Delete this file. Have fun!
🚀 Project Structure
Inside of your Astro project, you'll see the following folders and files:
/
├── public/
├── src/
│ └── pages/
│ └── index.astro
└── package.jsonAstro looks for .astro or .md files in the src/pages/ directory. Each page is exposed as a route based on its file name.
There's nothing special about src/components/, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
Any static assets, like images, can be placed in the public/ directory.
🧞 Commands
All commands are run from the root of the project, from a terminal:
| Command | Action |
|---|---|
pnpm install | Installs dependencies |
pnpm dev | Starts local dev server at localhost:4321 |
pnpm build | Build your production site to ./dist/ |
pnpm preview | Preview your build locally, before deploying |
pnpm astro ... | Run CLI commands like astro add, astro check |
pnpm astro -- --help | Get help using the Astro CLI |
👀 Want to learn more?
Feel free to check our documentation or jump into our Discord server.
---
---
<footer class="site-footer">
<div class="footer-inner">
<div class="footer-grid">
<!-- Brand column -->
<div class="footer-brand">
<a href="https://40rty.ai" target="_blank" rel="noopener noreferrer">
<img src="/40rty-logo-small.png" alt="40rty.ai" class="footer-logo" />
</a>
<p class="footer-tagline">Optimize your Shopify catalog for AI-powered shopping</p>
<div class="footer-socials">
<a href="https://x.com/tamir_eden/" target="_blank" rel="noopener noreferrer" aria-label="Twitter">
<!-- Twitter / X icon -->
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622L18.244 2.25zm-1.161 17.52h1.833L7.084 4.126H5.117L17.083 19.77z"/>
</svg>
</a>
<a href="https://www.linkedin.com/company/109977337/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn">
<!-- LinkedIn icon -->
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg>
</a>
<a href="mailto:contact@40rty.ai" aria-label="Email">
<!-- Mail icon -->
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="4" width="20" height="16" rx="2"/>
<path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/>
</svg>
</a>
</div>
<div class="footer-shopify-badge">
<a href="https://www.shopify.com" target="_blank" rel="noopener noreferrer">
<img src="/shopify-mono-black.png" alt="Shopify" class="shopify-badge" />
</a>
</div>
</div>
<!-- Product column -->
<div class="footer-col" data-collapsible>
<button class="footer-col-toggle" aria-expanded="false"><h4>Product</h4><svg class="footer-col-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg></button>
<ul>
<li><a href="https://40rty.ai/#solution-section">Features</a></li>
<li><a href="https://40rty.ai/#pricing-section">Pricing</a></li>
<li><a href="https://40rty.ai">Product Tour</a></li>
<li><a href="https://40rty.ai">Case Studies</a></li>
</ul>
</div>
<!-- Company column -->
<div class="footer-col" data-collapsible>
<button class="footer-col-toggle" aria-expanded="false"><h4>Company</h4><svg class="footer-col-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg></button>
<ul>
<li><a href="https://40rty.ai">About</a></li>
<li><a href="https://40rty.ai/blog">Blog</a></li>
<li><a href="https://40rty.ai/careers">Careers</a></li>
<li><a href="mailto:contact@40rty.ai">Contact</a></li>
</ul>
</div>
<!-- Resources column -->
<div class="footer-col" data-collapsible>
<button class="footer-col-toggle" aria-expanded="false"><h4>Resources</h4><svg class="footer-col-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg></button>
<ul>
<li><a href="https://intercom.help/40rtyai/en/" target="_blank" rel="noopener noreferrer">Documentation</a></li>
<li><a href="https://intercom.help/40rtyai/en/" target="_blank" rel="noopener noreferrer">Help Center</a></li>
<li><a href="https://audit.40rty.ai/privacy-policy" target="_blank" rel="noopener noreferrer">Privacy Policy</a></li>
</ul>
</div>
</div>
<!-- Bottom bar -->
<div class="footer-bottom">
<p class="footer-copy">© 2026 40rty.ai. All rights reserved.</p>
<div class="footer-legal">
<a href="https://40rty.ai">Terms of Service</a>
<a href="https://audit.40rty.ai/privacy-policy" target="_blank" rel="noopener noreferrer">Privacy</a>
<a href="https://40rty.ai">Cookies</a>
</div>
</div>
</div>
</footer>
<style>
.site-footer {
width: 100%;
background: linear-gradient(to bottom, transparent 0%, #F7AA41 60%);
margin-top: 80px;
}
.footer-inner {
max-width: var(--max-width);
margin: 0 auto;
padding: 48px 24px 32px;
}
.footer-grid {
display: grid;
grid-template-columns: 1.5fr 1fr 1fr 1fr;
gap: 32px;
margin-bottom: 32px;
}
/* Brand */
.footer-brand {
display: flex;
flex-direction: column;
gap: 12px;
}
.footer-logo {
height: 38px;
width: auto;
}
.footer-tagline {
font-size: 0.875rem;
color: rgba(10, 10, 10, 0.6);
line-height: 1.5;
}
.footer-socials {
display: flex;
gap: 16px;
}
.footer-socials a {
color: rgba(10, 10, 10, 0.5);
transition: color 0.15s;
line-height: 0;
}
.footer-socials a:hover {
color: var(--color-dark);
}
.shopify-badge {
height: 20px;
width: auto;
opacity: 0.5;
transition: opacity 0.15s;
}
.footer-shopify-badge a:hover .shopify-badge {
opacity: 1;
}
/* Columns */
.footer-col h4 {
font-family: var(--font-heading);
font-size: 0.875rem;
font-weight: 600;
color: var(--color-dark);
margin-bottom: 16px;
letter-spacing: -0.01em;
}
.footer-col ul {
list-style: none;
display: flex;
flex-direction: column;
gap: 8px;
}
.footer-col a {
font-size: 0.875rem;
color: rgba(10, 10, 10, 0.55);
text-decoration: none;
transition: color 0.15s;
}
.footer-col a:hover {
color: var(--color-dark);
}
/* Bottom bar */
.footer-bottom {
border-top: 1px solid rgba(10, 10, 10, 0.15);
padding-top: 24px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
flex-wrap: wrap;
}
.footer-copy {
font-size: 0.875rem;
color: rgba(10, 10, 10, 0.45);
}
.footer-legal {
display: flex;
gap: 24px;
}
.footer-legal a {
font-size: 0.875rem;
color: rgba(10, 10, 10, 0.45);
text-decoration: none;
transition: color 0.15s;
}
.footer-legal a:hover {
color: var(--color-dark);
}
/* Responsive */
@media (max-width: 768px) {
.footer-grid {
grid-template-columns: 1fr 1fr;
}
.footer-brand {
grid-column: 1 / -1;
}
.footer-bottom {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
}
@media (max-width: 480px) {
.footer-grid {
grid-template-columns: 1fr;
}
}
.footer-col-toggle {
display: none;
width: 100%;
justify-content: space-between;
align-items: center;
background: none;
border: none;
padding: 0;
cursor: pointer;
text-align: left;
}
.footer-col-icon {
transition: transform 0.2s;
}
.footer-col.is-open .footer-col-icon {
transform: rotate(180deg);
}
@media (max-width: 480px) {
.footer-col-toggle {
display: flex;
}
.footer-col[data-collapsible] ul {
display: none;
padding-top: 8px;
}
.footer-col[data-collapsible].is-open ul {
display: flex;
}
}
</style>
<script>
document.querySelectorAll('[data-collapsible] .footer-col-toggle').forEach(button => {
button.addEventListener('click', () => {
const parentCol = button.parentElement;
const isOpen = parentCol.classList.toggle('is-open');
button.setAttribute('aria-expanded', String(isOpen));
});
});
</script>
---
interface Props {
name: string;
description: string;
category: string;
href: string;
}
const { name, description, href } = Astro.props;
---
<a href={href} class="card">
<code class="card-name">{name}</code>
<p class="card-desc">{description}</p>
<span class="card-arrow">↗</span>
</a>
<style>
.card {
display: block;
background: var(--color-card);
border: 1px solid var(--color-card-border);
border-radius: var(--radius);
padding: 24px;
transition: all 0.2s ease;
cursor: pointer;
position: relative;
overflow: hidden;
}
.card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 100%;
background: var(--color-accent);
opacity: 0;
transition: opacity 0.2s;
}
.card:hover {
border-color: var(--color-accent);
transform: translateY(-3px);
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.06);
}
.card:hover::before { opacity: 1; }
.card-name {
font-family: var(--font-mono);
font-size: 0.92rem;
font-weight: 600;
display: block;
margin-bottom: 8px;
}
.card-desc {
font-size: 0.85rem;
color: var(--color-muted);
line-height: 1.5;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.card-arrow {
position: absolute;
top: 20px;
right: 20px;
font-size: 1.1rem;
color: var(--color-muted);
opacity: 0;
transform: translate(-4px, 4px);
transition: all 0.2s ease;
}
.card:hover .card-arrow {
opacity: 1;
transform: translate(0, 0);
}
</style>
{
"extends": "astro/tsconfigs/strict",
"include": [".astro/types.d.ts", "**/*"],
"exclude": ["dist"]
}
Related skills
How it compares
Use shopify-admin-skills when you need broad merchant operations coverage; pick a specific sub-skill when the task is narrowly scoped like refunds or inventory only.
FAQ
What areas does it cover?
Merchandising, customer support, marketing, operations, finance and returns, conversion optimization, and order intelligence.
Does it run destructive operations automatically?
No, it instructs the agent to always confirm potentially destructive bulk operations before execution.