shopify-agentic-dev-workflow 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/rules/shopify-agentic-dev.mdc +290 -0
- package/AGENTS.md +285 -0
- package/CHANGELOG.md +14 -0
- package/CLAUDE.md +285 -0
- package/GEMINI.md +285 -0
- package/HANDOFF.md +351 -0
- package/LICENSE +21 -0
- package/README.md +370 -0
- package/bin/shopify-agent.js +2786 -0
- package/docs/00-prerequisites.md +88 -0
- package/docs/01-onboarding.md +111 -0
- package/docs/02-theme-sdlc.md +106 -0
- package/docs/03-app-sdlc.md +66 -0
- package/docs/04-admin-api-ops.md +58 -0
- package/docs/05-codex-prompts.md +37 -0
- package/docs/06-security-guardrails.md +47 -0
- package/docs/07-github-rollout.md +30 -0
- package/docs/08-product-design.md +168 -0
- package/docs/09-shopify-cli-4-capabilities.md +48 -0
- package/docs/10-field-learnings.md +66 -0
- package/package.json +82 -0
- package/scripts/bootstrap.sh +35 -0
- package/scripts/validate-graphql.js +303 -0
- package/templates/.env.example +20 -0
- package/templates/codex-config.toml +3 -0
- package/templates/github-actions/deploy-theme.yml +32 -0
- package/templates/graphql/content/pages-list.graphql +12 -0
- package/templates/graphql/content/redirects-list.graphql +9 -0
- package/templates/graphql/customers/new-customers.graphql +15 -0
- package/templates/graphql/customers/top-spenders.graphql +16 -0
- package/templates/graphql/discounts/active-discounts.graphql +27 -0
- package/templates/graphql/discounts-list.graphql +40 -0
- package/templates/graphql/inventory-audit.graphql +38 -0
- package/templates/graphql/metafields/product-metafields.graphql +14 -0
- package/templates/graphql/orders/list-open.graphql +30 -0
- package/templates/graphql/orders/revenue-summary.graphql +15 -0
- package/templates/graphql/products/list.graphql +16 -0
- package/templates/graphql/products/low-inventory.graphql +18 -0
- package/templates/graphql/products-seo-audit.graphql +14 -0
- package/templates/graphql/shop-query.graphql +9 -0
- package/templates/graphql/store/full-info.graphql +23 -0
- package/templates/graphql/store/webhooks.graphql +16 -0
- package/templates/prompts/admin-operation.md +12 -0
- package/templates/prompts/theme-task.md +19 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Product Design: Shopify Agent CLI
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
A one-command CLI that any Shopify developer can install globally, point at a store, and immediately start working in an AI-agent-centered workflow — without touching Shopify Admin for day-to-day theme and app development.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g github:sagarchauhan005/shopify-agentic-dev-workflow
|
|
9
|
+
shopify-agent init
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Principles
|
|
13
|
+
|
|
14
|
+
**1. Wrap Shopify CLI, never replace it.**
|
|
15
|
+
Auth, theme operations, app dev, and Admin GraphQL all flow through the `shopify` binary. This keeps the package Shopify-supported and avoids extracting internal tokens.
|
|
16
|
+
|
|
17
|
+
**2. Guardrails are injected, not assumed.**
|
|
18
|
+
Each project gets its own `AGENTS.md`, `CLAUDE.md`, Cursor rules, or `GEMINI.md` written by `agents:install`. The agent reads the rules from the project folder, so each store can have different publish policies.
|
|
19
|
+
|
|
20
|
+
**3. Live theme operations are never silent.**
|
|
21
|
+
Any command that would affect a live storefront — `theme:dev`, `theme:push` — displays consequences and requires explicit confirmation. The staging-first path is always option 1.
|
|
22
|
+
|
|
23
|
+
**4. State is local and project-scoped.**
|
|
24
|
+
Profiles live in `.shopify-agent/` and `.env` in the project folder. There is no global config file. Switching projects means switching folders.
|
|
25
|
+
|
|
26
|
+
**5. Theme folders are isolated by theme ID.**
|
|
27
|
+
Theme files live under `themes/<theme-name>-<theme-id>/`, with `.shopify-theme.json` metadata to prove which store/theme the folder belongs to. This prevents a pull from one Shopify theme overwriting another theme's code.
|
|
28
|
+
|
|
29
|
+
**6. Git is part of the safety model.**
|
|
30
|
+
Pull, push, and publish operations require a clean worktree. The CLI should force a commit or stash before exchanging theme files with Shopify.
|
|
31
|
+
|
|
32
|
+
**7. Tools should fail loudly with fix instructions.**
|
|
33
|
+
`doctor` shows install hints for every missing dependency. `theme:push` on a live theme names the consequence, shows the store domain, and requires typing it back.
|
|
34
|
+
|
|
35
|
+
## User Journey (tested end-to-end 2025-05-23)
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
npm install -g github:sagarchauhan005/shopify-agentic-dev-workflow
|
|
39
|
+
|
|
40
|
+
cd my-shopify-project
|
|
41
|
+
shopify-agent init
|
|
42
|
+
→ Detects existing Shopify CLI login (organization list probe)
|
|
43
|
+
→ Asks for store domain (org list shown as hints)
|
|
44
|
+
→ Optional Theme Access token
|
|
45
|
+
→ Fetches themes — live themes marked ⚠, consequences shown before selecting one
|
|
46
|
+
→ Saves profile to .shopify-agent/profiles/<name>.json
|
|
47
|
+
→ Writes .env with 7 managed SHOPIFY_* keys
|
|
48
|
+
→ Installs AGENTS.md / CLAUDE.md / Cursor rules / GEMINI.md
|
|
49
|
+
|
|
50
|
+
shopify-agent doctor
|
|
51
|
+
→ Checks Node 18+, npm, git, Shopify CLI 4.x, gh
|
|
52
|
+
→ Shows install hint for each missing tool
|
|
53
|
+
→ Shows active store, theme, API version
|
|
54
|
+
|
|
55
|
+
shopify-agent theme:pull
|
|
56
|
+
→ Downloads theme files to themes/<theme-name>-<theme-id>/
|
|
57
|
+
→ Writes .shopify-theme.json metadata
|
|
58
|
+
→ Tells the user to commit the pull before the next theme operation
|
|
59
|
+
|
|
60
|
+
shopify-agent theme:dev
|
|
61
|
+
→ Hot-reload server on 127.0.0.1:9292
|
|
62
|
+
→ --open launches browser automatically
|
|
63
|
+
→ Changes sync to Shopify's dev theme preview in real time
|
|
64
|
+
|
|
65
|
+
[AI agent edits Liquid, CSS, JS]
|
|
66
|
+
|
|
67
|
+
shopify-agent theme:check
|
|
68
|
+
→ Theme Check linting
|
|
69
|
+
|
|
70
|
+
shopify-agent theme:push
|
|
71
|
+
→ If live theme: 3-option guard
|
|
72
|
+
1. Push to NEW staging theme (--unpublished) [RECOMMENDED]
|
|
73
|
+
2. Push to live (type store domain to confirm)
|
|
74
|
+
3. Cancel
|
|
75
|
+
→ If unpublished: direct push
|
|
76
|
+
|
|
77
|
+
shopify-agent theme:publish
|
|
78
|
+
→ Shows theme name + store + consequences, prompts for confirmation → Goes live
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## CLI Architecture
|
|
82
|
+
|
|
83
|
+
Single-file Node.js CLI at `bin/shopify-agent.js`. No external dependencies — stdlib only (`fs`, `path`, `readline`, `child_process`). This keeps install fast and the package self-contained.
|
|
84
|
+
|
|
85
|
+
Command routing is a `if/else` chain in `main()`. Each command is a named function.
|
|
86
|
+
|
|
87
|
+
Key internal utilities:
|
|
88
|
+
|
|
89
|
+
| Function | Purpose |
|
|
90
|
+
|---|---|
|
|
91
|
+
| `loadConfig()` | Merge `.env` + profile + process.env into a single config object |
|
|
92
|
+
| `fetchThemes()` | `shopify theme list --json`, strip ANSI, trim to first `[` or `{`, parse |
|
|
93
|
+
| `writeLocalEnv()` | Merge-update `.env` — preserve user keys, update managed SHOPIFY_* keys |
|
|
94
|
+
| `hasShopifyCommand()` | Probe `shopify <command> --help`, cache result, return bool |
|
|
95
|
+
| `capture()` | `spawnSync` with `FORCE_COLOR=0`, returns `{ ok, stdout, stderr, output }` |
|
|
96
|
+
| `run()` | `spawnSync` with `stdio: inherit` — for interactive commands |
|
|
97
|
+
| `agentInstructions()` | Generate guardrail markdown for a given tool (codex/claude/cursor/gemini) |
|
|
98
|
+
|
|
99
|
+
## Agent Guardrail Design
|
|
100
|
+
|
|
101
|
+
The guardrail files (`AGENTS.md` etc.) are the interface between this CLI and the AI agent. They must:
|
|
102
|
+
|
|
103
|
+
1. State hard rules clearly at the top (no ambiguity)
|
|
104
|
+
2. List consequences so the agent can explain them to users, not just block
|
|
105
|
+
3. Include the recommended workflow step-by-step
|
|
106
|
+
4. Script the agent's exact response for the most dangerous request (live push)
|
|
107
|
+
|
|
108
|
+
Current hard rules:
|
|
109
|
+
- Never push to live without showing consequences + offering staging
|
|
110
|
+
- Never publish a theme without an inline confirmation prompt (shows theme + store + consequences)
|
|
111
|
+
- Never run Admin mutations without an inline confirmation prompt
|
|
112
|
+
- Never commit or print secrets
|
|
113
|
+
- Never mix theme folders or pull into the project root
|
|
114
|
+
- Require a clean Git worktree before pull, push, and publish
|
|
115
|
+
- `--yes` / `-y` flag bypasses all prompts — only use when user has already reviewed the operation
|
|
116
|
+
|
|
117
|
+
## Design-to-Code Lessons
|
|
118
|
+
|
|
119
|
+
Figma implementation should be treated as both a design task and a Shopify data task:
|
|
120
|
+
|
|
121
|
+
- Build real Dawn sections/templates for home, PLP, PDP, cart, header, and footer instead of static mockup pages.
|
|
122
|
+
- Make content dynamic through schema settings where merchants will reasonably need control.
|
|
123
|
+
- Preserve a design-preview mode until the real catalog is ready. Demo products can make a correct Figma implementation look broken.
|
|
124
|
+
- Add explicit section settings such as `Use live collection products` or `Use live product data` before Shopify catalog data replaces Figma assets.
|
|
125
|
+
- Verify desktop and mobile screenshots after `theme:check`, especially for header alignment, PLP product grids, PDP media layout, footer links, and horizontal overflow.
|
|
126
|
+
|
|
127
|
+
## Admin GraphQL Lessons
|
|
128
|
+
|
|
129
|
+
Shopify Admin GraphQL query templates are API-version dependent. Package defaults should not assume fields from memory.
|
|
130
|
+
|
|
131
|
+
- If Shopify returns `undefinedField`, treat the template as stale and update it against `SHOPIFY_API_VERSION`.
|
|
132
|
+
- Run the smallest read-only query first before expanding a dashboard or operational command.
|
|
133
|
+
- Keep mutations routed through `admin:mutate` so store context and confirmation are visible.
|
|
134
|
+
- Prefer capability detection and schema-safe templates over hard-coded payload assumptions.
|
|
135
|
+
|
|
136
|
+
## Shopify CLI Boundary
|
|
137
|
+
|
|
138
|
+
CLI 4.0.0 new capabilities used:
|
|
139
|
+
|
|
140
|
+
| Command | Used for |
|
|
141
|
+
|---|---|
|
|
142
|
+
| `organization list --json` | Auth probe (auth whoami does not exist) |
|
|
143
|
+
| `store auth` | Admin API token creation with selected scopes |
|
|
144
|
+
| `store execute` | Read-only and guarded Admin GraphQL execution |
|
|
145
|
+
| `theme preview` | Detected in capabilities (future use) |
|
|
146
|
+
|
|
147
|
+
Not yet possible via CLI:
|
|
148
|
+
- `store list` — no stable scriptable command; domains must be entered manually
|
|
149
|
+
- Partners API store enumeration — requires separate OAuth/API call
|
|
150
|
+
|
|
151
|
+
## .env Merge-Update Logic
|
|
152
|
+
|
|
153
|
+
On every `init` or `theme:select`, `writeLocalEnv()`:
|
|
154
|
+
1. Reads existing `.env` line by line
|
|
155
|
+
2. Updates keys that are in the managed set (`SHOPIFY_STORE`, `SHOPIFY_CLI_THEME_TOKEN`, `SHOPIFY_THEME_ID`, `SHOPIFY_APP_CONFIG`, `SHOPIFY_APP_CLIENT_ID`, `SHOPIFY_STORE_SCOPES`, `SHOPIFY_API_VERSION`)
|
|
156
|
+
3. Preserves any other keys the developer added
|
|
157
|
+
4. Appends managed keys that were not already present
|
|
158
|
+
5. Writes back atomically
|
|
159
|
+
|
|
160
|
+
This means running `init` again after `theme:select` won't lose a manually added `DEBUG=true`.
|
|
161
|
+
|
|
162
|
+
## Known Gaps
|
|
163
|
+
|
|
164
|
+
- No automated test suite — all verification is smoke/manual
|
|
165
|
+
- `store list` requires manual domain entry (Shopify CLI limitation)
|
|
166
|
+
- Admin mutation dry-run artifacts not yet implemented
|
|
167
|
+
- Windows not smoke-tested (bootstrap.sh is bash-only; CLI itself should work)
|
|
168
|
+
- npm not yet published (install via GitHub URL for now)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Shopify CLI 4 Capabilities
|
|
2
|
+
|
|
3
|
+
Checked on May 23, 2026 with:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm view @shopify/cli version
|
|
7
|
+
npx -y @shopify/cli@latest commands
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Latest npm version checked: `4.0.0`.
|
|
11
|
+
|
|
12
|
+
## Useful New or Notable Commands
|
|
13
|
+
|
|
14
|
+
- `organization list`: lists Shopify organizations available to the account.
|
|
15
|
+
- `store auth`: authenticates an app against a store for store commands and stores an online access token.
|
|
16
|
+
- `store execute`: runs Admin GraphQL queries and mutations against a store using stored auth.
|
|
17
|
+
- `app execute`: runs Admin GraphQL queries and mutations through an installed app. Mutations are only allowed on dev stores.
|
|
18
|
+
- `app bulk execute`: runs bulk Admin GraphQL operations.
|
|
19
|
+
- `app bulk status`: checks bulk operation status.
|
|
20
|
+
- `app bulk cancel`: cancels a bulk operation.
|
|
21
|
+
- `app config validate`: validates app configuration and extensions.
|
|
22
|
+
- `app import-custom-data-definitions`: imports metafield and metaobject definitions.
|
|
23
|
+
- `theme preview`: applies JSON overrides to a theme and returns a preview URL.
|
|
24
|
+
|
|
25
|
+
## Package Strategy
|
|
26
|
+
|
|
27
|
+
The wrapper should feature-detect Shopify CLI commands instead of assuming a version:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
shopify-agent capabilities
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If `store execute` exists, Admin GraphQL should use it.
|
|
34
|
+
|
|
35
|
+
If not, the wrapper can fall back to `app execute` where possible, but production-store mutations should remain blocked unless Shopify CLI and the project policy both allow them.
|
|
36
|
+
|
|
37
|
+
## GraphQL Template Strategy
|
|
38
|
+
|
|
39
|
+
Admin GraphQL payloads must be treated as versioned package assets, not timeless snippets.
|
|
40
|
+
|
|
41
|
+
- Keep query templates compatible with `SHOPIFY_API_VERSION`.
|
|
42
|
+
- If Shopify returns `undefinedField`, update the template and integration test before retrying operational commands.
|
|
43
|
+
- Prefer narrower read-only probes before expanding a dashboard query.
|
|
44
|
+
- Avoid fields that have moved between concrete discount, inventory, product, or customer types unless the query uses the correct inline fragments for the current API version.
|
|
45
|
+
|
|
46
|
+
## Store Selection Limitation
|
|
47
|
+
|
|
48
|
+
The checked CLI exposes `organization list`, but not a stable `store list` command. For now, setup asks for the store domain, validates access, then fetches themes from that store.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Field Learnings
|
|
2
|
+
|
|
3
|
+
These notes come from an end-to-end local setup: connecting a Shopify store, pulling Dawn, patching Admin GraphQL templates, building Figma-designed home/PLP/PDP pages, and verifying the local theme preview.
|
|
4
|
+
|
|
5
|
+
## Local Setup
|
|
6
|
+
|
|
7
|
+
- A quick-start project should live adjacent to the package repo, not inside it. This keeps package source changes separate from merchant theme work.
|
|
8
|
+
- Node/npm availability is a first-class prerequisite. If `npm` is missing, setup should point users to install Node before running package commands.
|
|
9
|
+
- Storefront passwords are runtime configuration for preview/dev only. Never commit them into theme files, docs, screenshots, or agent instructions.
|
|
10
|
+
|
|
11
|
+
## Theme Pulls and Version Control
|
|
12
|
+
|
|
13
|
+
- `theme:pull` must always write into `themes/<theme-name>-<theme-id>/`.
|
|
14
|
+
- Pulling directly into the project root makes multi-theme work unsafe because Theme A and Theme B can overwrite the same files.
|
|
15
|
+
- Every theme folder needs metadata that records store, theme ID, theme name, role, and pull time.
|
|
16
|
+
- Pull, push, and publish should require a clean Git worktree. This makes every Shopify exchange intentional and recoverable.
|
|
17
|
+
- Commit immediately after a successful pull. Commit again before pushing.
|
|
18
|
+
|
|
19
|
+
## Multi-Theme Strategy
|
|
20
|
+
|
|
21
|
+
Use folder isolation as the default strategy:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
themes/dawn-169809707321/
|
|
25
|
+
themes/dawn-copy-170000000000/
|
|
26
|
+
themes/brand-refresh-170000000001/
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Branches can still be used for feature work, but they should not be the only safety mechanism. Theme identity belongs in both the folder path and the folder metadata.
|
|
30
|
+
|
|
31
|
+
## Admin GraphQL
|
|
32
|
+
|
|
33
|
+
- Shopify Admin GraphQL changes by API version. A query that worked earlier can fail with `undefinedField`.
|
|
34
|
+
- Dashboard, discount, inventory, customer, and product queries should be verified against the configured `SHOPIFY_API_VERSION`.
|
|
35
|
+
- Read-only queries should be tested before wiring them into dashboard commands.
|
|
36
|
+
- Mutations must remain behind explicit confirmation and should show the store, target resource, and planned change.
|
|
37
|
+
|
|
38
|
+
## Figma-to-Dawn Build
|
|
39
|
+
|
|
40
|
+
- Build actual Shopify sections and templates, not static HTML pasted into Dawn.
|
|
41
|
+
- Map Figma frames to Shopify surfaces: header, home, collection, product, cart, footer.
|
|
42
|
+
- Use schema settings for editable content and links.
|
|
43
|
+
- Keep Figma design-preview data separate from live Shopify catalog data. Demo products can make a good design implementation look broken.
|
|
44
|
+
- Add section settings to switch from fallback/design content to live product data once the real catalog is ready.
|
|
45
|
+
|
|
46
|
+
## Visual QA Checklist
|
|
47
|
+
|
|
48
|
+
Run `shopify-agent theme:check`, then inspect:
|
|
49
|
+
|
|
50
|
+
- Home, collection, product, cart, search, header, and footer.
|
|
51
|
+
- Desktop and mobile viewports.
|
|
52
|
+
- Header logo/nav/icon alignment.
|
|
53
|
+
- PLP filters, sort, product grid, image aspect ratios, and card links.
|
|
54
|
+
- PDP media gallery, product info, options, quantity, CTA state, dynamic checkout, accordions, and recommendations.
|
|
55
|
+
- Footer policy/support links.
|
|
56
|
+
- Horizontal overflow and text overlap.
|
|
57
|
+
|
|
58
|
+
## Agent Behavior
|
|
59
|
+
|
|
60
|
+
Agents should:
|
|
61
|
+
|
|
62
|
+
- Read local project state before acting: `.env`, active profile, selected theme, theme folder metadata, and Git status.
|
|
63
|
+
- Prefer `shopify-agent` commands over raw Shopify CLI calls so package guardrails run.
|
|
64
|
+
- Stop when the worktree is dirty before a theme pull/push/publish.
|
|
65
|
+
- Never assume a Figma-looking PLP/PDP should use random demo catalog products.
|
|
66
|
+
- Report verification clearly: command run, result, preview URL, and any remaining risk.
|
package/package.json
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "shopify-agentic-dev-workflow",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Codex-first Shopify development workflow toolkit for themes, apps, and guarded store operations.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"shopify-agent": "bin/shopify-agent.js"
|
|
7
|
+
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"prepublishOnly": "npm test",
|
|
10
|
+
"release:check": "npm test && npm pack --dry-run",
|
|
11
|
+
"pack:dry": "npm pack --dry-run",
|
|
12
|
+
"validate": "node ./scripts/validate-graphql.js",
|
|
13
|
+
"test": "node --test --test-concurrency=1 tests/unit/*.test.js tests/integration/*.test.js tests/safety/*.test.js",
|
|
14
|
+
"test:unit": "node --test --test-concurrency=1 tests/unit/*.test.js",
|
|
15
|
+
"test:integration": "node --test --test-concurrency=1 tests/integration/*.test.js",
|
|
16
|
+
"test:safety": "node --test --test-concurrency=1 tests/safety/*.test.js",
|
|
17
|
+
"test:e2e": "SHOPIFY_TEST_STORE=your-store.myshopify.com node --test tests/e2e/*.test.js",
|
|
18
|
+
"doctor": "node ./bin/shopify-agent.js doctor",
|
|
19
|
+
"setup": "node ./bin/shopify-agent.js init",
|
|
20
|
+
"auth": "node ./bin/shopify-agent.js auth",
|
|
21
|
+
"capabilities": "node ./bin/shopify-agent.js capabilities",
|
|
22
|
+
"mcp:install": "node ./bin/shopify-agent.js mcp:install",
|
|
23
|
+
"agents:install": "node ./bin/shopify-agent.js agents:install",
|
|
24
|
+
"profile:list": "node ./bin/shopify-agent.js profile:list",
|
|
25
|
+
"profile:use": "node ./bin/shopify-agent.js profile:use",
|
|
26
|
+
"store:auth": "node ./bin/shopify-agent.js store:auth",
|
|
27
|
+
"theme:list": "node ./bin/shopify-agent.js theme:list",
|
|
28
|
+
"theme:select": "node ./bin/shopify-agent.js theme:select",
|
|
29
|
+
"theme:check": "node ./bin/shopify-agent.js theme:check",
|
|
30
|
+
"theme:pull": "node ./bin/shopify-agent.js theme:pull",
|
|
31
|
+
"theme:dev": "node ./bin/shopify-agent.js theme:dev",
|
|
32
|
+
"theme:push": "node ./bin/shopify-agent.js theme:push",
|
|
33
|
+
"theme:publish": "node ./bin/shopify-agent.js theme:publish",
|
|
34
|
+
"app:dev": "node ./bin/shopify-agent.js app:dev",
|
|
35
|
+
"app:deploy": "node ./bin/shopify-agent.js app:deploy",
|
|
36
|
+
"admin:query": "node ./bin/shopify-agent.js admin:query",
|
|
37
|
+
"admin:mutate": "node ./bin/shopify-agent.js admin:mutate"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18"
|
|
41
|
+
},
|
|
42
|
+
"keywords": [
|
|
43
|
+
"shopify",
|
|
44
|
+
"shopify-cli",
|
|
45
|
+
"shopify-theme",
|
|
46
|
+
"shopify-admin-api",
|
|
47
|
+
"liquid",
|
|
48
|
+
"theme-development",
|
|
49
|
+
"codex",
|
|
50
|
+
"claude",
|
|
51
|
+
"cursor",
|
|
52
|
+
"gemini",
|
|
53
|
+
"agentic-workflow",
|
|
54
|
+
"developer-tools"
|
|
55
|
+
],
|
|
56
|
+
"repository": {
|
|
57
|
+
"type": "git",
|
|
58
|
+
"url": "git+https://github.com/sagarchauhan005/shopify-agentic-dev-workflow.git"
|
|
59
|
+
},
|
|
60
|
+
"bugs": {
|
|
61
|
+
"url": "https://github.com/sagarchauhan005/shopify-agentic-dev-workflow/issues"
|
|
62
|
+
},
|
|
63
|
+
"homepage": "https://github.com/sagarchauhan005/shopify-agentic-dev-workflow#readme",
|
|
64
|
+
"publishConfig": {
|
|
65
|
+
"access": "public"
|
|
66
|
+
},
|
|
67
|
+
"files": [
|
|
68
|
+
".cursor/rules",
|
|
69
|
+
"AGENTS.md",
|
|
70
|
+
"bin",
|
|
71
|
+
"CLAUDE.md",
|
|
72
|
+
"docs",
|
|
73
|
+
"GEMINI.md",
|
|
74
|
+
"scripts",
|
|
75
|
+
"templates",
|
|
76
|
+
"CHANGELOG.md",
|
|
77
|
+
"HANDOFF.md",
|
|
78
|
+
"LICENSE",
|
|
79
|
+
"README.md"
|
|
80
|
+
],
|
|
81
|
+
"license": "MIT"
|
|
82
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
|
+
cd "$ROOT_DIR"
|
|
6
|
+
|
|
7
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
8
|
+
echo "Node.js 18+ is required."
|
|
9
|
+
exit 1
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
if ! command -v npm >/dev/null 2>&1; then
|
|
13
|
+
echo "npm is required."
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
echo "Running Shopify agentic workflow setup..."
|
|
18
|
+
npm run setup
|
|
19
|
+
npm run doctor
|
|
20
|
+
|
|
21
|
+
echo
|
|
22
|
+
read -r -p "Install Shopify Dev MCP into Codex now? [y/N] " answer
|
|
23
|
+
case "$answer" in
|
|
24
|
+
y|Y|yes|YES)
|
|
25
|
+
npm run mcp:install
|
|
26
|
+
echo "Restart Codex after this script finishes."
|
|
27
|
+
;;
|
|
28
|
+
*)
|
|
29
|
+
echo "Skipped Codex MCP install. Run 'npm run mcp:install' later."
|
|
30
|
+
;;
|
|
31
|
+
esac
|
|
32
|
+
|
|
33
|
+
echo
|
|
34
|
+
echo "Bootstrap complete."
|
|
35
|
+
echo "Next: run 'npm run theme:pull' or open docs/01-onboarding.md."
|