One CLI for Shopify theme agents.
shtool is the front door. It drives the live storefront, renders Liquid on disk, and talks to Admin GraphQL. JSON out. Failures carry a hint.
shtool kit
shtool storefront- Live Chromium and JSON specs. Passes through to
control-shopify. shtool render- Local Liquid. Conformance, Dawn 2.0, and
/api/kitfrom theme-tester. shtool orders…shtool verify- 100 Admin and local leaves. API version 2026-07. Never stores tokens.
The loop
-
Prove Liquid on disk before you trust the storefront.
shtool render test shtool render dawn -
Read real Admin fixtures. Scaffold a Feature Map from the theme.
shtool orders list --store SHOP.myshopify.com --first 10 shtool verify feature-map-build --root . --routes / --output map.json --yes -
Assert the live page. Read the screenshot. A DOM pass does not prove it looks right.
shtool storefront setup --store SHOP.myshopify.com shtool storefront dev start shtool storefront verify pdp --screenshot shtool storefront verify --all
Commands
Storefront
Needs control-shopify on PATH, or SHTOOL_STOREFRONT. Same flags as the verify-shopify skill.
shtool storefront doctor
shtool storefront verify pdp --screenshot
shtool storefront verify pdp --viewport 390x844 --screenshot
shtool --dry-run storefront theme share
Render
Needs the theme-tester repo at SHTOOL_RENDER, or a nearby theme-tester/ folder whose package.json is elixir-renderer.
shtool render test
shtool render dawn
shtool render serve # prints the node argv; does not daemonize
shtool render kit # GET /api/kit from PORT (default 4321)
Admin and local theme
Ten domains, ten leaves each: orders, customers, inventory, discounts, metafields, operations, commerce, content, theme, verify. Writes need --yes. Mutations also need --allow-mutations.
shtool inventory reconcile --store SHOP.myshopify.com --input desired.json
shtool theme schema-lint --root .
shtool verify routes-smoke --base-url http://127.0.0.1:4321 --routes /api/health,/api/kit
Install
npm i -g @shopify/cli agent-browser
agent-browser install
git clone https://github.com/aimen08/verify-shopify-skill.git ~/.agents/skills/verify-shopify
ln -s ~/.agents/skills/verify-shopify/bin/control-shopify ~/.local/bin/control-shopify
git clone https://github.com/aimen08/shopify-tools.git
cd shopify-tools && go build -trimpath -o bin/shtool ./cmd/shtool
export PATH="$PWD/bin:$PATH"
git clone https://github.com/elixir-theme/theme-tester.git
cd theme-tester && npm ci
export SHTOOL_RENDER="$PWD"
Safety
- Writes need
--yes. - GraphQL mutations also need
--allow-mutations. --dry-runprints argv and does not run it.- shtool rejects
--live. A published theme push stays onshtool storefrontand still needs--live --yesthere. - After a mutation loses its response, inspect store state before retrying.
Measured on this machine
Do not quote these as Shopify's numbers. Do not invent a live store result.
- shtool: 100 Admin/local leaves,
go test ./...green - theme-tester: 468/468 scored Liquid cases
- Dawn v2.0.0: 38/38 sections, 12/12 JSON templates
- control-shopify: 18/18 offline tests