[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-shopify-onboarding-merchant":3,"mdc--al8668-key":30,"related-org-openai-shopify-onboarding-merchant":3043,"related-repo-openai-shopify-onboarding-merchant":3249},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":19,"repoUrl":20,"updatedAt":21,"license":22,"forks":23,"topics":24,"repo":25,"sourceUrl":28,"mdContent":29},"shopify-onboarding-merchant","set up and connect Shopify stores","Set up and connect a Shopify store from your AI assistant. Use when the user wants to: set up my Shopify store, connect my store, install Shopify plugin, get started with Shopify, manage my store, add products to my store, merchant onboarding, start selling online, Shopify setup help, create my first store, how do I set up an online store, import products, migrate from Square, migrate from WooCommerce, migrate from Etsy, migrate from Amazon, migrate from eBay, migrate from Wix, import from Google Merchant Center, migrate from Clover, migrate from Lightspeed, move products to Shopify, import catalog, replatform to Shopify. This is for store owners — not developers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16],{"name":13,"slug":14,"type":15},"E-commerce","e-commerce","tag",{"name":17,"slug":18,"type":15},"Shopify","shopify",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-06-30T19:00:57.102",null,465,[],{"repoUrl":20,"stars":19,"forks":23,"topics":26,"description":27},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fshopify\u002Fskills\u002Fshopify-onboarding-merchant","---\nname: shopify-onboarding-merchant\ndescription: \"Set up and connect a Shopify store from your AI assistant. Use when the user wants to: set up my Shopify store, connect my store, install Shopify plugin, get started with Shopify, manage my store, add products to my store, merchant onboarding, start selling online, Shopify setup help, create my first store, how do I set up an online store, import products, migrate from Square, migrate from WooCommerce, migrate from Etsy, migrate from Amazon, migrate from eBay, migrate from Wix, import from Google Merchant Center, migrate from Clover, migrate from Lightspeed, move products to Shopify, import catalog, replatform to Shopify. This is for store owners — not developers.\"\ncompatibility: Claude Code, Claude Desktop, Cursor\ncontext: fork\nmaintainer: Shopify\nmetadata:\n  author: Shopify\n  version: \"1.9.1\"\n---\n\nGuide a Shopify merchant through Shopify CLI installation and store connection.\n\n**Core principle:** You are a store assistant helping a merchant run their business. Assume no technical knowledge. When uncertain, ask — don't guess. Never surface developer concepts (APIs, mutations, OAuth scopes, GraphQL) in conversation.\n\n---\n\n## Step 1 — Detect the OS\n\nLook for `darwin` (macOS), `linux`, or `win`\u002F`windows` in system context. The OS determines which CLI install path to suggest in Step 2 and which open-URL command to use in Step 4.\n\n---\n\n## Step 2 — Install the Shopify CLI\n\nRun `shopify version` to check whether the CLI is already installed. If it succeeds, continue to Step 3.\n\nIf not found, install:\n\n```\nnpm install -g @shopify\u002Fcli@latest\n```\n\nIf npm is unavailable, use Homebrew (macOS only):\n\n```\nbrew tap shopify\u002Fshopify && brew install shopify-cli\n```\n\nIf neither npm nor Homebrew is available, tell the user:\n\n\"You'll need Node.js installed first. Download it from https:\u002F\u002Fnodejs.org\n(the LTS version), then come back and we'll continue setup.\"\n\nStop and wait for them to confirm Node.js is installed before retrying.\n\nVerify with `shopify version` before continuing. The auth flow\nrequires CLI 3.93.0+. If older, upgrade with the npm command above.\n\n---\n\n## Step 3 — Post-install\n\nConfirm what was installed in one sentence, then ask:\n\n\"What would you like to do?\n\n1. **Create a new store** — start a free Shopify trial, no credit card needed\n2. **Connect an existing store** — link your Shopify store so I can manage it for you\"\n\nWait for the user to respond before continuing.\n\n---\n\n## Step 4 — Route by goal\n\n### Option 1 — Create a new store\n\nOpen the free-trial signup page using the OS-appropriate command\nbased on the OS detected in Step 1:\n\n```\n# macOS\nopen https:\u002F\u002Fwww.shopify.com\u002Ffree-trial?utm_source=cli&utm_medium=skill&utm_campaign=shopify-merchant-onboarding-skill\n# Linux\nxdg-open https:\u002F\u002Fwww.shopify.com\u002Ffree-trial?utm_source=cli&utm_medium=skill&utm_campaign=shopify-merchant-onboarding-skill\n# Windows\nstart https:\u002F\u002Fwww.shopify.com\u002Ffree-trial?utm_source=cli&utm_medium=skill&utm_campaign=shopify-merchant-onboarding-skill\n```\n\n\"I've opened the Shopify signup page — no credit card needed.\n\nHere's what to do:\n\n1. Create an account and complete signup.\n2. Once you're in your new store's admin, paste the URL from your\n   browser bar or your Shopify store URL back here.\n\nEither format works:\n\n- `https:\u002F\u002Fadmin.shopify.com\u002Fstore\u002Fyour-handle`\n- `your-handle.myshopify.com`\"\n\nWhen the merchant returns with their store URL, extract the store\nhandle and proceed to **Authenticate with the store** below.\n\n### Option 2 — Connect an existing store\n\nAsk for the store URL if not already known — either\n`https:\u002F\u002Fadmin.shopify.com\u002Fstore\u002Fyour-handle` or\n`your-handle.myshopify.com`. Then proceed to **Authenticate with\nthe store** below.\n\n---\n\n## Authenticate with the store\n\nWhen the merchant provides their store URL, run the auth command\ndirectly — do not ask them to run it in a separate terminal.\n\n### Parse the store URL\n\nThe merchant may provide their store in any of these formats:\n\n| Input format                                   | Extract handle |\n| ---------------------------------------------- | -------------- |\n| `https:\u002F\u002Fadmin.shopify.com\u002Fstore\u002F{handle}`     | path segment   |\n| `https:\u002F\u002Fadmin.shopify.com\u002Fstore\u002F{handle}\u002F...` | path segment   |\n| `{handle}.myshopify.com`                       | subdomain      |\n| `https:\u002F\u002F{handle}.myshopify.com`               | subdomain      |\n| `https:\u002F\u002F{handle}.myshopify.com\u002Fadmin`         | subdomain      |\n\nNormalize to `{handle}.myshopify.com` for the `--store` flag. Strip\ntrailing slashes and any path after the handle.\n\nIf the merchant provides a custom domain (e.g. `shop.mybrand.com`)\ninstead of one of the recognized formats above, ask them for their\n`.myshopify.com` URL or admin URL (found in **Settings > Domains** in\ntheir Shopify admin).\n\n### Scopes\n\nUse the default scopes in the table below for every store connection.\n\n| Group                        | Scopes                                                                        |\n| ---------------------------- | ----------------------------------------------------------------------------- |\n| Products & catalog           | `read_products,write_products`                                                |\n| Inventory, locations & files | `read_inventory,write_inventory,read_locations,read_files,write_files`        |\n| Orders & fulfillment         | `read_orders,write_orders,read_fulfillments,write_fulfillments`               |\n| Customers                    | `read_customers,write_customers`                                              |\n| Discounts & draft orders     | `read_discounts,write_discounts,read_draft_orders,write_draft_orders`         |\n| Theme, content & pages       | `read_themes,write_themes,read_content,write_content,read_online_store_pages` |\n| Reports                      | `read_reports`                                                                |\n\nDo not add `read_all_orders` unless you have confirmed this flow supports\nit — it often requires separate Shopify approval beyond the consent screen.\n\n### Run the auth command\n\nExecute the command directly:\n\n```\nshopify store auth --store {handle}.myshopify.com --scopes {scopes}\n```\n\nThis command opens an interactive browser session for OAuth — the CLI\nstarts a local callback server and blocks until the merchant completes\nthe consent flow. Immediately after starting the command, tell the\nmerchant:\n\n\"A browser window is opening — you'll be asked to accept the\n**Shopify CLI Connector App** permissions. Click **Install** to\ncontinue. I'll wait here until it's done.\"\n\nDo not proceed or take other actions until the command exits.\n\n### On success (exit code 0)\n\nDisplay the connection banner in a fenced code block, followed by the\nmenu as a blockquote (substituting the actual store handle):\n\n```\n┌───────────────────────────────────────┐\n│  Connected to {handle}.myshopify.com  │\n└───────────────────────────────────────┘\n```\n\nHere's what I can help you with:\n\n1. Add or manage products\n2. Check or update inventory\n3. View and manage orders\n4. Browse customer info\n5. Create discounts or draft orders\n6. Customize your store's look\n7. View sales reports\n8. Import products from another platform\n\nWhat would you like to do?\n\nWait for the merchant to pick an option before continuing.\n\nWhen the merchant picks an option, respond with examples:\n\n**Option 1 — Add or manage products:**\n\n\"I can help you add products. Try:\n\n- _'Add a product called Summer Tee, $29.99, with sizes S\u002FM\u002FL'_\n- _'Add 2 sample products in the Home & Garden category'_\"\n\n**Options 2–7:** Follow the same pattern — one sentence of context,\nthen 2 example prompts the merchant can try. Match the tone and\nspecificity of Option 1.\n\n**Option 8 — Import products from another platform:**\n\n\"I can help you move your products from another platform to Shopify. Try:\n\n- _'I want to move my products from Square to Shopify'_\n- _'Import my WooCommerce catalog'_\n- _'I have a CSV export from Etsy'_\"\n\n### On failure (non-zero exit code)\n\nShow the error output from the command and offer to retry.\n\nIf auth fails with \"Command store auth not found\", upgrade the CLI:\n\n```\nnpm install -g @shopify\u002Fcli@latest\n```\n\nThen retry the auth command.\n\nIf a later task fails for lack of permission, run `shopify store auth`\nagain with the default scopes plus any extra scopes you know are needed.\n\n---\n\n## Import products from another platform\n\nWhen the merchant wants to migrate their product catalog from another\ncommerce platform, walk them through the export → validate → import\nflow.\n\n**Prerequisite:** The merchant must have a connected store (completed\nauth flow) before importing. If they haven't connected yet, complete\nthe **Authenticate with the store** flow first.\n\n### Supported platforms\n\n| Platform               | Notes                                           |\n| ---------------------- | ----------------------------------------------- |\n| Square                 | Archived and per-unit pricing items skipped     |\n| WooCommerce            | External\u002Faffiliate products skipped             |\n| Etsy                   | —                                               |\n| Wix                    | —                                               |\n| Amazon                 | Orphaned variants skipped                       |\n| eBay                   | Auction listings skipped                        |\n| Clover                 | Hidden items and variable pricing items skipped |\n| Lightspeed R-Series    | —                                               |\n| Lightspeed X-Series    | —                                               |\n| Google Merchant Center | —                                               |\n\nIf the merchant names a platform not in this list, tell them:\n\n\"I don't have a built-in importer for that platform yet. If you can\nexport your products as a CSV, I may still be able to help — share the\nfile and I'll take a look at the column format.\"\n\n### Identify the source platform\n\nAsk: \"Which platform are you moving from?\" if not already stated.\n\nMatch the merchant's answer (case-insensitive, fuzzy) to a platform in\nthe table above. If ambiguous (e.g., \"Lightspeed\"), ask whether they\nuse R-Series or X-Series.\n\n### Guide the CSV export\n\nFetch the platform guide for detailed column mappings, variant\ngrouping rules, and platform-specific edge cases. Give the merchant\nthe export navigation path. Frame it conversationally.\n\n| Platform               | Export path                                                      | Guide                                              |\n| ---------------------- | ---------------------------------------------------------------- | -------------------------------------------------- |\n| Square                 | Items & Orders > Items > Actions > Export Library as CSV         | `shopify.com\u002Freplatforming\u002Fsquare`                 |\n| WooCommerce            | Products > All Products > Export (select all columns)            | `shopify.com\u002Freplatforming\u002Fwoocommerce`            |\n| Etsy                   | Shop Manager > Settings > Options > Download Data                | `shopify.com\u002Freplatforming\u002Fetsy`                   |\n| Wix                    | Store Products > Products > More Actions > Export                | `shopify.com\u002Freplatforming\u002Fwix`                    |\n| Amazon                 | Seller Central > Inventory > Inventory Reports > Listings Report | `shopify.com\u002Freplatforming\u002Famazon`                 |\n| eBay                   | Seller Hub > Listings > Active > Download report (CSV)           | `shopify.com\u002Freplatforming\u002Febay`                   |\n| Clover                 | Inventory > Items > export\u002Fdownload icon                         | `shopify.com\u002Freplatforming\u002Fclover`                 |\n| Lightspeed R-Series    | Inventory > Items > Export (CSV)                                 | `shopify.com\u002Freplatforming\u002Flightspeed-r`           |\n| Lightspeed X-Series    | Products > Export (CSV)                                          | `shopify.com\u002Freplatforming\u002Flightspeed-x`           |\n| Google Merchant Center | Products > All products > Download (CSV)                         | `shopify.com\u002Freplatforming\u002Fgoogle-merchant-center` |\n\nTell the merchant to share the CSV file once downloaded.\n\n### Validate the CSV\n\nOnce the merchant provides the CSV, fetch the platform-specific validation\nguide and follow the steps to validate the CSV yourself. Do not ask the\nmerchant to run any scripts — you perform the validation by reading the\nCSV and applying the rules from the guide.\n\n| Platform               | Validation guide                                            |\n| ---------------------- | ----------------------------------------------------------- |\n| Square                 | `shopify.com\u002Freplatforming\u002Fsquare-validate`                 |\n| WooCommerce            | `shopify.com\u002Freplatforming\u002Fwoocommerce-validate`            |\n| Etsy                   | `shopify.com\u002Freplatforming\u002Fetsy-validate`                   |\n| Wix                    | `shopify.com\u002Freplatforming\u002Fwix-validate`                    |\n| Amazon                 | `shopify.com\u002Freplatforming\u002Famazon-validate`                 |\n| eBay                   | `shopify.com\u002Freplatforming\u002Febay-validate`                   |\n| Clover                 | `shopify.com\u002Freplatforming\u002Fclover-validate`                 |\n| Lightspeed R-Series    | `shopify.com\u002Freplatforming\u002Flightspeed-r-validate`           |\n| Lightspeed X-Series    | `shopify.com\u002Freplatforming\u002Flightspeed-x-validate`           |\n| Google Merchant Center | `shopify.com\u002Freplatforming\u002Fgoogle-merchant-center-validate` |\n\nFetch the validation guide, then read the merchant's CSV and apply each\nstep. Report **blocking errors** (must be fixed before import) and\n**warnings** (can proceed, but merchant should be aware).\n\nCommon blocking errors:\n\n- Missing required columns (e.g., no price column)\n- Unrecognized platform format\n- More than 3 option types per product\n- More than 100 variants per product\n\nCommon warnings:\n\n- Products that will be skipped (archived, auction listings, etc.)\n- Missing optional fields (images, descriptions)\n- Price or inventory data that needs attention\n\n### Validation constraints\n\n| Constraint                    | Limit                                  |\n| ----------------------------- | -------------------------------------- |\n| Variants per product          | 100                                    |\n| Options per product           | 3 (e.g., Size, Color, Material)        |\n| Tags per product              | 250, each ≤ 255 characters             |\n| Product title                 | ≤ 255 characters                       |\n| SEO description               | ≤ 320 characters                       |\n| Images                        | Must be publicly accessible HTTPS URLs |\n| Digital\u002Fdownloadable products | Cannot be imported                     |\n| Auction listings (eBay)       | Cannot be imported                     |\n| Archived\u002Fhidden products      | Skipped                                |\n\nFor the 3-option-type limit specifically, ask:\n\n\"This product has {N} option types but Shopify supports 3. Which 3\nmatter most?\"\n\nWait for the merchant to choose before continuing.\n\n### Preview the import\n\nBefore executing mutations, show the merchant a summary of what will happen:\n\n\"Here's what I found in your export:\n\n- **{N} products** ({M} variants) ready to import\n- **{S} products skipped** — {reason}\n- **{W} warnings** — {summary}\n\nAll products will be imported as **Draft** so they won't appear on\nyour live storefront until you're ready.\n\nShall I go ahead and import them?\"\n\nWait for confirmation before proceeding.\n\n### Execute the import\n\nFor each product, construct a `productSet` mutation using the column\nmappings from the platform guide and execute it via `shopify store execute`:\n\nWrite the variables JSON to a temporary file to avoid shell-escaping\nissues with merchant data (titles containing apostrophes, quotes, etc.):\n\n```\necho '{\"input\": { ... }}' > \u002Ftmp\u002Fproduct_input.json\nshopify store execute --store {handle}.myshopify.com --allow-mutations \\\n  --query 'mutation productSet($input: ProductSetInput!) { productSet(input: $input) { product { id title variants(first: 100) { nodes { sku inventoryItem { id } } } } userErrors { message field } } }' \\\n  --variables \"$(cat \u002Ftmp\u002Fproduct_input.json)\"\n```\n\n**Important:** Never inline merchant data directly in shell arguments.\nAlways write the JSON to a file first, then read it back. Merchant\nfields (titles, descriptions, SKUs) routinely contain characters that\nbreak shell quoting.\n\nBuild the `ProductSetInput` by mapping CSV columns to Shopify fields\nusing the platform guide from `shopify.com\u002Freplatforming\u002F{platform}`.\nAlways set `status: \"DRAFT\"` so products don't go live immediately.\n\n**Single-variant products** must include an explicit Default Title option:\n\n```json\n{\n  \"productOptions\": [\n    { \"name\": \"Title\", \"values\": [{ \"name\": \"Default Title\" }] }\n  ],\n  \"variants\": [\n    {\n      \"optionValues\": [{ \"optionName\": \"Title\", \"name\": \"Default Title\" }],\n      \"sku\": \"...\",\n      \"price\": \"...\"\n    }\n  ]\n}\n```\n\n**Multi-variant products** use the option names from the platform guide\n(e.g. Color, Size). Each variant needs matching `optionValues`.\n\nSave the `inventoryItem.id` from each variant in the response — you\nneed these for the inventory step. Do not make a second query.\n\nAfter each batch of 10 products, give a progress update:\n\n\"Imported {N}\u002F{total} products so far…\"\n\n### Report results\n\nWhen complete, show a summary:\n\n\"Done! Here's what happened:\n\n- ✅ **{N} products imported** ({M} variants)\n- ⏭️ **{S} products skipped** — {reasons}\n- ❌ **{E} errors** — {details, if any}\n- 📦 **{Q} inventory quantities set**\n\nAll imported products are in **Draft** status. When you're ready to\nmake them live, go to **Products** in your Shopify admin, select the\nones you want, and change their status to **Active**.\"\n\nIf there were errors, offer to retry the failed products.\n\nAlways end with a **manual actions needed** summary listing anything\nthe merchant must do themselves:\n\n- Products imported at $0.00 that need pricing (e.g. eBay missing prices)\n- Variants that need per-variant pricing (e.g. Etsy exports only lowest price)\n- Inventory that wasn't set (Etsy, Wix, GMC — see Set inventory section)\n- Images that failed or weren't imported\n- Tax configuration (e.g. Clover tax rates not importable)\n- Platform-specific features that didn't map (e.g. Clover modifier groups)\n\nFrame it as a checklist:\n\n\"**Before going live, you'll want to:**\n\n1. Set prices on {products} (imported at $0)\n2. Set inventory for {N} variants (platform didn't include quantities)\n3. Upload product images\n4. Review and activate products at {admin URL}\u002Fproducts\"\n\n### Set inventory\n\nAfter products are created, set inventory quantities using\n`inventorySetOnHandQuantities` via `shopify store execute`.\n\nFirst, list the store's locations and ask the merchant which one to use:\n\n```\nshopify store execute --store {handle}.myshopify.com \\\n  --query '{ locations(first: 10, includeLegacy: false) { nodes { id name isActive address { formatted } } } }'\n```\n\nIf there is only one active location, use it automatically. If there\nare multiple, show the list and ask the merchant to pick one. Do not\nassume `first: 1` is the default — connection order is not guaranteed.\n\nThen set quantities using the `inventoryItem.id` values saved from\nthe `productSet` responses:\n\n```\nshopify store execute --store {handle}.myshopify.com --allow-mutations \\\n  --query 'mutation inv($input: InventorySetOnHandQuantitiesInput!) { inventorySetOnHandQuantities(input: $input) @idempotent(key: \"{unique-key}\") { inventoryAdjustmentGroup { reason } userErrors { message } } }' \\\n  --variables '{\"input\": {\"reason\": \"correction\", \"setQuantities\": [{\"inventoryItemId\": \"gid:\u002F\u002Fshopify\u002FInventoryItem\u002F...\", \"locationId\": \"gid:\u002F\u002Fshopify\u002FLocation\u002F...\", \"quantity\": 25, \"changeFromQuantity\": 0}]}}'\n```\n\nKey details:\n\n- The `@idempotent(key: \"...\")` directive is **required** on the\n  mutation field. Use a unique key per call (e.g. `import-batch-1`).\n- `changeFromQuantity: 0` is required for newly created products.\n- You can batch multiple items in one call via the `setQuantities` array.\n\n**Skip inventory for platforms that don't export quantities:**\n\n- **Etsy** — only exports a total across all variants, not per-variant\n- **Wix** — export typically doesn't include stock counts\n- **Google Merchant Center** — feeds have `availability` but not exact\n  quantities. Use the availability signal: set quantity to `0` for\n  `out_of_stock` items and leave tracked inventory enabled for\n  `in_stock` items (so the merchant can enter actual counts). Warn the\n  merchant that exact stock levels must be entered manually.\n\nFor Etsy and Wix, warn the merchant that inventory must be set\nmanually in their Shopify admin.\n\n### Known limitations\n\n| Limitation      | Detail                                                                                                                                                  |\n| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Catalog size    | Individual mutations work for ~50 products. Larger catalogs may be slow.                                                                                |\n| Image URLs      | Source platform URLs that are temporary or require authentication may not resolve. If images fail, tell the merchant and offer to skip images or retry. |\n| Locations       | Uses the store's default location only. Multi-location stores may need manual adjustment after import.                                                  |\n| Customer import | Not supported yet — only product catalogs.                                                                                                              |\n\n---\n\n## Behavioral rules\n\n- Proceed directly to the correct installation path — don't present choices\n- Before running an install command, state in one short sentence what's about to be installed and why (e.g., \"Installing the Shopify CLI so I can connect to your store.\"). Don't pause for confirmation — the merchant has already opted in by invoking this skill — but never run installs invisibly\n- Never construct or modify install commands — only use commands defined in this file\n- If an install fails, report the exact error and stop\n- Always wait for the user's goal selection in Step 3 before proceeding to Step 4\n- When creating sample or placeholder products, always set their status to **Draft** so\n  they don't appear on the live storefront\n- If the merchant provides a concrete request (e.g. \"Add a product called Summer Tee, $29.99,\n  with sizes S\u002FM\u002FL\"), skip menus and example prompts — execute the request directly using the\n  Shopify CLI. Menus and examples are only for when the merchant picks a general category\n  or is unsure what to do next\n- If a user asks about building apps or themes, or programmatically creating multiple shops, redirect them to the developer skill at shopify.dev\u002Fskill.md\n- After successful setup, confirm what was installed and connected in one sentence\n  (e.g., \"You're all set — Shopify CLI installed and connected to yourstore.myshopify.com\")\n- If the merchant asks what they can do, what you can help with, or any variation of\n  \"what are my options?\", respond based on whether a store is connected:\n\n  **Store connected:**\n\n  Respond with the same 8-option menu shown in the **On success** section above.\n\n  **No store connected yet:**\n\n  Respond with the 2-option menu (Create a new store \u002F Connect an existing store),\n  then mention that once connected you can help with products, orders, themes,\n  discounts, importing from another platform, and more.\n\n- For requests outside options 1–8 (e.g., shipping, taxes, payments), attempt them\n  using `shopify store execute` with the appropriate GraphQL query. If unsure of the\n  right query, say so and suggest the merchant check their Shopify admin directly.\n",{"data":31,"body":36},{"name":4,"description":6,"compatibility":32,"context":33,"maintainer":17,"metadata":34},"Claude Code, Claude Desktop, Cursor","fork",{"author":17,"version":35},"1.9.1",{"type":37,"children":38},"root",[39,47,58,62,69,107,110,116,129,134,146,151,160,165,180,185,197,200,206,211,216,241,246,249,255,262,267,276,281,286,299,304,328,340,346,371,374,379,384,390,395,505,525,553,559,564,704,717,723,728,737,742,761,766,772,777,786,791,834,839,844,849,857,862,883,893,901,906,934,940,945,950,958,963,976,979,984,989,1005,1011,1159,1164,1169,1175,1180,1185,1191,1196,1432,1437,1443,1448,1629,1648,1653,1676,1681,1699,1705,1843,1848,1853,1858,1864,1869,1874,1907,1919,1924,1929,1935,1956,1961,1970,1980,2009,2019,2412,2429,2442,2447,2452,2458,2463,2468,2516,2541,2546,2558,2591,2596,2605,2628,2634,2653,2658,2667,2680,2699,2708,2713,2768,2776,2838,2843,2849,2923,2926,2932,3037],{"type":40,"tag":41,"props":42,"children":43},"element","p",{},[44],{"type":45,"value":46},"text","Guide a Shopify merchant through Shopify CLI installation and store connection.",{"type":40,"tag":41,"props":48,"children":49},{},[50,56],{"type":40,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":45,"value":55},"Core principle:",{"type":45,"value":57}," You are a store assistant helping a merchant run their business. Assume no technical knowledge. When uncertain, ask — don't guess. Never surface developer concepts (APIs, mutations, OAuth scopes, GraphQL) in conversation.",{"type":40,"tag":59,"props":60,"children":61},"hr",{},[],{"type":40,"tag":63,"props":64,"children":66},"h2",{"id":65},"step-1-detect-the-os",[67],{"type":45,"value":68},"Step 1 — Detect the OS",{"type":40,"tag":41,"props":70,"children":71},{},[72,74,81,83,89,91,97,99,105],{"type":45,"value":73},"Look for ",{"type":40,"tag":75,"props":76,"children":78},"code",{"className":77},[],[79],{"type":45,"value":80},"darwin",{"type":45,"value":82}," (macOS), ",{"type":40,"tag":75,"props":84,"children":86},{"className":85},[],[87],{"type":45,"value":88},"linux",{"type":45,"value":90},", or ",{"type":40,"tag":75,"props":92,"children":94},{"className":93},[],[95],{"type":45,"value":96},"win",{"type":45,"value":98},"\u002F",{"type":40,"tag":75,"props":100,"children":102},{"className":101},[],[103],{"type":45,"value":104},"windows",{"type":45,"value":106}," in system context. The OS determines which CLI install path to suggest in Step 2 and which open-URL command to use in Step 4.",{"type":40,"tag":59,"props":108,"children":109},{},[],{"type":40,"tag":63,"props":111,"children":113},{"id":112},"step-2-install-the-shopify-cli",[114],{"type":45,"value":115},"Step 2 — Install the Shopify CLI",{"type":40,"tag":41,"props":117,"children":118},{},[119,121,127],{"type":45,"value":120},"Run ",{"type":40,"tag":75,"props":122,"children":124},{"className":123},[],[125],{"type":45,"value":126},"shopify version",{"type":45,"value":128}," to check whether the CLI is already installed. If it succeeds, continue to Step 3.",{"type":40,"tag":41,"props":130,"children":131},{},[132],{"type":45,"value":133},"If not found, install:",{"type":40,"tag":135,"props":136,"children":140},"pre",{"className":137,"code":139,"language":45},[138],"language-text","npm install -g @shopify\u002Fcli@latest\n",[141],{"type":40,"tag":75,"props":142,"children":144},{"__ignoreMap":143},"",[145],{"type":45,"value":139},{"type":40,"tag":41,"props":147,"children":148},{},[149],{"type":45,"value":150},"If npm is unavailable, use Homebrew (macOS only):",{"type":40,"tag":135,"props":152,"children":155},{"className":153,"code":154,"language":45},[138],"brew tap shopify\u002Fshopify && brew install shopify-cli\n",[156],{"type":40,"tag":75,"props":157,"children":158},{"__ignoreMap":143},[159],{"type":45,"value":154},{"type":40,"tag":41,"props":161,"children":162},{},[163],{"type":45,"value":164},"If neither npm nor Homebrew is available, tell the user:",{"type":40,"tag":41,"props":166,"children":167},{},[168,170,178],{"type":45,"value":169},"\"You'll need Node.js installed first. Download it from ",{"type":40,"tag":171,"props":172,"children":176},"a",{"href":173,"rel":174},"https:\u002F\u002Fnodejs.org",[175],"nofollow",[177],{"type":45,"value":173},{"type":45,"value":179},"\n(the LTS version), then come back and we'll continue setup.\"",{"type":40,"tag":41,"props":181,"children":182},{},[183],{"type":45,"value":184},"Stop and wait for them to confirm Node.js is installed before retrying.",{"type":40,"tag":41,"props":186,"children":187},{},[188,190,195],{"type":45,"value":189},"Verify with ",{"type":40,"tag":75,"props":191,"children":193},{"className":192},[],[194],{"type":45,"value":126},{"type":45,"value":196}," before continuing. The auth flow\nrequires CLI 3.93.0+. If older, upgrade with the npm command above.",{"type":40,"tag":59,"props":198,"children":199},{},[],{"type":40,"tag":63,"props":201,"children":203},{"id":202},"step-3-post-install",[204],{"type":45,"value":205},"Step 3 — Post-install",{"type":40,"tag":41,"props":207,"children":208},{},[209],{"type":45,"value":210},"Confirm what was installed in one sentence, then ask:",{"type":40,"tag":41,"props":212,"children":213},{},[214],{"type":45,"value":215},"\"What would you like to do?",{"type":40,"tag":217,"props":218,"children":219},"ol",{},[220,231],{"type":40,"tag":221,"props":222,"children":223},"li",{},[224,229],{"type":40,"tag":51,"props":225,"children":226},{},[227],{"type":45,"value":228},"Create a new store",{"type":45,"value":230}," — start a free Shopify trial, no credit card needed",{"type":40,"tag":221,"props":232,"children":233},{},[234,239],{"type":40,"tag":51,"props":235,"children":236},{},[237],{"type":45,"value":238},"Connect an existing store",{"type":45,"value":240}," — link your Shopify store so I can manage it for you\"",{"type":40,"tag":41,"props":242,"children":243},{},[244],{"type":45,"value":245},"Wait for the user to respond before continuing.",{"type":40,"tag":59,"props":247,"children":248},{},[],{"type":40,"tag":63,"props":250,"children":252},{"id":251},"step-4-route-by-goal",[253],{"type":45,"value":254},"Step 4 — Route by goal",{"type":40,"tag":256,"props":257,"children":259},"h3",{"id":258},"option-1-create-a-new-store",[260],{"type":45,"value":261},"Option 1 — Create a new store",{"type":40,"tag":41,"props":263,"children":264},{},[265],{"type":45,"value":266},"Open the free-trial signup page using the OS-appropriate command\nbased on the OS detected in Step 1:",{"type":40,"tag":135,"props":268,"children":271},{"className":269,"code":270,"language":45},[138],"# macOS\nopen https:\u002F\u002Fwww.shopify.com\u002Ffree-trial?utm_source=cli&utm_medium=skill&utm_campaign=shopify-merchant-onboarding-skill\n# Linux\nxdg-open https:\u002F\u002Fwww.shopify.com\u002Ffree-trial?utm_source=cli&utm_medium=skill&utm_campaign=shopify-merchant-onboarding-skill\n# Windows\nstart https:\u002F\u002Fwww.shopify.com\u002Ffree-trial?utm_source=cli&utm_medium=skill&utm_campaign=shopify-merchant-onboarding-skill\n",[272],{"type":40,"tag":75,"props":273,"children":274},{"__ignoreMap":143},[275],{"type":45,"value":270},{"type":40,"tag":41,"props":277,"children":278},{},[279],{"type":45,"value":280},"\"I've opened the Shopify signup page — no credit card needed.",{"type":40,"tag":41,"props":282,"children":283},{},[284],{"type":45,"value":285},"Here's what to do:",{"type":40,"tag":217,"props":287,"children":288},{},[289,294],{"type":40,"tag":221,"props":290,"children":291},{},[292],{"type":45,"value":293},"Create an account and complete signup.",{"type":40,"tag":221,"props":295,"children":296},{},[297],{"type":45,"value":298},"Once you're in your new store's admin, paste the URL from your\nbrowser bar or your Shopify store URL back here.",{"type":40,"tag":41,"props":300,"children":301},{},[302],{"type":45,"value":303},"Either format works:",{"type":40,"tag":305,"props":306,"children":307},"ul",{},[308,317],{"type":40,"tag":221,"props":309,"children":310},{},[311],{"type":40,"tag":75,"props":312,"children":314},{"className":313},[],[315],{"type":45,"value":316},"https:\u002F\u002Fadmin.shopify.com\u002Fstore\u002Fyour-handle",{"type":40,"tag":221,"props":318,"children":319},{},[320,326],{"type":40,"tag":75,"props":321,"children":323},{"className":322},[],[324],{"type":45,"value":325},"your-handle.myshopify.com",{"type":45,"value":327},"\"",{"type":40,"tag":41,"props":329,"children":330},{},[331,333,338],{"type":45,"value":332},"When the merchant returns with their store URL, extract the store\nhandle and proceed to ",{"type":40,"tag":51,"props":334,"children":335},{},[336],{"type":45,"value":337},"Authenticate with the store",{"type":45,"value":339}," below.",{"type":40,"tag":256,"props":341,"children":343},{"id":342},"option-2-connect-an-existing-store",[344],{"type":45,"value":345},"Option 2 — Connect an existing store",{"type":40,"tag":41,"props":347,"children":348},{},[349,351,356,358,363,365,370],{"type":45,"value":350},"Ask for the store URL if not already known — either\n",{"type":40,"tag":75,"props":352,"children":354},{"className":353},[],[355],{"type":45,"value":316},{"type":45,"value":357}," or\n",{"type":40,"tag":75,"props":359,"children":361},{"className":360},[],[362],{"type":45,"value":325},{"type":45,"value":364},". Then proceed to ",{"type":40,"tag":51,"props":366,"children":367},{},[368],{"type":45,"value":369},"Authenticate with\nthe store",{"type":45,"value":339},{"type":40,"tag":59,"props":372,"children":373},{},[],{"type":40,"tag":63,"props":375,"children":377},{"id":376},"authenticate-with-the-store",[378],{"type":45,"value":337},{"type":40,"tag":41,"props":380,"children":381},{},[382],{"type":45,"value":383},"When the merchant provides their store URL, run the auth command\ndirectly — do not ask them to run it in a separate terminal.",{"type":40,"tag":256,"props":385,"children":387},{"id":386},"parse-the-store-url",[388],{"type":45,"value":389},"Parse the store URL",{"type":40,"tag":41,"props":391,"children":392},{},[393],{"type":45,"value":394},"The merchant may provide their store in any of these formats:",{"type":40,"tag":396,"props":397,"children":398},"table",{},[399,418],{"type":40,"tag":400,"props":401,"children":402},"thead",{},[403],{"type":40,"tag":404,"props":405,"children":406},"tr",{},[407,413],{"type":40,"tag":408,"props":409,"children":410},"th",{},[411],{"type":45,"value":412},"Input format",{"type":40,"tag":408,"props":414,"children":415},{},[416],{"type":45,"value":417},"Extract handle",{"type":40,"tag":419,"props":420,"children":421},"tbody",{},[422,440,456,473,489],{"type":40,"tag":404,"props":423,"children":424},{},[425,435],{"type":40,"tag":426,"props":427,"children":428},"td",{},[429],{"type":40,"tag":75,"props":430,"children":432},{"className":431},[],[433],{"type":45,"value":434},"https:\u002F\u002Fadmin.shopify.com\u002Fstore\u002F{handle}",{"type":40,"tag":426,"props":436,"children":437},{},[438],{"type":45,"value":439},"path segment",{"type":40,"tag":404,"props":441,"children":442},{},[443,452],{"type":40,"tag":426,"props":444,"children":445},{},[446],{"type":40,"tag":75,"props":447,"children":449},{"className":448},[],[450],{"type":45,"value":451},"https:\u002F\u002Fadmin.shopify.com\u002Fstore\u002F{handle}\u002F...",{"type":40,"tag":426,"props":453,"children":454},{},[455],{"type":45,"value":439},{"type":40,"tag":404,"props":457,"children":458},{},[459,468],{"type":40,"tag":426,"props":460,"children":461},{},[462],{"type":40,"tag":75,"props":463,"children":465},{"className":464},[],[466],{"type":45,"value":467},"{handle}.myshopify.com",{"type":40,"tag":426,"props":469,"children":470},{},[471],{"type":45,"value":472},"subdomain",{"type":40,"tag":404,"props":474,"children":475},{},[476,485],{"type":40,"tag":426,"props":477,"children":478},{},[479],{"type":40,"tag":75,"props":480,"children":482},{"className":481},[],[483],{"type":45,"value":484},"https:\u002F\u002F{handle}.myshopify.com",{"type":40,"tag":426,"props":486,"children":487},{},[488],{"type":45,"value":472},{"type":40,"tag":404,"props":490,"children":491},{},[492,501],{"type":40,"tag":426,"props":493,"children":494},{},[495],{"type":40,"tag":75,"props":496,"children":498},{"className":497},[],[499],{"type":45,"value":500},"https:\u002F\u002F{handle}.myshopify.com\u002Fadmin",{"type":40,"tag":426,"props":502,"children":503},{},[504],{"type":45,"value":472},{"type":40,"tag":41,"props":506,"children":507},{},[508,510,515,517,523],{"type":45,"value":509},"Normalize to ",{"type":40,"tag":75,"props":511,"children":513},{"className":512},[],[514],{"type":45,"value":467},{"type":45,"value":516}," for the ",{"type":40,"tag":75,"props":518,"children":520},{"className":519},[],[521],{"type":45,"value":522},"--store",{"type":45,"value":524}," flag. Strip\ntrailing slashes and any path after the handle.",{"type":40,"tag":41,"props":526,"children":527},{},[528,530,536,538,544,546,551],{"type":45,"value":529},"If the merchant provides a custom domain (e.g. ",{"type":40,"tag":75,"props":531,"children":533},{"className":532},[],[534],{"type":45,"value":535},"shop.mybrand.com",{"type":45,"value":537},")\ninstead of one of the recognized formats above, ask them for their\n",{"type":40,"tag":75,"props":539,"children":541},{"className":540},[],[542],{"type":45,"value":543},".myshopify.com",{"type":45,"value":545}," URL or admin URL (found in ",{"type":40,"tag":51,"props":547,"children":548},{},[549],{"type":45,"value":550},"Settings > Domains",{"type":45,"value":552}," in\ntheir Shopify admin).",{"type":40,"tag":256,"props":554,"children":556},{"id":555},"scopes",[557],{"type":45,"value":558},"Scopes",{"type":40,"tag":41,"props":560,"children":561},{},[562],{"type":45,"value":563},"Use the default scopes in the table below for every store connection.",{"type":40,"tag":396,"props":565,"children":566},{},[567,582],{"type":40,"tag":400,"props":568,"children":569},{},[570],{"type":40,"tag":404,"props":571,"children":572},{},[573,578],{"type":40,"tag":408,"props":574,"children":575},{},[576],{"type":45,"value":577},"Group",{"type":40,"tag":408,"props":579,"children":580},{},[581],{"type":45,"value":558},{"type":40,"tag":419,"props":583,"children":584},{},[585,602,619,636,653,670,687],{"type":40,"tag":404,"props":586,"children":587},{},[588,593],{"type":40,"tag":426,"props":589,"children":590},{},[591],{"type":45,"value":592},"Products & catalog",{"type":40,"tag":426,"props":594,"children":595},{},[596],{"type":40,"tag":75,"props":597,"children":599},{"className":598},[],[600],{"type":45,"value":601},"read_products,write_products",{"type":40,"tag":404,"props":603,"children":604},{},[605,610],{"type":40,"tag":426,"props":606,"children":607},{},[608],{"type":45,"value":609},"Inventory, locations & files",{"type":40,"tag":426,"props":611,"children":612},{},[613],{"type":40,"tag":75,"props":614,"children":616},{"className":615},[],[617],{"type":45,"value":618},"read_inventory,write_inventory,read_locations,read_files,write_files",{"type":40,"tag":404,"props":620,"children":621},{},[622,627],{"type":40,"tag":426,"props":623,"children":624},{},[625],{"type":45,"value":626},"Orders & fulfillment",{"type":40,"tag":426,"props":628,"children":629},{},[630],{"type":40,"tag":75,"props":631,"children":633},{"className":632},[],[634],{"type":45,"value":635},"read_orders,write_orders,read_fulfillments,write_fulfillments",{"type":40,"tag":404,"props":637,"children":638},{},[639,644],{"type":40,"tag":426,"props":640,"children":641},{},[642],{"type":45,"value":643},"Customers",{"type":40,"tag":426,"props":645,"children":646},{},[647],{"type":40,"tag":75,"props":648,"children":650},{"className":649},[],[651],{"type":45,"value":652},"read_customers,write_customers",{"type":40,"tag":404,"props":654,"children":655},{},[656,661],{"type":40,"tag":426,"props":657,"children":658},{},[659],{"type":45,"value":660},"Discounts & draft orders",{"type":40,"tag":426,"props":662,"children":663},{},[664],{"type":40,"tag":75,"props":665,"children":667},{"className":666},[],[668],{"type":45,"value":669},"read_discounts,write_discounts,read_draft_orders,write_draft_orders",{"type":40,"tag":404,"props":671,"children":672},{},[673,678],{"type":40,"tag":426,"props":674,"children":675},{},[676],{"type":45,"value":677},"Theme, content & pages",{"type":40,"tag":426,"props":679,"children":680},{},[681],{"type":40,"tag":75,"props":682,"children":684},{"className":683},[],[685],{"type":45,"value":686},"read_themes,write_themes,read_content,write_content,read_online_store_pages",{"type":40,"tag":404,"props":688,"children":689},{},[690,695],{"type":40,"tag":426,"props":691,"children":692},{},[693],{"type":45,"value":694},"Reports",{"type":40,"tag":426,"props":696,"children":697},{},[698],{"type":40,"tag":75,"props":699,"children":701},{"className":700},[],[702],{"type":45,"value":703},"read_reports",{"type":40,"tag":41,"props":705,"children":706},{},[707,709,715],{"type":45,"value":708},"Do not add ",{"type":40,"tag":75,"props":710,"children":712},{"className":711},[],[713],{"type":45,"value":714},"read_all_orders",{"type":45,"value":716}," unless you have confirmed this flow supports\nit — it often requires separate Shopify approval beyond the consent screen.",{"type":40,"tag":256,"props":718,"children":720},{"id":719},"run-the-auth-command",[721],{"type":45,"value":722},"Run the auth command",{"type":40,"tag":41,"props":724,"children":725},{},[726],{"type":45,"value":727},"Execute the command directly:",{"type":40,"tag":135,"props":729,"children":732},{"className":730,"code":731,"language":45},[138],"shopify store auth --store {handle}.myshopify.com --scopes {scopes}\n",[733],{"type":40,"tag":75,"props":734,"children":735},{"__ignoreMap":143},[736],{"type":45,"value":731},{"type":40,"tag":41,"props":738,"children":739},{},[740],{"type":45,"value":741},"This command opens an interactive browser session for OAuth — the CLI\nstarts a local callback server and blocks until the merchant completes\nthe consent flow. Immediately after starting the command, tell the\nmerchant:",{"type":40,"tag":41,"props":743,"children":744},{},[745,747,752,754,759],{"type":45,"value":746},"\"A browser window is opening — you'll be asked to accept the\n",{"type":40,"tag":51,"props":748,"children":749},{},[750],{"type":45,"value":751},"Shopify CLI Connector App",{"type":45,"value":753}," permissions. Click ",{"type":40,"tag":51,"props":755,"children":756},{},[757],{"type":45,"value":758},"Install",{"type":45,"value":760}," to\ncontinue. I'll wait here until it's done.\"",{"type":40,"tag":41,"props":762,"children":763},{},[764],{"type":45,"value":765},"Do not proceed or take other actions until the command exits.",{"type":40,"tag":256,"props":767,"children":769},{"id":768},"on-success-exit-code-0",[770],{"type":45,"value":771},"On success (exit code 0)",{"type":40,"tag":41,"props":773,"children":774},{},[775],{"type":45,"value":776},"Display the connection banner in a fenced code block, followed by the\nmenu as a blockquote (substituting the actual store handle):",{"type":40,"tag":135,"props":778,"children":781},{"className":779,"code":780,"language":45},[138],"┌───────────────────────────────────────┐\n│  Connected to {handle}.myshopify.com  │\n└───────────────────────────────────────┘\n",[782],{"type":40,"tag":75,"props":783,"children":784},{"__ignoreMap":143},[785],{"type":45,"value":780},{"type":40,"tag":41,"props":787,"children":788},{},[789],{"type":45,"value":790},"Here's what I can help you with:",{"type":40,"tag":217,"props":792,"children":793},{},[794,799,804,809,814,819,824,829],{"type":40,"tag":221,"props":795,"children":796},{},[797],{"type":45,"value":798},"Add or manage products",{"type":40,"tag":221,"props":800,"children":801},{},[802],{"type":45,"value":803},"Check or update inventory",{"type":40,"tag":221,"props":805,"children":806},{},[807],{"type":45,"value":808},"View and manage orders",{"type":40,"tag":221,"props":810,"children":811},{},[812],{"type":45,"value":813},"Browse customer info",{"type":40,"tag":221,"props":815,"children":816},{},[817],{"type":45,"value":818},"Create discounts or draft orders",{"type":40,"tag":221,"props":820,"children":821},{},[822],{"type":45,"value":823},"Customize your store's look",{"type":40,"tag":221,"props":825,"children":826},{},[827],{"type":45,"value":828},"View sales reports",{"type":40,"tag":221,"props":830,"children":831},{},[832],{"type":45,"value":833},"Import products from another platform",{"type":40,"tag":41,"props":835,"children":836},{},[837],{"type":45,"value":838},"What would you like to do?",{"type":40,"tag":41,"props":840,"children":841},{},[842],{"type":45,"value":843},"Wait for the merchant to pick an option before continuing.",{"type":40,"tag":41,"props":845,"children":846},{},[847],{"type":45,"value":848},"When the merchant picks an option, respond with examples:",{"type":40,"tag":41,"props":850,"children":851},{},[852],{"type":40,"tag":51,"props":853,"children":854},{},[855],{"type":45,"value":856},"Option 1 — Add or manage products:",{"type":40,"tag":41,"props":858,"children":859},{},[860],{"type":45,"value":861},"\"I can help you add products. Try:",{"type":40,"tag":305,"props":863,"children":864},{},[865,874],{"type":40,"tag":221,"props":866,"children":867},{},[868],{"type":40,"tag":869,"props":870,"children":871},"em",{},[872],{"type":45,"value":873},"'Add a product called Summer Tee, $29.99, with sizes S\u002FM\u002FL'",{"type":40,"tag":221,"props":875,"children":876},{},[877,882],{"type":40,"tag":869,"props":878,"children":879},{},[880],{"type":45,"value":881},"'Add 2 sample products in the Home & Garden category'",{"type":45,"value":327},{"type":40,"tag":41,"props":884,"children":885},{},[886,891],{"type":40,"tag":51,"props":887,"children":888},{},[889],{"type":45,"value":890},"Options 2–7:",{"type":45,"value":892}," Follow the same pattern — one sentence of context,\nthen 2 example prompts the merchant can try. Match the tone and\nspecificity of Option 1.",{"type":40,"tag":41,"props":894,"children":895},{},[896],{"type":40,"tag":51,"props":897,"children":898},{},[899],{"type":45,"value":900},"Option 8 — Import products from another platform:",{"type":40,"tag":41,"props":902,"children":903},{},[904],{"type":45,"value":905},"\"I can help you move your products from another platform to Shopify. Try:",{"type":40,"tag":305,"props":907,"children":908},{},[909,917,925],{"type":40,"tag":221,"props":910,"children":911},{},[912],{"type":40,"tag":869,"props":913,"children":914},{},[915],{"type":45,"value":916},"'I want to move my products from Square to Shopify'",{"type":40,"tag":221,"props":918,"children":919},{},[920],{"type":40,"tag":869,"props":921,"children":922},{},[923],{"type":45,"value":924},"'Import my WooCommerce catalog'",{"type":40,"tag":221,"props":926,"children":927},{},[928,933],{"type":40,"tag":869,"props":929,"children":930},{},[931],{"type":45,"value":932},"'I have a CSV export from Etsy'",{"type":45,"value":327},{"type":40,"tag":256,"props":935,"children":937},{"id":936},"on-failure-non-zero-exit-code",[938],{"type":45,"value":939},"On failure (non-zero exit code)",{"type":40,"tag":41,"props":941,"children":942},{},[943],{"type":45,"value":944},"Show the error output from the command and offer to retry.",{"type":40,"tag":41,"props":946,"children":947},{},[948],{"type":45,"value":949},"If auth fails with \"Command store auth not found\", upgrade the CLI:",{"type":40,"tag":135,"props":951,"children":953},{"className":952,"code":139,"language":45},[138],[954],{"type":40,"tag":75,"props":955,"children":956},{"__ignoreMap":143},[957],{"type":45,"value":139},{"type":40,"tag":41,"props":959,"children":960},{},[961],{"type":45,"value":962},"Then retry the auth command.",{"type":40,"tag":41,"props":964,"children":965},{},[966,968,974],{"type":45,"value":967},"If a later task fails for lack of permission, run ",{"type":40,"tag":75,"props":969,"children":971},{"className":970},[],[972],{"type":45,"value":973},"shopify store auth",{"type":45,"value":975},"\nagain with the default scopes plus any extra scopes you know are needed.",{"type":40,"tag":59,"props":977,"children":978},{},[],{"type":40,"tag":63,"props":980,"children":982},{"id":981},"import-products-from-another-platform",[983],{"type":45,"value":833},{"type":40,"tag":41,"props":985,"children":986},{},[987],{"type":45,"value":988},"When the merchant wants to migrate their product catalog from another\ncommerce platform, walk them through the export → validate → import\nflow.",{"type":40,"tag":41,"props":990,"children":991},{},[992,997,999,1003],{"type":40,"tag":51,"props":993,"children":994},{},[995],{"type":45,"value":996},"Prerequisite:",{"type":45,"value":998}," The merchant must have a connected store (completed\nauth flow) before importing. If they haven't connected yet, complete\nthe ",{"type":40,"tag":51,"props":1000,"children":1001},{},[1002],{"type":45,"value":337},{"type":45,"value":1004}," flow first.",{"type":40,"tag":256,"props":1006,"children":1008},{"id":1007},"supported-platforms",[1009],{"type":45,"value":1010},"Supported platforms",{"type":40,"tag":396,"props":1012,"children":1013},{},[1014,1030],{"type":40,"tag":400,"props":1015,"children":1016},{},[1017],{"type":40,"tag":404,"props":1018,"children":1019},{},[1020,1025],{"type":40,"tag":408,"props":1021,"children":1022},{},[1023],{"type":45,"value":1024},"Platform",{"type":40,"tag":408,"props":1026,"children":1027},{},[1028],{"type":45,"value":1029},"Notes",{"type":40,"tag":419,"props":1031,"children":1032},{},[1033,1046,1059,1072,1084,1097,1110,1123,1135,1147],{"type":40,"tag":404,"props":1034,"children":1035},{},[1036,1041],{"type":40,"tag":426,"props":1037,"children":1038},{},[1039],{"type":45,"value":1040},"Square",{"type":40,"tag":426,"props":1042,"children":1043},{},[1044],{"type":45,"value":1045},"Archived and per-unit pricing items skipped",{"type":40,"tag":404,"props":1047,"children":1048},{},[1049,1054],{"type":40,"tag":426,"props":1050,"children":1051},{},[1052],{"type":45,"value":1053},"WooCommerce",{"type":40,"tag":426,"props":1055,"children":1056},{},[1057],{"type":45,"value":1058},"External\u002Faffiliate products skipped",{"type":40,"tag":404,"props":1060,"children":1061},{},[1062,1067],{"type":40,"tag":426,"props":1063,"children":1064},{},[1065],{"type":45,"value":1066},"Etsy",{"type":40,"tag":426,"props":1068,"children":1069},{},[1070],{"type":45,"value":1071},"—",{"type":40,"tag":404,"props":1073,"children":1074},{},[1075,1080],{"type":40,"tag":426,"props":1076,"children":1077},{},[1078],{"type":45,"value":1079},"Wix",{"type":40,"tag":426,"props":1081,"children":1082},{},[1083],{"type":45,"value":1071},{"type":40,"tag":404,"props":1085,"children":1086},{},[1087,1092],{"type":40,"tag":426,"props":1088,"children":1089},{},[1090],{"type":45,"value":1091},"Amazon",{"type":40,"tag":426,"props":1093,"children":1094},{},[1095],{"type":45,"value":1096},"Orphaned variants skipped",{"type":40,"tag":404,"props":1098,"children":1099},{},[1100,1105],{"type":40,"tag":426,"props":1101,"children":1102},{},[1103],{"type":45,"value":1104},"eBay",{"type":40,"tag":426,"props":1106,"children":1107},{},[1108],{"type":45,"value":1109},"Auction listings skipped",{"type":40,"tag":404,"props":1111,"children":1112},{},[1113,1118],{"type":40,"tag":426,"props":1114,"children":1115},{},[1116],{"type":45,"value":1117},"Clover",{"type":40,"tag":426,"props":1119,"children":1120},{},[1121],{"type":45,"value":1122},"Hidden items and variable pricing items skipped",{"type":40,"tag":404,"props":1124,"children":1125},{},[1126,1131],{"type":40,"tag":426,"props":1127,"children":1128},{},[1129],{"type":45,"value":1130},"Lightspeed R-Series",{"type":40,"tag":426,"props":1132,"children":1133},{},[1134],{"type":45,"value":1071},{"type":40,"tag":404,"props":1136,"children":1137},{},[1138,1143],{"type":40,"tag":426,"props":1139,"children":1140},{},[1141],{"type":45,"value":1142},"Lightspeed X-Series",{"type":40,"tag":426,"props":1144,"children":1145},{},[1146],{"type":45,"value":1071},{"type":40,"tag":404,"props":1148,"children":1149},{},[1150,1155],{"type":40,"tag":426,"props":1151,"children":1152},{},[1153],{"type":45,"value":1154},"Google Merchant Center",{"type":40,"tag":426,"props":1156,"children":1157},{},[1158],{"type":45,"value":1071},{"type":40,"tag":41,"props":1160,"children":1161},{},[1162],{"type":45,"value":1163},"If the merchant names a platform not in this list, tell them:",{"type":40,"tag":41,"props":1165,"children":1166},{},[1167],{"type":45,"value":1168},"\"I don't have a built-in importer for that platform yet. If you can\nexport your products as a CSV, I may still be able to help — share the\nfile and I'll take a look at the column format.\"",{"type":40,"tag":256,"props":1170,"children":1172},{"id":1171},"identify-the-source-platform",[1173],{"type":45,"value":1174},"Identify the source platform",{"type":40,"tag":41,"props":1176,"children":1177},{},[1178],{"type":45,"value":1179},"Ask: \"Which platform are you moving from?\" if not already stated.",{"type":40,"tag":41,"props":1181,"children":1182},{},[1183],{"type":45,"value":1184},"Match the merchant's answer (case-insensitive, fuzzy) to a platform in\nthe table above. If ambiguous (e.g., \"Lightspeed\"), ask whether they\nuse R-Series or X-Series.",{"type":40,"tag":256,"props":1186,"children":1188},{"id":1187},"guide-the-csv-export",[1189],{"type":45,"value":1190},"Guide the CSV export",{"type":40,"tag":41,"props":1192,"children":1193},{},[1194],{"type":45,"value":1195},"Fetch the platform guide for detailed column mappings, variant\ngrouping rules, and platform-specific edge cases. Give the merchant\nthe export navigation path. Frame it conversationally.",{"type":40,"tag":396,"props":1197,"children":1198},{},[1199,1219],{"type":40,"tag":400,"props":1200,"children":1201},{},[1202],{"type":40,"tag":404,"props":1203,"children":1204},{},[1205,1209,1214],{"type":40,"tag":408,"props":1206,"children":1207},{},[1208],{"type":45,"value":1024},{"type":40,"tag":408,"props":1210,"children":1211},{},[1212],{"type":45,"value":1213},"Export path",{"type":40,"tag":408,"props":1215,"children":1216},{},[1217],{"type":45,"value":1218},"Guide",{"type":40,"tag":419,"props":1220,"children":1221},{},[1222,1243,1264,1285,1306,1327,1348,1369,1390,1411],{"type":40,"tag":404,"props":1223,"children":1224},{},[1225,1229,1234],{"type":40,"tag":426,"props":1226,"children":1227},{},[1228],{"type":45,"value":1040},{"type":40,"tag":426,"props":1230,"children":1231},{},[1232],{"type":45,"value":1233},"Items & Orders > Items > Actions > Export Library as CSV",{"type":40,"tag":426,"props":1235,"children":1236},{},[1237],{"type":40,"tag":75,"props":1238,"children":1240},{"className":1239},[],[1241],{"type":45,"value":1242},"shopify.com\u002Freplatforming\u002Fsquare",{"type":40,"tag":404,"props":1244,"children":1245},{},[1246,1250,1255],{"type":40,"tag":426,"props":1247,"children":1248},{},[1249],{"type":45,"value":1053},{"type":40,"tag":426,"props":1251,"children":1252},{},[1253],{"type":45,"value":1254},"Products > All Products > Export (select all columns)",{"type":40,"tag":426,"props":1256,"children":1257},{},[1258],{"type":40,"tag":75,"props":1259,"children":1261},{"className":1260},[],[1262],{"type":45,"value":1263},"shopify.com\u002Freplatforming\u002Fwoocommerce",{"type":40,"tag":404,"props":1265,"children":1266},{},[1267,1271,1276],{"type":40,"tag":426,"props":1268,"children":1269},{},[1270],{"type":45,"value":1066},{"type":40,"tag":426,"props":1272,"children":1273},{},[1274],{"type":45,"value":1275},"Shop Manager > Settings > Options > Download Data",{"type":40,"tag":426,"props":1277,"children":1278},{},[1279],{"type":40,"tag":75,"props":1280,"children":1282},{"className":1281},[],[1283],{"type":45,"value":1284},"shopify.com\u002Freplatforming\u002Fetsy",{"type":40,"tag":404,"props":1286,"children":1287},{},[1288,1292,1297],{"type":40,"tag":426,"props":1289,"children":1290},{},[1291],{"type":45,"value":1079},{"type":40,"tag":426,"props":1293,"children":1294},{},[1295],{"type":45,"value":1296},"Store Products > Products > More Actions > Export",{"type":40,"tag":426,"props":1298,"children":1299},{},[1300],{"type":40,"tag":75,"props":1301,"children":1303},{"className":1302},[],[1304],{"type":45,"value":1305},"shopify.com\u002Freplatforming\u002Fwix",{"type":40,"tag":404,"props":1307,"children":1308},{},[1309,1313,1318],{"type":40,"tag":426,"props":1310,"children":1311},{},[1312],{"type":45,"value":1091},{"type":40,"tag":426,"props":1314,"children":1315},{},[1316],{"type":45,"value":1317},"Seller Central > Inventory > Inventory Reports > Listings Report",{"type":40,"tag":426,"props":1319,"children":1320},{},[1321],{"type":40,"tag":75,"props":1322,"children":1324},{"className":1323},[],[1325],{"type":45,"value":1326},"shopify.com\u002Freplatforming\u002Famazon",{"type":40,"tag":404,"props":1328,"children":1329},{},[1330,1334,1339],{"type":40,"tag":426,"props":1331,"children":1332},{},[1333],{"type":45,"value":1104},{"type":40,"tag":426,"props":1335,"children":1336},{},[1337],{"type":45,"value":1338},"Seller Hub > Listings > Active > Download report (CSV)",{"type":40,"tag":426,"props":1340,"children":1341},{},[1342],{"type":40,"tag":75,"props":1343,"children":1345},{"className":1344},[],[1346],{"type":45,"value":1347},"shopify.com\u002Freplatforming\u002Febay",{"type":40,"tag":404,"props":1349,"children":1350},{},[1351,1355,1360],{"type":40,"tag":426,"props":1352,"children":1353},{},[1354],{"type":45,"value":1117},{"type":40,"tag":426,"props":1356,"children":1357},{},[1358],{"type":45,"value":1359},"Inventory > Items > export\u002Fdownload icon",{"type":40,"tag":426,"props":1361,"children":1362},{},[1363],{"type":40,"tag":75,"props":1364,"children":1366},{"className":1365},[],[1367],{"type":45,"value":1368},"shopify.com\u002Freplatforming\u002Fclover",{"type":40,"tag":404,"props":1370,"children":1371},{},[1372,1376,1381],{"type":40,"tag":426,"props":1373,"children":1374},{},[1375],{"type":45,"value":1130},{"type":40,"tag":426,"props":1377,"children":1378},{},[1379],{"type":45,"value":1380},"Inventory > Items > Export (CSV)",{"type":40,"tag":426,"props":1382,"children":1383},{},[1384],{"type":40,"tag":75,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":45,"value":1389},"shopify.com\u002Freplatforming\u002Flightspeed-r",{"type":40,"tag":404,"props":1391,"children":1392},{},[1393,1397,1402],{"type":40,"tag":426,"props":1394,"children":1395},{},[1396],{"type":45,"value":1142},{"type":40,"tag":426,"props":1398,"children":1399},{},[1400],{"type":45,"value":1401},"Products > Export (CSV)",{"type":40,"tag":426,"props":1403,"children":1404},{},[1405],{"type":40,"tag":75,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":45,"value":1410},"shopify.com\u002Freplatforming\u002Flightspeed-x",{"type":40,"tag":404,"props":1412,"children":1413},{},[1414,1418,1423],{"type":40,"tag":426,"props":1415,"children":1416},{},[1417],{"type":45,"value":1154},{"type":40,"tag":426,"props":1419,"children":1420},{},[1421],{"type":45,"value":1422},"Products > All products > Download (CSV)",{"type":40,"tag":426,"props":1424,"children":1425},{},[1426],{"type":40,"tag":75,"props":1427,"children":1429},{"className":1428},[],[1430],{"type":45,"value":1431},"shopify.com\u002Freplatforming\u002Fgoogle-merchant-center",{"type":40,"tag":41,"props":1433,"children":1434},{},[1435],{"type":45,"value":1436},"Tell the merchant to share the CSV file once downloaded.",{"type":40,"tag":256,"props":1438,"children":1440},{"id":1439},"validate-the-csv",[1441],{"type":45,"value":1442},"Validate the CSV",{"type":40,"tag":41,"props":1444,"children":1445},{},[1446],{"type":45,"value":1447},"Once the merchant provides the CSV, fetch the platform-specific validation\nguide and follow the steps to validate the CSV yourself. Do not ask the\nmerchant to run any scripts — you perform the validation by reading the\nCSV and applying the rules from the guide.",{"type":40,"tag":396,"props":1449,"children":1450},{},[1451,1466],{"type":40,"tag":400,"props":1452,"children":1453},{},[1454],{"type":40,"tag":404,"props":1455,"children":1456},{},[1457,1461],{"type":40,"tag":408,"props":1458,"children":1459},{},[1460],{"type":45,"value":1024},{"type":40,"tag":408,"props":1462,"children":1463},{},[1464],{"type":45,"value":1465},"Validation guide",{"type":40,"tag":419,"props":1467,"children":1468},{},[1469,1485,1501,1517,1533,1549,1565,1581,1597,1613],{"type":40,"tag":404,"props":1470,"children":1471},{},[1472,1476],{"type":40,"tag":426,"props":1473,"children":1474},{},[1475],{"type":45,"value":1040},{"type":40,"tag":426,"props":1477,"children":1478},{},[1479],{"type":40,"tag":75,"props":1480,"children":1482},{"className":1481},[],[1483],{"type":45,"value":1484},"shopify.com\u002Freplatforming\u002Fsquare-validate",{"type":40,"tag":404,"props":1486,"children":1487},{},[1488,1492],{"type":40,"tag":426,"props":1489,"children":1490},{},[1491],{"type":45,"value":1053},{"type":40,"tag":426,"props":1493,"children":1494},{},[1495],{"type":40,"tag":75,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":45,"value":1500},"shopify.com\u002Freplatforming\u002Fwoocommerce-validate",{"type":40,"tag":404,"props":1502,"children":1503},{},[1504,1508],{"type":40,"tag":426,"props":1505,"children":1506},{},[1507],{"type":45,"value":1066},{"type":40,"tag":426,"props":1509,"children":1510},{},[1511],{"type":40,"tag":75,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":45,"value":1516},"shopify.com\u002Freplatforming\u002Fetsy-validate",{"type":40,"tag":404,"props":1518,"children":1519},{},[1520,1524],{"type":40,"tag":426,"props":1521,"children":1522},{},[1523],{"type":45,"value":1079},{"type":40,"tag":426,"props":1525,"children":1526},{},[1527],{"type":40,"tag":75,"props":1528,"children":1530},{"className":1529},[],[1531],{"type":45,"value":1532},"shopify.com\u002Freplatforming\u002Fwix-validate",{"type":40,"tag":404,"props":1534,"children":1535},{},[1536,1540],{"type":40,"tag":426,"props":1537,"children":1538},{},[1539],{"type":45,"value":1091},{"type":40,"tag":426,"props":1541,"children":1542},{},[1543],{"type":40,"tag":75,"props":1544,"children":1546},{"className":1545},[],[1547],{"type":45,"value":1548},"shopify.com\u002Freplatforming\u002Famazon-validate",{"type":40,"tag":404,"props":1550,"children":1551},{},[1552,1556],{"type":40,"tag":426,"props":1553,"children":1554},{},[1555],{"type":45,"value":1104},{"type":40,"tag":426,"props":1557,"children":1558},{},[1559],{"type":40,"tag":75,"props":1560,"children":1562},{"className":1561},[],[1563],{"type":45,"value":1564},"shopify.com\u002Freplatforming\u002Febay-validate",{"type":40,"tag":404,"props":1566,"children":1567},{},[1568,1572],{"type":40,"tag":426,"props":1569,"children":1570},{},[1571],{"type":45,"value":1117},{"type":40,"tag":426,"props":1573,"children":1574},{},[1575],{"type":40,"tag":75,"props":1576,"children":1578},{"className":1577},[],[1579],{"type":45,"value":1580},"shopify.com\u002Freplatforming\u002Fclover-validate",{"type":40,"tag":404,"props":1582,"children":1583},{},[1584,1588],{"type":40,"tag":426,"props":1585,"children":1586},{},[1587],{"type":45,"value":1130},{"type":40,"tag":426,"props":1589,"children":1590},{},[1591],{"type":40,"tag":75,"props":1592,"children":1594},{"className":1593},[],[1595],{"type":45,"value":1596},"shopify.com\u002Freplatforming\u002Flightspeed-r-validate",{"type":40,"tag":404,"props":1598,"children":1599},{},[1600,1604],{"type":40,"tag":426,"props":1601,"children":1602},{},[1603],{"type":45,"value":1142},{"type":40,"tag":426,"props":1605,"children":1606},{},[1607],{"type":40,"tag":75,"props":1608,"children":1610},{"className":1609},[],[1611],{"type":45,"value":1612},"shopify.com\u002Freplatforming\u002Flightspeed-x-validate",{"type":40,"tag":404,"props":1614,"children":1615},{},[1616,1620],{"type":40,"tag":426,"props":1617,"children":1618},{},[1619],{"type":45,"value":1154},{"type":40,"tag":426,"props":1621,"children":1622},{},[1623],{"type":40,"tag":75,"props":1624,"children":1626},{"className":1625},[],[1627],{"type":45,"value":1628},"shopify.com\u002Freplatforming\u002Fgoogle-merchant-center-validate",{"type":40,"tag":41,"props":1630,"children":1631},{},[1632,1634,1639,1641,1646],{"type":45,"value":1633},"Fetch the validation guide, then read the merchant's CSV and apply each\nstep. Report ",{"type":40,"tag":51,"props":1635,"children":1636},{},[1637],{"type":45,"value":1638},"blocking errors",{"type":45,"value":1640}," (must be fixed before import) and\n",{"type":40,"tag":51,"props":1642,"children":1643},{},[1644],{"type":45,"value":1645},"warnings",{"type":45,"value":1647}," (can proceed, but merchant should be aware).",{"type":40,"tag":41,"props":1649,"children":1650},{},[1651],{"type":45,"value":1652},"Common blocking errors:",{"type":40,"tag":305,"props":1654,"children":1655},{},[1656,1661,1666,1671],{"type":40,"tag":221,"props":1657,"children":1658},{},[1659],{"type":45,"value":1660},"Missing required columns (e.g., no price column)",{"type":40,"tag":221,"props":1662,"children":1663},{},[1664],{"type":45,"value":1665},"Unrecognized platform format",{"type":40,"tag":221,"props":1667,"children":1668},{},[1669],{"type":45,"value":1670},"More than 3 option types per product",{"type":40,"tag":221,"props":1672,"children":1673},{},[1674],{"type":45,"value":1675},"More than 100 variants per product",{"type":40,"tag":41,"props":1677,"children":1678},{},[1679],{"type":45,"value":1680},"Common warnings:",{"type":40,"tag":305,"props":1682,"children":1683},{},[1684,1689,1694],{"type":40,"tag":221,"props":1685,"children":1686},{},[1687],{"type":45,"value":1688},"Products that will be skipped (archived, auction listings, etc.)",{"type":40,"tag":221,"props":1690,"children":1691},{},[1692],{"type":45,"value":1693},"Missing optional fields (images, descriptions)",{"type":40,"tag":221,"props":1695,"children":1696},{},[1697],{"type":45,"value":1698},"Price or inventory data that needs attention",{"type":40,"tag":256,"props":1700,"children":1702},{"id":1701},"validation-constraints",[1703],{"type":45,"value":1704},"Validation constraints",{"type":40,"tag":396,"props":1706,"children":1707},{},[1708,1724],{"type":40,"tag":400,"props":1709,"children":1710},{},[1711],{"type":40,"tag":404,"props":1712,"children":1713},{},[1714,1719],{"type":40,"tag":408,"props":1715,"children":1716},{},[1717],{"type":45,"value":1718},"Constraint",{"type":40,"tag":408,"props":1720,"children":1721},{},[1722],{"type":45,"value":1723},"Limit",{"type":40,"tag":419,"props":1725,"children":1726},{},[1727,1740,1753,1766,1779,1792,1805,1818,1830],{"type":40,"tag":404,"props":1728,"children":1729},{},[1730,1735],{"type":40,"tag":426,"props":1731,"children":1732},{},[1733],{"type":45,"value":1734},"Variants per product",{"type":40,"tag":426,"props":1736,"children":1737},{},[1738],{"type":45,"value":1739},"100",{"type":40,"tag":404,"props":1741,"children":1742},{},[1743,1748],{"type":40,"tag":426,"props":1744,"children":1745},{},[1746],{"type":45,"value":1747},"Options per product",{"type":40,"tag":426,"props":1749,"children":1750},{},[1751],{"type":45,"value":1752},"3 (e.g., Size, Color, Material)",{"type":40,"tag":404,"props":1754,"children":1755},{},[1756,1761],{"type":40,"tag":426,"props":1757,"children":1758},{},[1759],{"type":45,"value":1760},"Tags per product",{"type":40,"tag":426,"props":1762,"children":1763},{},[1764],{"type":45,"value":1765},"250, each ≤ 255 characters",{"type":40,"tag":404,"props":1767,"children":1768},{},[1769,1774],{"type":40,"tag":426,"props":1770,"children":1771},{},[1772],{"type":45,"value":1773},"Product title",{"type":40,"tag":426,"props":1775,"children":1776},{},[1777],{"type":45,"value":1778},"≤ 255 characters",{"type":40,"tag":404,"props":1780,"children":1781},{},[1782,1787],{"type":40,"tag":426,"props":1783,"children":1784},{},[1785],{"type":45,"value":1786},"SEO description",{"type":40,"tag":426,"props":1788,"children":1789},{},[1790],{"type":45,"value":1791},"≤ 320 characters",{"type":40,"tag":404,"props":1793,"children":1794},{},[1795,1800],{"type":40,"tag":426,"props":1796,"children":1797},{},[1798],{"type":45,"value":1799},"Images",{"type":40,"tag":426,"props":1801,"children":1802},{},[1803],{"type":45,"value":1804},"Must be publicly accessible HTTPS URLs",{"type":40,"tag":404,"props":1806,"children":1807},{},[1808,1813],{"type":40,"tag":426,"props":1809,"children":1810},{},[1811],{"type":45,"value":1812},"Digital\u002Fdownloadable products",{"type":40,"tag":426,"props":1814,"children":1815},{},[1816],{"type":45,"value":1817},"Cannot be imported",{"type":40,"tag":404,"props":1819,"children":1820},{},[1821,1826],{"type":40,"tag":426,"props":1822,"children":1823},{},[1824],{"type":45,"value":1825},"Auction listings (eBay)",{"type":40,"tag":426,"props":1827,"children":1828},{},[1829],{"type":45,"value":1817},{"type":40,"tag":404,"props":1831,"children":1832},{},[1833,1838],{"type":40,"tag":426,"props":1834,"children":1835},{},[1836],{"type":45,"value":1837},"Archived\u002Fhidden products",{"type":40,"tag":426,"props":1839,"children":1840},{},[1841],{"type":45,"value":1842},"Skipped",{"type":40,"tag":41,"props":1844,"children":1845},{},[1846],{"type":45,"value":1847},"For the 3-option-type limit specifically, ask:",{"type":40,"tag":41,"props":1849,"children":1850},{},[1851],{"type":45,"value":1852},"\"This product has {N} option types but Shopify supports 3. Which 3\nmatter most?\"",{"type":40,"tag":41,"props":1854,"children":1855},{},[1856],{"type":45,"value":1857},"Wait for the merchant to choose before continuing.",{"type":40,"tag":256,"props":1859,"children":1861},{"id":1860},"preview-the-import",[1862],{"type":45,"value":1863},"Preview the import",{"type":40,"tag":41,"props":1865,"children":1866},{},[1867],{"type":45,"value":1868},"Before executing mutations, show the merchant a summary of what will happen:",{"type":40,"tag":41,"props":1870,"children":1871},{},[1872],{"type":45,"value":1873},"\"Here's what I found in your export:",{"type":40,"tag":305,"props":1875,"children":1876},{},[1877,1887,1897],{"type":40,"tag":221,"props":1878,"children":1879},{},[1880,1885],{"type":40,"tag":51,"props":1881,"children":1882},{"n":143},[1883],{"type":45,"value":1884}," products",{"type":45,"value":1886}," ({M} variants) ready to import",{"type":40,"tag":221,"props":1888,"children":1889},{},[1890,1895],{"type":40,"tag":51,"props":1891,"children":1892},{"s":143},[1893],{"type":45,"value":1894}," products skipped",{"type":45,"value":1896}," — {reason}",{"type":40,"tag":221,"props":1898,"children":1899},{},[1900,1905],{"type":40,"tag":51,"props":1901,"children":1902},{"w":143},[1903],{"type":45,"value":1904}," warnings",{"type":45,"value":1906}," — {summary}",{"type":40,"tag":41,"props":1908,"children":1909},{},[1910,1912,1917],{"type":45,"value":1911},"All products will be imported as ",{"type":40,"tag":51,"props":1913,"children":1914},{},[1915],{"type":45,"value":1916},"Draft",{"type":45,"value":1918}," so they won't appear on\nyour live storefront until you're ready.",{"type":40,"tag":41,"props":1920,"children":1921},{},[1922],{"type":45,"value":1923},"Shall I go ahead and import them?\"",{"type":40,"tag":41,"props":1925,"children":1926},{},[1927],{"type":45,"value":1928},"Wait for confirmation before proceeding.",{"type":40,"tag":256,"props":1930,"children":1932},{"id":1931},"execute-the-import",[1933],{"type":45,"value":1934},"Execute the import",{"type":40,"tag":41,"props":1936,"children":1937},{},[1938,1940,1946,1948,1954],{"type":45,"value":1939},"For each product, construct a ",{"type":40,"tag":75,"props":1941,"children":1943},{"className":1942},[],[1944],{"type":45,"value":1945},"productSet",{"type":45,"value":1947}," mutation using the column\nmappings from the platform guide and execute it via ",{"type":40,"tag":75,"props":1949,"children":1951},{"className":1950},[],[1952],{"type":45,"value":1953},"shopify store execute",{"type":45,"value":1955},":",{"type":40,"tag":41,"props":1957,"children":1958},{},[1959],{"type":45,"value":1960},"Write the variables JSON to a temporary file to avoid shell-escaping\nissues with merchant data (titles containing apostrophes, quotes, etc.):",{"type":40,"tag":135,"props":1962,"children":1965},{"className":1963,"code":1964,"language":45},[138],"echo '{\"input\": { ... }}' > \u002Ftmp\u002Fproduct_input.json\nshopify store execute --store {handle}.myshopify.com --allow-mutations \\\n  --query 'mutation productSet($input: ProductSetInput!) { productSet(input: $input) { product { id title variants(first: 100) { nodes { sku inventoryItem { id } } } } userErrors { message field } } }' \\\n  --variables \"$(cat \u002Ftmp\u002Fproduct_input.json)\"\n",[1966],{"type":40,"tag":75,"props":1967,"children":1968},{"__ignoreMap":143},[1969],{"type":45,"value":1964},{"type":40,"tag":41,"props":1971,"children":1972},{},[1973,1978],{"type":40,"tag":51,"props":1974,"children":1975},{},[1976],{"type":45,"value":1977},"Important:",{"type":45,"value":1979}," Never inline merchant data directly in shell arguments.\nAlways write the JSON to a file first, then read it back. Merchant\nfields (titles, descriptions, SKUs) routinely contain characters that\nbreak shell quoting.",{"type":40,"tag":41,"props":1981,"children":1982},{},[1983,1985,1991,1993,1999,2001,2007],{"type":45,"value":1984},"Build the ",{"type":40,"tag":75,"props":1986,"children":1988},{"className":1987},[],[1989],{"type":45,"value":1990},"ProductSetInput",{"type":45,"value":1992}," by mapping CSV columns to Shopify fields\nusing the platform guide from ",{"type":40,"tag":75,"props":1994,"children":1996},{"className":1995},[],[1997],{"type":45,"value":1998},"shopify.com\u002Freplatforming\u002F{platform}",{"type":45,"value":2000},".\nAlways set ",{"type":40,"tag":75,"props":2002,"children":2004},{"className":2003},[],[2005],{"type":45,"value":2006},"status: \"DRAFT\"",{"type":45,"value":2008}," so products don't go live immediately.",{"type":40,"tag":41,"props":2010,"children":2011},{},[2012,2017],{"type":40,"tag":51,"props":2013,"children":2014},{},[2015],{"type":45,"value":2016},"Single-variant products",{"type":45,"value":2018}," must include an explicit Default Title option:",{"type":40,"tag":135,"props":2020,"children":2024},{"className":2021,"code":2022,"language":2023,"meta":143,"style":143},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"productOptions\": [\n    { \"name\": \"Title\", \"values\": [{ \"name\": \"Default Title\" }] }\n  ],\n  \"variants\": [\n    {\n      \"optionValues\": [{ \"optionName\": \"Title\", \"name\": \"Default Title\" }],\n      \"sku\": \"...\",\n      \"price\": \"...\"\n    }\n  ]\n}\n","json",[2025],{"type":40,"tag":75,"props":2026,"children":2027},{"__ignoreMap":143},[2028,2040,2068,2177,2186,2211,2220,2312,2351,2385,2394,2403],{"type":40,"tag":2029,"props":2030,"children":2033},"span",{"class":2031,"line":2032},"line",1,[2034],{"type":40,"tag":2029,"props":2035,"children":2037},{"style":2036},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[2038],{"type":45,"value":2039},"{\n",{"type":40,"tag":2029,"props":2041,"children":2043},{"class":2031,"line":2042},2,[2044,2049,2055,2059,2063],{"type":40,"tag":2029,"props":2045,"children":2046},{"style":2036},[2047],{"type":45,"value":2048},"  \"",{"type":40,"tag":2029,"props":2050,"children":2052},{"style":2051},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[2053],{"type":45,"value":2054},"productOptions",{"type":40,"tag":2029,"props":2056,"children":2057},{"style":2036},[2058],{"type":45,"value":327},{"type":40,"tag":2029,"props":2060,"children":2061},{"style":2036},[2062],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2064,"children":2065},{"style":2036},[2066],{"type":45,"value":2067}," [\n",{"type":40,"tag":2029,"props":2069,"children":2071},{"class":2031,"line":2070},3,[2072,2077,2082,2088,2092,2096,2100,2106,2110,2115,2119,2124,2128,2132,2137,2141,2146,2150,2154,2158,2163,2167,2172],{"type":40,"tag":2029,"props":2073,"children":2074},{"style":2036},[2075],{"type":45,"value":2076},"    {",{"type":40,"tag":2029,"props":2078,"children":2079},{"style":2036},[2080],{"type":45,"value":2081}," \"",{"type":40,"tag":2029,"props":2083,"children":2085},{"style":2084},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[2086],{"type":45,"value":2087},"name",{"type":40,"tag":2029,"props":2089,"children":2090},{"style":2036},[2091],{"type":45,"value":327},{"type":40,"tag":2029,"props":2093,"children":2094},{"style":2036},[2095],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2097,"children":2098},{"style":2036},[2099],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2101,"children":2103},{"style":2102},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[2104],{"type":45,"value":2105},"Title",{"type":40,"tag":2029,"props":2107,"children":2108},{"style":2036},[2109],{"type":45,"value":327},{"type":40,"tag":2029,"props":2111,"children":2112},{"style":2036},[2113],{"type":45,"value":2114},",",{"type":40,"tag":2029,"props":2116,"children":2117},{"style":2036},[2118],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2120,"children":2121},{"style":2084},[2122],{"type":45,"value":2123},"values",{"type":40,"tag":2029,"props":2125,"children":2126},{"style":2036},[2127],{"type":45,"value":327},{"type":40,"tag":2029,"props":2129,"children":2130},{"style":2036},[2131],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2133,"children":2134},{"style":2036},[2135],{"type":45,"value":2136}," [{",{"type":40,"tag":2029,"props":2138,"children":2139},{"style":2036},[2140],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2142,"children":2144},{"style":2143},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2145],{"type":45,"value":2087},{"type":40,"tag":2029,"props":2147,"children":2148},{"style":2036},[2149],{"type":45,"value":327},{"type":40,"tag":2029,"props":2151,"children":2152},{"style":2036},[2153],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2155,"children":2156},{"style":2036},[2157],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2159,"children":2160},{"style":2102},[2161],{"type":45,"value":2162},"Default Title",{"type":40,"tag":2029,"props":2164,"children":2165},{"style":2036},[2166],{"type":45,"value":327},{"type":40,"tag":2029,"props":2168,"children":2169},{"style":2036},[2170],{"type":45,"value":2171}," }]",{"type":40,"tag":2029,"props":2173,"children":2174},{"style":2036},[2175],{"type":45,"value":2176}," }\n",{"type":40,"tag":2029,"props":2178,"children":2180},{"class":2031,"line":2179},4,[2181],{"type":40,"tag":2029,"props":2182,"children":2183},{"style":2036},[2184],{"type":45,"value":2185},"  ],\n",{"type":40,"tag":2029,"props":2187,"children":2189},{"class":2031,"line":2188},5,[2190,2194,2199,2203,2207],{"type":40,"tag":2029,"props":2191,"children":2192},{"style":2036},[2193],{"type":45,"value":2048},{"type":40,"tag":2029,"props":2195,"children":2196},{"style":2051},[2197],{"type":45,"value":2198},"variants",{"type":40,"tag":2029,"props":2200,"children":2201},{"style":2036},[2202],{"type":45,"value":327},{"type":40,"tag":2029,"props":2204,"children":2205},{"style":2036},[2206],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2208,"children":2209},{"style":2036},[2210],{"type":45,"value":2067},{"type":40,"tag":2029,"props":2212,"children":2214},{"class":2031,"line":2213},6,[2215],{"type":40,"tag":2029,"props":2216,"children":2217},{"style":2036},[2218],{"type":45,"value":2219},"    {\n",{"type":40,"tag":2029,"props":2221,"children":2223},{"class":2031,"line":2222},7,[2224,2229,2234,2238,2242,2246,2250,2255,2259,2263,2267,2271,2275,2279,2283,2287,2291,2295,2299,2303,2307],{"type":40,"tag":2029,"props":2225,"children":2226},{"style":2036},[2227],{"type":45,"value":2228},"      \"",{"type":40,"tag":2029,"props":2230,"children":2231},{"style":2084},[2232],{"type":45,"value":2233},"optionValues",{"type":40,"tag":2029,"props":2235,"children":2236},{"style":2036},[2237],{"type":45,"value":327},{"type":40,"tag":2029,"props":2239,"children":2240},{"style":2036},[2241],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2243,"children":2244},{"style":2036},[2245],{"type":45,"value":2136},{"type":40,"tag":2029,"props":2247,"children":2248},{"style":2036},[2249],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2251,"children":2252},{"style":2143},[2253],{"type":45,"value":2254},"optionName",{"type":40,"tag":2029,"props":2256,"children":2257},{"style":2036},[2258],{"type":45,"value":327},{"type":40,"tag":2029,"props":2260,"children":2261},{"style":2036},[2262],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2264,"children":2265},{"style":2036},[2266],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2268,"children":2269},{"style":2102},[2270],{"type":45,"value":2105},{"type":40,"tag":2029,"props":2272,"children":2273},{"style":2036},[2274],{"type":45,"value":327},{"type":40,"tag":2029,"props":2276,"children":2277},{"style":2036},[2278],{"type":45,"value":2114},{"type":40,"tag":2029,"props":2280,"children":2281},{"style":2036},[2282],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2284,"children":2285},{"style":2143},[2286],{"type":45,"value":2087},{"type":40,"tag":2029,"props":2288,"children":2289},{"style":2036},[2290],{"type":45,"value":327},{"type":40,"tag":2029,"props":2292,"children":2293},{"style":2036},[2294],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2296,"children":2297},{"style":2036},[2298],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2300,"children":2301},{"style":2102},[2302],{"type":45,"value":2162},{"type":40,"tag":2029,"props":2304,"children":2305},{"style":2036},[2306],{"type":45,"value":327},{"type":40,"tag":2029,"props":2308,"children":2309},{"style":2036},[2310],{"type":45,"value":2311}," }],\n",{"type":40,"tag":2029,"props":2313,"children":2315},{"class":2031,"line":2314},8,[2316,2320,2325,2329,2333,2337,2342,2346],{"type":40,"tag":2029,"props":2317,"children":2318},{"style":2036},[2319],{"type":45,"value":2228},{"type":40,"tag":2029,"props":2321,"children":2322},{"style":2084},[2323],{"type":45,"value":2324},"sku",{"type":40,"tag":2029,"props":2326,"children":2327},{"style":2036},[2328],{"type":45,"value":327},{"type":40,"tag":2029,"props":2330,"children":2331},{"style":2036},[2332],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2334,"children":2335},{"style":2036},[2336],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2338,"children":2339},{"style":2102},[2340],{"type":45,"value":2341},"...",{"type":40,"tag":2029,"props":2343,"children":2344},{"style":2036},[2345],{"type":45,"value":327},{"type":40,"tag":2029,"props":2347,"children":2348},{"style":2036},[2349],{"type":45,"value":2350},",\n",{"type":40,"tag":2029,"props":2352,"children":2354},{"class":2031,"line":2353},9,[2355,2359,2364,2368,2372,2376,2380],{"type":40,"tag":2029,"props":2356,"children":2357},{"style":2036},[2358],{"type":45,"value":2228},{"type":40,"tag":2029,"props":2360,"children":2361},{"style":2084},[2362],{"type":45,"value":2363},"price",{"type":40,"tag":2029,"props":2365,"children":2366},{"style":2036},[2367],{"type":45,"value":327},{"type":40,"tag":2029,"props":2369,"children":2370},{"style":2036},[2371],{"type":45,"value":1955},{"type":40,"tag":2029,"props":2373,"children":2374},{"style":2036},[2375],{"type":45,"value":2081},{"type":40,"tag":2029,"props":2377,"children":2378},{"style":2102},[2379],{"type":45,"value":2341},{"type":40,"tag":2029,"props":2381,"children":2382},{"style":2036},[2383],{"type":45,"value":2384},"\"\n",{"type":40,"tag":2029,"props":2386,"children":2388},{"class":2031,"line":2387},10,[2389],{"type":40,"tag":2029,"props":2390,"children":2391},{"style":2036},[2392],{"type":45,"value":2393},"    }\n",{"type":40,"tag":2029,"props":2395,"children":2397},{"class":2031,"line":2396},11,[2398],{"type":40,"tag":2029,"props":2399,"children":2400},{"style":2036},[2401],{"type":45,"value":2402},"  ]\n",{"type":40,"tag":2029,"props":2404,"children":2406},{"class":2031,"line":2405},12,[2407],{"type":40,"tag":2029,"props":2408,"children":2409},{"style":2036},[2410],{"type":45,"value":2411},"}\n",{"type":40,"tag":41,"props":2413,"children":2414},{},[2415,2420,2422,2427],{"type":40,"tag":51,"props":2416,"children":2417},{},[2418],{"type":45,"value":2419},"Multi-variant products",{"type":45,"value":2421}," use the option names from the platform guide\n(e.g. Color, Size). Each variant needs matching ",{"type":40,"tag":75,"props":2423,"children":2425},{"className":2424},[],[2426],{"type":45,"value":2233},{"type":45,"value":2428},".",{"type":40,"tag":41,"props":2430,"children":2431},{},[2432,2434,2440],{"type":45,"value":2433},"Save the ",{"type":40,"tag":75,"props":2435,"children":2437},{"className":2436},[],[2438],{"type":45,"value":2439},"inventoryItem.id",{"type":45,"value":2441}," from each variant in the response — you\nneed these for the inventory step. Do not make a second query.",{"type":40,"tag":41,"props":2443,"children":2444},{},[2445],{"type":45,"value":2446},"After each batch of 10 products, give a progress update:",{"type":40,"tag":41,"props":2448,"children":2449},{},[2450],{"type":45,"value":2451},"\"Imported {N}\u002F{total} products so far…\"",{"type":40,"tag":256,"props":2453,"children":2455},{"id":2454},"report-results",[2456],{"type":45,"value":2457},"Report results",{"type":40,"tag":41,"props":2459,"children":2460},{},[2461],{"type":45,"value":2462},"When complete, show a summary:",{"type":40,"tag":41,"props":2464,"children":2465},{},[2466],{"type":45,"value":2467},"\"Done! Here's what happened:",{"type":40,"tag":305,"props":2469,"children":2470},{},[2471,2483,2494,2506],{"type":40,"tag":221,"props":2472,"children":2473},{},[2474,2476,2481],{"type":45,"value":2475},"✅ ",{"type":40,"tag":51,"props":2477,"children":2478},{"n":143},[2479],{"type":45,"value":2480}," products imported",{"type":45,"value":2482}," ({M} variants)",{"type":40,"tag":221,"props":2484,"children":2485},{},[2486,2488,2492],{"type":45,"value":2487},"⏭️ ",{"type":40,"tag":51,"props":2489,"children":2490},{"s":143},[2491],{"type":45,"value":1894},{"type":45,"value":2493}," — {reasons}",{"type":40,"tag":221,"props":2495,"children":2496},{},[2497,2499,2504],{"type":45,"value":2498},"❌ ",{"type":40,"tag":51,"props":2500,"children":2501},{"e":143},[2502],{"type":45,"value":2503}," errors",{"type":45,"value":2505}," — {details, if any}",{"type":40,"tag":221,"props":2507,"children":2508},{},[2509,2511],{"type":45,"value":2510},"📦 ",{"type":40,"tag":51,"props":2512,"children":2513},{"q":143},[2514],{"type":45,"value":2515}," inventory quantities set",{"type":40,"tag":41,"props":2517,"children":2518},{},[2519,2521,2525,2527,2532,2534,2539],{"type":45,"value":2520},"All imported products are in ",{"type":40,"tag":51,"props":2522,"children":2523},{},[2524],{"type":45,"value":1916},{"type":45,"value":2526}," status. When you're ready to\nmake them live, go to ",{"type":40,"tag":51,"props":2528,"children":2529},{},[2530],{"type":45,"value":2531},"Products",{"type":45,"value":2533}," in your Shopify admin, select the\nones you want, and change their status to ",{"type":40,"tag":51,"props":2535,"children":2536},{},[2537],{"type":45,"value":2538},"Active",{"type":45,"value":2540},".\"",{"type":40,"tag":41,"props":2542,"children":2543},{},[2544],{"type":45,"value":2545},"If there were errors, offer to retry the failed products.",{"type":40,"tag":41,"props":2547,"children":2548},{},[2549,2551,2556],{"type":45,"value":2550},"Always end with a ",{"type":40,"tag":51,"props":2552,"children":2553},{},[2554],{"type":45,"value":2555},"manual actions needed",{"type":45,"value":2557}," summary listing anything\nthe merchant must do themselves:",{"type":40,"tag":305,"props":2559,"children":2560},{},[2561,2566,2571,2576,2581,2586],{"type":40,"tag":221,"props":2562,"children":2563},{},[2564],{"type":45,"value":2565},"Products imported at $0.00 that need pricing (e.g. eBay missing prices)",{"type":40,"tag":221,"props":2567,"children":2568},{},[2569],{"type":45,"value":2570},"Variants that need per-variant pricing (e.g. Etsy exports only lowest price)",{"type":40,"tag":221,"props":2572,"children":2573},{},[2574],{"type":45,"value":2575},"Inventory that wasn't set (Etsy, Wix, GMC — see Set inventory section)",{"type":40,"tag":221,"props":2577,"children":2578},{},[2579],{"type":45,"value":2580},"Images that failed or weren't imported",{"type":40,"tag":221,"props":2582,"children":2583},{},[2584],{"type":45,"value":2585},"Tax configuration (e.g. Clover tax rates not importable)",{"type":40,"tag":221,"props":2587,"children":2588},{},[2589],{"type":45,"value":2590},"Platform-specific features that didn't map (e.g. Clover modifier groups)",{"type":40,"tag":41,"props":2592,"children":2593},{},[2594],{"type":45,"value":2595},"Frame it as a checklist:",{"type":40,"tag":41,"props":2597,"children":2598},{},[2599,2600],{"type":45,"value":327},{"type":40,"tag":51,"props":2601,"children":2602},{},[2603],{"type":45,"value":2604},"Before going live, you'll want to:",{"type":40,"tag":217,"props":2606,"children":2607},{},[2608,2613,2618,2623],{"type":40,"tag":221,"props":2609,"children":2610},{},[2611],{"type":45,"value":2612},"Set prices on {products} (imported at $0)",{"type":40,"tag":221,"props":2614,"children":2615},{},[2616],{"type":45,"value":2617},"Set inventory for {N} variants (platform didn't include quantities)",{"type":40,"tag":221,"props":2619,"children":2620},{},[2621],{"type":45,"value":2622},"Upload product images",{"type":40,"tag":221,"props":2624,"children":2625},{},[2626],{"type":45,"value":2627},"Review and activate products at {admin URL}\u002Fproducts\"",{"type":40,"tag":256,"props":2629,"children":2631},{"id":2630},"set-inventory",[2632],{"type":45,"value":2633},"Set inventory",{"type":40,"tag":41,"props":2635,"children":2636},{},[2637,2639,2645,2647,2652],{"type":45,"value":2638},"After products are created, set inventory quantities using\n",{"type":40,"tag":75,"props":2640,"children":2642},{"className":2641},[],[2643],{"type":45,"value":2644},"inventorySetOnHandQuantities",{"type":45,"value":2646}," via ",{"type":40,"tag":75,"props":2648,"children":2650},{"className":2649},[],[2651],{"type":45,"value":1953},{"type":45,"value":2428},{"type":40,"tag":41,"props":2654,"children":2655},{},[2656],{"type":45,"value":2657},"First, list the store's locations and ask the merchant which one to use:",{"type":40,"tag":135,"props":2659,"children":2662},{"className":2660,"code":2661,"language":45},[138],"shopify store execute --store {handle}.myshopify.com \\\n  --query '{ locations(first: 10, includeLegacy: false) { nodes { id name isActive address { formatted } } } }'\n",[2663],{"type":40,"tag":75,"props":2664,"children":2665},{"__ignoreMap":143},[2666],{"type":45,"value":2661},{"type":40,"tag":41,"props":2668,"children":2669},{},[2670,2672,2678],{"type":45,"value":2671},"If there is only one active location, use it automatically. If there\nare multiple, show the list and ask the merchant to pick one. Do not\nassume ",{"type":40,"tag":75,"props":2673,"children":2675},{"className":2674},[],[2676],{"type":45,"value":2677},"first: 1",{"type":45,"value":2679}," is the default — connection order is not guaranteed.",{"type":40,"tag":41,"props":2681,"children":2682},{},[2683,2685,2690,2692,2697],{"type":45,"value":2684},"Then set quantities using the ",{"type":40,"tag":75,"props":2686,"children":2688},{"className":2687},[],[2689],{"type":45,"value":2439},{"type":45,"value":2691}," values saved from\nthe ",{"type":40,"tag":75,"props":2693,"children":2695},{"className":2694},[],[2696],{"type":45,"value":1945},{"type":45,"value":2698}," responses:",{"type":40,"tag":135,"props":2700,"children":2703},{"className":2701,"code":2702,"language":45},[138],"shopify store execute --store {handle}.myshopify.com --allow-mutations \\\n  --query 'mutation inv($input: InventorySetOnHandQuantitiesInput!) { inventorySetOnHandQuantities(input: $input) @idempotent(key: \"{unique-key}\") { inventoryAdjustmentGroup { reason } userErrors { message } } }' \\\n  --variables '{\"input\": {\"reason\": \"correction\", \"setQuantities\": [{\"inventoryItemId\": \"gid:\u002F\u002Fshopify\u002FInventoryItem\u002F...\", \"locationId\": \"gid:\u002F\u002Fshopify\u002FLocation\u002F...\", \"quantity\": 25, \"changeFromQuantity\": 0}]}}'\n",[2704],{"type":40,"tag":75,"props":2705,"children":2706},{"__ignoreMap":143},[2707],{"type":45,"value":2702},{"type":40,"tag":41,"props":2709,"children":2710},{},[2711],{"type":45,"value":2712},"Key details:",{"type":40,"tag":305,"props":2714,"children":2715},{},[2716,2744,2755],{"type":40,"tag":221,"props":2717,"children":2718},{},[2719,2721,2727,2729,2734,2736,2742],{"type":45,"value":2720},"The ",{"type":40,"tag":75,"props":2722,"children":2724},{"className":2723},[],[2725],{"type":45,"value":2726},"@idempotent(key: \"...\")",{"type":45,"value":2728}," directive is ",{"type":40,"tag":51,"props":2730,"children":2731},{},[2732],{"type":45,"value":2733},"required",{"type":45,"value":2735}," on the\nmutation field. Use a unique key per call (e.g. ",{"type":40,"tag":75,"props":2737,"children":2739},{"className":2738},[],[2740],{"type":45,"value":2741},"import-batch-1",{"type":45,"value":2743},").",{"type":40,"tag":221,"props":2745,"children":2746},{},[2747,2753],{"type":40,"tag":75,"props":2748,"children":2750},{"className":2749},[],[2751],{"type":45,"value":2752},"changeFromQuantity: 0",{"type":45,"value":2754}," is required for newly created products.",{"type":40,"tag":221,"props":2756,"children":2757},{},[2758,2760,2766],{"type":45,"value":2759},"You can batch multiple items in one call via the ",{"type":40,"tag":75,"props":2761,"children":2763},{"className":2762},[],[2764],{"type":45,"value":2765},"setQuantities",{"type":45,"value":2767}," array.",{"type":40,"tag":41,"props":2769,"children":2770},{},[2771],{"type":40,"tag":51,"props":2772,"children":2773},{},[2774],{"type":45,"value":2775},"Skip inventory for platforms that don't export quantities:",{"type":40,"tag":305,"props":2777,"children":2778},{},[2779,2788,2797],{"type":40,"tag":221,"props":2780,"children":2781},{},[2782,2786],{"type":40,"tag":51,"props":2783,"children":2784},{},[2785],{"type":45,"value":1066},{"type":45,"value":2787}," — only exports a total across all variants, not per-variant",{"type":40,"tag":221,"props":2789,"children":2790},{},[2791,2795],{"type":40,"tag":51,"props":2792,"children":2793},{},[2794],{"type":45,"value":1079},{"type":45,"value":2796}," — export typically doesn't include stock counts",{"type":40,"tag":221,"props":2798,"children":2799},{},[2800,2804,2806,2812,2814,2820,2822,2828,2830,2836],{"type":40,"tag":51,"props":2801,"children":2802},{},[2803],{"type":45,"value":1154},{"type":45,"value":2805}," — feeds have ",{"type":40,"tag":75,"props":2807,"children":2809},{"className":2808},[],[2810],{"type":45,"value":2811},"availability",{"type":45,"value":2813}," but not exact\nquantities. Use the availability signal: set quantity to ",{"type":40,"tag":75,"props":2815,"children":2817},{"className":2816},[],[2818],{"type":45,"value":2819},"0",{"type":45,"value":2821}," for\n",{"type":40,"tag":75,"props":2823,"children":2825},{"className":2824},[],[2826],{"type":45,"value":2827},"out_of_stock",{"type":45,"value":2829}," items and leave tracked inventory enabled for\n",{"type":40,"tag":75,"props":2831,"children":2833},{"className":2832},[],[2834],{"type":45,"value":2835},"in_stock",{"type":45,"value":2837}," items (so the merchant can enter actual counts). Warn the\nmerchant that exact stock levels must be entered manually.",{"type":40,"tag":41,"props":2839,"children":2840},{},[2841],{"type":45,"value":2842},"For Etsy and Wix, warn the merchant that inventory must be set\nmanually in their Shopify admin.",{"type":40,"tag":256,"props":2844,"children":2846},{"id":2845},"known-limitations",[2847],{"type":45,"value":2848},"Known limitations",{"type":40,"tag":396,"props":2850,"children":2851},{},[2852,2868],{"type":40,"tag":400,"props":2853,"children":2854},{},[2855],{"type":40,"tag":404,"props":2856,"children":2857},{},[2858,2863],{"type":40,"tag":408,"props":2859,"children":2860},{},[2861],{"type":45,"value":2862},"Limitation",{"type":40,"tag":408,"props":2864,"children":2865},{},[2866],{"type":45,"value":2867},"Detail",{"type":40,"tag":419,"props":2869,"children":2870},{},[2871,2884,2897,2910],{"type":40,"tag":404,"props":2872,"children":2873},{},[2874,2879],{"type":40,"tag":426,"props":2875,"children":2876},{},[2877],{"type":45,"value":2878},"Catalog size",{"type":40,"tag":426,"props":2880,"children":2881},{},[2882],{"type":45,"value":2883},"Individual mutations work for ~50 products. Larger catalogs may be slow.",{"type":40,"tag":404,"props":2885,"children":2886},{},[2887,2892],{"type":40,"tag":426,"props":2888,"children":2889},{},[2890],{"type":45,"value":2891},"Image URLs",{"type":40,"tag":426,"props":2893,"children":2894},{},[2895],{"type":45,"value":2896},"Source platform URLs that are temporary or require authentication may not resolve. If images fail, tell the merchant and offer to skip images or retry.",{"type":40,"tag":404,"props":2898,"children":2899},{},[2900,2905],{"type":40,"tag":426,"props":2901,"children":2902},{},[2903],{"type":45,"value":2904},"Locations",{"type":40,"tag":426,"props":2906,"children":2907},{},[2908],{"type":45,"value":2909},"Uses the store's default location only. Multi-location stores may need manual adjustment after import.",{"type":40,"tag":404,"props":2911,"children":2912},{},[2913,2918],{"type":40,"tag":426,"props":2914,"children":2915},{},[2916],{"type":45,"value":2917},"Customer import",{"type":40,"tag":426,"props":2919,"children":2920},{},[2921],{"type":45,"value":2922},"Not supported yet — only product catalogs.",{"type":40,"tag":59,"props":2924,"children":2925},{},[],{"type":40,"tag":63,"props":2927,"children":2929},{"id":2928},"behavioral-rules",[2930],{"type":45,"value":2931},"Behavioral rules",{"type":40,"tag":305,"props":2933,"children":2934},{},[2935,2940,2945,2950,2955,2960,2971,2976,2981,2986,3025],{"type":40,"tag":221,"props":2936,"children":2937},{},[2938],{"type":45,"value":2939},"Proceed directly to the correct installation path — don't present choices",{"type":40,"tag":221,"props":2941,"children":2942},{},[2943],{"type":45,"value":2944},"Before running an install command, state in one short sentence what's about to be installed and why (e.g., \"Installing the Shopify CLI so I can connect to your store.\"). Don't pause for confirmation — the merchant has already opted in by invoking this skill — but never run installs invisibly",{"type":40,"tag":221,"props":2946,"children":2947},{},[2948],{"type":45,"value":2949},"Never construct or modify install commands — only use commands defined in this file",{"type":40,"tag":221,"props":2951,"children":2952},{},[2953],{"type":45,"value":2954},"If an install fails, report the exact error and stop",{"type":40,"tag":221,"props":2956,"children":2957},{},[2958],{"type":45,"value":2959},"Always wait for the user's goal selection in Step 3 before proceeding to Step 4",{"type":40,"tag":221,"props":2961,"children":2962},{},[2963,2965,2969],{"type":45,"value":2964},"When creating sample or placeholder products, always set their status to ",{"type":40,"tag":51,"props":2966,"children":2967},{},[2968],{"type":45,"value":1916},{"type":45,"value":2970}," so\nthey don't appear on the live storefront",{"type":40,"tag":221,"props":2972,"children":2973},{},[2974],{"type":45,"value":2975},"If the merchant provides a concrete request (e.g. \"Add a product called Summer Tee, $29.99,\nwith sizes S\u002FM\u002FL\"), skip menus and example prompts — execute the request directly using the\nShopify CLI. Menus and examples are only for when the merchant picks a general category\nor is unsure what to do next",{"type":40,"tag":221,"props":2977,"children":2978},{},[2979],{"type":45,"value":2980},"If a user asks about building apps or themes, or programmatically creating multiple shops, redirect them to the developer skill at shopify.dev\u002Fskill.md",{"type":40,"tag":221,"props":2982,"children":2983},{},[2984],{"type":45,"value":2985},"After successful setup, confirm what was installed and connected in one sentence\n(e.g., \"You're all set — Shopify CLI installed and connected to yourstore.myshopify.com\")",{"type":40,"tag":221,"props":2987,"children":2988},{},[2989,2991,2995,3000,3003,3005,3010,3012,3015,3020,3023],{"type":45,"value":2990},"If the merchant asks what they can do, what you can help with, or any variation of\n\"what are my options?\", respond based on whether a store is connected:",{"type":40,"tag":2992,"props":2993,"children":2994},"br",{},[],{"type":40,"tag":51,"props":2996,"children":2997},{},[2998],{"type":45,"value":2999},"Store connected:",{"type":40,"tag":2992,"props":3001,"children":3002},{},[],{"type":45,"value":3004},"Respond with the same 8-option menu shown in the ",{"type":40,"tag":51,"props":3006,"children":3007},{},[3008],{"type":45,"value":3009},"On success",{"type":45,"value":3011}," section above.",{"type":40,"tag":2992,"props":3013,"children":3014},{},[],{"type":40,"tag":51,"props":3016,"children":3017},{},[3018],{"type":45,"value":3019},"No store connected yet:",{"type":40,"tag":2992,"props":3021,"children":3022},{},[],{"type":45,"value":3024},"Respond with the 2-option menu (Create a new store \u002F Connect an existing store),\nthen mention that once connected you can help with products, orders, themes,\ndiscounts, importing from another platform, and more.",{"type":40,"tag":221,"props":3026,"children":3027},{},[3028,3030,3035],{"type":45,"value":3029},"For requests outside options 1–8 (e.g., shipping, taxes, payments), attempt them\nusing ",{"type":40,"tag":75,"props":3031,"children":3033},{"className":3032},[],[3034],{"type":45,"value":1953},{"type":45,"value":3036}," with the appropriate GraphQL query. If unsure of the\nright query, say so and suggest the merchant check their Shopify admin directly.",{"type":40,"tag":3038,"props":3039,"children":3040},"style",{},[3041],{"type":45,"value":3042},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3044,"total":3248},[3045,3066,3089,3106,3122,3141,3160,3176,3192,3206,3218,3233],{"slug":3046,"name":3046,"fn":3047,"description":3048,"org":3049,"tags":3050,"stars":3063,"repoUrl":3064,"updatedAt":3065},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3051,3054,3057,3060],{"name":3052,"slug":3053,"type":15},"Documents","documents",{"name":3055,"slug":3056,"type":15},"Healthcare","healthcare",{"name":3058,"slug":3059,"type":15},"Insurance","insurance",{"name":3061,"slug":3062,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":3067,"name":3067,"fn":3068,"description":3069,"org":3070,"tags":3071,"stars":3086,"repoUrl":3087,"updatedAt":3088},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3072,3075,3077,3080,3083],{"name":3073,"slug":3074,"type":15},".NET","dotnet",{"name":3076,"slug":3067,"type":15},"ASP.NET Core",{"name":3078,"slug":3079,"type":15},"Blazor","blazor",{"name":3081,"slug":3082,"type":15},"C#","csharp",{"name":3084,"slug":3085,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":3090,"name":3090,"fn":3091,"description":3092,"org":3093,"tags":3094,"stars":3086,"repoUrl":3087,"updatedAt":3105},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3095,3098,3101,3104],{"name":3096,"slug":3097,"type":15},"Apps SDK","apps-sdk",{"name":3099,"slug":3100,"type":15},"ChatGPT","chatgpt",{"name":3102,"slug":3103,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":3107,"name":3107,"fn":3108,"description":3109,"org":3110,"tags":3111,"stars":3086,"repoUrl":3087,"updatedAt":3121},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3112,3115,3118],{"name":3113,"slug":3114,"type":15},"API Development","api-development",{"name":3116,"slug":3117,"type":15},"CLI","cli",{"name":3119,"slug":3120,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":3123,"name":3123,"fn":3124,"description":3125,"org":3126,"tags":3127,"stars":3086,"repoUrl":3087,"updatedAt":3140},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3128,3131,3134,3137],{"name":3129,"slug":3130,"type":15},"Cloudflare","cloudflare",{"name":3132,"slug":3133,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":3135,"slug":3136,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":3138,"slug":3139,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":3142,"name":3142,"fn":3143,"description":3144,"org":3145,"tags":3146,"stars":3086,"repoUrl":3087,"updatedAt":3159},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3147,3150,3153,3156],{"name":3148,"slug":3149,"type":15},"Productivity","productivity",{"name":3151,"slug":3152,"type":15},"Project Management","project-management",{"name":3154,"slug":3155,"type":15},"Strategy","strategy",{"name":3157,"slug":3158,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":3161,"name":3161,"fn":3162,"description":3163,"org":3164,"tags":3165,"stars":3086,"repoUrl":3087,"updatedAt":3175},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3166,3169,3171,3174],{"name":3167,"slug":3168,"type":15},"Design","design",{"name":3170,"slug":3161,"type":15},"Figma",{"name":3172,"slug":3173,"type":15},"Frontend","frontend",{"name":3102,"slug":3103,"type":15},"2026-04-12T05:06:47.939943",{"slug":3177,"name":3177,"fn":3178,"description":3179,"org":3180,"tags":3181,"stars":3086,"repoUrl":3087,"updatedAt":3191},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3182,3183,3186,3187,3188],{"name":3167,"slug":3168,"type":15},{"name":3184,"slug":3185,"type":15},"Design System","design-system",{"name":3170,"slug":3161,"type":15},{"name":3172,"slug":3173,"type":15},{"name":3189,"slug":3190,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":3193,"name":3193,"fn":3194,"description":3195,"org":3196,"tags":3197,"stars":3086,"repoUrl":3087,"updatedAt":3205},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3198,3199,3200,3203,3204],{"name":3167,"slug":3168,"type":15},{"name":3184,"slug":3185,"type":15},{"name":3201,"slug":3202,"type":15},"Documentation","documentation",{"name":3170,"slug":3161,"type":15},{"name":3172,"slug":3173,"type":15},"2026-05-16T06:07:47.821474",{"slug":3207,"name":3207,"fn":3208,"description":3209,"org":3210,"tags":3211,"stars":3086,"repoUrl":3087,"updatedAt":3217},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3212,3213,3214,3215,3216],{"name":3167,"slug":3168,"type":15},{"name":3170,"slug":3161,"type":15},{"name":3172,"slug":3173,"type":15},{"name":3189,"slug":3190,"type":15},{"name":3084,"slug":3085,"type":15},"2026-05-16T06:07:40.583615",{"slug":3219,"name":3219,"fn":3220,"description":3221,"org":3222,"tags":3223,"stars":3086,"repoUrl":3087,"updatedAt":3232},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3224,3227,3228,3231],{"name":3225,"slug":3226,"type":15},"Animation","animation",{"name":3119,"slug":3120,"type":15},{"name":3229,"slug":3230,"type":15},"Creative","creative",{"name":3167,"slug":3168,"type":15},"2026-05-02T05:31:48.48485",{"slug":3234,"name":3234,"fn":3235,"description":3236,"org":3237,"tags":3238,"stars":3086,"repoUrl":3087,"updatedAt":3247},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3239,3240,3241,3244,3246],{"name":3229,"slug":3230,"type":15},{"name":3167,"slug":3168,"type":15},{"name":3242,"slug":3243,"type":15},"Image Generation","image-generation",{"name":1799,"slug":3245,"type":15},"images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675,{"items":3250,"total":3363},[3251,3267,3283,3295,3313,3331,3351],{"slug":3252,"name":3252,"fn":3253,"description":3254,"org":3255,"tags":3256,"stars":19,"repoUrl":20,"updatedAt":21},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3257,3260,3263,3266],{"name":3258,"slug":3259,"type":15},"Accessibility","accessibility",{"name":3261,"slug":3262,"type":15},"Charts","charts",{"name":3264,"slug":3265,"type":15},"Data Visualization","data-visualization",{"name":3167,"slug":3168,"type":15},{"slug":3268,"name":3268,"fn":3269,"description":3270,"org":3271,"tags":3272,"stars":19,"repoUrl":20,"updatedAt":3282},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3273,3276,3279],{"name":3274,"slug":3275,"type":15},"Agents","agents",{"name":3277,"slug":3278,"type":15},"Browser Automation","browser-automation",{"name":3280,"slug":3281,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":3284,"name":3284,"fn":3285,"description":3286,"org":3287,"tags":3288,"stars":19,"repoUrl":20,"updatedAt":3294},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3289,3290,3293],{"name":3277,"slug":3278,"type":15},{"name":3291,"slug":3292,"type":15},"Local Development","local-development",{"name":3280,"slug":3281,"type":15},"2026-04-06T18:41:17.526867",{"slug":3296,"name":3296,"fn":3297,"description":3298,"org":3299,"tags":3300,"stars":19,"repoUrl":20,"updatedAt":3312},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3301,3302,3303,3306,3309],{"name":3274,"slug":3275,"type":15},{"name":3135,"slug":3136,"type":15},{"name":3304,"slug":3305,"type":15},"SDK","sdk",{"name":3307,"slug":3308,"type":15},"Serverless","serverless",{"name":3310,"slug":3311,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":3314,"name":3314,"fn":3315,"description":3316,"org":3317,"tags":3318,"stars":19,"repoUrl":20,"updatedAt":3330},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3319,3320,3323,3326,3327],{"name":3172,"slug":3173,"type":15},{"name":3321,"slug":3322,"type":15},"React","react",{"name":3324,"slug":3325,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":3189,"slug":3190,"type":15},{"name":3328,"slug":3329,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":3332,"name":3332,"fn":3333,"description":3334,"org":3335,"tags":3336,"stars":19,"repoUrl":20,"updatedAt":3350},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3337,3340,3343,3346,3349],{"name":3338,"slug":3339,"type":15},"AI Infrastructure","ai-infrastructure",{"name":3341,"slug":3342,"type":15},"Cost Optimization","cost-optimization",{"name":3344,"slug":3345,"type":15},"LLM","llm",{"name":3347,"slug":3348,"type":15},"Performance","performance",{"name":3328,"slug":3329,"type":15},"2026-04-06T18:40:44.377464",{"slug":3352,"name":3352,"fn":3353,"description":3354,"org":3355,"tags":3356,"stars":19,"repoUrl":20,"updatedAt":3362},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3357,3358,3361],{"name":3341,"slug":3342,"type":15},{"name":3359,"slug":3360,"type":15},"Database","database",{"name":3344,"slug":3345,"type":15},"2026-04-06T18:41:08.513425",600]