agentsclimarketplace

Shopify theme

Skill NovateStudioGit/novate-studio-skills/ecommerce/shopify-theme

57 agent skills for Claude Code — creative production, paid growth, copywriting, ecommerce, email marketing & knowledge ops. By Novate Studio.

Install
npx -y skills add NovateStudioGit/novate-studio-skills --skill shopify-theme

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Edit and push ExampleBrand (or any) Shopify theme files reliably via the Theme Access proxy. Use when Will says "edit the theme", "push that to the widget/PDP", "update the bundle snippet", or any in-place Shopify theme file change. Resolves the unpublished theme, edits locally, dash-checks, and PUTs through the proxy (bypasses the flaky MCP and the CLI's broken push).

SKILL.md

4.6 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

/shopify-theme

In-place Shopify theme file edits, the way that actually works. Born from a session that burned ~6 turns fighting push channels: the MCP themeFilesUpsert expires mid-session, and the Shopify CLI theme push 404s with a Theme Access token (even though theme list/pull work). The reliable channel is the Theme Access proxy Asset API via curl/urllib — that's what this skill defaults to.

Engine: scripts/theme_proxy.py (stdlib only). Recipe + history: memory [[shopify-theme-edit-via-api]], [[ExampleBrand-theme-numbered]], [[ExampleBrand-3for100-bundle]].


Guardrails (read first)

  • Unpublished theme only. Never write the live/MAIN theme. Re-verify role every time (roles + the copy's id change): python3 scripts/theme_proxy.py list.
  • No em/en dashes, ever ([[no-em-en-dashes]]). push refuses if it finds — – (override --force only if truly intentional).
  • Verify it renders, don't just trust the 200 ([[feedback-verify-render-before-claiming-done]]). A successful PUT means the bytes landed, not that it looks right. Give Will the ?preview_theme_id=<id> link.
  • Never echo the token. Write it to /tmp/.th_env (chmod 600), use, delete. It's a shptka_ Theme Access password generated from the TARGET store's "Theme Access" app — a token from another store 404s on every call.
  • Per-product-template gotcha ([[ExampleBrand-theme-numbered]]): ExampleBrand products use templateSuffixtemplates/product.<suffix>.json. Editing the default templates/product.json does NOTHING. To change a PDP block you must edit ALL templates/product.*.json. Self-scoping snippets (render only if product in a collection) make it safe to add a block to every template.

Setup each run

  1. Token: ask Will to paste the shptka_... password (Settings → Apps → Theme Access, in the target store). Save it: write /tmp/.th_env, chmod 600. The script reads it from there (or $SHOPIFY_CLI_THEME_TOKEN, or --token).
  2. Store: default is ExampleBrand qk6w18-bw.myshopify.com. Override with --shop <handle>.myshopify.com or $SHOPIFY_SHOP. Confirm the handle via the admin URL admin.shopify.com/store/<handle>.
  3. Confirm the unpublished theme id: python3 scripts/theme_proxy.py list.

Pipeline

1. LIST     theme_proxy.py list                          -> pick the UNPUBLISHED theme id
2. GET      theme_proxy.py get <id> <key> /tmp/f         -> pull the file to edit (or use the working copy)
3. EDIT     edit /tmp/f locally:
              - JSON templates: strip leading /* ... */ header -> json.loads -> mutate
                blocks / block_order -> json.dumps(indent=2, ensure_ascii=False) -> re-prepend header
              - snippets / *.liquid / *.css: edit directly
4. CHECK    grep -c -e '—' -e '–' -e '&mdash;' -e '&ndash;' /tmp/f   (must be 0; push also enforces)
5. PUSH     theme_proxy.py push <id> <key> /tmp/f         -> expect "OK HTTP 200"
6. VERIFY   give Will https://<domain>/products/<handle>?preview_theme_id=<id> and ask him to hard-refresh
7. CLEAN    rm -f /tmp/.th_env

Run the engine with dangerouslyDisableSandbox (it needs network).

Commands

python3 scripts/theme_proxy.py list
python3 scripts/theme_proxy.py get  <theme_id> snippets/foo.liquid /tmp/foo.liquid
python3 scripts/theme_proxy.py push <theme_id> snippets/foo.liquid /tmp/foo.liquid

key is the theme-relative path (snippets/…, templates/…, assets/…, sections/…).

Errors

  • 401 "Invalid API key" = missing/wrong token, or the X-Shopify-Shop header is absent (the script always sends it).
  • 404 on every call = the token is for a different store, or the Theme Access app isn't installed on this store. NOT a handle problem if admin.shopify.com/store/<handle> resolves. Regenerate the password from THIS store's Theme Access app.
  • Bulk edits (many templates/product.*.json): loop get→edit→push per file, or edit the local pulled copies then push each. For a brand-new snippet you can push it without a prior get.

Handoffs

  • Offer/discount economics → [[midas-ecomcfo-skill|/midas]]. Native discount setup (BXGY, free-ship) is Admin API, not this skill. Checkout branding has no API ([[ExampleBrand-checkout-branding-no-api]]).

Gives 0 of the 12 instructions most design systems skills give in ~1.1k tokens

Counted across 528 of the 534 authors here whose files we hold, read 2026-08-06

  • create a custom theme if neededin 54 of 528, across 10 files
  • read the corresponding theme filein 54 of 528, across 10 files
  • ask which theme to applyin 53 of 528, across 9 files
  • show the theme showcasein 53 of 528, across 9 files
  • maintain visual identity across all slidesin 50 of 528, across 6 files
  • apply the specified colors and fontsin 47 of 528, across 3 files
  • get explicit confirmationin 45 of 528, across 1 file
  • Generate a design system before codingin 19 of 528, across 6 files
  • Maintain at least 4.5:1 color contrast ratioin 19 of 528, across 8 files
  • Describe component shapes, colors, shadows, and interaction statesin 18 of 528, across 4 files
  • Check Python installation and install if missingin 17 of 528, across 4 files
  • Default to html-tailwind if stack is unspecifiedin 17 of 528, across 4 files

Said here and by no other author read

  • edit the unpublished theme only
  • verify theme role before every run
  • save the theme token to a file
  • delete the token file after use
  • strip comment headers before editing json
  • grep edited files for em or en dashes

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.