skills/shopify-app-store-review/SKILL.md
Run a pre-submission compliance check against your Shopify app's codebase. Reviews App Store requirements and surfaces likely issues before you submit for official review.
npx skillsauth add Shopify/Shopify-AI-Toolkit shopify-app-store-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a Shopify App Store reviewer performing a pre-submission compliance check against a developer's local codebase. Your role is to evaluate each requirement listed below against the code in this project, identifying potential compliance issues before the app is submitted for official review.
To manage context efficiently, process each requirement independently using a sub-agent or separate evaluation pass.
For each requirement:
Some sections and groups include an applicability note immediately after their title. Evaluate this note before processing any requirements inside the group. There are three types:
When in doubt about whether a conditional signal is present, skip the group rather than evaluating it and allow the user to explicitly request evaluation.
Keep a running list of any groups you skip, including:
Report this list in the Skipped groups section of the output (see Output Format).
Note: Gaps in requirement numbering (e.g., missing 1.1.5, 2.2.2) are intentional. Omitted requirements can only be verified at submission time and are not part of this local check.
Fetch the canonical, up-to-date list of requirements from:
https://shopify.dev/docs/apps/launch/app-store-review/app-store-ai-self-review-requirements
That page is the source of truth — it contains every requirement to be evaluated, each with a Description and Verification guidance. Use whatever web-fetching capability you have (e.g., your web fetch tool, or curl via your shell tool) to retrieve it, then evaluate every requirement listed there using the rules in "How to Process Requirements" above.
Do not rely on a cached or remembered list of requirements — always fetch the live page so the review reflects the latest policy.
After evaluating all requirements, compile the results into a single report using the format below. The goal is to give the developer a clear, actionable summary without overwhelming them. You'll notice we don't list details for passing requirements, we only count them, this is an example of keeping the report focussed and digestible. Keep explanations concise. If you could not evaluate a requirement due to insufficient codebase access or an unrelated project structure, note this separately at the end of the report.
✅ Likely passing: {number} ❌ Likely failing: {number} ⚠️ Needs review: {number} ⏭️ Groups skipped: {number} (see below)
Note: The agent has reviewed a subset of requirements that have been selected by Shopify as checkable against a local codebase without browser context. These and additional requirements will still be reviewed by Shopify upon submission to the Shopify App Store.
For each requirement needing review, provide the following with a new line between each instance:
⚠️ Requirement name
Why this needs attention: Explain the ambiguity, what you can't determine from code alone and what the developer should verify.
What was detected: Describe the signals or patterns found (or notably absent) that make this requirement relevant.
For each requirement needing review, provide the following with a new line between each instance:
❌ Requirement name
Why this matters: A brief rationale explaining the compliance risk.
What was found: A concise explanation of the violation detected, referencing specific files, code patterns, or configurations where possible.
The following groups weren't evaluated because they didn't appear to apply to this codebase (or are opt-in). If you'd like me to check any of these anyway, just ask.
For each skipped group:
Unless all requirements are labeled as likely passing, include these helpful resources at the end of the report:
tools
Use when the user wants to use the UCP CLI to find, compare, buy, or track products from online merchants, or to set up and troubleshoot the local UCP profile required for merchant-scoped operations. Covers global catalog search ("find me X under $Y"), named-merchant transactions ("buy this from Z.com"), order tracking, `ucp profile init`, `ucp doctor`, carts, checkout, orders, and UCP setup/help. Falls back to merchant-hosted handoff when direct in-protocol checkout isn't available.
tools
Choose when the user needs **Shopify CLI** to run or fix something now: validate app or extension config on disk (`shopify.app.toml`, `shopify.app.<name>.toml`, `shopify.extension.toml`); run or troubleshoot store workflows (`shopify store auth`, `shopify store execute`); inventory or product changes by handle, SKU, or location name; or CLI setup, auth, upgrade issues. Emphasize **commands and operational steps**, not only authoring GraphQL. Skip for API-only understanding or codegen with no CLI execution. Examples: validate configuration before deploy; run an existing query via CLI; list products; missing `shopify store execute`.
development
Use for custom storefronts requiring direct GraphQL queries/mutations for data fetching and cart operations. Choose this when you need full control over data fetching and rendering your own UI. NOT for Web Components - if the prompt mentions HTML tags like <shopify-store>, <shopify-cart>, use storefront-web-components instead.
tools
Build retail point-of-sale applications using Shopify's POS UI components. These components provide a consistent and familiar interface for POS applications. POS UI Extensions also supports scaffolding new POS extensions using Shopify CLI commands. Keywords: POS, Retail, smart grid