| name | shopify-theme-wc-portable |
| description | Build portable web components for Shopify themes that work across any theme structure |
| allowed-tools | Read, Grep, glob, edit_file, create_file, Bash |
Shopify Theme Web Components (Portable)
Overview
This skill provides guidance for creating web components in Shopify themes that:
- Work in any theme structure (custom, Dawn-based, third-party)
- Don't impose folder conventions
- Follow progressive enhancement principles
- Support theme editor live preview
Mandatory Discovery
Before creating any component:
- Check CLAUDE.local.md for project-specific patterns
- Scan existing JS files for naming and structure conventions
- Identify initialization patterns used in the theme
- Find where scripts are loaded in layout files
Integration Policy (Portable)
File Placement
- Use existing file locations—do not create new folders
- If theme uses single
theme.js, add to that file - If theme has component files, create new file in same location
Registration Pattern
// Always use define-once guard
if (!customElements.get("component-name")) {
customElements.define("component-name", ComponentName);
}
Script Loading
- Follow existing script loading pattern in theme
- If theme uses
defer, usedefer - If theme uses
async, useasync - Match existing asset_url patterns
Verification Steps
After creating a component:
- Component initializes without console errors
- Works after section reload in theme editor
- Properly cleans up on disconnect
- Doesn't break existing theme styles
-
shopify theme checkpasses - HTML is functional before JS loads
Common Patterns
See PATTERNS.md for implementation examples of:
- Accordion/Tabs
- Modal/Drawer
- Product Gallery
- Predictive Search enhancements
- Lazy initialization