| name | website-cloner |
| description | Clone any website — full page OR a specific section — into a complete, self-contained HTML/CSS/JS file. Use this skill immediately when the user provides a URL and asks to clone, copy, replicate, duplicate, or recreate a website or any part of it. Also trigger when user says "website clone", "clone this site", "copy this website", "make a template like this", "replicate this design", "build same layout as", "clone just the hero section", "clone only the navbar", "clone the pricing section", or shares a link with intent to reproduce any design. This skill handles complex dependencies like GSAP animations and compiled Tailwind CSS — converting them to pure vanilla CSS/JS with no build tools required. Always use this skill for any website cloning or section replication request. |
| author | Sami Bajwa |
| website | https://samioutic.com |
| github | https://github.com/samibajwaisking |
| license | Custom Attribution License — © 2026 Sami Bajwa. Star + Follow + Credit required. |
| version | 2.0.0 |
Website Cloner Skill — v2.0
Created by Sami Bajwa · AI Educator · 🇵🇰 Pakistan
Using this skill requires: ⭐ Star · 👤 Follow · 📛 Credit
See LICENSE for full terms.
Produce a complete, self-contained clone of any website — full page or a specific section — from a URL. The output is a single .html file with all styles, fonts, colors, animations, and interactions preserved. Handles GSAP, compiled Tailwind, and other complex dependencies by converting them to pure vanilla CSS/JS. Zero build tools. Zero dependencies.
MODE DETECTION — Full Page vs Section Clone
Before starting, detect the user's intent:
| User says | Mode |
|---|
| "Clone this website: [url]" | FULL PAGE — clone entire page |
| "Clone the hero section of: [url]" | SECTION — clone only that section |
| "Clone just the navbar from: [url]" | SECTION — clone only that section |
| "Clone the pricing / footer / about / cards from: [url]" | SECTION — clone only that section |
| "Clone this whole page: [url]" | FULL PAGE — clone entire page |
If the user specifies a section name → use Section Clone Mode.
If no section is mentioned → use Full Page Clone Mode.
FULL PAGE CLONE MODE
Step 1 — Fetch & Analyze
web_fetch(url)
Extract and note:
- Color palette — backgrounds, text, buttons, borders (exact hex/rgb values)
- Typography — font families, sizes, weights, line heights
- Layout structure — header, nav, hero, sections, footer
- Components — cards, buttons, forms, modals, sliders
- Imagery — image positions (keep CDN URLs or use placeholders)
- Animation libraries — check for GSAP, AOS, Lottie, Framer Motion
- CSS framework — check for Tailwind, Bootstrap, Bulma, custom
- Responsive behavior — mobile breakpoints
Step 2 — Handle Complex Dependencies
GSAP Animations → Convert to CSS
If the original site uses GSAP (gsap.from, gsap.to, gsap.timeline, ScrollTrigger):
DO NOT load the GSAP library. Instead, replicate the visual result using pure CSS:
.reveal {
opacity: 0;
transform: translateY(60px);
transition: opacity 0.8s ease, transform 0.8s ease;
}
.reveal.visible {
opacity: 1;
transform: translateY(0);
}
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) {
e.target.classList.add('visible');
obs.unobserve(e.target);
}
});
}, { threshold: 0.15 });
document.querySelectorAll('.reveal').forEach(el => obs.observe(el));
GSAP → CSS conversion table:
| GSAP Effect | CSS/JS Equivalent |
|---|
gsap.from({opacity:0, y:60}) | opacity:0; transform:translateY(60px) + transition |
gsap.from({opacity:0, x:-80}) | opacity:0; transform:translateX(-80px) + transition |
gsap.from({scale:0.8}) | transform:scale(0.8) + transition |
gsap.from({rotation:15}) | transform:rotate(15deg) + transition |
ScrollTrigger (reveal on scroll) | IntersectionObserver |
gsap.timeline stagger | CSS animation-delay increments |
| Parallax via GSAP | CSS transform: translateY() on scroll event |
| Magnetic / cursor effects | CSS :hover transforms |
| Text split animation | CSS @keyframes letter-by-letter with animation-delay |
| Counter animation | Vanilla JS setInterval counter |
Compiled Tailwind CSS → Convert to Vanilla CSS
If the original uses compiled/purged Tailwind (classes like text-4xl, bg-gray-900, flex, gap-4, rounded-2xl):
DO NOT load Tailwind CDN. Instead, write the actual CSS values:
.hero-title {
font-size: 2.25rem;
font-weight: 700;
color: #111827;
}
Tailwind → CSS reference:
| Tailwind Class | CSS Value |
|---|
text-xs | font-size: 0.75rem |
text-sm | font-size: 0.875rem |
text-base | font-size: 1rem |
text-lg | font-size: 1.125rem |
text-xl | font-size: 1.25rem |
text-2xl | font-size: 1.5rem |
text-3xl | font-size: 1.875rem |
text-4xl | font-size: 2.25rem |
text-5xl | font-size: 3rem |
text-6xl | font-size: 3.75rem |
font-medium | font-weight: 500 |
font-semibold | font-weight: 600 |
font-bold | font-weight: 700 |
font-extrabold | font-weight: 800 |
rounded | border-radius: 0.25rem |
rounded-md | border-radius: 0.375rem |
rounded-lg | border-radius: 0.5rem |
rounded-xl | border-radius: 0.75rem |
rounded-2xl | border-radius: 1rem |
rounded-3xl | border-radius: 1.5rem |
rounded-full | border-radius: 9999px |
p-4 | padding: 1rem |
p-6 | padding: 1.5rem |
p-8 | padding: 2rem |
px-4 | padding-left: 1rem; padding-right: 1rem |
py-2 | padding-top: 0.5rem; padding-bottom: 0.5rem |
gap-2 | gap: 0.5rem |
gap-4 | gap: 1rem |
gap-6 | gap: 1.5rem |
gap-8 | gap: 2rem |
gap-12 | gap: 3rem |
max-w-sm | max-width: 24rem |
max-w-md | max-width: 28rem |
max-w-lg | max-width: 32rem |
max-w-xl | max-width: 36rem |
max-w-2xl | max-width: 42rem |
max-w-4xl | max-width: 56rem |
max-w-6xl | max-width: 72rem |
max-w-7xl | max-width: 80rem |
shadow-sm | box-shadow: 0 1px 2px rgba(0,0,0,0.05) |
shadow | box-shadow: 0 1px 3px rgba(0,0,0,0.1) |
shadow-md | box-shadow: 0 4px 6px rgba(0,0,0,0.07) |
shadow-lg | box-shadow: 0 10px 15px rgba(0,0,0,0.1) |
shadow-xl | box-shadow: 0 20px 25px rgba(0,0,0,0.1) |
shadow-2xl | box-shadow: 0 25px 50px rgba(0,0,0,0.25) |
bg-white | background-color: #ffffff |
bg-black | background-color: #000000 |
bg-gray-50 | background-color: #f9fafb |
bg-gray-100 | background-color: #f3f4f6 |
bg-gray-900 | background-color: #111827 |
text-white | color: #ffffff |
text-gray-400 | color: #9ca3af |
text-gray-500 | color: #6b7280 |
text-gray-600 | color: #4b5563 |
text-gray-900 | color: #111827 |
border | border: 1px solid |
border-2 | border: 2px solid |
border-gray-200 | border-color: #e5e7eb |
border-gray-700 | border-color: #374151 |
transition | transition: all 0.15s ease |
duration-300 | transition-duration: 300ms |
duration-500 | transition-duration: 500ms |
ease-in-out | transition-timing-function: cubic-bezier(0.4,0,0.2,1) |
Other Libraries → Vanilla Equivalents
| Library | Vanilla Replacement |
|---|
| AOS (Animate on Scroll) | IntersectionObserver + CSS transitions |
| Lottie animations | CSS @keyframes approximation or static SVG |
| Swiper.js / Slick slider | Vanilla JS scrollLeft or CSS scroll snap |
| Locomotive Scroll | Native scroll-behavior: smooth + position: sticky |
| Typed.js | Vanilla JS typewriter loop |
| CountUp.js | Vanilla JS setInterval counter |
| Framer Motion | CSS transitions + IntersectionObserver |
| Three.js / WebGL | CSS 3D transforms for visual approximation |
| Bootstrap | Write only the specific CSS classes used |
Step 3 — Build the Clone
Create a single self-contained HTML file at /mnt/user-data/outputs/clone.html.
Always include this attribution comment at the very top:
Full file structure:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>[Site Name] - Clone</title>
<link href="https://fonts.googleapis.com/css2?family=...&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
<style>
:root {
--primary: #...;
--secondary: #...;
--accent: #...;
--bg: #...;
--text: #...;
--font-main: '...', sans-serif;
--font-heading: '...', sans-serif;
}
</style>
</head>
<body>
<script>
</script>
</body>
</html>
Quality requirements:
| Area | Requirement |
|---|
| Colors | Exact hex values from original |
| Fonts | Same Google Fonts or closest match |
| Layout | Pixel-accurate grid/flexbox |
| Spacing | Matching padding, margin, gap |
| Buttons | Same style, hover states, border-radius |
| Navigation | Functional with smooth scroll |
| Responsive | Mobile + tablet breakpoints |
| Images | Original CDN URLs or picsum.photos placeholders |
| Icons | Font Awesome or SVG inline |
| GSAP Animations | Converted to CSS + IntersectionObserver |
| Tailwind CSS | Converted to vanilla CSS values |
| Other libraries | Converted to vanilla JS equivalents |
Step 4 — Sections to Always Include
- Top Bar — announcements, social links
- Header/Navbar — logo, nav, CTA, hamburger
- Hero — headline, subtext, CTAs, background
- Features/Services — icon cards, grid
- About/Stats — counters, team, story
- Portfolio/Gallery — image grid with hover
- Testimonials — slider or cards
- Pricing — cards with highlighted plan
- Blog/News — article cards
- CTA Banner — email signup or contact
- Footer — links, socials, copyright
Only include sections that exist on the original.
Step 5 — JavaScript (Vanilla Only)
Step 6 — Responsive CSS
@media (max-width: 1024px) { }
@media (max-width: 768px) { }
@media (max-width: 480px) { }
SECTION CLONE MODE
When the user asks to clone only a specific section, follow this workflow:
Step 1 — Identify the Section
Parse the user's request for the section name:
- "Clone the hero section" → target: hero/banner area
- "Clone the navbar" → target: header/navigation
- "Clone the pricing section" → target: pricing cards
- "Clone the footer" → target: footer
- "Clone the testimonials" → target: reviews/testimonials
- "Clone the cards / features" → target: feature/service cards
Step 2 — Fetch & Isolate
web_fetch(url)
Identify and extract ONLY the HTML + CSS relevant to that section. Apply all the same GSAP → CSS and Tailwind → CSS conversion rules.
Step 3 — Build Section Output
Deliver a standalone, embeddable HTML snippet structured as a full HTML page for preview but clearly marked as a section component:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>[Site] — [Section Name] Section Clone</title>
<style>
</style>
</head>
<body>
[section HTML here]
<script>
</script>
</body>
</html>
Step 4 — Integration Note
Always include after delivering:
To embed in your project: Copy everything between [SECTION NAME] SECTION — START and [SECTION NAME] SECTION — END into your page. Add the <style> block to your <head> and the <script> before your closing </body> tag.
Handling Edge Cases
| Situation | Solution |
|---|
| GSAP animations | Convert to CSS transitions + IntersectionObserver |
| Compiled/purged Tailwind | Extract exact CSS values using conversion table above |
| JS-heavy SPA (React/Vue) | Clone rendered HTML structure, convert all styles manually |
| Login-required page | Ask user to describe or provide screenshot, then build |
| Very long page | Clone all sections; use placeholder content for repeating items |
| Custom fonts (not Google) | Use closest Google Font alternative |
| Video backgrounds | Use CSS gradient or static image background |
| Lottie / Rive animations | Replace with CSS keyframe approximation |
| WebGL / Three.js | Replace with CSS 3D transforms |
| Images returning 403 | Replace with https://picsum.photos/[w]/[h] |
| Bootstrap components | Write only the specific CSS used |
Design Fidelity Checklist
Before delivering, verify:
Example Usage
Full page:
Clone this website: https://stripe.com
Section only:
Clone just the pricing section of: https://linear.app
Clone only the navbar from: https://vercel.com
Clone the hero section of: https://framer.com
Clone the testimonials from: https://webflow.com
Claude does:
web_fetch(url) → analyze structure + detect libraries
- Identify mode (full page or section)
- Convert GSAP → CSS, Tailwind → vanilla CSS, libraries → vanilla JS
- Build complete self-contained file
- Save to
/mnt/user-data/outputs/clone.html
- Present file with summary of libraries converted
Tips for High-Quality Clones
- Always use CSS custom properties (variables) for all colors
- Comment each section clearly:
/* ===== HERO SECTION ===== */
- When replacing GSAP — match the easing, duration, and direction visually
- When converting Tailwind — group utility classes into meaningful CSS class names
- Use
object-fit: cover for all images
- Test all breakpoints: 1440px, 1024px, 768px, 480px, 375px
- For section clones — scope all CSS class names to avoid conflicts when embedding
Website Cloner Skill v2.0 · © 2026 Sami Bajwa · samioutic.com
Usage requires: ⭐ Star · 👤 Follow · 📛 Credit — See LICENSE