From shopify-admin-skills
Analyzes Shopify product pricing against sales velocity to identify optimal price points and price-sensitive products. Uses GraphQL queries on products, orders, and variants; groups by type, vendor, or collection.
npx claudepluginhub 40rty-ai/shopify-admin-skills --plugin shopify-admin-skillsThis skill uses the workspace's default tool permissions.
Analyzes price-to-velocity relationships across the product catalog to identify which products are price-sensitive and where optimal price points might exist. Compares products within the same category/vendor at different price tiers, and examines how products with compare-at prices (on sale) perform vs. full-price items. Read-only — no mutations.
Ranks Shopify product variants by revenue, units sold, refund rate, and cross-references current inventory to identify top performers vs dead stock.
Audits Wix stores via API: scores catalog health (images, descriptions, prices), inventory (low/out-of-stock), provides status and insights for optimization.
Designs and optimizes SaaS pricing strategies including tiering, packaging, value metrics, and experimentation. Useful for initial pricing, conversion optimization, revenue expansion, or monetization queries.
Share bugs, ideas, or general feedback.
Analyzes price-to-velocity relationships across the product catalog to identify which products are price-sensitive and where optimal price points might exist. Compares products within the same category/vendor at different price tiers, and examines how products with compare-at prices (on sale) perform vs. full-price items. Read-only — no mutations.
shopify store auth --store <domain> --scopes read_orders,read_productsread_orders, read_products| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain |
| days_back | integer | no | 90 | Sales lookback window |
| group_by | string | no | product_type | Group comparison: product_type, vendor, or collection |
| format | string | no | human | Output format: human or json |
ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.
OPERATION: products — query
Inputs: first: 250, status: ACTIVE, select id, title, productType, vendor, variants { price, compareAtPrice, inventoryQuantity }, pagination cursor
Expected output: All active products with pricing data
OPERATION: orders — query
Inputs: query: "created_at:>='<NOW - days_back days>'", first: 250, select lineItems { variant { id, price }, quantity }, pagination cursor
Expected output: Sales data per variant for velocity calculation
For each product/variant, calculate:
Within each group (product_type or vendor):
OPERATION: productVariants — query (enrichment for variants with compare-at prices)
Inputs: Variant IDs where compareAtPrice is set
Expected output: Historical pricing context
# products:query — validated against api_version 2025-01
query ActiveProductsWithPricing($after: String) {
products(first: 250, after: $after, query: "status:active") {
edges {
node {
id
title
productType
vendor
variants(first: 100) {
edges {
node {
id
price
compareAtPrice
sku
inventoryQuantity
}
}
}
}
}
pageInfo { hasNextPage endCursor }
}
}
# orders:query — validated against api_version 2025-01
query SalesVelocityData($query: String!, $after: String) {
orders(first: 250, after: $after, query: $query) {
edges {
node {
createdAt
lineItems(first: 50) {
edges {
node {
variant { id price }
quantity
}
}
}
}
}
pageInfo { hasNextPage endCursor }
}
}
# productVariants:query — validated against api_version 2025-01
query VariantsOnSale($query: String, $after: String) {
productVariants(first: 250, after: $after, query: $query) {
edges {
node {
id
price
compareAtPrice
product { id title productType vendor }
}
}
pageInfo { hasNextPage endCursor }
}
}
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Price Elasticity Analyzer ║
║ Store: <store domain> ║
║ Started: <YYYY-MM-DD HH:MM UTC> ║
╚══════════════════════════════════════════════╝
After each step, emit:
[N/TOTAL] <QUERY|MUTATION> <OperationName>
→ Params: <brief summary of key inputs>
→ Result: <count or outcome>
On completion, emit:
For format: human (default):
══════════════════════════════════════════════
PRICE ELASTICITY ANALYSIS (<days_back> days)
Products analyzed: <n>
Product groups compared: <n>
─────────────────────────────
PRICE-SENSITIVE (high elasticity):
"<product type>" — velocity drops <pct>% per $10 price increase
Top candidate: "<product>" at $<price> — consider testing $<lower>
PRICE-INSENSITIVE (low elasticity):
"<product type>" — velocity stable across price range $<low>-$<high>
Top candidate: "<product>" at $<price> — room to increase
SALE EFFECTIVENESS:
Products on sale: <n> Avg discount: <pct>%
Sale velocity lift: +<pct>% vs. full-price peers
Output: price_elasticity_<date>.csv
══════════════════════════════════════════════
CSV file price_elasticity_<YYYY-MM-DD>.csv with columns:
product_id, product_title, product_type, vendor, current_price, compare_at_price, daily_velocity, revenue_per_day, group_avg_velocity, price_rank_in_group, elasticity_indicator, recommendation
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| Small groups | Only 1-2 products in a type | Skip group — insufficient data for comparison |
| No sales | Product has zero sales in window | Include at velocity=0 for comparison |
bulk-price-adjustment.discount-ab-analysis.