Liquid Loom already has repository-level validation, packed-package consumer smoke, and provenance-backed npm releases. Product validation must now prove both supported adoption paths: starting fresh and adding Liquid Loom to an existing Shopify theme.
Do not treat stars, README views, or package-page visits as substitutes for workflow outcomes.
Current release engineering evidence:
-
liquid-loomandcreate-liquid-loompublish through npm Trusted Publishing; - both packed CLI binaries execute from independent temporary installs;
- a packed fresh scaffold completes a production build in CI;
- a packed existing-theme fixture completes
init -> hybrid build -> migrate -> buildin CI; - package smoke runs on the protected release path;
- clean install of the current public version from the npm registry into a new project;
- clean install of the current public version into an existing Shopify theme;
- real Shopify development-store preview from a fresh scaffold;
- real Shopify development-store preview from an adopted existing theme;
- at least three external Shopify developers completing a real workflow;
- one concise before/after case study.
Ask a tester to:
- create a project from the public scaffolder;
- run a clean local build;
- add a feature-organized section;
- confirm the expected
dist/themeoutput; - trigger one deliberate filename collision and interpret the error;
- run
doctor; - preview with Shopify CLI.
Capture setup friction, source-model clarity, generated-output clarity, collision diagnostics, preview friction, and whether the developer would choose the workflow again.
Use a real or realistic conventional Shopify theme repository. Ask the tester to:
- run
liquid-loom init --dry-runand explain what they expect to change; - apply
initwithout moving any Shopify source; - build the untouched existing theme into
dist/theme; - add one new feature under
src/themewhile keeping old source native; - build again and confirm both source layers are present;
- trigger one native/organized ownership collision and interpret the error;
- preview
liquid-loom migrate sections/<file>without applying it; - apply one migration into a feature folder;
- rebuild and verify the Shopify output path did not change;
- run
doctorand preview the merged output with Shopify CLI.
Capture:
- whether
initfeels safe enough for a client repository; - whether namespaced
loom:*scripts avoid disrupting the current workflow; - whether keeping the existing asset pipeline lowers switching cost;
- whether the one-output/one-owner rule is understandable;
- whether migration preview creates enough confidence before file moves;
- whether incremental migration is actually preferable to a full reorganization;
- any repository shapes that the current theme detection does not handle;
- whether the developer would adopt Liquid Loom on an existing project.
The automated suite should continue proving:
- native and organized source can build together;
- unrelated repository files are not discovered as native theme source;
- collisions are detected across source layers;
- collision keys are case-insensitive and Unicode-normalized;
- Vite reservations participate in the same ownership plan when enabled;
- native root
.withdist/themeis safe; - output inside a managed Shopify directory is rejected;
- final plan validation accepts
layout/theme.liquidfrom either source layer; - hybrid manifests record source-layer identity;
- migrating ownership does not delete an unchanged output as stale;
- migration destinations that change Shopify output identity are rejected;
- existing migration destinations are rejected before moving files;
- failed multi-file migration attempts roll back completed moves;
initrefuses existing Liquid Loom configs and conflicting namespaced scripts;initpreserves existing package metadata, scripts, dependencies, and Shopify source;- disabled Vite is treated as an intentional mode, not as missing configuration;
doctorwarns about uncompiledsrc/entrypointswhen Vite is disabled;- Windows, macOS, Linux, Node 22, Node 24, and Node 26 canary remain covered.
For early users, prefer observable milestones:
- developer discovers the project;
- developer chooses fresh or existing-theme adoption;
- first local build succeeds;
- developer makes one source edit and understands output ownership;
- live Shopify preview succeeds;
- developer returns for a second session or says they would use Liquid Loom again.
For existing themes, add two more milestones:
- developer adopts Liquid Loom without migrating old source;
- developer voluntarily migrates at least one file after receiving value from the hybrid workflow.
That distinction matters. A successful product should not require migration merely to justify the migration feature.
- theme size and approximate number of sections/snippets;
- solo developer or team;
- existing Shopify workflow and asset pipeline;
- fresh build or established client theme.
- source organization;
- build tooling;
- recurring pain points;
- representative build time on the same machine.
For an existing theme, record:
- files changed by
init; - Shopify files moved by
init(expected: zero); - native vs organized source counts;
- first new feature authored under
src; - migration steps, if any.
- commands used;
- build time on the same machine;
- collision/failure behavior observed;
- what improved;
- what became harder;
- whether existing asset tooling was preserved.
State who should use Liquid Loom and who should stay with a conventional Shopify theme structure.
A development-store browser smoke suite should be added once a stable test store and authentication strategy exist. The initial suite only needs to prove critical storefront behavior:
- home page renders;
- product page renders and variant selection works;
- add-to-cart succeeds;
- predictive search returns results;
- cart page renders the added line item;
- no uncaught browser errors occur.
Run the same suite against a fresh scaffold and an adopted existing-theme fixture when practical.
Keep this opt-in for contributors without Shopify credentials. Public CI should not depend on a private merchant or long-lived store secret.
Do not prioritize broad plugin hooks merely because the dual-source implementation now has an internal source-layer model.
First learn whether real teams repeatedly need:
- additional source roots;
- custom mapping strategies;
- asset-pipeline integration hooks;
- migration transforms;
- machine-readable ownership/build reports.
Expose new framework surface only when repeated use justifies a stable public contract.