Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Each plugin lives in `plugins/<slug>`. The directory name is the install keyword
| `mac-notify` | macOS notifications when a Cline run completes. |
| `nanobanana` | Image generation through OpenRouter and Gemini image models. |
| `speak` | Speaks completed Cline replies with ElevenLabs text to speech. |
| `shopify-ai-toolkit` | Shopify development skills for apps, GraphQL APIs, Liquid, Hydrogen, UI extensions, CLI workflows, and commerce operations. |
| `typescript-lsp` | TypeScript language service `goto_definition` support. |
| `weather-metrics` | Demo weather tool plus runtime metrics hooks. |
| `web-search` | Exa-backed web search as a Cline tool. |
Expand Down
9 changes: 9 additions & 0 deletions plugins/shopify-ai-toolkit/LICENSE.shopify-ai-toolkit
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
MIT License

Copyright 2025-present, Shopify Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 changes: 24 additions & 0 deletions plugins/shopify-ai-toolkit/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# shopify-ai-toolkit

Shopify development skill pack for building and reviewing Shopify apps, Admin and Storefront GraphQL operations, Liquid themes, Hydrogen storefronts, Shopify Functions, Polaris UI extensions, POS UI, App Store review readiness, and Shopify CLI workflows.

## What It Adds

- Bundled Shopify skills for API code generation, app and extension development, custom data modeling, partner workflows, and storefront implementation.
- Local helper scripts for Shopify documentation search and code validation where the source skill provides them.
- Bundled schemas, type definitions, sample Liquid, and other reference assets used by the skills.

## Requirements

- Node.js 22 or later for the bundled helper scripts.
- Shopify CLI for workflows that scaffold, validate, run, or deploy Shopify apps and extensions.
- Relevant Shopify accounts, stores, app credentials, API versions, and merchant permissions for live store operations.
- Package installation fetches npm dependencies used by the Liquid and TypeScript validators unless they are already cached.

## Trust Boundaries

The plugin does not register MCP servers, hooks, or background processes.

Some bundled helper scripts call Shopify services to search docs. The copied usage-reporting paths in those scripts are disabled for this Cline plugin. Ask before sending proprietary code, prompts, store data, or merchant/customer information to any external Shopify service.

This plugin intentionally includes a large local schema and type corpus so Shopify validators can run without fetching those assets at runtime.
10 changes: 10 additions & 0 deletions plugins/shopify-ai-toolkit/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type { AgentPlugin } from "@cline/sdk"

const plugin: AgentPlugin = {
name: "shopify-ai-toolkit",
manifest: {
capabilities: ["skills"],
},
}

export default plugin
25 changes: 25 additions & 0 deletions plugins/shopify-ai-toolkit/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "shopify-ai-toolkit",
"version": "0.0.0",
"private": true,
"type": "module",
"description": "Cline plugin that bundles Shopify development skills for apps, APIs, Liquid, Hydrogen, UI extensions, and commerce workflows.",
"dependencies": {
"@shopify/theme-check-common": "3.24.0",
"@shopify/theme-check-docs-updater": "3.24.0",
"@shopify/theme-check-node": "3.24.0",
"typescript": "5.9.3"
},
"cline": {
"plugins": [
{
"paths": [
"./index.ts"
],
"capabilities": [
"skills"
]
}
]
}
}
57 changes: 57 additions & 0 deletions plugins/shopify-ai-toolkit/skills/shopify-admin/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
name: shopify-admin
description: "Write or explain Admin GraphQL queries and mutations for apps and integrations that extend the Shopify admin. Use when the user wants to understand, design, or generate the operation itself--even before deciding how to run it. Do not choose admin first for app or extension config validation --use use-shopify-cli. Do not choose admin first to execute Admin GraphQL now via Shopify CLI or for CLI setup/troubleshooting on store workflows--use use-shopify-cli (store auth/execute, handle/SKU/location lookups, inventory changes)."
---

You are an assistant that helps Shopify developers write GraphQL queries or mutations to interact with the latest Shopify Admin API GraphQL version.

You should find all operations that can help the developer achieve their goal, provide valid graphQL operations along with helpful explanations.
Always add links to the documentation that you used by using the `url` information inside search results.
When returning a graphql operation always wrap it in triple backticks and use the graphql file type.

Stay in `shopify-admin` when the user wants the Admin GraphQL operation itself, needs help authoring it, or is not asking for Shopify CLI guidance.
If the user wants to execute that query or mutation now through Shopify CLI, or needs Shopify CLI setup or troubleshooting for that execution flow, use `shopify-use-shopify-cli` instead.

If the user wants to validate Shopify app or extension configuration files (`shopify.app.toml`, `shopify.app.<name>.toml` such as `shopify.app.whatever.toml`, or `shopify.extension.toml`), catch configuration errors before `shopify app dev` or `shopify app deploy`, or confirm local app config is valid, use `shopify-use-shopify-cli` instead. That workflow is `shopify app config validate --json` (see the `shopify-use-shopify-cli` topic). do not substitute Admin GraphQL, `the bundled GraphQL validator`, or documentation-only field cross-checks for that task.

Think about all the steps required to generate a GraphQL query or mutation for the Admin API:

First think about what I am trying to do with the API
Search through the developer documentation to find similar examples. THIS IS IMPORTANT.
Then think about which top level queries or mutations you need to use and in case of mutations which input type to use
For queries think about which fields you need to fetch and for mutations think about which arguments you need to pass as input
Then think about which fields to select from the return type. In general, don't select more than 5 fields
If there are nested objects think about which fields you need to fetch for those objects
---

## Search Before Writing Code

Run the bundled docs search helper from this skill directory before generating Shopify API or UI code:

```bash
scripts/search_docs.mjs "<operation, component, type, or feature name>" [--version YYYY-MM]
```

Search for the specific operation, component, type, or feature name, not the full user prompt. If the user names an API version, pass it with `--version`.

## Validate Before Returning Code

When practical, run the bundled validator from this skill directory before returning generated code:

```bash
scripts/validate.mjs --code '...' [--version YYYY-MM]
```

When validation fails, follow this loop:
1. Read the error message carefully -- identify the exact field, prop, or value that is wrong
2. If the error references a named type or says a value is not assignable, search for the correct values:
```
scripts/search_docs.mjs "<type or prop name>"
```
3. Fix exactly the reported error using what the search returns
4. Run `scripts/validate.mjs` again
5. Retry up to 3 times total; after 3 failures, return the best attempt with an explanation

Do not guess at valid values -- always search first when the error names a type you don't know.

---
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading