From shopify-pack
Debug complex Shopify API issues using cost analysis, request tracing, webhook delivery inspection, and GraphQL introspection. Use when encountering intermittent failures, throttling mysteries, or webhook delivery gaps. Trigger with phrases like "shopify hard bug", "shopify mystery error", "shopify deep debug", "difficult shopify issue", "shopify intermittent failure".
npx claudepluginhub flight505/skill-forge --plugin shopify-packThis skill is limited to using the following tools:
Deep debugging for complex Shopify API issues: cost analysis with debug headers, webhook delivery inspection, GraphQL query introspection, and systematic isolation of intermittent failures.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Deep debugging for complex Shopify API issues: cost analysis with debug headers, webhook delivery inspection, GraphQL query introspection, and systematic isolation of intermittent failures.
curl and jq availableWhen queries THROTTLE unexpectedly, use the cost debug header by adding Shopify-GraphQL-Cost-Debug: 1 to your request. The response extensions.cost reveals why a query is expensive.
Key: requestedQueryCost is first multiplied through nested connections. 50 products * 20 variants * (1 + 5 metafields) = high cost even if actual data is small.
Every Shopify response includes X-Request-Id. Capture it for support escalation:
curl -v -X POST "https://$STORE/admin/api/2025-04/graphql.json" \
-H "X-Shopify-Access-Token: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"query": "{ shop { name } }"}' 2>&1 | tee /tmp/shopify-debug.txt
grep -i "x-request-id" /tmp/shopify-debug.txt
Inspect webhook delivery status in the Partner Dashboard, or query subscription health via API.
See Webhook Status Query for the complete query and common delivery failure patterns.
Use introspection queries to check if specific fields or mutations exist in your API version. Query __type for field lists or __schema for available mutations filtered by prefix.
Run a layer-by-layer diagnostic that tests DNS, TCP, TLS, HTTP, GraphQL, and rate limit state independently.
See Layer-by-Layer Diagnostic for the complete shell script.
Wrap Shopify calls in a debug logger that captures timing, cost, and error data for pattern analysis.
See Debug Intermittent Failures for the complete TypeScript implementation.
| Issue | Root Cause Pattern | Solution |
|---|---|---|
| Random THROTTLED errors | requestedQueryCost spikes on specific queries | Reduce first: and nested depth |
| Webhooks stop arriving | SSL certificate expired | Renew cert, check webhook subscriptions |
| 502 errors on GraphQL | Shopify infrastructure blip | Retry with backoff, capture X-Request-Id |
| Slow responses (> 5s) | Complex query with metafields | Remove metafields or reduce page size |
| Data inconsistency | Race condition between webhook and query | Use updatedAt filter, add idempotency |
A store experiences random 502 errors on product sync queries. Use the debug wrapper to capture timing and cost data across 100 requests, then analyze the pattern.
See Debug Intermittent Failures for the complete TypeScript implementation.
Orders are created but the fulfillment webhook never fires. Run the webhook status query to check subscription health and delivery success rates.
See Webhook Status Query for the complete query and common delivery failure patterns.
API calls fail sporadically from a specific server. Run the layer-by-layer diagnostic to test DNS, TCP, TLS, HTTP, and GraphQL independently.
See Layer-by-Layer Diagnostic for the complete shell script.