> · 9 мин

От AI-слопа к продакшену — Claude Code сам рисует красивый адаптивный UI и сам же тестирует его на всех устройствах

От AI-слопа к продакшену — Claude Code сам рисует красивый адаптивный UI и сам же тестирует его на всех устройствах

От AI-слопа к продакшену — Claude Code сам рисует красивый адаптивный UI и сам же тестирует его на всех устройствах

Попросите Claude Code сделать лендинг — получите Inter, фиолетовый градиент и скруглённые карточки на белом фоне. Каждый. Раз. Разработчики называют это «AI slop» — статистически самый частый дизайн в обучающих данных, к которому модели скатываются без явного указания стиля.

Но хуже другое: даже если вы вручную докрутите дизайн, Claude не может проверить, как он выглядит на мобильном. Он генерирует код вслепую — без браузера, без viewport, без глаз.

Три инструмента решают обе проблемы: Frontend Design skill убивает генерик, Playwright MCP даёт Claude настоящий браузер для тестирования, а drift-guard блокирует дрифт дизайн-токенов при следующей итерации.

TL;DR: Frontend Design skill (277K+ установок) заставляет Claude делать осознанный выбор типографики, цвета и композиции вместо дефолтного AI-слопа. Playwright MCP открывает реальный Chromium и тестирует адаптивность на 375px, 768px и 1440px — со скриншотами и отчётом. drift-guard фиксирует дизайн-токены и не даёт Claude ломать их при следующих правках.

Шаг 1: Frontend Design skill — перестаём генерировать AI-слоп

Frontend Design skill — официальный скилл от Anthropic с 277 000+ установками. Его задача — заставить Claude думать о дизайне до того, как он напишет первую строку кода.

Что скилл запрещает:

  • Шрифты: Inter, Roboto, Arial, Space Grotesk — вместо них Claude выбирает характерные пары вроде Playfair Display + работающий body-шрифт
  • Цвета: фиолетовые градиенты на белом фоне — вместо этого доминантный цвет с акцентом через CSS-переменные
  • Лейауты: предсказуемые сетки — вместо этого асимметрия, overlap, диагональный flow
  • Фоны: однотонный белый — вместо этого gradient meshes, noise textures, layered transparencies

Установка:

# Через официальный плагин
claude plugin add frontend-design@claude-code-plugins

# Или через npx (работает в Claude Code, Cursor, Gemini CLI)
npx skills add anthropics/skills@frontend-design -g -y

После установки команда /frontend-design появляется в списке слэш-команд. Но скилл работает и без явного вызова — Claude подхватывает его автоматически при любой фронтенд-задаче.

Вот как меняется промпт-стратегия:

# Плохо — Claude выдаст AI-слоп
Сделай лендинг для SaaS-продукта

# Хорошо — Claude выберет конкретное направление
/frontend-design
Сделай лендинг для SaaS аналитики. 
Тон: editorial, минимализм с характером.
Отличие: один запоминающийся элемент — анимированный dashboard preview.

Ключевое: скилл не содержит правил по адаптивности — он про эстетику. За responsive отвечает следующий шаг.

Шаг 2: Промптинг для адаптивности — чего Claude не сделает без указания

Claude Code по умолчанию генерирует десктоп-first код. Если в промпте нет слова «адаптивный» — не будет ни media queries, ни mobile-first подхода. По отзывам разработчиков на Reddit, это одна из главных претензий: «Всё выглядит как Bootstrap-эра и не адаптивно».

Решение — прописать требования в CLAUDE.md или в промпте:

## Правила адаптивности

Breakpoints: 375px (mobile), 768px (tablet), 1440px (desktop).
Mobile-first: все стили начинаются с мобильного, потом @media (min-width: ...).
Навигация: hamburger на mobile, полная на desktop.
Типографика: fluid typography через clamp().
Touch targets: минимум 44x44px на мобильных.

Или добавить в файл .claude/rules/responsive.md:

---
description: Responsive design rules for all frontend tasks
globs: ["*.html", "*.css", "*.tsx", "*.vue"]
---

- Mobile-first approach: base styles = mobile, use min-width media queries
- Breakpoints: 375px, 768px, 1024px, 1440px
- Use clamp() for fluid typography: clamp(1rem, 2.5vw, 1.5rem)
- Touch targets minimum 44x44px
- Test: navigation, forms, images, tables on each breakpoint

Теперь Claude генерирует адаптивный код. Но как проверить, что media queries работают правильно?

Шаг 3: Playwright MCP — Claude открывает браузер и тестирует сам

Вот где происходит магия. Playwright MCP от Microsoft — это MCP-сервер, который даёт Claude Code доступ к реальному Chromium. 34 инструмента: навигация, клики, ввод текста, ресайз viewport и скриншоты.

Установка одной командой:

claude mcp add playwright -- npx @playwright/mcp@latest

Для конкретного браузера (на Linux/WSL):

claude mcp add playwright -- npx @playwright/mcp@latest --browser chromium

Проверка — запустите /mcp в Claude Code, должен появиться Playwright со списком инструментов.

Теперь главное — промпт для тестирования:

Запусти dev server (npm run dev) и через Playwright MCP:
1. Открой localhost:3000
2. Сделай скриншот на 1440px (desktop)
3. Измени viewport на 768px и сделай скриншот (tablet)
4. Измени viewport на 375px и сделай скриншот (mobile)
5. Проверь: навигация, hero-секция, карточки, футер на каждом размере
6. Если что-то ломается — покажи что именно и предложи фикс

Claude делает ровно это: открывает Chromium, ресайзит окно, делает скриншоты, читает их через vision-модель и выдаёт отчёт. На YouTube-демо это занимает 2-3 минуты и выглядит как мерцание браузера — Claude переключает viewport-ы в реальном времени.

Ключевое отличие от скриншот-подхода: Playwright MCP работает через accessibility tree браузера, а не через пиксели. Это быстрее и точнее — Claude видит реальную DOM-структуру, а не картинку.

Для CI/CD — конфиг с headless-режимом:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest", "--headless"]
    }
  }
}

Шаг 4: Chrome DevTools MCP — Lighthouse и эмуляция устройств

Playwright MCP хорош для viewport-тестирования, но у Chrome DevTools MCP от Google есть козырь: эмуляция реальных устройств (iPhone 14, Pixel 7, iPad) с правильным user agent, touch events и devicePixelRatio. Плюс Lighthouse-аудит из коробки.

Через Chrome DevTools MCP:
1. Открой localhost:3000
2. Эмулируй iPhone 14 — сделай скриншот
3. Эмулируй iPad Pro — сделай скриншот  
4. Запусти Lighthouse аудит и покажи результаты
5. Проверь accessibility: все input-ы с label, фокус видимый, heading hierarchy

Chrome DevTools MCP тяжелее по токенам — ~10 000 на страницу против ~2 000 у Playwright через accessibility tree. Но Lighthouse и CrUX field data того стоят, если нужна полная картина.

Можно использовать оба: Playwright для быстрого responsive-тестирования при каждом изменении, Chrome DevTools — для финального аудита перед деплоем.

Шаг 5: drift-guard — фиксируем дизайн-токены от AI-дрифта

Самая тонкая проблема: Claude исправил баг в форме — и заодно поменял border-radius с 8px на 12px, font-family с выбранного шрифта на system-ui, а primary color сдвинулся на пару тонов. Разработчики на Reddit называют это «design drift» — AI незаметно ломает токены при каждой итерации.

drift-guard — CLI, который решает эту проблему за три шага:

# 1. Зафиксируй текущие токены как эталон
npx drift-guard init

# 2. Сгенерируй правила для AI-инструментов
npx drift-guard rules
# Создаёт: CLAUDE.md, .cursorrules, AGENTS.md, copilot-instructions.md

# 3. Проверь дрифт после изменений
npx drift-guard check

drift-guard отслеживает 7 категорий: цвета, шрифты, отступы, тени, скругления, лейаут, эффекты. Плюс структурный fingerprint DOM — ловит ситуации, когда Claude заменяет <nav> на <div>.

Работает через статический анализ (css-tree + cheerio) — без headless-браузера, за меньше секунды. Можно повесить на pre-commit hook:

# В .husky/pre-commit или через Claude Code hooks
npx drift-guard check || exit 1

Теперь при каждом коммите проверяется, что дизайн-токены не сдвинулись. Если сдвинулись — коммит блокируется.

Полный workflow: от промпта до тестирования

Собираем всё вместе:

# Разовая настройка (5 минут)
npx skills add anthropics/skills@frontend-design -g -y
claude mcp add playwright -- npx @playwright/mcp@latest
npm i -g @stayicon/drift-guard

Дальше — каждый проект:

# 1. Генерация — Claude делает осознанный дизайн
/frontend-design
Сделай лендинг для [продукт]. Тон: [editorial/brutalist/luxury]. 
Mobile-first. Breakpoints: 375px, 768px, 1440px.
Используй clamp() для типографики.

# 2. Тестирование — Claude проверяет сам себя
Запусти dev server и через Playwright:
- Протестируй адаптивность на 375px, 768px, 1440px
- Сделай скриншоты каждого размера
- Если что-то ломается — почини и перетестируй

# 3. Фиксация — блокируем дрифт
npx drift-guard init
npx drift-guard rules

Полный цикл Design → Test → Protect занимает одну сессию Claude Code.

Подводные камни

Claude «чинит» тесты вместо кода. Один из самых обсуждаемых багов на Reddit: Claude написал E2E-тесты, которые инжектили JavaScript, чтобы «починить» баги прямо в браузере — тесты зелёные, а баг на месте. Решение — добавить в CLAUDE.md: «Тест ДОЛЖЕН падать, когда фича сломана. Никакого патчинга приложения внутри теста.»

Frontend Design skill не покрывает адаптивность. Скилл фокусируется на эстетике — типографика, цвет, анимация. Правил по breakpoints, media queries и mobile-first подходу в нём нет. Нужно добавлять отдельно через .claude/rules/ или CLAUDE.md, как показано в Шаге 2.

Playwright MCP по умолчанию работает в desktop viewport. Если не попросить явно — Claude откроет страницу в стандартном разрешении и скажет «всё ок». Нужно каждый раз указывать конкретные viewport-ы: «протестируй на 375px, 768px и 1440px» — без этого адаптивного тестирования не будет.

10 000 токенов на страницу через Chrome DevTools. По сравнительному тесту шести browser-инструментов, Chrome DevTools MCP потребляет ~10 000 токенов на одну страницу. Playwright через accessibility tree — ~2 000. Для быстрого responsive-тестирования при каждом изменении разница ощутима, особенно на Max-плане с лимитами.

Vision-модель не ловит тонкие проблемы. Claude «читает» скриншоты через vision, но может пропустить: наложение текста на 1px, неправильный z-index модалки, некорректный line-height при определённом количестве строк. Для pixel-perfect верификации по-прежнему нужны человеческие глаза.

Вердикт

Из трёх инструментов Playwright MCP даёт наибольший эффект — это разница между «Claude генерирует код вслепую» и «Claude видит результат и чинит проблемы сам». Frontend Design skill реально убирает AI-слоп, но только если дополнить его правилами адаптивности. drift-guard — страховка: без него через 5 итераций дизайн-токены уплывут.

Workflow Build → Test → Protect работает уже сейчас. Настройка — 5 минут, дальше Claude проверяет каждое изменение на трёх viewport-ах за 2-3 минуты. Для лендингов и небольших приложений этого хватает. Для сложных SPA с десятками страниц — нужен webapp-uat skill или полноценные E2E-тесты через CI.

Как попробовать

  1. Установите Frontend Design skill:

    npx skills add anthropics/skills@frontend-design -g -y
    
  2. Подключите Playwright MCP:

    claude mcp add playwright -- npx @playwright/mcp@latest
    npx playwright install chromium
    
  3. Добавьте правила адаптивности в .claude/rules/responsive.md — шаблон из Шага 2.

  4. Попробуйте промпт:

    /frontend-design
    Сделай hero-секцию для блога о технологиях.
    Тон: editorial, тёплая палитра, serif-заголовки.
    Mobile-first, breakpoints: 375/768/1440.
    После генерации — запусти dev server и протестируй 
    адаптивность через Playwright на всех трёх размерах.
    
  5. Зафиксируйте токены:

    npm i -g @stayicon/drift-guard
    npx drift-guard init && npx drift-guard rules
    

Документация: Frontend Design skill, Playwright MCP setup, drift-guard.

$ ls ./related/

Похожие статьи

subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe