SSkilltecabyclaudinhocode
Enviar skill
← Voltar para o catálogo

3d-website-builder

Design e Frontend

Build a premium MVP website with a hero scroll-driven 3D video animation in one guided pass. Conducts a 5-question interview (brand name, logo, colors, video path, target action), generates clean HTML/CSS/JS scaffold, embeds the user's pre-generated 7-second video bound to mouse scroll, and produces a polished landing page ready for deploy. Trigger when the user has a Kling 3.0 video file ready an

1estrelas
Ver no GitHub ↗Autor: sergeyramas

3D Website Builder

Собирает премиальный MVP-сайт с hero-секцией, где scroll-driven видео-анимация управляется прокруткой мыши. Источник паттерна — видео Джека («$10K / $12K сайты»). После работы скилла сайт готов к деплою через ship-to-vercel.

Когда срабатывать

  • Пользователь говорит «собери MVP», «build the site», «привяжи видео к скроллу», «scroll stop builder», «hero с этим видео»
  • На входе УЖЕ есть готовое 7-секундное .mp4 от Kling 3.0 (например, после [[scroll-stop-prompter]])
  • После [[website-intelligence]] когда Build Brief approved и есть видео-файл

Когда НЕ срабатывать

  • Видео ещё не сгенерировано — отправь в [[scroll-stop-prompter]] сначала
  • Нужен сложный многостраничный сайт — это для MVP, расширяй позже
  • Пользователь просит фронтенд-фреймворк — этот скилл выдаёт vanilla HTML/CSS/JS (как в видео Джека). Для Next.js/Vite — пусть пользователь скажет явно

Workflow

Шаг 1. Интервью (5 вопросов)

Задавай по одному. Не спрашивай больше 5.

  1. Название компании / бренд (для <title> и hero)
  2. Логотип (путь к файлу или URL — если нет, сгенерируем плейсхолдер с инициалами)
  3. Цвета бренда (3 hex'а: primary, accent, background — если из Firecrawl-отчёта, попроси вставить)
  4. Путь к 7-секундному видео (./assets/hero.mp4 или абсолютный путь)
  5. Целевое действие (что должна делать кнопка hero: «Get a quote», «Order online», «Book demo», …)

Опционально (только если непонятно из контекста):

  • Тон голоса (приближённо: friendly / professional / playful / authoritative)
  • Headline (если есть готовый — иначе сгенерим 3 варианта по AIDA)

Шаг 2. Каркас проекта

Создай в текущей рабочей директории:

project/
├── index.html
├── css/style.css
├── js/scroll.js
├── assets/
│   ├── hero.mp4         (копия видео пользователя)
│   └── logo.svg / .png  (логотип)
├── README.md            (инструкция по деплою)
└── .gitignore

Важно: имя папки и пути — строго без кириллицы (Claude Code ломается).

Шаг 3. HTML

Базовый шаблон index.html (минимум):

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>{Brand} — {tagline}</title>
  <meta name="description" content="...">
  <meta property="og:title" content="...">
  <meta property="og:description" content="...">
  <meta property="og:image" content="/assets/og.png">
  <link rel="canonical" href="https://...">
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
  <header class="nav">
    <a href="/" class="logo"><img src="/assets/logo.svg" alt="{Brand}"></a>
    <nav>
      <a href="#about">About</a>
      <a href="#services">Services</a>
      <a href="#contact">Contact</a>
    </nav>
    <a href="#cta" class="cta-btn">{CTA}</a>
  </header>

  <section class="hero">
    <video class="hero-video" id="heroVideo" muted playsinline preload="auto">
      <source src="/assets/hero.mp4" type="video/mp4">
    </video>
    <div class="hero-content">
      <h1>{Headline}</h1>
      <p class="subhead">{Subhead}</p>
      <a href="#cta" class="cta-btn primary">{CTA}</a>
    </div>
  </section>

  <!-- Дополнительные секции: about, services, social proof, contact -->

  <script src="js/scroll.js"></script>
</body>
</html>

Single H1 на странице. Семантика: <header>, <section>, <nav>, <main> где уместно.

Шаг 4. Scroll-bound video (КЛЮЧЕВОЕ)

js/scroll.js — привязать currentTime видео к scrollY страницы:

const video = document.getElementById('heroVideo');
const hero = document.querySelector('.hero');

video.addEventListener('loadedmetadata', () => {
  const heroHeight = hero.offsetHeight;
  const videoDuration = video.duration; // 7 секунд

  // Делаем hero высотой ~3 экрана, чтобы пользователь успел доскроллить через всё видео
  hero.style.height = `${window.innerHeight * 3}px`;

  function updateVideoTime() {
    const rect = hero.getBoundingClientRect();
    const scrollProgress = Math.max(0, Math.min(1, -rect.top / (hero.offsetHeight - window.innerHeight)));
    video.currentTime = videoDuration * scrollProgress;
    requestAnimationFrame(updateVideoTime);
  }

  updateVideoTime();
});

Почему так: видео не играет автоматически — currentTime ставится вручную из scrollY. Это даёт scrubbing-эффект «как у Apple».

Mobile fallback: на prefers-reduced-motion: reduce или мобильных (≤768px) — показать первый кадр как статичную картинку (через poster или canvas-снимок), не привязывать к скроллу.

Шаг 5. CSS

css/style.css минимум:

  • Кастом-проперти под цвета пользователя: --primary, --accent, --bg
  • Hero: position: relative, video в position: sticky; top: 0; width: 100vw; height: 100vh; object-fit: cover
  • Верхний блок hero белый (если white background в видео) — для бесшовности
  • Контент hero: position: absolute поверх видео или display: grid рядом
  • Mobile: @media (max-width: 768px) — упростить до статичной hero
  • prefers-reduced-motion: reduce → отключить scroll-binding

Шаг 6. SEO-минимум на старте

Не запускай полный аудит — для этого есть [[seo-optimizer]]. Но сразу пропиши:

  • Уникальный <title> (≤60 chars)
  • <meta name="description"> (≤160 chars)
  • Open Graph (og:title, og:description, og:image)
  • Twitter Cards (twitter:card, twitter:title)
  • Canonical URL
  • <html lang> правильный
  • Alt на все <img>
  • Schema.org JSON-LD (Organization или LocalBusiness)

Шаг 7. README + деплой

README.md:

# {Brand}

## Local
Open index.html in browser, or run `python -m http.server 8000`.

## Deploy
1. Push to GitHub: `gh repo create {brand}-site --private --source=. --push`
2. Deploy to Vercel: import repo at vercel.com/new

Or use the `ship-to-vercel` skill for a one-shot deploy.

После генерации скажи пользователю:

Готово. Открой index.html в браузере для проверки. Когда нравится — вызови /ship-to-vercel для деплоя или /seo-optimizer для аудита.

Что НЕ делать

  • ❌ Не использовать React/Vue/Svelte без явного запроса — vanilla JS делает это лучше для одной страницы
  • ❌ Не подключать GSAP, если не просили — requestAnimationFrame справляется с scroll-binding
  • ❌ Не автозапускать видео (autoplay) — scrubbing завязан на currentTime
  • ❌ Не забывать muted playsinline на <video> — без них iOS не даёт подгрузить видео
  • ❌ Не использовать кириллические пути — Claude Code и/или Vercel ломаются
  • ❌ Не пропускать mobile fallback — на телефоне scroll-binding часто не работает

Output style

Финальное сообщение:

✅ MVP сайт готов в ./
- HTML/CSS/JS: в корне и подпапках
- Видео: assets/hero.mp4
- README: инструкция по деплою

Что дальше:
- Локальная проверка: открой index.html
- SEO-аудит: /seo-optimizer
- Деплой: /ship-to-vercel

Не вываливать содержимое файлов — пользователь увидит их в IDE.

Como adicionar

/plugin marketplace add sergeyramas/3d-website-builder-skill

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Comentários · Nenhum comentário

Entre para comentar. Entrar

  • Ainda não há comentários. Seja o primeiro.