[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M72DFTVY1MW6BYWHT3YVCD3N":3,"skill-same:01M72DFTVY1MW6BYWHT3YVCD3N":87},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":13,"repositoryHtmlUrl":26,"repositoryHomepageUrl":6,"ownerHtmlUrl":27,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":28,"install":29,"resources":42},"01M72DFTVY1MW6BYWHT3YVCD3N","shopify-development",null,"Build Shopify apps, extensions, themes using GraphQL Admin API, Shopify CLI, Polaris UI, and Liquid.\nTRIGGER: \"shopify\", \"shopify app\", \"checkout extension\", \"admin extension\", \"POS extension\",\n\"shopify theme\", \"liquid template\", \"polaris\", \"shopify graphql\", \"shopify webhook\",\n\"shopify billing\", \"app subscription\", \"metafields\", \"shopify functions\"","Sansar35\u002Fclaude-agent","Sansar35","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F145020281?v=4","01M724CQ2SCC86MGNSD87D0D4K","01M724CQ3965G9WJ3QXE3AJ5YY",1,"MIT","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002FSKILL.md",[],[],"2026-11-10 18:39:20",false,"---\nname: shopify-development\ndescription: |\n  Build Shopify apps, extensions, themes using GraphQL Admin API, Shopify CLI, Polaris UI, and Liquid.\n  TRIGGER: \"shopify\", \"shopify app\", \"checkout extension\", \"admin extension\", \"POS extension\",\n  \"shopify theme\", \"liquid template\", \"polaris\", \"shopify graphql\", \"shopify webhook\",\n  \"shopify billing\", \"app subscription\", \"metafields\", \"shopify functions\"\n---\n\n# Shopify Development Skill\n\nUse this skill when the user asks about:\n\n- Building Shopify apps or extensions\n- Creating checkout\u002Fadmin\u002FPOS UI customizations\n- Developing themes with Liquid templating\n- Integrating with Shopify GraphQL or REST APIs\n- Implementing webhooks or billing\n- Working with metafields or Shopify Functions\n\n---\n\n## ROUTING: What to Build\n\n**IF user wants to integrate external services OR build merchant tools OR charge for features:**\n→ Build an **App** (see `references\u002Fapp-development.md`)\n\n**IF user wants to customize checkout OR add admin UI OR create POS actions OR implement discount rules:**\n→ Build an **Extension** (see `references\u002Fextensions.md`)\n\n**IF user wants to customize storefront design OR modify product\u002Fcollection pages:**\n→ Build a **Theme** (see `references\u002Fthemes.md`)\n\n**IF user needs both backend logic AND storefront UI:**\n→ Build **App + Theme Extension** combination\n\n---\n\n## Shopify CLI Commands\n\nInstall CLI:\n\n```bash\nnpm install -g @shopify\u002Fcli@latest\n```\n\nCreate and run app:\n\n```bash\nshopify app init          # Create new app\nshopify app dev           # Start dev server with tunnel\nshopify app deploy        # Build and upload to Shopify\n```\n\nGenerate extension:\n\n```bash\nshopify app generate extension --type checkout_ui_extension\nshopify app generate extension --type admin_action\nshopify app generate extension --type admin_block\nshopify app generate extension --type pos_ui_extension\nshopify app generate extension --type function\n```\n\nTheme development:\n\n```bash\nshopify theme init        # Create new theme\nshopify theme dev         # Start local preview at localhost:9292\nshopify theme pull --live # Pull live theme\nshopify theme push --development  # Push to dev theme\n```\n\n---\n\n## Access Scopes\n\nConfigure in `shopify.app.toml`:\n\n```toml\n[access_scopes]\nscopes = \"read_products,write_products,read_orders,write_orders,read_customers\"\n```\n\nCommon scopes:\n\n- `read_products`, `write_products` - Product catalog access\n- `read_orders`, `write_orders` - Order management\n- `read_customers`, `write_customers` - Customer data\n- `read_inventory`, `write_inventory` - Stock levels\n- `read_fulfillments`, `write_fulfillments` - Order fulfillment\n\n---\n\n## GraphQL Patterns (Validated against API 2026-01)\n\n### Query Products\n\n```graphql\nquery GetProducts($first: Int!, $query: String) {\n  products(first: $first, query: $query) {\n    edges {\n      node {\n        id\n        title\n        handle\n        status\n        variants(first: 5) {\n          edges {\n            node {\n              id\n              price\n              inventoryQuantity\n            }\n          }\n        }\n      }\n    }\n    pageInfo {\n      hasNextPage\n      endCursor\n    }\n  }\n}\n```\n\n### Query Orders\n\n```graphql\nquery GetOrders($first: Int!) {\n  orders(first: $first) {\n    edges {\n      node {\n        id\n        name\n        createdAt\n        displayFinancialStatus\n        totalPriceSet {\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n### Set Metafields\n\n```graphql\nmutation SetMetafields($metafields: [MetafieldsSetInput!]!) {\n  metafieldsSet(metafields: $metafields) {\n    metafields {\n      id\n      namespace\n      key\n      value\n    }\n    userErrors {\n      field\n      message\n    }\n  }\n}\n```\n\nVariables example:\n\n```json\n{\n  \"metafields\": [\n    {\n      \"ownerId\": \"gid:\u002F\u002Fshopify\u002FProduct\u002F123\",\n      \"namespace\": \"custom\",\n      \"key\": \"care_instructions\",\n      \"value\": \"Handle with care\",\n      \"type\": \"single_line_text_field\"\n    }\n  ]\n}\n```\n\n---\n\n## Checkout Extension Example\n\n```tsx\nimport {\n  reactExtension,\n  BlockStack,\n  TextField,\n  Checkbox,\n  useApplyAttributeChange,\n} from \"@shopify\u002Fui-extensions-react\u002Fcheckout\";\n\nexport default reactExtension(\"purchase.checkout.block.render\", () => (\n  \u003CGiftMessage \u002F>\n));\n\nfunction GiftMessage() {\n  const [isGift, setIsGift] = useState(false);\n  const [message, setMessage] = useState(\"\");\n  const applyAttributeChange = useApplyAttributeChange();\n\n  useEffect(() => {\n    if (isGift && message) {\n      applyAttributeChange({\n        type: \"updateAttribute\",\n        key: \"gift_message\",\n        value: message,\n      });\n    }\n  }, [isGift, message]);\n\n  return (\n    \u003CBlockStack spacing=\"loose\">\n      \u003CCheckbox checked={isGift} onChange={setIsGift}>\n        This is a gift\n      \u003C\u002FCheckbox>\n      {isGift && (\n        \u003CTextField\n          label=\"Gift Message\"\n          value={message}\n          onChange={setMessage}\n          multiline={3}\n        \u002F>\n      )}\n    \u003C\u002FBlockStack>\n  );\n}\n```\n\n---\n\n## Liquid Template Example\n\n```liquid\n{% comment %} Product Card Snippet {% endcomment %}\n\u003Cdiv class=\"product-card\">\n  \u003Ca href=\"{{ product.url }}\">\n    {% if product.featured_image %}\n      \u003Cimg\n        src=\"{{ product.featured_image | img_url: 'medium' }}\"\n        alt=\"{{ product.title | escape }}\"\n        loading=\"lazy\"\n      >\n    {% endif %}\n    \u003Ch3>{{ product.title }}\u003C\u002Fh3>\n    \u003Cp class=\"price\">{{ product.price | money }}\u003C\u002Fp>\n    {% if product.compare_at_price > product.price %}\n      \u003Cp class=\"sale-badge\">Sale\u003C\u002Fp>\n    {% endif %}\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n```\n\n---\n\n## Webhook Configuration\n\nIn `shopify.app.toml`:\n\n```toml\n[webhooks]\napi_version = \"2026-01\"\n\n[[webhooks.subscriptions]]\ntopics = [\"orders\u002Fcreate\", \"orders\u002Fupdated\"]\nuri = \"\u002Fwebhooks\u002Forders\"\n\n[[webhooks.subscriptions]]\ntopics = [\"products\u002Fupdate\"]\nuri = \"\u002Fwebhooks\u002Fproducts\"\n\n# GDPR mandatory webhooks (required for app approval)\n[webhooks.privacy_compliance]\ncustomer_data_request_url = \"\u002Fwebhooks\u002Fgdpr\u002Fdata-request\"\ncustomer_deletion_url = \"\u002Fwebhooks\u002Fgdpr\u002Fcustomer-deletion\"\nshop_deletion_url = \"\u002Fwebhooks\u002Fgdpr\u002Fshop-deletion\"\n```\n\n---\n\n## Best Practices\n\n### API Usage\n\n- Use GraphQL over REST for new development\n- Request only fields you need (reduces query cost)\n- Implement cursor-based pagination with `pageInfo.endCursor`\n- Use bulk operations for processing more than 250 items\n- Handle rate limits with exponential backoff\n\n### Security\n\n- Store API credentials in environment variables\n- Always verify webhook HMAC signatures before processing\n- Validate OAuth state parameter to prevent CSRF\n- Request minimal access scopes\n- Use session tokens for embedded apps\n\n### Performance\n\n- Cache API responses when data doesn't change frequently\n- Use lazy loading in extensions\n- Optimize images in themes using `img_url` filter\n- Monitor GraphQL query costs via response headers\n\n---\n\n## Troubleshooting\n\n**IF you see rate limit errors:**\n→ Implement exponential backoff retry logic\n→ Switch to bulk operations for large datasets\n→ Monitor `X-Shopify-Shop-Api-Call-Limit` header\n\n**IF authentication fails:**\n→ Verify the access token is still valid\n→ Check that all required scopes were granted\n→ Ensure OAuth flow completed successfully\n\n**IF extension is not appearing:**\n→ Verify the extension target is correct\n→ Check that extension is published via `shopify app deploy`\n→ Confirm the app is installed on the test store\n\n**IF webhook is not receiving events:**\n→ Verify the webhook URL is publicly accessible\n→ Check HMAC signature validation logic\n→ Review webhook logs in Partner Dashboard\n\n**IF GraphQL query fails:**\n→ Validate query against schema (use GraphiQL explorer)\n→ Check for deprecated fields in error message\n→ Verify you have required access scopes\n\n---\n\n## Reference Files\n\nFor detailed implementation guides, read these files:\n\n- `references\u002Fapp-development.md` - OAuth authentication flow, GraphQL mutations for products\u002Forders\u002Fbilling, webhook handlers, billing API integration\n- `references\u002Fextensions.md` - Checkout UI components, Admin UI extensions, POS extensions, Shopify Functions for discounts\u002Fpayment\u002Fdelivery\n- `references\u002Fthemes.md` - Liquid syntax reference, theme directory structure, sections and snippets, common patterns\n\n---\n\n## Scripts\n\n- `scripts\u002Fshopify_init.py` - Interactive project scaffolding. Run: `python scripts\u002Fshopify_init.py`\n- `scripts\u002Fshopify_graphql.py` - GraphQL utilities with query templates, pagination, rate limiting. Import: `from shopify_graphql import ShopifyGraphQL`\n\n---\n\n## Official Documentation Links\n\n- Shopify Developer Docs: https:\u002F\u002Fshopify.dev\u002Fdocs\n- GraphQL Admin API Reference: https:\u002F\u002Fshopify.dev\u002Fdocs\u002Fapi\u002Fadmin-graphql\n- Shopify CLI Reference: https:\u002F\u002Fshopify.dev\u002Fdocs\u002Fapi\u002Fshopify-cli\n- Polaris Design System: https:\u002F\u002Fpolaris.shopify.com\n\nAPI Version: 2026-01 (quarterly releases, 12-month deprecation window)\n","# Shopify Development Skill\n\nUse this skill when the user asks about:\n\n- Building Shopify apps or extensions\n- Creating checkout\u002Fadmin\u002FPOS UI customizations\n- Developing themes with Liquid templating\n- Integrating with Shopify GraphQL or REST APIs\n- Implementing webhooks or billing\n- Working with metafields or Shopify Functions\n\n---\n\n## ROUTING: What to Build\n\n**IF user wants to integrate external services OR build merchant tools OR charge for features:**\n→ Build an **App** (see `references\u002Fapp-development.md`)\n\n**IF user wants to customize checkout OR add admin UI OR create POS actions OR implement discount rules:**\n→ Build an **Extension** (see `references\u002Fextensions.md`)\n\n**IF user wants to customize storefront design OR modify product\u002Fcollection pages:**\n→ Build a **Theme** (see `references\u002Fthemes.md`)\n\n**IF user needs both backend logic AND storefront UI:**\n→ Build **App + Theme Extension** combination\n\n---\n\n## Shopify CLI Commands\n\nInstall CLI:\n\n```bash\nnpm install -g @shopify\u002Fcli@latest\n```\n\nCreate and run app:\n\n```bash\nshopify app init          # Create new app\nshopify app dev           # Start dev server with tunnel\nshopify app deploy        # Build and upload to Shopify\n```\n\nGenerate extension:\n\n```bash\nshopify app generate extension --type checkout_ui_extension\nshopify app generate extension --type admin_action\nshopify app generate extension --type admin_block\nshopify app generate extension --type pos_ui_extension\nshopify app generate extension --type function\n```\n\nTheme development:\n\n```bash\nshopify theme init        # Create new theme\nshopify theme dev         # Start local preview at localhost:9292\nshopify theme pull --live # Pull live theme\nshopify theme push --development  # Push to dev theme\n```\n\n---\n\n## Access Scopes\n\nConfigure in `shopify.app.toml`:\n\n```toml\n[access_scopes]\nscopes = \"read_products,write_products,read_orders,write_orders,read_customers\"\n```\n\nCommon scopes:\n\n- `read_products`, `write_products` - Product catalog access\n- `read_orders`, `write_orders` - Order management\n- `read_customers`, `write_customers` - Customer data\n- `read_inventory`, `write_inventory` - Stock levels\n- `read_fulfillments`, `write_fulfillments` - Order fulfillment\n\n---\n\n## GraphQL Patterns (Validated against API 2026-01)\n\n### Query Products\n\n```graphql\nquery GetProducts($first: Int!, $query: String) {\n  products(first: $first, query: $query) {\n    edges {\n      node {\n        id\n        title\n        handle\n        status\n        variants(first: 5) {\n          edges {\n            node {\n              id\n              price\n              inventoryQuantity\n            }\n          }\n        }\n      }\n    }\n    pageInfo {\n      hasNextPage\n      endCursor\n    }\n  }\n}\n```\n\n### Query Orders\n\n```graphql\nquery GetOrders($first: Int!) {\n  orders(first: $first) {\n    edges {\n      node {\n        id\n        name\n        createdAt\n        displayFinancialStatus\n        totalPriceSet {\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n### Set Metafields\n\n```graphql\nmutation SetMetafields($metafields: [MetafieldsSetInput!]!) {\n  metafieldsSet(metafields: $metafields) {\n    metafields {\n      id\n      namespace\n      key\n      value\n    }\n    userErrors {\n      field\n      message\n    }\n  }\n}\n```\n\nVariables example:\n\n```json\n{\n  \"metafields\": [\n    {\n      \"ownerId\": \"gid:\u002F\u002Fshopify\u002FProduct\u002F123\",\n      \"namespace\": \"custom\",\n      \"key\": \"care_instructions\",\n      \"value\": \"Handle with care\",\n      \"type\": \"single_line_text_field\"\n    }\n  ]\n}\n```\n\n---\n\n## Checkout Extension Example\n\n```tsx\nimport {\n  reactExtension,\n  BlockStack,\n  TextField,\n  Checkbox,\n  useApplyAttributeChange,\n} from \"@shopify\u002Fui-extensions-react\u002Fcheckout\";\n\nexport default reactExtension(\"purchase.checkout.block.render\", () => (\n  \u003CGiftMessage \u002F>\n));\n\nfunction GiftMessage() {\n  const [isGift, setIsGift] = useState(false);\n  const [message, setMessage] = useState(\"\");\n  const applyAttributeChange = useApplyAttributeChange();\n\n  useEffect(() => {\n    if (isGift && message) {\n      applyAttributeChange({\n        type: \"updateAttribute\",\n        key: \"gift_message\",\n        value: message,\n      });\n    }\n  }, [isGift, message]);\n\n  return (\n    \u003CBlockStack spacing=\"loose\">\n      \u003CCheckbox checked={isGift} onChange={setIsGift}>\n        This is a gift\n      \u003C\u002FCheckbox>\n      {isGift && (\n        \u003CTextField\n          label=\"Gift Message\"\n          value={message}\n          onChange={setMessage}\n          multiline={3}\n        \u002F>\n      )}\n    \u003C\u002FBlockStack>\n  );\n}\n```\n\n---\n\n## Liquid Template Example\n\n```liquid\n{% comment %} Product Card Snippet {% endcomment %}\n\u003Cdiv class=\"product-card\">\n  \u003Ca href=\"{{ product.url }}\">\n    {% if product.featured_image %}\n      \u003Cimg\n        src=\"{{ product.featured_image | img_url: 'medium' }}\"\n        alt=\"{{ product.title | escape }}\"\n        loading=\"lazy\"\n      >\n    {% endif %}\n    \u003Ch3>{{ product.title }}\u003C\u002Fh3>\n    \u003Cp class=\"price\">{{ product.price | money }}\u003C\u002Fp>\n    {% if product.compare_at_price > product.price %}\n      \u003Cp class=\"sale-badge\">Sale\u003C\u002Fp>\n    {% endif %}\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n```\n\n---\n\n## Webhook Configuration\n\nIn `shopify.app.toml`:\n\n```toml\n[webhooks]\napi_version = \"2026-01\"\n\n[[webhooks.subscriptions]]\ntopics = [\"orders\u002Fcreate\", \"orders\u002Fupdated\"]\nuri = \"\u002Fwebhooks\u002Forders\"\n\n[[webhooks.subscriptions]]\ntopics = [\"products\u002Fupdate\"]\nuri = \"\u002Fwebhooks\u002Fproducts\"\n\n# GDPR mandatory webhooks (required for app approval)\n[webhooks.privacy_compliance]\ncustomer_data_request_url = \"\u002Fwebhooks\u002Fgdpr\u002Fdata-request\"\ncustomer_deletion_url = \"\u002Fwebhooks\u002Fgdpr\u002Fcustomer-deletion\"\nshop_deletion_url = \"\u002Fwebhooks\u002Fgdpr\u002Fshop-deletion\"\n```\n\n---\n\n## Best Practices\n\n### API Usage\n\n- Use GraphQL over REST for new development\n- Request only fields you need (reduces query cost)\n- Implement cursor-based pagination with `pageInfo.endCursor`\n- Use bulk operations for processing more than 250 items\n- Handle rate limits with exponential backoff\n\n### Security\n\n- Store API credentials in environment variables\n- Always verify webhook HMAC signatures before processing\n- Validate OAuth state parameter to prevent CSRF\n- Request minimal access scopes\n- Use session tokens for embedded apps\n\n### Performance\n\n- Cache API responses when data doesn't change frequently\n- Use lazy loading in extensions\n- Optimize images in themes using `img_url` filter\n- Monitor GraphQL query costs via response headers\n\n---\n\n## Troubleshooting\n\n**IF you see rate limit errors:**\n→ Implement exponential backoff retry logic\n→ Switch to bulk operations for large datasets\n→ Monitor `X-Shopify-Shop-Api-Call-Limit` header\n\n**IF authentication fails:**\n→ Verify the access token is still valid\n→ Check that all required scopes were granted\n→ Ensure OAuth flow completed successfully\n\n**IF extension is not appearing:**\n→ Verify the extension target is correct\n→ Check that extension is published via `shopify app deploy`\n→ Confirm the app is installed on the test store\n\n**IF webhook is not receiving events:**\n→ Verify the webhook URL is publicly accessible\n→ Check HMAC signature validation logic\n→ Review webhook logs in Partner Dashboard\n\n**IF GraphQL query fails:**\n→ Validate query against schema (use GraphiQL explorer)\n→ Check for deprecated fields in error message\n→ Verify you have required access scopes\n\n---\n\n## Reference Files\n\nFor detailed implementation guides, read these files:\n\n- `references\u002Fapp-development.md` - OAuth authentication flow, GraphQL mutations for products\u002Forders\u002Fbilling, webhook handlers, billing API integration\n- `references\u002Fextensions.md` - Checkout UI components, Admin UI extensions, POS extensions, Shopify Functions for discounts\u002Fpayment\u002Fdelivery\n- `references\u002Fthemes.md` - Liquid syntax reference, theme directory structure, sections and snippets, common patterns\n\n---\n\n## Scripts\n\n- `scripts\u002Fshopify_init.py` - Interactive project scaffolding. Run: `python scripts\u002Fshopify_init.py`\n- `scripts\u002Fshopify_graphql.py` - GraphQL utilities with query templates, pagination, rate limiting. Import: `from shopify_graphql import ShopifyGraphQL`\n\n---\n\n## Official Documentation Links\n\n- Shopify Developer Docs: https:\u002F\u002Fshopify.dev\u002Fdocs\n- GraphQL Admin API Reference: https:\u002F\u002Fshopify.dev\u002Fdocs\u002Fapi\u002Fadmin-graphql\n- Shopify CLI Reference: https:\u002F\u002Fshopify.dev\u002Fdocs\u002Fapi\u002Fshopify-cli\n- Polaris Design System: https:\u002F\u002Fpolaris.shopify.com\n\nAPI Version: 2026-01 (quarterly releases, 12-month deprecation window)\n",{"name":5,"description":7},"main","d046d088ce5a79a083f0abc0fe1b7ded73bc5b1f","claude-config\u002Fskills\u002Fshopify-development","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent","https:\u002F\u002Fgithub.com\u002FSansar35","2026-05-10 16:04:53",{"source":8,"skillName":5,"commands":30,"prompt":40,"zipAvailable":41},[31,34,37],{"tool":32,"command":33},"npx","npx skills add Sansar35\u002Fclaude-agent --skill shopify-development",{"tool":35,"command":36},"bunx","bunx skills add Sansar35\u002Fclaude-agent --skill shopify-development",{"tool":38,"command":39},"pnpm","pnpm dlx skills add Sansar35\u002Fclaude-agent --skill shopify-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002FSKILL.md",true,[43,49,53,57,61,65,71,75,79,83],{"path":44,"resourceType":45,"resourceTypeDesc":46,"sizeBytes":47,"sourceHtmlUrl":48},".skill-source.json","REFERENCE","参考文档",618,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002F.skill-source.json",{"path":50,"resourceType":45,"resourceTypeDesc":46,"sizeBytes":51,"sourceHtmlUrl":52},"README.md",1739,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002FREADME.md",{"path":54,"resourceType":45,"resourceTypeDesc":46,"sizeBytes":55,"sourceHtmlUrl":56},"references\u002Fapp-development.md",10566,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002Freferences\u002Fapp-development.md",{"path":58,"resourceType":45,"resourceTypeDesc":46,"sizeBytes":59,"sourceHtmlUrl":60},"references\u002Fextensions.md",10680,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002Freferences\u002Fextensions.md",{"path":62,"resourceType":45,"resourceTypeDesc":46,"sizeBytes":63,"sourceHtmlUrl":64},"references\u002Fthemes.md",10324,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002Freferences\u002Fthemes.md",{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"scripts\u002F.gitignore","SCRIPT","脚本",375,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002Fscripts\u002F.gitignore",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"scripts\u002Frequirements.txt",452,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002Fscripts\u002Frequirements.txt",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"scripts\u002Fshopify_graphql.py",12650,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002Fscripts\u002Fshopify_graphql.py",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"scripts\u002Fshopify_init.py",13187,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002Fscripts\u002Fshopify_init.py",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"scripts\u002Ftests\u002Ftest_shopify_init.py",13245,"https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fshopify-development\u002Fscripts\u002Ftests\u002Ftest_shopify_init.py",[88,95,102,109,116,124],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":18},"01M72DVAN1JYEA302MT0C5MGD6","zustand-store-ts","Create Zustand stores following established patterns with proper TypeScript types and middleware.","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fzustand-store-ts\u002FSKILL.md",[],[],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":18},"01M72DV8J5NBRRM4RPDFRV95N7","zod-validation-expert","Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fzod-validation-expert\u002FSKILL.md",[],[],{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":18},"01M72DV5EMHW0BHP9BZ167MDCB","zinc-database","Access ZINC (230M+ purchasable compounds). Search by ZINC ID\u002FSMILES, similarity searches, 3D-ready structures for docking, analog discovery, for virtual screening and drug discovery.","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fzinc-database\u002FSKILL.md",[],[],{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":18},"01M72DV216QY0E693ZPEVQ0DBS","zarr-python","Chunked N-D arrays for cloud storage. Compressed arrays, parallel I\u002FO, S3\u002FGCS integration, NumPy\u002FDask\u002FXarray compatible, for large-scale scientific computing pipelines.","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fzarr-python\u002FSKILL.md",[],[],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":120,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":18},"01M72DTXQREMCRKA8NHCVKHN4W","zapier-workflows","Manage and trigger pre-built Zapier workflows and MCP tool orchestration. Use when user mentions workflows, Zaps, automations, daily digest, research, search, lead tracking, expenses, or asks to \"run\" any process. Also handles Perplexity-based research and Google Sheets data tracking.","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fzapier-workflows\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fzapier-workflows\u002FSKILL.md",[],[],{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":18},"01M72DTT17TBSJ0Y8J2XZ4C9TZ","zapier-make-patterns","No-code automation democratizes workflow building. Zapier and Make (formerly Integromat) let non-developers automate business processes without writing code. But no-code doesn't mean no-complexity - these platforms have their own patterns, pitfalls, and breaking points.  This skill covers when to use which platform, how to build reliable automations, and when to graduate to code-based solutions. Key insight: Zapier optimizes for simplicity and integrations (7000+ apps), Make optimizes for power","https:\u002F\u002Fgithub.com\u002FSansar35\u002Fclaude-agent\u002Fblob\u002Fmain\u002Fclaude-config\u002Fskills\u002Fzapier-make-patterns\u002FSKILL.md",[],[]]