All skills

    Shopify App Review

    shopify-app-review/SKILL.md · updated 2026-06-12

    A Claude skill that reviews a Shopify app the way an App Store reviewer would: session auth, GDPR webhooks, billing, scopes and listing, with evidence.

    Install in Claude Code

    ~/.claude/skills/shopify-app-review/
    $ mkdir -p ~/.claude/skills/shopify-app-review && curl -fsSL https://www.harshrastogi.tech/skills/shopify-app-review.md -o ~/.claude/skills/shopify-app-review/SKILL.md

    Then ask Claude Code for the task and the skill is picked up on its own. To scope it to one project, use .claude/skills/ inside your repo instead.

    6 checks, in the order that matters.

    Use it when

    • Preparing a Shopify app or major update for App Store submission
    • Inheriting a Shopify app codebase and needing a compliance baseline
    • A previous submission was rejected and you want to clear everything at once
    1. 01Authentication & installation
    2. 02Webhooks (the #1 silent rejection)
    3. 03Billing
    4. 04Embedded app quality
    5. 05Data & scopes
    6. 06Listing readiness
    • Shopify
    • Compliance
    • App Store
    • Code Review

    The full SKILL.md

    Download
    shopify-app-review/SKILL.md60 lines
    ---
    name: shopify-app-review
    description: Pre-submission compliance review for Shopify apps. Use when preparing a Shopify app or app update for App Store submission — audits code, OAuth/session handling, webhooks, billing, and the listing against the most common rejection reasons.
    ---
    
    # Shopify App Pre-Submission Review
    
    You are reviewing a Shopify app the way a Shopify app reviewer would — adversarially, before submission. Work through every section below against the actual codebase. For each item report PASS, FAIL (with file/line evidence), or N/A (with one-line justification). Never mark an item PASS without looking at the code that proves it.
    
    ## 1. Authentication & installation
    
    - OAuth flow completes immediately on install — the app must not show a login/signup wall before OAuth. Embedded apps must use session token auth (App Bridge), not cookies.
    - Verify HMAC validation on the OAuth callback and on every request that carries query-string HMAC.
    - Session tokens are validated server-side (signature + expiry + `dest` claim), not just decoded.
    - App works when installed on a development store with no prior data.
    
    ## 2. Webhooks (the #1 silent rejection)
    
    - `app/uninstalled` webhook is registered AND handled — all merchant data cleanup happens here.
    - Mandatory GDPR webhooks exist and return 200: `customers/data_request`, `customers/redact`, `shop/redact`.
    - Every webhook handler verifies the HMAC header before processing the body.
    - Handlers respond within 5 seconds — heavy work is queued, not done inline. Look for synchronous external API calls inside webhook handlers and flag them.
    
    ## 3. Billing
    
    - All charges go through the Shopify Billing API — flag any Stripe/PayPal checkout for app functionality (allowed only for sales outside app functionality).
    - Test charges work on a development store (`test: true` handled properly, never hardcoded for production).
    - Upgrade/downgrade paths don't strand the merchant: plan changes cancel the prior subscription.
    - Free trial behavior matches what the listing promises.
    
    ## 4. Embedded app quality
    
    - App loads inside the Shopify admin iframe without frame-busting; CSP headers include `frame-ancestors` for the shop domain.
    - Uses Polaris (or visually consistent equivalent) — flag obviously non-admin-looking UI.
    - Navigation works with App Bridge: deep links, the browser back button, and session token refresh after idle.
    - No broken states when API scopes are missing — re-auth flow triggers cleanly on 401/403 from Shopify.
    
    ## 5. Data & scopes
    
    - Requested scopes are the minimum the app actually uses — list each scope and the code that uses it; flag unused scopes.
    - No protected customer data is logged, sent to third-party analytics, or stored beyond need.
    - If the app uses AI/LLM processing on shop data, the privacy policy and listing must disclose it.
    
    ## 6. Listing readiness
    
    - App name, icon, and screenshots contain no Shopify trademarks misuse ("Shopify" not leading the app name).
    - Listing claims match real functionality — flag any feature in the listing copy you cannot find in the code.
    - Demo store or screencast URL is provided if the app needs configuration to demonstrate.
    
    ## Output format
    
    Produce a single report:
    
    1. **Verdict** — READY / NOT READY with the count of blocking failures.
    2. **Blocking failures** — each with evidence (file:line), why Shopify rejects for it, and the minimal fix.
    3. **Warnings** — items likely to pass but worth fixing.
    4. **Evidence table** — every checklist item with PASS/FAIL/N/A.
    
    Be strict: a false PASS costs a 1–2 week review round-trip. When uncertain, mark FAIL and say what evidence would flip it.
    

    Using a different agent? Skills are plain markdown. Paste the file into any capable AI assistant with your task, or load it as system instructions in your agent framework.

    More skills

    Full library