From shopify-developer
Use when designing, editing, reviewing, or debugging the customer-facing front end of hairsolutions.co, including Horizon 3.5.1 CSS, JavaScript, responsive layouts, product-page UI, theme-block presentation, accessibility, animations, Core Web Vitals, and mobile storefront experience
How this skill is triggered — by the user, by Claude, or both
Slash command
/shopify-developer:shopify-front-endThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This is the storefront UI and interaction skill for Hair Solutions Co. Use it when the work is about how the Shopify store looks, feels, performs, or behaves in the browser.
This is the storefront UI and interaction skill for Hair Solutions Co. Use it when the work is about how the Shopify store looks, feels, performs, or behaves in the browser.
The live theme baseline is Horizon 3.5.1. Design work must respect Horizon's theme-block architecture, the Shopify theme editor, and the business priority: protect conversion and customer trust before visual novelty.
Every front-end decision should support one of those goals. For Hair Solutions Co, customers are often evaluating trust, realism, fit, maintenance, privacy, and value. Avoid UI that feels clever but weakens buying confidence.
Use this skill for:
Use shopify-liquid when the task is mainly Liquid structure, schema, dynamic sources, or metaobject rendering. Use shopify-production when the task is deployment, app safety, live theme operations, or performance rollout.
Horizon 3.5.1 includes fixes around translations and better Split showcase support on small screens. Treat narrow mobile layouts as a first-class risk area.
Horizon front-end work should assume:
{% stylesheet %} tags for sections, blocks, and snippets where supported.{% javascript %} tags where supported.@app.| Area | Rule |
|---|---|
| Typography | Preserve existing Knockout heading/button conventions where present |
| Layout | Dense, trustworthy, premium, conversion-oriented |
| Mobile | Required, not an afterthought |
| Max width | Prefer existing theme/page width conventions; local HSC notes use 1400px frequently |
| Spacing | Use consistent scales; avoid random one-off spacing |
| Cards | Keep cards crisp and purposeful; do not over-card every page section |
| Imagery | Use real product, scalp, result, fit, or maintenance imagery when possible |
| Trust | Make guarantees, process, education, and support easy to scan |
| Accessibility | Focus states, contrast, labels, and tap targets are mandatory |
Prefer local component CSS for section/block-specific styles:
{% stylesheet %}
.hs-fit-card {
display: grid;
gap: 0.75rem;
}
{% endstylesheet %}
Use asset files when:
Avoid:
button, h2, or .card globally from a section.Use Hair Solutions-prefixed classes for custom work:
.hs-custom-section {}
.hs-custom-section__inner {}
.hs-custom-section__heading {}
.hs-custom-section__grid {}
.hs-custom-section__item {}
.hs-custom-section--compact {}
For support and content areas, existing prefixes may include:
support-hub-*kb_*blog-*hs-custom-*Match the current file's convention before adding a new one.
Horizon 3.5.1 small-screen behavior matters. Always define mobile layout first or verify the current theme's breakpoint direction before editing.
Baseline requirements:
Responsive pattern:
.hs-custom-grid {
display: grid;
gap: 1rem;
}
@media screen and (min-width: 750px) {
.hs-custom-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media screen and (min-width: 990px) {
.hs-custom-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
}
Use the breakpoints already present in the live theme when a nearby file establishes them.
Front-end code must not make the theme editor unusable.
block.shopify_attributes.Use existing Horizon color schemes first:
<section class="hs-custom-band color-{{ section.settings.color_scheme }}">
Use CSS custom properties for single tunable values:
<div class="hs-custom-card" style="--hs-card-gap: {{ block.settings.gap }}px">
.hs-custom-card {
gap: var(--hs-card-gap, 1rem);
}
Use classes for multi-property variants:
<div class="hs-custom-card hs-custom-card--{{ block.settings.style }}">
Avoid one-note palettes and generic luxury gradients. Hair Solutions needs clarity, trust, and product confidence more than decoration.
clamp() only when it has sane min/max values and has been checked on mobile.Product pages are revenue-sensitive.
Before editing:
Do not break:
Product UI should make these easy:
Product cards should be scannable and fast.
Include:
Avoid:
Use Shopify responsive image output.
{{
image
| image_url: width: 1400
| image_tag:
widths: '375, 550, 750, 990, 1200, 1400',
sizes: '(min-width: 990px) 50vw, 100vw',
loading: 'lazy',
alt: image.alt
}}
Rules:
Default to no JavaScript if CSS and Liquid can handle it.
When JS is needed:
Theme-editor event pattern:
document.addEventListener('shopify:section:load', (event) => {
const section = event.target;
// Initialize only inside this section.
});
document.addEventListener('shopify:section:unload', (event) => {
const section = event.target;
// Clean up observers/listeners created for this section.
});
Required checks:
:focus-visible states.<button> elements when they perform actions.<a> elements when navigating.prefers-reduced-motion.Focus pattern:
.hs-custom-button:focus-visible {
outline: 2px solid currentColor;
outline-offset: 3px;
}
Reduced motion:
@media (prefers-reduced-motion: reduce) {
.hs-animated,
.hs-animated::before,
.hs-animated::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
scroll-behavior: auto !important;
transition-duration: 0.01ms !important;
}
}
Front-end changes must protect LCP, INP, and CLS.
LCP:
INP:
CLS:
Because Horizon 3.5.1 specifically improves Split showcase small-screen support, treat similar split layouts carefully.
Checklist:
Before calling front-end work done:
| Mistake | Fix |
|---|---|
| Designing from a blank canvas | Read the nearby theme pattern first |
| Treating a Shopify section like a landing-page hero every time | Build the actual storefront workflow |
| Styling generic selectors globally | Scope to HSC component classes |
| Desktop-first with mobile patching | Make mobile a primary acceptance check |
| Animating product purchase controls | Keep revenue controls fast and predictable |
| Hiding editor blocks | Keep theme editor selectable |
| Ignoring app blocks | Preserve app insertion points and wrappers |
| Lazy-loading the LCP image | Eager-load likely hero/LCP media |
| Adding JS for CSS state | Prefer CSS when possible |
Use the project commands first. Common checks:
shopify theme check
shopify theme dev --store one-head-hair.myshopify.com
For visual QA, use browser screenshots or Playwright when available. Verify at least a mobile and desktop viewport when UI changed.
https://shopify.dev/docs/storefronts/themes/architecture/blockshttps://shopify.dev/docs/storefronts/themes/architecture/blocks/theme-blocks/quick-starthttps://shopify.dev/docs/storefronts/themes/architecture/blocks/theme-blocks/static-blockshttps://github.com/Shopify/horizonhttps://shopinfo.app/themes/horizonnpx claudepluginhub vincent-laroche/hairsolutionsco-ai-toolkit --plugin shopify-developerProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.