Not in the top 1,000 by GitHub stars

Shopify/Shopify-AI-Toolkit

Agent plugins/extensions for CLIs and IDEs

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

deprecated/shopify-admin/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-app-pricing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-app-store-review/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-custom-data/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-customer/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-dev/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-functions/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-hydrogen/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-liquid/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-onboarding-dev/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-onboarding-merchant/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-partner/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-payments-apps/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-polaris-admin-extensions/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-polaris-app-home/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-polaris-checkout-extensions/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-polaris-customer-account-extensions/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-pos-ui/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-shopifyql/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-storefront-graphql/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

deprecated/shopify-use-shopify-cli/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

skills/shopify/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

skills/ucp/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

a3d20f8dc284 → a3d20f8dc284

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a3d20f8dc284

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit a3d20f8dc284a2e8ae25272fa79520888abb5dcb

git clone --filter=blob:none --no-checkout https://github.com/Shopify/Shopify-AI-Toolkit.git .hotskills/shopify-shopify-ai-toolkit && git -C .hotskills/shopify-shopify-ai-toolkit checkout --detach a3d20f8dc284a2e8ae25272fa79520888abb5dcb # Copy each selected skill directory from .hotskills/shopify-shopify-ai-toolkit into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/Shopify/Shopify-AI-Toolkit.git .hotskills/shopify-shopify-ai-toolkit && git -C .hotskills/shopify-shopify-ai-toolkit checkout --detach a3d20f8dc284a2e8ae25272fa79520888abb5dcb # Copy each selected skill directory from .hotskills/shopify-shopify-ai-toolkit into .gemini/skills/<skill-name>/
630GitHub stars
9stars in 7 days
23skills in this repository
8commits in 30 days

Heat

6.9
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026630

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

shopify-admin

When your agent uses it

Write or explain **Admin GraphQL** queries and mutations for apps and integrations that extend the Shopify admin. Use when the user wants to **understand, design, or generate** the operation itself—even before deciding how to run it. Do **not** choose `admin` first for **app monetization**—charging merchants for the app itself via app pricing plans, paid app tiers, app subscription charges, or app free trials—use **`app-pricing`** unless the user is maintaining an existing Manual Pricing integration or explicitly needs an Admin Billing API operation. Merchant **product** subscriptions stay with `admin` (selling plans, subscription contracts, try-before-you-buy). Do **not** choose `admin` first for **app or extension config validation** —use **`use-shopify-cli`**. Do **not** choose `admin` first to **execute** Admin GraphQL **now via Shopify CLI** or for CLI setup/troubleshooting on store workflows—use **`use-shopify-cli`** (store auth/execute, handle/SKU/location lookups, inventory changes).

What it loads into context

Frontmatter

231 tokens

Always available to the agent

SKILL.md

303 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

    Files

    • ../../.claude-plugin/marketplace.jsonasset862 bytes
    • ../../.claude-plugin/plugin.jsonasset552 bytes
    • SKILL.mdcore1,324 bytes
    • ../../hooks/hooks.jsonasset534 bytes
    • ../../hooks/hooks.jsonasset534 bytes
    • ../../hooks/hooks.jsonasset534 bytes
    • ../../hooks/hooks.jsonasset534 bytes
    • ../../hooks/hooks.jsonasset534 bytes
    Read SKILL.md
    
    # shopify-admin (deprecated)
    
    This skill is deprecated and replaced by `shopify`. Tell the user: "shopify-admin is deprecated. Run `npx skills remove shopify-admin` (add `-g` for a global install) and `npx skills add shopify/shopify-ai-toolkit --skill shopify`."
    View the complete source on GitHub

    Skills included

    • shopify-admin
    • shopify-app-pricing
    • shopify-app-store-review
    • shopify-custom-data
    • shopify-customer
    • shopify-dev
    • shopify-functions
    • shopify-hydrogen
    • shopify-liquid
    • shopify-onboarding-dev
    • shopify-onboarding-merchant
    • shopify-partner
    • shopify-payments-apps
    • shopify-polaris-admin-extensions
    • shopify-polaris-app-home
    • shopify-polaris-checkout-extensions
    • shopify-polaris-customer-account-extensions
    • shopify-pos-ui
    • shopify-shopifyql
    • shopify-storefront-graphql
    • shopify-use-shopify-cli
    • shopify
    • ucp

    Repository facts

    License
    MIT
    Created
    Apr 1, 2026
    Last pushed
    Oct 27, 2026
    Forks
    89
    Open issues
    21
    Project activity
    Active

    Before you install

    Network or broad shell

    Automated signals, not a guarantee

    Checked Nov 4, 2026

    Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

    Show 123 notes
    • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • deprecated/shopify-liquid/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
    Show all 376 signals by file

    .claude-plugin/marketplace.json

    • Network accessline 15
      "author": { "name": "Shopify" },       "license": "MIT",       "homepage": "https://github.com/Shopify/Shopify-AI-Toolkit",
    • Network accessline 16
      "license": "MIT",       "homepage": "https://github.com/Shopify/Shopify-AI-Toolkit",       "keywords": [
    • Network accessline 17
      "homepage": "https://github.com/Shopify/Shopify-AI-Toolkit",

    skills/shopify/featured-collection.liquid

    • Network accessline 347
      fetch('/cart/add.js', {

    skills/shopify/package.json

    • Executable scriptline 1
      Executable file

    skills/shopify/references/app-store-review.md

    • Network accessline 54
      shopify doc fetch --url https://shopify.dev/docs/apps/launch/app-store-review/app-store-ai-self-review-requirements
    • Network accessline 110
      - [App Store requirements documentation](https://shopify.dev/docs/apps/launch/shopify-app-store/app-store-requirements)
    • Network accessline 111
      - [Best practices for apps](https://shopify.dev/docs/apps/launch/shopify-app-store/best-practices)
    • Network accessline 112
      - [About billing for your app](https://shopify.dev/docs/apps/launch/billing)
    • Network accessline 113
      - [Submitting your app for review](https://shopify.dev/docs/apps/launch/app-store-review/submit-app-for-review)

    skills/shopify/references/custom-data.md

    • Network accessline 188
      Docs: [Metafields & Metaobjects](https://shopify.dev/docs/apps/build/custom-data)

    skills/shopify/references/flow.md

    • Network accessline 18
      Use the bundled Admin `unstable` schema for operation details and validation. If it lacks a Flow operation, check against the [public unstable Admin reference](https://shopify.dev/docs/api/admin-graphql/unstable) instead.
    • Network accessline 155
      Read the [workflow JSON schema](https://shopify.dev/flow/workflow-configuration/unstable/schema.json) before authoring and validate structure against it. The installed skill bundles it at `assets/flow/workflow_structure_schema.json`. Task v

    skills/shopify/references/functions.md

    • Network accessline 83
      - Output: `FunctionFetchResult` -> Target: `Fetch` -> Function: `fetch()` -> Files: `src/fetch.rs`, `src/fetch.graphql`

    skills/shopify/references/hydrogen.md

    • Network accessline 12
      Hydrogen is Shopify's toolkit for building custom storefronts on the Storefront API. It provides the Storefront API client, the cart, products, collections, search, customer accounts, analytics, and Shop Pay. The developer's framework deter
    • Network accessline 48
      - **Imports:** Import core functions from `@shopify/hydrogen`. In React components, including React islands in Astro, import components and hooks from `@shopify/hydrogen/react`. In Vue components, import components and composables from `@sh
    • Network accessline 49
      - **Removed exports:** Hydrogen `2026-10` doesn't export the `Image`, `Video`, `ExternalVideo`, `MediaFile`, `Money`, `RichText`, `Pagination`, or `CartForm` components, the `Analytics` object and its components, or the `getSeoMeta` functio
    • Network accessline 50
      - **Storefront API client:** Create the client with `createStorefrontClient({type, requestContext, config})`, and pass the result of `createShopifyRequestContext` as `requestContext`. Follow [Query the Storefront API](https://shopify.dev/do
    • Network accessline 51
      - **Analytics:** In React and Vue apps, render the `ShopifyScripts` component from `@shopify/hydrogen/react` or `@shopify/hydrogen/vue` in the root layout. In other frameworks, including Astro, render the tags on the server with `renderShop
    • Network accessline 52
      - **Money and images:** Format money with `formatMoney` and the `hydrogen-money` skill. Render images with an `<img>` element or the framework's image component, and size them with the `hydrogen-image` skill. - **Docs:** Pass version `2026-
    • Network accessline 53
      - **Docs:** Pass version `2026-10` to the docs search. Use the [Hydrogen 2026-10 reference](https://shopify.dev/docs/api/hydrogen/2026-10) and the [Hydrogen guides](https://shopify.dev/docs/storefronts/hydrogen). Skip pages under `https://s
    • Network accessline 54
      - **Setup:** To add Hydrogen to an existing project, run `npx @shopify/hydrogen@latest setup` in the folder that contains `package.json`. The command installs `@shopify/hydrogen` and copies Hydrogen's skills into `.claude/skills/` and `.age
    • Network accessline 55
      - **Skills:** Before you write code for a feature, read the skill for that feature, such as `hydrogen-cart-ui` for a cart UI. If a project on Hydrogen `2026-10` is missing the skills, run `npx @shopify/hydrogen skills sync`. To update a pro
    • Network accessline 56
      - **New storefronts:** Shopify maintains the React Router template, which deploys to Oxygen. Vercel maintains Vercel Shop, a Next.js template that deploys to Vercel. Use Vercel Shop when the developer asks for Next.js or Vercel. Use the Rea
    • Network accessline 57
      - **Examples:** The [Hydrogen examples directory](https://github.com/Shopify/hydrogen/tree/main/examples) has examples for Next.js, Nuxt, Astro, SvelteKit, and SolidStart. For React Router, read the [React Router template](https://github.co
    • Network accessline 58
      [Credential-related source omitted]
    • Access to secretsline 58
      [Credential-related source omitted]
    • Network accessline 59
      - **Migration:** To move a storefront from Hydrogen `2026-04` or earlier, follow [Migrate to the latest version of Hydrogen](https://shopify.dev/docs/storefronts/hydrogen/migrate). Update `@shopify/hydrogen` to the latest `2026.10` release 
    • Network accessline 65
      - **Hydrogen React projects:** When `package.json` lists `@shopify/hydrogen-react` without `@shopify/hydrogen`, import everything from `@shopify/hydrogen-react`. Manage the cart with `CartProvider` and `useCart`, and send analytics with `se
    • Network accessline 69
      - **Routing imports:** In `2025-05` and later, import routing and data APIs from `react-router`. In `2025-04` and earlier, import routing and data APIs from Remix packages such as `@remix-run/react`. - **Not available:** Hydrogen `2026-04` 
    • Network accessline 70
      - **Not available:** Hydrogen `2026-04` and earlier doesn't export `createShopifyRequestContext`, `handleShopifyRoutes`, or `formatMoney`. - **Docs:** The docs for Hydrogen `2026-04` and earlier cover versions `2025-07` through `2026-04`. P
    • Network accessline 71
      - **Docs:** The docs for Hydrogen `2026-04` and earlier cover versions `2025-07` through `2026-04`. Pass the chosen version to the docs search. For `2025-05` and earlier, pass `2025-07`, and change the imports in the examples to match the s
    • Network accessline 72
      - **Recipes:** Use a recipe from the [Hydrogen Cookbook](https://shopify.dev/docs/storefronts/headless/legacy/hydrogen/cookbook) when one fits the request. The recipes use React Router. For `2025-04` and earlier, import Remix components and
    • Network accessline 73
      - **New storefronts:** To create, run, and deploy a storefront on Oxygen, follow [Getting started with Hydrogen and Oxygen](https://shopify.dev/docs/storefronts/headless/legacy/hydrogen/getting-started).
    • Network accessline 74
      - **mock.shop:** Without a store, follow [How to use mock.shop](https://shopify.dev/docs/storefronts/headless/mock-shop).

    skills/shopify/references/liquid.md

    • Network accessline 266
      - Fetch the theme performance best practices index: https://shopify.dev/docs/storefronts/themes/best-practices/performance.md

    skills/shopify/references/onboarding-dev.md

    • Network accessline 45
      | `claude-code` | `/plugin marketplace add Shopify/shopify-ai-toolkit` then `/plugin install shopify-plugin@shopify-ai-toolkit`                | | `cursor`      | `/add-plugin` and search for "Shopify", or visit `cursor.com/marketplace/shop
    • Network accessline 46
      | `cursor`      | `/add-plugin` and search for "Shopify", or visit `cursor.com/marketplace/shopify`                                            | | `vscode`      | Command Palette (Cmd+Shift+P) → **Chat: Install Plugin From Source** → paste 
    • Network accessline 47
      | `vscode`      | Command Palette (Cmd+Shift+P) → **Chat: Install Plugin From Source** → paste `https://github.com/Shopify/Shopify-AI-Toolkit` |
    • Network accessline 48
      | `gemini-cli`  | `gemini extensions install https://github.com/Shopify/shopify-ai-toolkit` (run in terminal, not inside CLI)                  |
    • Network accessline 62
      > > Or if you need a developer account first, create one free at > [dev.shopify.com/dashboard](https://dev.shopify.com/dashboard)."
    • Network accessline 64
      > [dev.shopify.com/dashboard](https://dev.shopify.com/dashboard)."
    • Network accessline 83
      The full list of official libraries and app templates lives at [shopify.dev/docs/api/libraries-and-templates](https://shopify.dev/docs/api/libraries-and-templates).
    • Network accessline 84
      [shopify.dev/docs/api/libraries-and-templates](https://shopify.dev/docs/api/libraries-and-templates).

    skills/shopify/references/onboarding-merchant.md

    • Network accessline 55
      - Fetch `https://mock.shop/llms.txt` as the authoritative live directory and verify that it returned a usable store list before presenting choices. Do not hardcode a store list or assume how many entries it currently contains.
    • Network accessline 56
      - If the merchant already named or linked a store, extract and retain its `{store}` subdomain. Otherwise, use the live directory to shortlist reference stores whose products and catalog shape fit the merchant's business, then let them choos
    • Network accessline 57
      - Show a browser-ready preview at `https://{store}.hydrogen.mock.shop`, identify the selected subdomain, and confirm the merchant wants that reference before copying anything.
    • Network accessline 58
      - For a developer who only wants auth-free Storefront API test data, stop here and point them to `POST https://{store}.mock.shop/api`. Do not create a Shopify store unless they also ask for one.
    • Network accessline 64
      1. Create their Shopify store with the normal preview-store flow below, unless this conversation already created it. If the merchant has not given a brand name, pass the reference store's shop name as `--name` (the `shop.name` that `https:/
    • Network accessline 70
      It reads the whole reference store from `https://{store}.mock.shop/api` and does everything in one pass: creates any missing collections with their cover images, imports every product with an idempotent `productSet` keyed by handle (titles,
    • Network accessline 99
      If the execution tool only accepts a shell command string, escape the complete name with a trusted shell-escaping function before inserting it. Never concatenate the raw name into the command. If safe escaping is unavailable, omit `--name` 
    • Network accessline 100
      - If they have not given a clear name but have said what they sell or who they serve, and are not asking for name or domain help, do not let the CLI name the store: its default is literally "My Store", a store's name is fixed at creation, a
    • Network accessline 128
      - When the merchant is ready to view the store, run `shopify store open --store <store-domain>` yourself; never give them the command. Open each store once, then reuse its existing tab and follow the automatic refresh step in "Edit the stor
    • Network accessline 129
      - Lead with a short success confirmation. - Fetch `https://mock.shop/llms.txt` and put two or three reference stores that fit the merchant's business directly in the next steps, each with what it sells, so they can pick one in their next me
    • Network accessline 130
      - Fetch `https://mock.shop/llms.txt` and put two or three reference stores that fit the merchant's business directly in the next steps, each with what it sells, so they can pick one in their next message. Do not make them ask for the offer 

    skills/shopify/references/onboarding-merchant.part2.md

    • Network accessline 30
      - If neither works, the merchant likely needs Node.js. Direct them to https://nodejs.org and walk them through the install before retrying npm.

    skills/shopify/references/polaris-admin-extensions.md

    • Network accessline 115
      <BlockStack id="anyString" accessibilityLabel="anyString" accessibilityRole="main" gap="base" blockGap="base" rowGap="base" blockSize={0} minBlockSize={0} maxBlockSize={0} inlineSize={0} minInlineSize={0} maxInlineSize={0} padding="base" pa
    • Network accessline 116
      <Box accessibilityRole="main" blockSize={0} minBlockSize={0} maxBlockSize={0} inlineSize={0} minInlineSize={0} maxInlineSize={0} padding="base" paddingBlock="base" paddingBlockStart="base" paddingBlockEnd="base" paddingInline="base" padding
    • Network accessline 117
      <Button id="anyString" accessibilityLabel="anyString" disabled variant="primary" tone="default" lang="en" href="https://example.com" to="https://example.com" download target="_self" onClick={() => {}} onPress={() => {}} onBlur={() => {}} on
    • Network accessline 129
      <HeadingGroup /> <Icon id="anyString" accessibilityLabel="anyString" tone="inherit" size="base" name="ChecklistMajor" /> <Image id="anyString" accessibilityRole="decorative" accessibilityLabel="anyString" loading="eager" source="https://exa
    • Network accessline 130
      <Icon id="anyString" accessibilityLabel="anyString" tone="inherit" size="base" name="ChecklistMajor" /> <Image id="anyString" accessibilityRole="decorative" accessibilityLabel="anyString" loading="eager" source="https://example.com/img.png"
    • Network accessline 131
      <Image id="anyString" accessibilityRole="decorative" accessibilityLabel="anyString" loading="eager" source="https://example.com/img.png" onLoad={() => {}} onError={() => {}} />
    • Network accessline 133
      <InternalCustomerSegmentTemplate title="anyString" description="anyString" icon="CategoriesIcon" query="anyString" queryToInsert="anyString" dependencies={{}} createdOn="2026-05-25T00:00:00Z" category="firstTimeBuyers" /> <InternalLocationL
    • Network accessline 134
      <InternalLocationList locationGroups={[]} onMoveGroup={(oldIndex, newIndex) => {}} onRenameGroup={(id, name) => {}} onDeleteGroup={(id) => {}} onMoveTag={(tagId, oldGroupIndex, newGroupIndex) => {}} onCreateGroup={(id) => {}} /> <Link id="a
    • Network accessline 135
      <Link id="anyString" accessibilityLabel="anyString" href="https://example.com" to="https://example.com" tone="default" lang="en" target="_self" onClick={() => {}} onPress={() => {}} />
    • Network accessline 138
      <Paragraph id="anyString" fontSize="base" fontWeight="base" textOverflow="ellipsis" fontStyle="normal" /> <PasswordField id="anyString" label="anyString" name="anyString" placeholder="anyString" value="anyString" error="anyString" disabled 
    • Network accessline 139
      <PasswordField id="anyString" label="anyString" name="anyString" placeholder="anyString" value="anyString" error="anyString" disabled readOnly required maxLength={100} minLength={0} autocomplete="new-password" onBlur={() => {}} onChange={(v
    • Network accessline 140
      <Pressable id="anyString" accessibilityRole="main" accessibilityLabel="anyString" href="https://example.com" to="https://example.com" tone="default" lang="en" target="_self" blockSize={0} minBlockSize={0} maxBlockSize={0} inlineSize={0} min
    • Network accessline 145
      <TextArea id="anyString" label="anyString" name="anyString" placeholder="anyString" value="anyString" error="anyString" disabled readOnly required maxLength={100} minLength={0} rows={4} autocomplete="name" onBlur={() => {}} onChange={(value
    • Network accessline 147
      <URLField id="anyString" label="anyString" name="anyString" placeholder="anyString" value="https://example.com" error="anyString" disabled readOnly required maxLength={100} minLength={0} autocomplete="url" onBlur={() => {}} onChange={(value
    • Network accessline 171
      <s-admin-action heading="Edit product" loading>Content</s-admin-action> <s-admin-block heading="Custom Fields" collapsedSummary="3 fields configured">Content</s-admin-block> <s-admin-print-action src="https://example.com/invoice.pdf"></s-ad
    • Network accessline 172
      <s-admin-block heading="Custom Fields" collapsedSummary="3 fields configured">Content</s-admin-block> <s-admin-print-action src="https://example.com/invoice.pdf"></s-admin-print-action> <s-app-nav><s-link href="/settings">Settings</s-link><
    • Network accessline 173
      <s-admin-print-action src="https://example.com/invoice.pdf"></s-admin-print-action>
    • Network accessline 174
      <s-app-nav><s-link href="/settings">Settings</s-link></s-app-nav> <s-avatar initials="JD" src="https://example.com/avatar.jpg" size="base" alt="Jane Doe"></s-avatar> <s-badge tone="success" color="base" icon="check-circle" size="base">Fulfi
    • Network accessline 175
      <s-avatar initials="JD" src="https://example.com/avatar.jpg" size="base" alt="Jane Doe"></s-avatar>
    • Network accessline 177
      <s-banner heading="Important notice" tone="info" dismissible hidden>Message content</s-banner> <s-box accessibilityLabel="Container" accessibilityRole="group" accessibilityVisibility="visible" background="subdued" blockSize="auto" border="b
    • Network accessline 178
      <s-box accessibilityLabel="Container" accessibilityRole="group" accessibilityVisibility="visible" background="subdued" blockSize="auto" border="base" borderColor="base" borderRadius="base" borderStyle="solid" borderWidth="base" display="aut
    • Network accessline 179
      <s-button accessibilityLabel="Save product" disabled command="--show" commandFor="my-modal" icon="save" interestFor="my-tooltip" lang="en" loading type="submit" tone="auto" variant="primary" target="_self" href="https://example.com" downloa
    • Network accessline 196
      <s-heading accessibilityRole="presentation" accessibilityVisibility="visible" lineClamp="2">Page Title</s-heading> <s-icon type="cart" tone="success" color="base" size="base" interestFor="cart-tip"></s-icon> <s-image src="https://example.co
    • Network accessline 197
      <s-icon type="cart" tone="success" color="base" size="base" interestFor="cart-tip"></s-icon> <s-image src="https://example.com/product.jpg" srcSet="img-1x.jpg 1x, img-2x.jpg 2x" sizes="(max-width: 600px) 100vw, 50vw" alt="Product" loading="
    • Network accessline 198
      <s-image src="https://example.com/product.jpg" srcSet="img-1x.jpg 1x, img-2x.jpg 2x" sizes="(max-width: 600px) 100vw, 50vw" alt="Product" loading="lazy" accessibilityRole="presentation" inlineSize="100%" aspectRatio="16/9" objectFit="cover"
    • Network accessline 199
      <s-link accessibilityLabel="Docs" command="--show" commandFor="help-modal" interestFor="link-tip" download="report.csv" href="https://shopify.dev" lang="en" target="_self" tone="auto">Shopify Docs</s-link>

    skills/shopify/references/polaris-admin-extensions.part2.md

    • Network accessline 11
      <s-text-area name="description" value="A great product" defaultValue="" disabled label="Description" labelAccessibilityVisibility="exclusive" placeholder="Enter description" readOnly required error="Too short" details="Product description" 
    • Network accessline 12
      <s-text-field disabled name="title" value="Blue T-Shirt" defaultValue="Untitled" details="Product name" error="Required" label="Title" labelAccessibilityVisibility="exclusive" placeholder="Enter title" readOnly required autocomplete="off" i
    • Network accessline 13
      <s-thumbnail src="https://example.com/thumb.jpg" alt="Product" size="base"></s-thumbnail>
    • Network accessline 14
      <s-tooltip id="my-tip">Helpful tooltip text</s-tooltip> <s-unordered-list><s-list-item>Item A</s-list-item><s-list-item>Item B</s-list-item></s-unordered-list> <s-url-field name="website" value="https://example.com" defaultValue="https://" 
    • Network accessline 16
      <s-url-field name="website" value="https://example.com" defaultValue="https://" disabled label="Website" labelAccessibilityVisibility="exclusive" placeholder="https://example.com" readOnly required error="Invalid URL" details="Store URL" au

    skills/shopify/references/polaris-app-home.md

    • Network accessline 24
      <head>   <meta name="shopify-api-key" content="%SHOPIFY_API_KEY%" />   <script src="https://cdn.shopify.com/shopifycloud/app-bridge.js"></script>
    • Network accessline 25
      [Credential-related source omitted]
    • Access to secretsline 25
      [Credential-related source omitted]
    • Network accessline 26
      <script src="https://cdn.shopify.com/shopifycloud/app-bridge.js"></script>
    • Network accessline 27
      <script src="https://cdn.shopify.com/shopifycloud/polaris-1.js"></script>
    • Network accessline 31
      - `polaris-1.js` is the stable channel and the production default. It always serves the newest stable Polaris 1 release. The legacy unversioned `polaris.js` tracks the same 1.x line and never serves 2.x. - `polaris-2.js` is the stable Polar
    • Network accessline 32
      - `polaris-2.js` is the stable Polaris 2 channel. It always serves the newest stable Polaris 2 release, and `polaris-2.0.js` pins an app to exactly 2.0. Polaris 2 matches the updated Shopify admin (Admin Next) and follows whichever admin th
    • Network accessline 36
      Versions and channels: https://shopify.dev/docs/api/app-home/latest/web-components/versioning
    • Network accessline 57
      <s-avatar   initials="JD"   src="https://example.com/avatar.jpg"
    • Network accessline 58
      initials="JD"   src="https://example.com/avatar.jpg"   size="base"
    • Network accessline 59
      src="https://example.com/avatar.jpg"
    • Network accessline 126
      <s-icon type="cart" tone="auto" color="base" size="base"></s-icon> <s-image   src="https://example.com/image.png"
    • Network accessline 127
      <s-image   src="https://example.com/image.png"   alt="Description"
    • Network accessline 128
      src="https://example.com/image.png"
    • Network accessline 132
      loading="lazy" ></s-image> <s-link href="https://example.com" tone="auto">Link text</s-link>
    • Network accessline 133
      ></s-image> <s-link href="https://example.com" tone="auto">Link text</s-link> <s-button commandFor="actions-menu" icon="menu-vertical"></s-button>
    • Network accessline 134
      <s-link href="https://example.com" tone="auto">Link text</s-link>
    • Network accessline 220
      ></s-text-field> <s-thumbnail   src="https://example.com/thumb.jpg"
    • Network accessline 221
      <s-thumbnail   src="https://example.com/thumb.jpg"   alt="Product"
    • Network accessline 222
      src="https://example.com/thumb.jpg"
    • Network accessline 234
      name="url"   autocomplete="url"   placeholder="https://..."
    • Network accessline 235
      autocomplete="url"   placeholder="https://..." ></s-url-field>
    • Network accessline 236
      placeholder="https://..."

    skills/shopify/references/polaris-checkout-extensions.md

    • Network accessline 118
      The full list of official libraries and app templates lives at [shopify.dev/docs/api/libraries-and-templates](https://shopify.dev/docs/api/libraries-and-templates).
    • Network accessline 136
      <s-choice value="2">Option 2</s-choice> </s-choice-list> <s-clickable href="https://example.com">Click area</s-clickable>
    • Network accessline 137
      </s-choice-list> <s-clickable href="https://example.com">Click area</s-clickable> <s-clickable-chip>Removable tag</s-clickable-chip>
    • Network accessline 138
      <s-clickable href="https://example.com">Click area</s-clickable>
    • Network accessline 157
      <s-heading>Section Title</s-heading> <s-icon type="check" size="base"></s-icon> <s-image src="https://example.com/image.png" alt="Description"></s-image>
    • Network accessline 158
      <s-icon type="check" size="base"></s-icon> <s-image src="https://example.com/image.png" alt="Description"></s-image> <s-link href="https://example.com">Link text</s-link>
    • Network accessline 159
      <s-image src="https://example.com/image.png" alt="Description"></s-image>
    • Network accessline 160
      <s-link href="https://example.com">Link text</s-link>
    • Network accessline 184
      <s-press-button>Toggle</s-press-button> <s-product-thumbnail   src="https://example.com/product.png"
    • Network accessline 185
      <s-product-thumbnail   src="https://example.com/product.png"   size="base"
    • Network accessline 186
      src="https://example.com/product.png"
    • Network accessline 188
      ></s-product-thumbnail> <s-progress value="{0.5}" max="{1}" tone="auto"></s-progress> <s-qr-code content="https://example.com" size="base"></s-qr-code>
    • Network accessline 189
      <s-progress value="{0.5}" max="{1}" tone="auto"></s-progress> <s-qr-code content="https://example.com" size="base"></s-qr-code> <s-query-container containerName="main">Content</s-query-container>
    • Network accessline 190
      <s-qr-code content="https://example.com" size="base"></s-qr-code>

    skills/shopify/references/polaris-customer-account-extensions.md

    • Network accessline 92
      The full list of official libraries and app templates lives at [shopify.dev/docs/api/libraries-and-templates](https://shopify.dev/docs/api/libraries-and-templates).
    • Network accessline 101
      <s-avatar   initials="JD"   src="https://example.com/avatar.jpg"
    • Network accessline 102
      initials="JD"   src="https://example.com/avatar.jpg"   size="base"
    • Network accessline 103
      src="https://example.com/avatar.jpg"
    • Network accessline 184
      <s-icon type="cart" tone="auto" size="base"></s-icon> <s-image   src="https://example.com/image.png"
    • Network accessline 185
      <s-image   src="https://example.com/image.png"   alt="Description"
    • Network accessline 186
      src="https://example.com/image.png"
    • Network accessline 191
      ></s-image> <s-image-group totalItems="6"   ><s-image src="https://example.com/1.jpg" alt="Image 1"></s-image
    • Network accessline 192
      <s-image-group totalItems="6"   ><s-image src="https://example.com/1.jpg" alt="Image 1"></s-image   ><s-image src="https://example.com/2.jpg" alt="Image 2"></s-image
    • Network accessline 193
      ><s-image src="https://example.com/1.jpg" alt="Image 1"></s-image
    • Network accessline 194
      ><s-image src="https://example.com/2.jpg" alt="Image 2"></s-image
    • Network accessline 195
      ></s-image-group> <s-link href="https://example.com" tone="auto">Link text</s-link> <s-map
    • Network accessline 196
      <s-link href="https://example.com" tone="auto">Link text</s-link>
    • Network accessline 250
      <s-press-button accessibilityLabel="Favorite" pressed>★</s-press-button> <s-product-thumbnail   src="https://example.com/product.jpg"
    • Network accessline 251
      <s-product-thumbnail   src="https://example.com/product.jpg"   alt="Blue T-Shirt"
    • Network accessline 252
      src="https://example.com/product.jpg"
    • Network accessline 261
      ></s-progress> <s-qr-code   content="https://example.com"
    • Network accessline 262
      <s-qr-code   content="https://example.com"   size="base"
    • Network accessline 263
      content="https://example.com"

    skills/shopify/references/pos-ui.md

    • Network accessline 230
      The full list of official libraries and app templates lives at [shopify.dev/docs/api/libraries-and-templates](https://shopify.dev/docs/api/libraries-and-templates).
    • Network accessline 243
      POS UI Extensions also supports [Polaris web components](https://shopify.dev/docs/api/polaris) — custom HTML elements with an `s-` prefix. These are globally registered and require **no import statement**. Use them directly as JSX tags:

    skills/shopify/references/storefront-graphql.md

    • Network accessline 18
      [mock.shop](https://mock.shop) is a public, auth-free Storefront GraphQL API backed by mock reference stores. Use mock.shop when the user has no store, no Storefront API access token, or wants realistic data to build against. Find the setup
    • Network accessline 20
      - `https://mock.shop/llms.txt` lists every store with a one-line summary and its API URL. Each store is a separate catalog on its own host, and `https://<store>.mock.shop/llms.txt` describes that store's catalog.
    • Network accessline 21
      - Send Storefront API queries as `POST https://<store>.mock.shop/api` with a JSON body (`{"query": "..."}`) and `Content-Type: application/json`. No access token or other credentials are needed; never send credentials to mock.shop. The bare
    • Network accessline 22
      - Pick the store whose categories match what the user is building. The default store is apparel basics. - The GraphQL operations run unchanged against a real store, so build against mock.shop first. To connect the client to a real store, fo
    • Network accessline 23
      - The GraphQL operations run unchanged against a real store, so build against mock.shop first. To connect the client to a real store, follow Shopify's [Storefront API getting started guide](https://shopify.dev/docs/storefronts/headless/buil

    skills/shopify/references/use-shopify-cli.md

    • Network accessline 23
      For full requirements, installation steps, and command reference, see the [Shopify CLI docs](https://shopify.dev/docs/api/shopify-cli).

    skills/shopify/scripts/_validate_components.mjs

    • Executable scriptline 1
      #!/usr/bin/env node
    • Possible obfuscationline 2
      var Pt=Object.defineProperty;var o=(e,t)=>Pt(e,"name",{value:t,configurable:!0});import{readFileSync as ii}from"fs";import{parseArgs as ri}from"util";var d={PUBLIC:"public",EARLY_ACCESS:"earlyAccess",INTERNAL:"internal"},f={GRAPHQL:"graphql
    • Possible obfuscationline 7
      `}o(ke,"formatCode");import*as D from"path";import x from"typescript";import{fileURLToPath as Tt}from"url";var Fe=o((e,t,n=x.ModuleResolutionKind.NodeJs)=>({target:x.ScriptTarget.ESNext,module:x.ModuleKind.ESNext,jsx:x.JsxEmit.ReactJSX,jsxI
    • Possible obfuscationline 8
      `,"getNewLine")}}o(Lt,"createLanguageServiceHost");function Ue(e,t){let n=new Map,i=new Map,r=Nt(),s=t??(e==="hydrogen"?"react":"preact"),a=Lt({fileVersions:n,virtualFiles:i},r,s,e==="hydrogen"?x.ModuleResolutionKind.Bundler:x.ModuleResolut
    • Possible obfuscationline 9
      `),code:I.code,start:I.start,end:I.start!==void 0&&I.length!==void 0?I.start+I.length:void 0}));return{validations:l,genericErrors:y}}o(Be,"extractComponentValidations");function je(e,t=!1){if(e.start===void 0||e.length===void 0)return!1;le
    • Possible obfuscationline 17
      ${r.map(c=>`  - ${c}`).join( `)}`),{result:a,resultDetail:s,componentValidationErrors:e.filter(c=>!c.skipped&&!c.valid).flatMap(c=>c.errors.map(l=>({componentName:c.componentName,...l}))),genericErrors:t,unvalidatedComponents:Array.from(new
    • Possible obfuscationline 18
      `)}`),{result:a,resultDetail:s,componentValidationErrors:e.filter(c=>!c.skipped&&!c.valid).flatMap(c=>c.errors.map(l=>({componentName:c.componentName,...l}))),genericErrors:t,unvalidatedComponents:Array.from(new Set(r)),validatedComponents:
    • Possible obfuscationline 65
      `;function yn(e){return Je.test(e)?e.replace(Je,hn):e}o(yn,"patchAnalyticsUiTypesForPreact");function ze(e,t,n){return e===gn&&t.endsWith(".d.ts")?yn(n):n}o(ze,"patchAssetDeclaration");var ie,re,oe;function vn(e){let t=m.resolve(e,"..","ass
    • Possible obfuscationline 66
      `);z(e,i,r)}o(wn,"addAppBridgePreactJSXShim");var Dn=["polaris-admin-extensions","polaris-checkout-extensions","polaris-customer-account-extensions","pos-ui"],Vn=["polaris-app-home"];function kn(e){return Vn.includes(e)}o(kn,"supportsRawHtm
    • Network accessline 90
      `}),s}o(pe,"formatValidationResult");function ot(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>{let{description:i,valueName:r,choices:s,...a}=n;return[t,a]}))}o(ot,"toParseArgsOptions");var st={model:{type:"string",valueName:"
    • Possible obfuscationline 90
      `}),s}o(pe,"formatValidationResult");function ot(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>{let{description:i,valueName:r,choices:s,...a}=n;return[t,a]}))}o(ot,"toParseArgsOptions");var st={model:{type:"string",valueName:"
    • Network accessline 91
      `)}o(pt,"formatCliHelp");function ut(){let e=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let t of e)if(typeof t=="string"&&t.length>0)return t}o(ut,"rea
    • Possible obfuscationline 91
      `)}o(pt,"formatCliHelp");function ut(){let e=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let t of e)if(typeof t=="string"&&t.length>0)return t}o(ut,"rea
    • Network accessline 92
      [Credential-related source omitted]
    • Possible obfuscationline 92
      [Credential-related source omitted]
    • Access to secretsline 92
      [Credential-related source omitted]
    • Possible obfuscationline 93
      `));return}await ft("/mcp/usage",{method:"POST",headers:A,body:T,instrumentation:{packageVersion:"1.19.0",timestamp:new Date().toISOString()}})}catch{}}o(Ne,"reportValidation");var Oe=["html","tsx","jsx"],vt={code:{type:"string",short:"c",v

    skills/shopify/scripts/_validate_functions.mjs

    • Executable scriptline 1
      #!/usr/bin/env node
    • Possible obfuscationline 2
      var pm=Object.create;var mo=Object.defineProperty;var dm=Object.getOwnPropertyDescriptor;var fm=Object.getOwnPropertyNames;var mm=Object.getPrototypeOf,ym=Object.prototype.hasOwnProperty;var r=(e,t)=>mo(e,"name",{value:t,configurable:!0});v
    • Possible obfuscationline 3
      `,p=i.split(/\r\n|[\n\r]/g),f=p[o];if(f.length>120){let m=Math.floor(c/80),v=c%80,b=[];for(let V=0;V<f.length;V+=80)b.push(f.slice(V,V+80));return l+Rc([[`${a} |`,b[0]],...b.slice(1,m+1).map(V=>["|",V]),["|","^".padStart(v)],["|",b[m+1]]])}
    • Possible obfuscationline 4
      `)}r(Rc,"printPrefixedLines")});var A=y(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});pn.GraphQLError=void 0;pn.formatError=Fm;pn.printError=wm;var jm=it(),kc=qr(),wc=Eo();function km(e){let t=e[0];return t==null||"kin
    • Possible obfuscationline 8
      [Credential-related source omitted]
    • Possible obfuscationline 9
      `),f+=n,(p||l)&&(f+= `),'"""'+f+'"""'}r(Bm,"printBlockString")});var fn=y(xn=>{"use strict";Object.defineProperty(xn,"__esModule",{value:!0});xn.TokenKind=void 0;var jo;xn.TokenKind=jo;(function(e){e.SOF="<SOF>",e.EOF="<EOF>",e.BANG="!",e.D
    • Possible obfuscationline 10
      [Credential-related source omitted]
    • Possible obfuscationline 11
      `,size:2};case 114:return{value:"\r",size:2};case 116:return{value:"	",size:2}}throw(0,Ye.syntaxError)(e.source,t,`Invalid character escape sequence: "${n.slice(t,t+2)}".`)}r(ty,"readEscapedCharacter");function ny(e,t){let n=e.source.body,i
    • Possible obfuscationline 12
      [Credential-related source omitted]
    • Network accessline 18
      https://yarnpkg.com/en/docs/selective-version-resolutions
    • Possible obfuscationline 23
      spurious results.`)}}return!1},"instanceOf");$r.instanceOf=hy});var Br=y(Gn=>{"use strict";Object.defineProperty(Gn,"__esModule",{value:!0});Gn.Source=void 0;Gn.isSource=gy;var xo=Ie(),vy=H(),Ty=Mn(),Kr=class{static{r(this,"Source")}constru
    • Possible obfuscationline 31
      `,Zr(N(n, `)), )`)),N([a,N(i," "),o]," ")}},Argument:{leave:r(({name:e,value:t})=>e+": "+t,"leave")},FragmentSpread:{leave:r(({name:e,directives:t})=>"..."+e+k(" ",N(t," ")),"leave")},InlineFragment:{leave:r(({typeCondition:e,directives:t,s
    • Possible obfuscationline 49
      `,Zr(N(n, `)), )`):k("(",N(n,", "),")"))+(i?" repeatable":"")+" on "+N(o," | "),"leave")},SchemaExtension:{leave:r(({directives:e,operationTypes:t})=>N(["extend schema",N(e," "),He(t)]," "),"leave")},ScalarTypeExtension:{leave:r(({name:e,di
    • Possible obfuscationline 51
      )`):k("(",N(n,", "),")"))+(i?" repeatable":"")+" on "+N(o," | "),"leave")},SchemaExtension:{leave:r(({directives:e,operationTypes:t})=>N(["extend schema",N(e," "),He(t)]," "),"leave")},ScalarTypeExtension:{leave:r(({name:e,directives:t})=>N
    • Possible obfuscationline 52
      `,Zr(N(e, `)), }`)}r(He,"block");function k(e,t,n=""){return t!=null&&t!==""?e+t+n:""}r(k,"wrap");function Zr(e){return k("  ",e.replace(/\n/g,   `))}r(Zr,"indent");function zo(e){var t;return(t=e?.some(n=>n.includes( `)))!==null&&t!==void 
    • Possible obfuscationline 56
      `)))!==null&&t!==void 0?t:!1}r(zo,"hasMultilineItems")});var es=y(Zo=>{"use strict";Object.defineProperty(Zo,"__esModule",{value:!0});Zo.valueFromASTUntyped=Xo;var Zy=Qn(),ht=G();function Xo(e,t){switch(e.kind){case ht.Kind.NULL:return null
    • Possible obfuscationline 58
      In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to 
    • Possible obfuscationline 60
      `))}r(sv,"assertValidSchema");var gs=class{static{r(this,"SchemaValidationContext")}constructor(t){this._errors=[],this.schema=t}reportError(t,n){let i=Array.isArray(n)?n.filter(Boolean):n;this._errors.push(new rv.GraphQLError(t,{nodes:i}))
    • Possible obfuscationline 64
      `))}r(Mb,"assertValidSDLExtension")});var id=y(hu=>{"use strict";Object.defineProperty(hu,"__esModule",{value:!0});hu.memoize3=Gb;function Gb(e){let t;return r(function(i,o,s){t===void 0&&(t=new WeakMap);let a=t.get(i);a===void 0&&(a=new We
    • Possible obfuscationline 170
      `}r(DE,"getIntrospectionQuery")});var Gd=y(Gu=>{"use strict";Object.defineProperty(Gu,"__esModule",{value:!0});Gu.getOperationAST=PE;var AE=G();function PE(e,t){let n=null;for(let o of e.definitions)if(o.kind===AE.Kind.OPERATION_DEFINITION)
    • Possible obfuscationline 175
      }`}r(bO,"printSchemaDefinition");function _O(e){let t=e.getQueryType();if(t&&t.name!=="Query")return!1;let n=e.getMutationType();if(n&&n.name!=="Mutation")return!1;let i=e.getSubscriptionType();return!(i&&i.name!=="Subscription")}r(_O,"isSc
    • Possible obfuscationline 179
      `+e.map((n,i)=>Ke(n,"  "+t,!i)+"  "+t+Ju(n)).join( `)+ `+t+")"}r(pf,"printArgs");function Ju(e){let t=(0,hO.astFromValue)(e.defaultValue,e.type),n=e.name+": "+String(e.type);return t&&(n+=` = ${(0,Zi.print)(t)}`),n+Zu(e.deprecationReason)}r
    • Possible obfuscationline 184
      `}r(Ke,"printDescription")});var ff=y(ec=>{"use strict";Object.defineProperty(ec,"__esModule",{value:!0});ec.concatAST=RO;var PO=G();function RO(e){let t=[];for(let n of e)t.push(...n.definitions);return{kind:PO.Kind.DOCUMENT,definitions:t}
    • Network accessline 199
      `}),s}r(hc,"formatValidationResult");function $f(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>{let{description:i,valueName:o,choices:s,...a}=n;return[t,a]}))}r($f,"toParseArgsOptions");var Kf={model:{type:"string",valueName:"
    • Possible obfuscationline 199
      `}),s}r(hc,"formatValidationResult");function $f(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>{let{description:i,valueName:o,choices:s,...a}=n;return[t,a]}))}r($f,"toParseArgsOptions");var Kf={model:{type:"string",valueName:"
    • Network accessline 200
      `)}r(Jf,"formatCliHelp");function zf(){let e=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let t of e)if(typeof t=="string"&&t.length>0)return t}r(zf,"rea
    • Possible obfuscationline 200
      `)}r(Jf,"formatCliHelp");function zf(){let e=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let t of e)if(typeof t=="string"&&t.length>0)return t}r(zf,"rea
    • Network accessline 201
      [Credential-related source omitted]
    • Possible obfuscationline 201
      [Credential-related source omitted]
    • Access to secretsline 201
      [Credential-related source omitted]
    • Possible obfuscationline 208
      functions_pickup_point_delivery_option_generator`),process.exit(1));var ft=X.api;function am(){return{api:ft,...X.version&&{api_version:X.version},...bc&&{resolve_api_version:bc}}}r(am,"validationUsageMetadata");function a0(e,t){let n=i0(im

    skills/shopify/scripts/_validate_graphql.mjs

    • Executable scriptline 1
      #!/usr/bin/env node
    • Possible obfuscationline 2
      var dm=Object.create;var mo=Object.defineProperty;var fm=Object.getOwnPropertyDescriptor;var mm=Object.getOwnPropertyNames;var ym=Object.getPrototypeOf,hm=Object.prototype.hasOwnProperty;var n=(e,t)=>mo(e,"name",{value:t,configurable:!0});v
    • Possible obfuscationline 3
      `,p=i.split(/\r\n|[\n\r]/g),f=p[o];if(f.length>120){let m=Math.floor(c/80),v=c%80,b=[];for(let V=0;V<f.length;V+=80)b.push(f.slice(V,V+80));return l+Ac([[`${a} |`,b[0]],...b.slice(1,m+1).map(V=>["|",V]),["|","^".padStart(v)],["|",b[m+1]]])}
    • Possible obfuscationline 4
      `)}n(Ac,"printPrefixedLines")});var A=y(lr=>{"use strict";Object.defineProperty(lr,"__esModule",{value:!0});lr.GraphQLError=void 0;lr.formatError=Cm;lr.printError=Fm;var km=it(),Rc=qn(),jc=Eo();function wm(e){let t=e[0];return t==null||"kin
    • Possible obfuscationline 8
      [Credential-related source omitted]
    • Possible obfuscationline 9
      `),f+=r,(p||l)&&(f+= `),'"""'+f+'"""'}n(Ym,"printBlockString")});var dr=y(Cr=>{"use strict";Object.defineProperty(Cr,"__esModule",{value:!0});Cr.TokenKind=void 0;var jo;Cr.TokenKind=jo;(function(e){e.SOF="<SOF>",e.EOF="<EOF>",e.BANG="!",e.D
    • Possible obfuscationline 10
      [Credential-related source omitted]
    • Possible obfuscationline 11
      `,size:2};case 114:return{value:"\r",size:2};case 116:return{value:"	",size:2}}throw(0,Ye.syntaxError)(e.source,t,`Invalid character escape sequence: "${r.slice(t,t+2)}".`)}n(ry,"readEscapedCharacter");function ny(e,t){let r=e.source.body,i
    • Possible obfuscationline 12
      [Credential-related source omitted]
    • Network accessline 18
      https://yarnpkg.com/en/docs/selective-version-resolutions
    • Possible obfuscationline 23
      spurious results.`)}}return!1},"instanceOf");$n.instanceOf=vy});var Bn=y(Mr=>{"use strict";Object.defineProperty(Mr,"__esModule",{value:!0});Mr.Source=void 0;Mr.isSource=by;var xo=Ie(),Ty=H(),gy=qr(),Kn=class{static{n(this,"Source")}constru
    • Possible obfuscationline 31
      `,Zn(N(r, `)), )`)),N([a,N(i," "),o]," ")}},Argument:{leave:n(({name:e,value:t})=>e+": "+t,"leave")},FragmentSpread:{leave:n(({name:e,directives:t})=>"..."+e+k(" ",N(t," ")),"leave")},InlineFragment:{leave:n(({typeCondition:e,directives:t,s
    • Possible obfuscationline 49
      `,Zn(N(r, `)), )`):k("(",N(r,", "),")"))+(i?" repeatable":"")+" on "+N(o," | "),"leave")},SchemaExtension:{leave:n(({directives:e,operationTypes:t})=>N(["extend schema",N(e," "),He(t)]," "),"leave")},ScalarTypeExtension:{leave:n(({name:e,di
    • Possible obfuscationline 51
      )`):k("(",N(r,", "),")"))+(i?" repeatable":"")+" on "+N(o," | "),"leave")},SchemaExtension:{leave:n(({directives:e,operationTypes:t})=>N(["extend schema",N(e," "),He(t)]," "),"leave")},ScalarTypeExtension:{leave:n(({name:e,directives:t})=>N
    • Possible obfuscationline 52
      `,Zn(N(e, `)), }`)}n(He,"block");function k(e,t,r=""){return t!=null&&t!==""?e+t+r:""}n(k,"wrap");function Zn(e){return k("  ",e.replace(/\n/g,   `))}n(Zn,"indent");function Wo(e){var t;return(t=e?.some(r=>r.includes( `)))!==null&&t!==void 
    • Possible obfuscationline 56
      `)))!==null&&t!==void 0?t:!1}n(Wo,"hasMultilineItems")});var es=y(Zo=>{"use strict";Object.defineProperty(Zo,"__esModule",{value:!0});Zo.valueFromASTUntyped=Xo;var eh=Ur(),ht=G();function Xo(e,t){switch(e.kind){case ht.Kind.NULL:return null
    • Possible obfuscationline 58
      In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to 
    • Possible obfuscationline 60
      `))}n(av,"assertValidSchema");var gs=class{static{n(this,"SchemaValidationContext")}constructor(t){this._errors=[],this.schema=t}reportError(t,r){let i=Array.isArray(r)?r.filter(Boolean):r;this._errors.push(new iv.GraphQLError(t,{nodes:i}))
    • Possible obfuscationline 64
      `))}n(Gb,"assertValidSDLExtension")});var rd=y(hu=>{"use strict";Object.defineProperty(hu,"__esModule",{value:!0});hu.memoize3=Ub;function Ub(e){let t;return n(function(i,o,s){t===void 0&&(t=new WeakMap);let a=t.get(i);a===void 0&&(a=new We
    • Possible obfuscationline 170
      `}n(AE,"getIntrospectionQuery")});var qd=y(Gu=>{"use strict";Object.defineProperty(Gu,"__esModule",{value:!0});Gu.getOperationAST=RE;var PE=G();function RE(e,t){let r=null;for(let o of e.definitions)if(o.kind===PE.Kind.OPERATION_DEFINITION)
    • Possible obfuscationline 175
      }`}n(_O,"printSchemaDefinition");function EO(e){let t=e.getQueryType();if(t&&t.name!=="Query")return!1;let r=e.getMutationType();if(r&&r.name!=="Mutation")return!1;let i=e.getSubscriptionType();return!(i&&i.name!=="Subscription")}n(EO,"isSc
    • Possible obfuscationline 179
      `+e.map((r,i)=>Ke(r,"  "+t,!i)+"  "+t+Ju(r)).join( `)+ `+t+")"}n(cf,"printArgs");function Ju(e){let t=(0,vO.astFromValue)(e.defaultValue,e.type),r=e.name+": "+String(e.type);return t&&(r+=` = ${(0,Zi.print)(t)}`),r+Zu(e.deprecationReason)}n
    • Possible obfuscationline 184
      `}n(Ke,"printDescription")});var pf=y(ec=>{"use strict";Object.defineProperty(ec,"__esModule",{value:!0});ec.concatAST=jO;var RO=G();function jO(e){let t=[];for(let r of e)t.push(...r.definitions);return{kind:RO.Kind.DOCUMENT,definitions:t}
    • Possible obfuscationline 185
      Required scopes: ${e.join(", ")}`}n(Qf,"formatScopes");function RN(e){return e&&typeof e.schemaPath=="string"}n(RN,"isAPIVersionWithAPI");async function pc(e,t,r){let i=e.trim();if(!i)return{validation:{result:"failed",resultDetail:"No Grap
    • Network accessline 200
      `}),s}n(yc,"formatValidationResult");function $f(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>{let{description:i,valueName:o,choices:s,...a}=r;return[t,a]}))}n($f,"toParseArgsOptions");var Kf={model:{type:"string",valueName:"
    • Possible obfuscationline 200
      `}),s}n(yc,"formatValidationResult");function $f(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>{let{description:i,valueName:o,choices:s,...a}=r;return[t,a]}))}n($f,"toParseArgsOptions");var Kf={model:{type:"string",valueName:"
    • Network accessline 201
      `)}n(Jf,"formatCliHelp");function Wf(){let e=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let t of e)if(typeof t=="string"&&t.length>0)return t}n(Wf,"rea
    • Possible obfuscationline 201
      `)}n(Jf,"formatCliHelp");function Wf(){let e=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let t of e)if(typeof t=="string"&&t.length>0)return t}n(Wf,"rea
    • Network accessline 202
      [Credential-related source omitted]
    • Possible obfuscationline 202
      [Credential-related source omitted]
    • Access to secretsline 202
      [Credential-related source omitted]
    • Possible obfuscationline 203
      `));return}await Xf("/mcp/usage",{method:"POST",headers:ne,body:ie,instrumentation:{packageVersion:"1.19.0",timestamp:new Date().toISOString()}})}catch{}}n(vc,"reportValidation");var im={code:{type:"string",short:"c",valueName:"graphql",des

    skills/shopify/scripts/_validate_theme.mjs

    • Executable scriptline 1
      #!/usr/bin/env node
    • Network accessline 17
      `}),n}o(F,"formatValidationResult");function G(t){return Object.fromEntries(Object.entries(t).map(([e,r])=>{let{description:c,valueName:s,choices:n,...i}=r;return[e,i]}))}o(G,"toParseArgsOptions");var B={model:{type:"string",valueName:"name
    • Possible obfuscationline 17
      `}),n}o(F,"formatValidationResult");function G(t){return Object.fromEntries(Object.entries(t).map(([e,r])=>{let{description:c,valueName:s,choices:n,...i}=r;return[e,i]}))}o(G,"toParseArgsOptions");var B={model:{type:"string",valueName:"name
    • Network accessline 18
      `)}o(q,"formatCliHelp");function W(){let t=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let e of t)if(typeof e=="string"&&e.length>0)return e}o(W,"readHo
    • Possible obfuscationline 18
      `)}o(q,"formatCliHelp");function W(){let t=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let e of t)if(typeof e=="string"&&e.length>0)return e}o(W,"readHo
    • Network accessline 19
      [Credential-related source omitted]
    • Possible obfuscationline 19
      [Credential-related source omitted]
    • Access to secretsline 19
      [Credential-related source omitted]
    • Possible obfuscationline 20
      `));return}await J("/mcp/usage",{method:"POST",headers:I,body:y,instrumentation:{packageVersion:"1.19.0",timestamp:new Date().toISOString()}})}catch{}}o(P,"reportValidation");var V=["assets","blocks","config","layout","locales","sections","
    • Possible obfuscationline 23
      ${f}`}}return{result:"success",resultDetail:`${i} passed all checks.`}})}o(He,"validateFullApp");var k=class{constructor(e){this.theme=e}static{o(this,"MockFileSystem")}async readFile(e){let r=this.theme[e];if(!r)throw new Error(`File not f
    • Possible obfuscationline 24
      `+d.map(p=>M(p)).join( `)}:{result:"failed",resultDetail:d.map(p=>M(p)).join( `)}}o(Qe,"validateCodeblock");function Ke(t){switch(t){case R.WARNING:return"WARNING";case R.INFO:return"INFO";case R.ERROR:default:return"ERROR"}}o(Ke,"severityL
    • Possible obfuscationline 26
      `)}}o(Qe,"validateCodeblock");function Ke(t){switch(t){case R.WARNING:return"WARNING";case R.INFO:return"INFO";case R.ERROR:default:return"ERROR"}}o(Ke,"severityLabel");function M(t){let e=t.start.line+1,r=t.start.character+1,s=`${Ke(t.seve

    skills/shopify/scripts/import_mock_shop_catalog.mjs

    • Executable scriptline 1
      #!/usr/bin/env node
    • Possible obfuscationline 2
      var ve=Object.defineProperty;var c=(e,t)=>ve(e,"name",{value:t,configurable:!0});import{execFile as De}from"child_process";import{existsSync as qe,mkdtempSync as Ge,readFileSync as Je,realpathSync as Ne,writeFileSync as M}from"fs";import{tm
    • Possible obfuscationline 28
      fragment MenuItemFields on MenuItem { title url type }`;function re(e){let t=e?.shop?.brand??{},n=c(s=>s?{title:s.title??"",items:(s.items??[]).map(o)}:null,"menu"),o=c(s=>({title:s.title,url:s.url??"",type:s.type??"HTTP",...s.items?.length
    • Possible obfuscationline 30
      `);return JSON.parse(n)}c(U,"parseThemeJson");function Ue(e){let t=/\{%-?\s*schema\s*-?%\}([\s\S]*?)\{%-?\s*endschema\s*-?%\}/.exec(e);return t?JSON.parse(t[1]):null}c(Ue,"sectionSchema");function ce(e,t){let n=e;for(let o of t.split(".")){
    • Network accessline 56
      userErrors { field message }   } }`,Oe=["templates/index.json","config/settings_data.json","sections/collection-list.liquid","locales/en.default.schema.json"];var ze=Ke(De),Xe="shopify",Ze="1.19.0",_="mock.shop",et="Online Store",A=250,tt=6
    • Network accessline 57
      } }`,Oe=["templates/index.json","config/settings_data.json","sections/collection-list.liquid","locales/en.default.schema.json"];var ze=Ke(De),Xe="shopify",Ze="1.19.0",_="mock.shop",et="Online Store",A=250,tt=64*1024*1024,V="shopify",nt=2481
    • Network accessline 58
      }`,Oe=["templates/index.json","config/settings_data.json","sections/collection-list.liquid","locales/en.default.schema.json"];var ze=Ke(De),Xe="shopify",Ze="1.19.0",_="mock.shop",et="Online Store",A=250,tt=64*1024*1024,V="shopify",nt=2481,o
    • Possible obfuscationline 93
      }`;async function j(e,t,n,o){let s=await e(t,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":`shopify-ai-toolkit/${Xe} ${Ze}`},body:JSON.stringify({query:n,variables:o})}),i=await s.text();if(!s.ok)throw new Error(`${
    • Possible obfuscationline 107
      }`;function gt(e,t){let n={handle:e.handle,title:e.title,descriptionHtml:e.descriptionHtml,vendor:e.vendor,productType:e.productType,tags:e.tags,status:"ACTIVE",productOptions:e.options.map(o=>({name:o.name,values:o.values.map(s=>({name:s})
    • Possible obfuscationline 111
      `);throw new Error(`\`${V} ${n.slice(0,3).join(" ")}\` failed: ${s.trim()||o.message}`)}}return c(t,"run"),{async execute(n,o,s,i=!1){let l=["store","execute","--store",n,"--json","--query",o];return s&&l.push("--variables",JSON.stringify(s
    • Possible obfuscationline 112
      `),x=await u.execute(n,`query Lookup { publications(first: 25) { nodes { id name catalog { title } } } ${T} }`);i.collections.forEach((a,g)=>{let m=x[`c${g}`]?.nodes?.find(y=>y.handle===a.handle);m&&f.set(a.handle,m.id)}),h=ht(x.publication
    • Possible obfuscationline 113
      `)}c(St,"summarize");var Le={store:{type:"string",valueName:"domain",description:"Target store domain, e.g. my-store.myshopify.com"},source:{type:"string",valueName:"store",description:"mock.shop reference store: subdomain, host, or preview

    skills/shopify/scripts/log_feedback.mjs

    • Network accessline 1
      #!/usr/bin/env node var me=Object.defineProperty;var n=(t,e)=>me(t,"name",{value:e,configurable:!0});import{createHash as Ue}from"crypto";import{chmodSync as Ve,closeSync as we,lstatSync as Fe,mkdirSync as Me,openSync as $e,readdirSync as H
    • Executable scriptline 1
      #!/usr/bin/env node
    • Network accessline 2
      var me=Object.defineProperty;var n=(t,e)=>me(t,"name",{value:e,configurable:!0});import{createHash as Ue}from"crypto";import{chmodSync as Ve,closeSync as we,lstatSync as Fe,mkdirSync as Me,openSync as $e,readdirSync as He,rmSync as Be,statS
    • Possible obfuscationline 2
      var me=Object.defineProperty;var n=(t,e)=>me(t,"name",{value:e,configurable:!0});import{createHash as Ue}from"crypto";import{chmodSync as Ve,closeSync as we,lstatSync as Fe,mkdirSync as Me,openSync as $e,readdirSync as He,rmSync as Be,statS
    • Network accessline 3
      `)}n(M,"formatCliHelp");import{isIP as Re}from"node:net";var Ne="https://shopify.dev/",Le="https://shopify-dev.shop.dev/";function $(t){return`https://shopify-dev-staging${t}.shopifycloud.com/`}n($,"stagingHost");var De="SHOPIFY_DEV_SUPPORT
    • Possible obfuscationline 3
      `)}n(M,"formatCliHelp");import{isIP as Re}from"node:net";var Ne="https://shopify.dev/",Le="https://shopify-dev.shop.dev/";function $(t){return`https://shopify-dev-staging${t}.shopifycloud.com/`}n($,"stagingHost");var De="SHOPIFY_DEV_SUPPORT
    • Network accessline 4
      [Credential-related source omitted]
    • Possible obfuscationline 4
      [Credential-related source omitted]
    • Access to secretsline 4
      [Credential-related source omitted]
    • Possible obfuscationline 5
      `));return}await H("/mcp/usage",{method:"POST",headers:p,body:l,instrumentation:{packageVersion:"1.19.0",timestamp:new Date().toISOString()}})}catch{}}n(Y,"reportValidation");var J=".feedback",je=1440*60*1e3;function Xe(){let t=process.getu

    skills/shopify/scripts/log_skill_use.mjs

    • Network accessline 1
      #!/usr/bin/env node var G=Object.defineProperty;var i=(t,e)=>G(t,"name",{value:e,configurable:!0});var p=["flow","use-shopify-cli","admin","shopifyql","storefront-graphql","partner","customer","payments-apps","functions","polaris-app-home",
    • Executable scriptline 1
      #!/usr/bin/env node
    • Network accessline 2
      var G=Object.defineProperty;var i=(t,e)=>G(t,"name",{value:e,configurable:!0});var p=["flow","use-shopify-cli","admin","shopifyql","storefront-graphql","partner","customer","payments-apps","functions","polaris-app-home","polaris-admin-exten
    • Possible obfuscationline 2
      var G=Object.defineProperty;var i=(t,e)=>G(t,"name",{value:e,configurable:!0});var p=["flow","use-shopify-cli","admin","shopifyql","storefront-graphql","partner","customer","payments-apps","functions","polaris-app-home","polaris-admin-exten
    • Network accessline 3
      `)}i(L,"formatCliHelp");function D(){let t=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let e of t)if(typeof e=="string"&&e.length>0)return e}i(D,"readHo
    • Possible obfuscationline 3
      `)}i(L,"formatCliHelp");function D(){let t=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let e of t)if(typeof e=="string"&&e.length>0)return e}i(D,"readHo
    • Network accessline 4
      [Credential-related source omitted]
    • Possible obfuscationline 4
      [Credential-related source omitted]
    • Access to secretsline 4
      [Credential-related source omitted]

    skills/shopify/scripts/search_docs.mjs

    • Network accessline 1
      #!/usr/bin/env node var _e=Object.defineProperty;var r=(t,e)=>_e(t,"name",{value:e,configurable:!0});var d=["flow","use-shopify-cli","admin","shopifyql","storefront-graphql","partner","customer","payments-apps","functions","polaris-app-home
    • Executable scriptline 1
      #!/usr/bin/env node
    • Network accessline 2
      var _e=Object.defineProperty;var r=(t,e)=>_e(t,"name",{value:e,configurable:!0});var d=["flow","use-shopify-cli","admin","shopifyql","storefront-graphql","partner","customer","payments-apps","functions","polaris-app-home","polaris-admin-ext
    • Possible obfuscationline 2
      var _e=Object.defineProperty;var r=(t,e)=>_e(t,"name",{value:e,configurable:!0});var d=["flow","use-shopify-cli","admin","shopifyql","storefront-graphql","partner","customer","payments-apps","functions","polaris-app-home","polaris-admin-ext
    • Network accessline 3
      [Credential-related source omitted]
    • Possible obfuscationline 3
      [Credential-related source omitted]
    • Access to secretsline 3
      [Credential-related source omitted]
    • Possible obfuscationline 4
      `)}r(Z,"formatCliHelp");function ee(){let t=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let e of t)if(typeof e=="string"&&e.length>0)return e}r(ee,"read
    • Possible obfuscationline 5
      `));return}await A("/mcp/usage",{method:"POST",headers:h,body:E,instrumentation:{packageVersion:"1.19.0",timestamp:new Date().toISOString()}})}catch{}}r(k,"reportValidation");var ce={api:{type:"string",short:"a",description:"Shopify topic t
    • Possible obfuscationline 15
      `),f=g);function ie(){return{...g&&{api:g},...y&&{api_version:y},...F&&{resolve_api_version:F}}}r(ie,"searchUsageMetadata");async function qe(t,e,n){let s={query:t};e&&(s.api_name=e),n&&(s.api_version=n);let i=await A("/assistant/search",{.

    skills/shopify/scripts/track-telemetry.ps1

    • Executable scriptline 1
      Executable file
    • Network accessline 5
      # invocation (Skill tool call OR SKILL.md read inside this hook's own # install root), and emits a `skill_invocation` event to # https://shopify.dev/mcp/usage.
    • Network accessline 6
      # install root), and emits a `skill_invocation` event to # https://shopify.dev/mcp/usage. #
    • Network accessline 7
      # https://shopify.dev/mcp/usage.
    • Network accessline 106
      #                                       used by the evals harness to black-hole telemetry. Same #                                       semantics here: the value is the full URL, not a base. #   3. Production: https://shopify.dev/mcp/usage.
    • Network accessline 108
      #   3. Production: https://shopify.dev/mcp/usage.
    • Network accessline 112
      $env:SHOPIFY_DEV_INSTRUMENTATION_URL } else {     'https://shopify.dev/mcp/usage'
    • Network accessline 113
      } else {     'https://shopify.dev/mcp/usage' }
    • Network accessline 114
      'https://shopify.dev/mcp/usage'
    • Possible obfuscationline 447
      $decoded = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b64.Trim()))

    skills/shopify/scripts/track-telemetry.sh

    • Executable scriptline 1
      #!/usr/bin/env bash
    • Network accessline 11
      # This hook runs on every PostToolUse event from supported agents # (Claude Code, Cursor, GitHub Copilot CLI, VS Code Copilot) and emits # a `skill_invocation` event to `https://shopify.dev/mcp/usage` whenever
    • Network accessline 12
      # (Claude Code, Cursor, GitHub Copilot CLI, VS Code Copilot) and emits # a `skill_invocation` event to `https://shopify.dev/mcp/usage` whenever # the agent:
    • Network accessline 13
      # a `skill_invocation` event to `https://shopify.dev/mcp/usage` whenever
    • Network accessline 66
      # === Event payload (matches existing recordUsage / reportValidation shape) === # # POST https://shopify.dev/mcp/usage
    • Network accessline 67
      # # POST https://shopify.dev/mcp/usage #   headers:
    • Network accessline 68
      # POST https://shopify.dev/mcp/usage
    • Network accessline 178
      #                                       used by the evals harness to black-hole telemetry. Same #                                       semantics here: the value is the full URL, not a base. #   3. Production: https://shopify.dev/mcp/usage.
    • Network accessline 180
      #   3. Production: https://shopify.dev/mcp/usage.
    • Network accessline 181
      ENDPOINT="${SHOPIFY_MCP_USAGE_ENDPOINT:-${SHOPIFY_DEV_INSTRUMENTATION_URL:-https://shopify.dev/mcp/usage}}"
    • Access to secretsline 316
      [Credential-related source omitted]
    • Dangerous shell operationline 318
      find "$PROMPT_STASH_DIR" -type f -name '*.prompt' -mmin +1440 -delete 2>/dev/null || true
    • Network accessline 555
      if ! command -v curl >/dev/null 2>&1; then
    • Network accessline 556
      # Without curl we can't send the event. Skip silently — never break
    • Access to secretsline 583
      [Credential-related source omitted]
    • Access to secretsline 584
      [Credential-related source omitted]
    • Access to secretsline 588
      [Credential-related source omitted]
    • Network accessline 598
      if [ -n "$user_prompt" ]; then   body=$(jq -nc \
    • Network accessline 599
      body=$(jq -nc \
    • Network accessline 623
      # Test hook — set SKILL_TELEMETRY_TEST_MODE=1 to skip the curl call and
    • Network accessline 628
      if [ "${SKILL_TELEMETRY_TEST_MODE:-}" = "1" ]; then   printf '[TEST_TELEMETRY_ENDPOINT] %s\n' "$ENDPOINT" >&2
    • Network accessline 629
      printf '[TEST_TELEMETRY_ENDPOINT] %s\n' "$ENDPOINT" >&2
    • Network accessline 646
      --header "X-Shopify-Client-Name: $client" ) curl_args+=(--data "$body" "$ENDPOINT")
    • Network accessline 648
      curl_args+=(--data "$body" "$ENDPOINT")
    • Network accessline 652
      (curl "${curl_args[@]}" >/dev/null 2>&1 || true) &

    skills/shopify/scripts/validate.mjs

    • Executable scriptline 1
      #!/usr/bin/env node
    • Possible obfuscationline 2
      var u=Object.defineProperty;var c=(t,n)=>u(t,"name",{value:n,configurable:!0});var p={admin:"graphql","storefront-graphql":"graphql",partner:"graphql",customer:"graphql","payments-apps":"graphql",functions_cart_checkout_validation:"function

    skills/ucp/SKILL.md

    • Network accessline 260
      ucp discover --business https://buyer-named-merchant.example.com

    skills/ucp/scripts/log_feedback.mjs

    • Network accessline 1
      #!/usr/bin/env node var me=Object.defineProperty;var n=(t,e)=>me(t,"name",{value:e,configurable:!0});import{createHash as Ue}from"crypto";import{chmodSync as Ve,closeSync as we,lstatSync as Fe,mkdirSync as Me,openSync as $e,readdirSync as H
    • Executable scriptline 1
      #!/usr/bin/env node
    • Network accessline 2
      var me=Object.defineProperty;var n=(t,e)=>me(t,"name",{value:e,configurable:!0});import{createHash as Ue}from"crypto";import{chmodSync as Ve,closeSync as we,lstatSync as Fe,mkdirSync as Me,openSync as $e,readdirSync as He,rmSync as Be,statS
    • Possible obfuscationline 2
      var me=Object.defineProperty;var n=(t,e)=>me(t,"name",{value:e,configurable:!0});import{createHash as Ue}from"crypto";import{chmodSync as Ve,closeSync as we,lstatSync as Fe,mkdirSync as Me,openSync as $e,readdirSync as He,rmSync as Be,statS
    • Network accessline 3
      `)}n(M,"formatCliHelp");import{isIP as Re}from"node:net";var Ne="https://shopify.dev/",Le="https://shopify-dev.shop.dev/";function $(t){return`https://shopify-dev-staging${t}.shopifycloud.com/`}n($,"stagingHost");var De="SHOPIFY_DEV_SUPPORT
    • Possible obfuscationline 3
      `)}n(M,"formatCliHelp");import{isIP as Re}from"node:net";var Ne="https://shopify.dev/",Le="https://shopify-dev.shop.dev/";function $(t){return`https://shopify-dev-staging${t}.shopifycloud.com/`}n($,"stagingHost");var De="SHOPIFY_DEV_SUPPORT
    • Network accessline 4
      [Credential-related source omitted]
    • Possible obfuscationline 4
      [Credential-related source omitted]
    • Access to secretsline 4
      [Credential-related source omitted]
    • Possible obfuscationline 5
      `));return}await H("/mcp/usage",{method:"POST",headers:p,body:l,instrumentation:{packageVersion:"1.19.0",timestamp:new Date().toISOString()}})}catch{}}n(Y,"reportValidation");var J=".feedback",je=1440*60*1e3;function Xe(){let t=process.getu

    skills/ucp/scripts/log_skill_use.mjs

    • Network accessline 1
      #!/usr/bin/env node var Y=Object.defineProperty;var i=(t,e)=>Y(t,"name",{value:e,configurable:!0});import{parseArgs as de}from"util";function y(t){return Object.fromEntries(Object.entries(t).map(([e,n])=>{let{description:o,valueName:s,choic
    • Executable scriptline 1
      #!/usr/bin/env node
    • Network accessline 2
      var Y=Object.defineProperty;var i=(t,e)=>Y(t,"name",{value:e,configurable:!0});import{parseArgs as de}from"util";function y(t){return Object.fromEntries(Object.entries(t).map(([e,n])=>{let{description:o,valueName:s,choices:r,...a}=n;return[
    • Possible obfuscationline 2
      var Y=Object.defineProperty;var i=(t,e)=>Y(t,"name",{value:e,configurable:!0});import{parseArgs as de}from"util";function y(t){return Object.fromEntries(Object.entries(t).map(([e,n])=>{let{description:o,valueName:s,choices:r,...a}=n;return[
    • Network accessline 3
      `)}i(R,"formatCliHelp");function L(){let t=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let e of t)if(typeof e=="string"&&e.length>0)return e}i(L,"readHo
    • Possible obfuscationline 3
      `)}i(R,"formatCliHelp");function L(){let t=[process.env.CLAUDE_SESSION_ID,process.env.CLAUDE_CODE_SESSION_ID,process.env.CURSOR_SESSION_ID,process.env.COPILOT_SESSION_ID];for(let e of t)if(typeof e=="string"&&e.length>0)return e}i(L,"readHo
    • Network accessline 4
      [Credential-related source omitted]
    • Possible obfuscationline 4
      [Credential-related source omitted]
    • Access to secretsline 4
      [Credential-related source omitted]

    skills/ucp/scripts/track-telemetry.ps1

    • Executable scriptline 1
      Executable file
    • Network accessline 5
      # invocation (Skill tool call OR SKILL.md read inside this hook's own # install root), and emits a `skill_invocation` event to # https://shopify.dev/mcp/usage.
    • Network accessline 6
      # install root), and emits a `skill_invocation` event to # https://shopify.dev/mcp/usage. #
    • Network accessline 7
      # https://shopify.dev/mcp/usage.
    • Network accessline 106
      #                                       used by the evals harness to black-hole telemetry. Same #                                       semantics here: the value is the full URL, not a base. #   3. Production: https://shopify.dev/mcp/usage.
    • Network accessline 108
      #   3. Production: https://shopify.dev/mcp/usage.
    • Network accessline 112
      $env:SHOPIFY_DEV_INSTRUMENTATION_URL } else {     'https://shopify.dev/mcp/usage'
    • Network accessline 113
      } else {     'https://shopify.dev/mcp/usage' }
    • Network accessline 114
      'https://shopify.dev/mcp/usage'
    • Possible obfuscationline 447
      $decoded = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b64.Trim()))

    skills/ucp/scripts/track-telemetry.sh

    • Executable scriptline 1
      #!/usr/bin/env bash
    • Network accessline 11
      # This hook runs on every PostToolUse event from supported agents # (Claude Code, Cursor, GitHub Copilot CLI, VS Code Copilot) and emits # a `skill_invocation` event to `https://shopify.dev/mcp/usage` whenever
    • Network accessline 12
      # (Claude Code, Cursor, GitHub Copilot CLI, VS Code Copilot) and emits # a `skill_invocation` event to `https://shopify.dev/mcp/usage` whenever # the agent:
    • Network accessline 13
      # a `skill_invocation` event to `https://shopify.dev/mcp/usage` whenever
    • Network accessline 66
      # === Event payload (matches existing recordUsage / reportValidation shape) === # # POST https://shopify.dev/mcp/usage
    • Network accessline 67
      # # POST https://shopify.dev/mcp/usage #   headers:
    • Network accessline 68
      # POST https://shopify.dev/mcp/usage
    • Network accessline 178
      #                                       used by the evals harness to black-hole telemetry. Same #                                       semantics here: the value is the full URL, not a base. #   3. Production: https://shopify.dev/mcp/usage.
    • Network accessline 180
      #   3. Production: https://shopify.dev/mcp/usage.
    • Network accessline 181
      ENDPOINT="${SHOPIFY_MCP_USAGE_ENDPOINT:-${SHOPIFY_DEV_INSTRUMENTATION_URL:-https://shopify.dev/mcp/usage}}"
    • Access to secretsline 316
      [Credential-related source omitted]
    • Dangerous shell operationline 318
      find "$PROMPT_STASH_DIR" -type f -name '*.prompt' -mmin +1440 -delete 2>/dev/null || true
    • Network accessline 555
      if ! command -v curl >/dev/null 2>&1; then
    • Network accessline 556
      # Without curl we can't send the event. Skip silently — never break
    • Access to secretsline 583
      [Credential-related source omitted]
    • Access to secretsline 584
      [Credential-related source omitted]
    • Access to secretsline 588
      [Credential-related source omitted]
    • Network accessline 598
      if [ -n "$user_prompt" ]; then   body=$(jq -nc \
    • Network accessline 599
      body=$(jq -nc \
    • Network accessline 623
      # Test hook — set SKILL_TELEMETRY_TEST_MODE=1 to skip the curl call and
    • Network accessline 628
      if [ "${SKILL_TELEMETRY_TEST_MODE:-}" = "1" ]; then   printf '[TEST_TELEMETRY_ENDPOINT] %s\n' "$ENDPOINT" >&2
    • Network accessline 629
      printf '[TEST_TELEMETRY_ENDPOINT] %s\n' "$ENDPOINT" >&2
    • Network accessline 646
      --header "X-Shopify-Client-Name: $client" ) curl_args+=(--data "$body" "$ENDPOINT")
    • Network accessline 648
      curl_args+=(--data "$body" "$ENDPOINT")
    • Network accessline 652
      (curl "${curl_args[@]}" >/dev/null 2>&1 || true) &

    How the signals fit together

    Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

    Some files could not be read; the facts below still hold.

    Declared and executed: 11 facts
    Signal confidence: 372 facts

    and 322 more

    Works with

    Agent compatibility, from the files in this repository
    AgentStatusEvidenceInstall to
    Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
    CodexCompatibleStandard SKILL.md deprecated/shopify-admin/SKILL.md.agents/skills/<skill-name>/
    CursorCompatibleStandard SKILL.md deprecated/shopify-admin/SKILL.md.cursor/skills/<skill-name>/
    Gemini CLINativeManifest gemini-extension.json.gemini/skills/<skill-name>/
    GitHub CopilotCompatibleStandard SKILL.md deprecated/shopify-admin/SKILL.md.github/skills/<skill-name>/
    OpenCodeCompatibleStandard SKILL.md deprecated/shopify-admin/SKILL.md.opencode/skills/<skill-name>/
    • Native The repository ships a manifest, folder or frontmatter field for this agent.
    • Compatible A standard SKILL.md that this agent can read.
    • Unknown No evidence either way.

    Derived automatically from paths, manifests and frontmatter. Not tested on each agent.