Webflow to react
Verified-gate Claude Code skills that run their checks and prove the result — by NeuralMedic. Web, accessibility, healthcare & compliance, data, IaC, Odoo.
npx -y skills add NeuralMedic-DE/claude-skills --skill webflow-to-reactAssembled 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
Convert a Webflow page or site into a pixel-perfect React implementation (Vite or Next.js) with Playwright visual-regression testing as the correctness gate. Use when the user wants to migrate, port, rebuild, clone, or recreate a Webflow design 1:1 in React, move off Webflow, or set up screenshot/visual-diff testing of a rebuilt page against the original. Triggers: "convert Webflow to React", "rebuild this Webflow site in Next.js", "pixel-perfect clone", "visual regression vs the original".
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.5 KB, as published. Nobody here has run it
Webflow → React (1:1, visually verified)
Recreate a Webflow page in React so faithfully that automated screenshot comparison can't tell the copy from the original — and prove it with Playwright.
Core principle
The visual diff is the spec. The job is done when the React copy's full-page screenshots match the captured Webflow baselines, within tolerance, at every breakpoint. Everything in this skill exists to drive and verify that match. Build in a tight loop: capture once → build a section → compare → read the diff image → fix the cause → repeat.
When to use vs. not
- Use for: cloning/porting a Webflow page or multi-page site into React; rebuilding a marketing/landing page off Webflow; adding visual-regression coverage that grades a rebuild against an original URL.
- Not the right fit for: building a brand-new design from scratch (use a design skill), or backend/app logic unrelated to the visual rebuild.
Inputs to gather first
Confirm these with the user before scaffolding (ask only what's unclear):
- Source — published URL (default) or a Webflow export ZIP? →
references/01-capture-source.md - Target framework — Vite + React (default) or Next.js (SSR/SEO)? →
references/02-project-setup.md - Styling strategy — preserve Webflow CSS (default, fastest to 1:1) or
rebuild in Tailwind/CSS Modules? →
references/03-styling-fidelity.md - Scope — which routes/pages, and the viewports that matter.
Sensible defaults if the user has no preference: published URL · Vite + React + TS · preserve Webflow CSS. These minimize risk and reach a passing visual gate fastest; you can refactor toward idiomatic React afterward with the gate protecting you.
Workflow
Follow in order. Each step links the reference with the detail; load it when you reach that step rather than all up front.
-
Capture the source of truth. Inventory fonts/CSS/JS/images/forms/CMS, then capture baseline screenshots of the original at every viewport. Commit the
baseline/folder — it's the contract. →references/01-capture-source.mdcp scripts/targets.example.json scripts/targets.json # then edit baseUrl, routes, viewports, hide node scripts/capture-baseline.mjs --config scripts/targets.json -
Scaffold the React project and copy this skill's
scripts/into it. Wire global styles (normalize → webflow → site) and the document shell. →references/02-project-setup.md -
Reproduce styling exactly. Bring Webflow CSS over verbatim (default) or rebuild; self-host the exact fonts; match the base reset. →
references/03-styling-fidelity.md -
Componentize without changing the DOM. One component per section; same tags, nesting, classes, and
data-*as the original. Convert HTML→JSX attrs;.map()over Collection Lists. →references/04-componentization.md -
Port interactions & animations. Either keep
webflow.js+ jQuery for exact parity (default) or reimplement natively. Match the resting state the gate screenshots. →references/05-interactions-animations.md -
Run the visual loop until green. Compare the running copy to baselines, read the diff images, fix the topmost difference, repeat — section by section, viewport by viewport, then tighten thresholds for sign-off. →
references/06-visual-testing.mdnpm run build && npm run preview & # serve the production build node scripts/compare-visual.mjs --config scripts/targets.json --url http://localhost:4173 --only home-desktop npx playwright test --config scripts/playwright.config.ts # CI-grade gate + HTML report -
Troubleshoot diffs with the symptom→cause→fix catalog. →
references/07-troubleshooting.md
What's in this skill
scripts/capture-baseline.mjs— screenshot the original at all viewports (run once).scripts/compare-visual.mjs— fast inner-loop diff of the running copy vs baselines; writesreport/*.diff.png+report.json.scripts/visual.spec.ts+playwright.config.ts— the CI gate with retries and an HTML report.scripts/lib/— shared snapshot/freeze/crop helpers so every capture is identical.scripts/targets.example.json— config: source URL, copy URL, routes, viewports,hideselectors, thresholds.scripts/package.snippet.json— devDeps +vt:*npm scripts to merge in.references/01–07— the deep-dive guides linked above.
Definition of done
- Every route × viewport passes
visual.spec.tsat the agreedmaxDiffRatio(start 1%, tighten toward ~0.3–0.5% for strict 1:1). - No size mismatches (copy and original full-page dimensions agree).
- Diff images show only scattered anti-aliasing, no structural red.
- Interactions/forms behave like the original (nav, tabs, sliders, submit).
- All declared breakpoints verified, not just desktop.
- Fonts self-hosted and resolving; no FOUT/fallback in captures.
- Baselines committed; CI runs the gate on the production build.
Guardrails — avoid these mistakes
- Don't screenshot the dev server. Always grade the production build
(
vite preview/next start); HMR and error overlays add pixels. - Don't change the DOM nesting to "clean it up" while chasing fidelity — extra/removed wrappers shift layout. Refactor only after the gate is green.
- Don't widen thresholds to hide a real bug. Fix the cause; reserve
pixelThreshold/maxDiffRatiofor genuine anti-aliasing noise. - Don't compare across OSes without regenerating baselines there — font rendering differs; capture and compare in the same environment.
- Don't skip fonts. Wrong/missing weights are the #1 diff source; the scripts
wait for
document.fonts.ready, but the right files must actually load. - Capture baselines before you start building, and re-capture only when the original intentionally changes — review baseline updates like code.