Theme Update logo

Theme Update

Organization
Weaverse
theme-update

Safely update a Weaverse Pilot theme to the latest version — detects current version, fetches release diffs, plans changes category-by-category, preserves customizations, verifies build.

Overview

PublisherWeaverse
Repositoryshopify-hydrogen-skills
Skill nametheme-update
Stars
87
Forks
26
Bundled files
1
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Weaverse on GitHub. Read the source before you install it.

Installation

Install the Theme Update AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Weaverse/shopify-hydrogen-skills.git /tmp/shopify-hydrogen-skills
mkdir -p .claude/skills
cp -r /tmp/shopify-hydrogen-skills/skills/theme-update .claude/skills/theme-update
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Theme Update in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Theme Update on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Theme Update is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Theme Update — Weaverse Pilot

Safely upgrade a Weaverse Pilot theme from its current version to a newer release. This skill walks through detection, planning, execution, and verification — never overwriting user customizations without explicit approval.

Source

Quick Check

bash
node skills/theme-update/scripts/check_pilot_updates.mjs
node skills/theme-update/scripts/check_pilot_updates.mjs --target v2026.4.7

Procedure

Follow these phases in order. Do NOT skip steps.

Phase 1 — Detection

  1. Read package.json → get version field
  2. If name is not @weaverse/pilot, ask the user to confirm this is a Pilot-based project
  3. Fetch releases:
bash
curl -s "https://api.github.com/repos/Weaverse/pilot/releases?per_page=50"
  1. Identify all releases between current version and latest (or user-specified target)
  2. Present to user:
    • Current version
    • Target version (latest unless specified)
    • Number of intermediate releases
    • Summary of key changes (features, fixes, breaking changes)

If already on latest → stop here and tell the user.

Phase 2 — Branch

bash
git checkout -b update/v{CURRENT}-to-v{TARGET}
git push -u origin update/v{CURRENT}-to-v{TARGET}

Always work on a branch. Never update on main directly.

Phase 3 — Plan

For each release in the update range (oldest to newest):

  1. Fetch the diff between consecutive versions:
bash
# Full comparison URL
https://api.github.com/repos/Weaverse/pilot/compare/v{OLD}...v{NEW}

# Raw diff
https://github.com/Weaverse/pilot/compare/v{OLD}...v{NEW}.diff
  1. Download the target version's source (for reference files):
bash
curl -sL "https://api.github.com/repos/Weaverse/pilot/tarball/v{TARGET}" | tar xz
  1. Categorize every changed file into three buckets:
Auto-merge (safe to apply without asking)
  • package.json version bump, dependencies
  • Lock files (package-lock.json, bun.lockb, pnpm-lock.yaml)
  • tsconfig.json, vite.config.ts, tailwind.config.ts — ONLY if user hasn't customized them
  • New files that don't exist in user's project (additive only)
  • .github/, CHANGELOG.md, LICENSE
Needs review (show diff, get approval)
  • app/components/ — UI components user may have customized
  • app/routes/ — route files user may have modified
  • app/lib/ — utility modules
  • app/root.tsx, app/entry.client.tsx, app/entry.server.tsx
  • app/styles/ — CSS/Tailwind changes
  • Any file where the user has local changes (git diff shows modifications from Pilot base)
Skip (mention but don't touch)
  • Files the user deleted (they removed the feature intentionally)
  • Files in directories the user reorganized
  • .env, .env.example — never overwrite environment files
  1. Present the plan in a clear table:
## Update Plan: v2026.3.23 → v2026.4.7

### Auto-merge (3 files)
✅ package.json — version + dependency bumps
✅ bun.lockb — lock file update
✅ app/lib/utils.ts — new helper function added

### Needs Review (5 files)
⚠️  app/components/Header.tsx — Pilot added shopify-account web component
    Your version: custom mega menu logic
    Pilot change: replaced AccountButton with <shopify-account>
    → Recommend: keep your mega menu, add shopify-account separately

⚠️  app/routes/_index.tsx — performance improvements
    Your version: added custom hero section
    Pilot change: caching + skeleton loading
    → Recommend: apply caching, keep your hero

### New Files (2 files)
➕ app/components/ScrollReveal.tsx — new scroll animation component
➕ app/lib/reviews.ts — extracted reviews API

### Skipped (1 file)
⏭️  app/components/CombinedListings.tsx — you deleted this file

Wait for user confirmation before proceeding. Ask:

"Review the plan above. Approve to continue, or tell me which files to handle differently."

Phase 4 — Execute

Apply changes in order, one release at a time if multi-version jump:

4a. Auto-merge files
bash
# Copy new file from Pilot source
cp /tmp/pilot-reference/{FILE_PATH} {FILE_PATH}

# Or apply targeted patch
git apply --3way <patch-file>

After each auto-merge, verify with git diff --stat.

4b. Needs-review files

For each file:

  1. Show a three-way comparison:

    • Pilot at user's version (baseline)
    • Pilot at target version (their changes)
    • User's current file (local modifications)
  2. Identify what the user changed vs what Pilot changed:

    • User-only changes → preserve
    • Pilot-only changes → apply
    • Overlapping changes → flag conflict
  3. For conflicts, present options:

    • Accept Pilot's version (lose user customization)
    • Keep user's version (skip Pilot improvement)
    • Manual merge (show both, let user edit)
    • Smart merge (try to combine both — only if non-overlapping regions)
  4. Wait for user decision on each conflict before proceeding.

4c. Commit per release
bash
git add -A
git commit -m "chore: update Pilot v{OLD} → v{NEW}

- [list key changes applied]
- [list files with manual merge decisions]
"

If doing multi-version jump, repeat for each intermediate release.

Phase 5 — Verify

After all changes applied:

bash
# 1. Install dependencies
bun install  # or npm install / pnpm install based on lockfile

# 2. TypeScript check
bun run typecheck

# 3. Build check
bun run build

If build fails:

  1. List the errors
  2. Analyze root cause (dependency mismatch? breaking change missed?)
  3. Propose fixes
  4. Apply fixes with user approval
  5. Re-run build

If build succeeds:

  1. Run bun run dev briefly to check no runtime errors
  2. Summarize all changes made
  3. List any manual follow-up steps:
    • New features that need configuration
    • Breaking changes requiring code updates in customized files
    • Deprecated patterns to migrate later

Phase 6 — Finalize

  1. Present final summary:
## Update Complete: v2026.3.23 → v2026.4.7

✅ 12 files auto-merged
✅ 5 files reviewed and merged
✅ 2 new files added
✅ Build passes
✅ TypeCheck passes

### New features available
- Shopify Account Web Component (<shopify-account>)
- Vite chunk splitting for better caching
- ScrollReveal component for animations

### Manual follow-up (optional)
- Configure shopify-account in your Header if you want native sign-in
- Review ScrollReveal component for use in custom sections

### Rollback
git checkout main
git branch -D update/v2026.3.23-to-v2026.4.7
  1. Ask user: "Ready to merge into main?"
bash
# If approved
git checkout main
git merge update/v{CURRENT}-to-v{TARGET}
git push origin main

Safety Rules

  1. Always branch first — never update on main directly
  2. Never overwrite without asking — every file that could have user changes needs review
  3. Commit per release — easy to bisect if something breaks
  4. Build must pass — don't declare success until typecheck + build both pass
  5. Offer rollback — always tell user how to undo the whole update
  6. Respect user deletions — if they removed a file, don't re-add it without asking

Common Pitfalls

  • Version format: package.json has no v prefix (2026.4.7), GitHub tags have v prefix (v2026.4.7). Always normalize.
  • Lock files: After updating package.json, MUST run the correct package manager (check which lockfile exists)
  • Custom components: User components not in original Pilot are always preserved — never delete or move them
  • Route structure: If user reorganized routes, don't force Pilot's structure — apply route logic changes to user's structure instead
  • CSS conflicts: Pilot may change Tailwind classes or base styles — these need careful merge to avoid breaking user styling

SDK-Only Bumps (@weaverse/hydrogen)

Sometimes the ask is only "update the Weaverse SDK", not a full theme update. Verified procedure (used for a 5.5.0 → 5.15.1 client jump):

  1. Baseline before bumping. Run npx react-router typegen && npm run typecheck on the CURRENT version and record every error (client forks usually have pre-existing failures). After the bump, diff against this baseline — you only own the delta. Without the baseline you'll chase errors that were always there.
  2. Peer check first: npm view @weaverse/hydrogen@<target> peerDependencies. 5.15.x/5.16.x need @shopify/hydrogen >=2025.5, react 19, react-router 7, @shopify/remix-oxygen 3. react-error-boundary and @weaverse/schema arrive transitively — their absence in the theme's package.json is fine.
  3. Known break at 5.15: errorComponent is typed FC<{ error: unknown }> (was an Error-like object). Port upstream Pilot's GenericError, which narrows at runtime (error && typeof error === "object" && "message" in error).
  4. Finish with full shopify hydrogen build --codegen — typecheck alone misses bundler-level issues.

Weaverse-Internal: Pilot Lock & Demo Deploy

  • Pilot lives inside the Weaverse pnpm monorepo but ships an npm lockfile. Refresh it with npm i --package-lock-only --workspaces=false; plain npm i fails on the monorepo's catalog: protocol.
  • Deploying pilot.weaverse.dev: merge to Weaverse/pilot main, then gh repo sync Weaverse/pilot-demo --source Weaverse/pilot — the fork carries the Oxygen deploy action and ships on sync (~1 min).

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Theme Update AI skill do?

Safely update a Weaverse Pilot theme to the latest version — detects current version, fetches release diffs, plans changes category-by-category, preserves customizations, verifies build.

Why use Theme Update on TypingMind?

Because you install it once and use it with any model. Theme Update is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Theme Update in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Weaverse/shopify-hydrogen-skills/tree/main/skills/theme-update. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Theme Update?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Theme Update?

As many as you like. As long as a model supports skills, you can use Theme Update with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Theme Update AI skill free?

It is published on GitHub by Weaverse. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇