Дизайн

github/web-design-reviewer

Позволяет автоматически проверять дизайн веб-сайтов, выявлять проблемы с версткой, адаптивностью, доступностью и визуальной консистентностью, а также исправлять их напрямую в исходном коде. Полезен для улучшения качества интерфейса и быстрого устранения ошибок в UI на разных устройствах.

Оцените навык первым

SKILL.md

Перевод инструкции, которую получает агент при подключении навыка. Агент всегда использует оригинал.

Web Design Reviewer

Этот навык позволяет визуально инспектировать и проверять качество дизайна сайта, выявлять и исправлять проблемы на уровне исходного кода.

Область применения

  • Статические сайты (HTML/CSS/JS)
  • SPA-фреймворки, такие как React / Vue / Angular / Svelte
  • Фреймворки полного стека, такие как Next.js / Nuxt / SvelteKit
  • CMS-платформы, такие как WordPress / Drupal
  • Любые другие веб-приложения

Требования

Обязательные

  1. Целевой сайт должен быть запущен

    • Локальный сервер разработки (например, http://localhost:3000)
    • Стейджинг-среда
    • Продакшен-среда (только для проверок без изменений)
  2. Должна быть доступна автоматизация браузера

    • Захват скриншотов
    • Навигация по страницам
    • Получение информации о DOM
  3. Доступ к исходному коду (при внесении исправлений)

    • Проект должен находиться в рабочей области

Обзор рабочего процесса

flowchart TD
    A[Шаг 1: Сбор информации] --> B[Шаг 2: Визуальная инспекция]
    B --> C[Шаг 3: Исправление проблем]
    C --> D[Шаг 4: Повторная проверка]
    D --> E{Остались проблемы?}
    E -->|Да| B
    E -->|Нет| F[Отчёт о завершении]

Шаг 1: Фаза сбора информации

1.1 Подтверждение URL

Если URL не указан, спросите пользователя:

Пожалуйста, укажите URL сайта для проверки (например, http://localhost:3000)

1.2 Понимание структуры проекта

При внесении исправлений соберите следующую информацию:

Пункт Пример вопроса
Фреймворк Используете ли вы React / Vue / Next.js и т.п.?
Метод стилизации CSS / SCSS / Tailwind / CSS-in-JS и т.п.
Расположение исходников Где находятся файлы стилей и компоненты?
Область проверки Только конкретные страницы или весь сайт?

1.3 Автоматическое определение проекта

Попытайтесь автоматически определить по файлам в рабочей области:

Цели обнаружения:
├── package.json     → Фреймворк и зависимости
├── tsconfig.json    → Использование TypeScript
├── tailwind.config  → Tailwind CSS
├── next.config      → Next.js
├── vite.config      → Vite
├── nuxt.config      → Nuxt
└── src/ или app/    → Каталог исходников

1.4 Определение метода стилизации

Метод Обнаружение Цель редактирования
Чистый CSS Файлы *.css Глобальный CSS или CSS компонентов
SCSS/Sass Файлы *.scss, *.sass SCSS-файлы
CSS Modules Файлы *.module.css Модульные CSS-файлы
Tailwind CSS Файл tailwind.config.* className в компонентах
styled-components styled. в коде JS/TS файлы
Emotion Импорты @emotion/ JS/TS файлы
CSS-in-JS (другие) Инлайновые стили JS/TS файлы

Шаг 2: Фаза визуальной инспекции

2.1 Обход страниц

  1. Перейти по указанному URL
  2. Сделать скриншоты
  3. Получить структуру/снимок DOM (если возможно)
  4. Если есть дополнительные страницы, пройти по навигации

2.2 Проверяемые элементы

Работайте с references/visual-checklist.md во время инспекции и повторной проверки после исправлений.

Проблемы с версткой

Проблема Описание Важность
Выход за пределы элемента Контент выходит за пределы родительского элемента или окна Высокая
Перекрытие элементов Нежелательное перекрытие элементов Высокая
Проблемы с выравниванием Проблемы с сеткой или flex-выравниванием Средняя
Несогласованность отступов Несоответствие padding/margin Средняя
Обрезка текста Длинный текст отображается некорректно Средняя

Проблемы с адаптивностью

Проблема Описание Важность
Неадаптивный дизайн Верстка ломается на маленьких экранах Высокая
Проблемы с брейкпоинтами Неестественные переходы при изменении размера экрана Средняя
Размер элементов для касания Кнопки слишком малы на мобильных устройствах Средняя

Проблемы доступности

Проблема Описание Важность
Недостаточный контраст Низкое соотношение контраста текста и фона Высокая
Отсутствие состояния фокуса Невозможно определить состояние при навигации с клавиатуры Высокая
Отсутствует alt-текст Нет альтернативного текста для изображений Средняя

Визуальная согласованность

Проблема Описание Важность
Несогласованность шрифтов Смешение разных шрифтов Средняя
Несогласованность цветов Несоблюдение брендовых цветов Средняя
Несогласованность отступов Нерегулярные отступы между похожими элементами Низкая

2.3 Тестирование вьюпорта (адаптивность)

Проверить на следующих размерах экрана:

Название Ширина Представительное устройство
Мобильный 375px iPhone SE/12 mini
Планшет 768px iPad
Десктоп 1280px Стандартный ПК
Широкий 1920px Большой дисплей

Шаг 3: Фаза исправления проблем

3.1 Приоритизация проблем

block-beta
    columns 1
    block:priority["Матрица приоритетов"]
        P1["P1: Исправить немедленно\n(Проблемы с версткой, влияющие на функциональность)"]
        P2["P2: Исправить далее\n(Визуальные проблемы, ухудшающие UX)"]
        P3["P3: Исправить при возможности\n(Незначительные визуальные несоответствия)"]
    end

3.2 Определение исходных файлов

Определите исходные файлы по проблемным элементам:

  1. Поиск по селекторам

    • Поиск по классу или ID в кодовой базе
    • Поиск определений стилей с помощью grep_search
  2. Поиск по компонентам

    • Определение компонентов по тексту или структуре элемента
    • Поиск связанных файлов с помощью semantic_search
  3. Фильтрация по шаблонам файлов

    Файлы стилей: src/**/*.css, styles/**/*
    Компоненты: src/components/**/*
    Страницы: src/pages/**, app/**
    

3.3 Применение исправлений

Руководство по исправлениям для конкретных фреймворков

См. references/framework-fixes.md для деталей.

Принципы исправлений

  1. Минимальные изменения: Вносить только необходимые изменения для решения проблемы
  2. Соблюдение существующих паттернов: Следовать стилю кода проекта
  3. Избегать нарушений: Не влиять на другие области
  4. Добавлять комментарии: Объяснять причины исправлений там, где это уместно

Шаг 4: Фаза повторной проверки

4.1 Подтверждение после исправлений

  1. Перезагрузить браузер (или дождаться HMR сервера разработки)
  2. Сделать скриншоты исправленных участков
  3. Сравнить до и после

4.2 Регрессионное тестирование

  • Проверить, что исправления не повлияли на другие области
  • Подтвердить, что адаптивность не нарушена

4.3 Решение о повторении

flowchart TD
    A{Остались проблемы?}
    A -->|Да| B[Вернуться к Шагу 2]
    A -->|Нет| C[Перейти к отчёту о завершении]

Лимит итераций: Если для одной проблемы требуется более 3 попыток исправления, проконсультируйтесь с пользователем


Формат вывода

Отчёт о результатах проверки

# Результаты проверки дизайна сайта

## Итоги

| Пункт | Значение |
|-------|----------|
| Целевой URL | {URL} |
| Фреймворк | {Обнаруженный фреймворк} |
| Стилизация | {CSS / Tailwind / и т.п.} |
| Проверенные вьюпорты | Десктоп, Мобильный |
| Обнаружено проблем | {N} |
| Исправлено проблем | {M} |

## Обнаруженные проблемы

### [P1] {Название проблемы}

- **Страница**: {Путь страницы}
- **Элемент**: {Селектор или описание}
- **Проблема**: {Подробное описание}
- **Исправленный файл**: `{Путь к файлу}`
- **Детали исправления**: {Описание изменений}
- **Скриншоты**: До/После

### [P2] {Название проблемы}
...

## Неисправленные проблемы (если есть)

### {Название проблемы}
- **Причина**: {Почему не было исправлено/не удалось исправить}
- **Рекомендуемые действия**: {Рекомендации для пользователя}

## Рекомендации

- {Предложения по дальнейшему улучшению}

Необходимые возможности

Возможность Описание Обязательно
Навигация по страницам Доступ к URL, переходы по страницам
Захват скриншотов Снимки страниц
Анализ изображений Обнаружение визуальных проблем
Получение DOM Получение структуры страницы Рекомендуется
Чтение/запись файлов Чтение и редактирование исходного кода Обязательно для исправлений
Поиск по коду Поиск в проекте Обязательно для исправлений

Референсная реализация

Реализация с Playwright MCP

Playwright MCP рекомендуется как референсная реализация для этого навыка.

Возможность Инструмент Playwright MCP Назначение
Навигация browser_navigate Доступ к URL
Снимок browser_snapshot Получение структуры DOM
Скриншот browser_take_screenshot Изображения для визуальной инспекции
Клик browser_click Взаимодействие с элементами
Изменение размера browser_resize Тестирование адаптивности
Консоль browser_console_messages Обнаружение ошибок JS

Пример конфигурации (MCP Server)

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest", "--caps=vision"]
    }
  }
}

Другие совместимые инструменты автоматизации браузера

Инструмент Особенности
Selenium Широкая поддержка браузеров, многоязычная поддержка
Puppeteer Ориентирован на Chrome/Chromium, Node.js
Cypress Легкая интеграция с E2E тестированием
WebDriver BiDi Стандартизованный протокол следующего поколения

Тот же рабочий процесс можно реализовать с этими инструментами. Главное — наличие необходимых возможностей (навигация, скриншот, получение DOM).


Лучшие практики

РЕКОМЕНДУЕТСЯ (DO)

  • ✅ Всегда сохранять скриншоты перед исправлениями
  • ✅ Исправлять по одной проблеме и проверять каждую
  • ✅ Следовать стилю кода проекта
  • ✅ Согласовывать с пользователем перед крупными изменениями
  • ✅ Тщательно документировать детали исправлений

НЕ РЕКОМЕНДУЕТСЯ (DON'T)

  • ❌ Масштабный рефакторинг без согласования
  • ❌ Игнорирование дизайн-систем или брендовых гайдлайнов
  • ❌ Исправления, игнорирующие производительность
  • ❌ Исправление нескольких проблем одновременно (сложно проверить)

Устранение неполадок

Проблема: Файлы стилей не найдены

  1. Проверьте зависимости в package.json
  2. Учтите возможность CSS-in-JS
  3. Учтите CSS, генерируемый во время сборки
  4. Спросите пользователя о методе стилизации

Проблема: Исправления не отображаются

  1. Проверьте работу HMR сервера разработки
  2. Очистите кэш браузера
  3. Пересоберите проект, если требуется сборка
  4. Проверьте проблемы с приоритетом CSS

Проблема: Исправления влияют на другие области

  1. Откатите изменения
  2. Используйте более специфичные селекторы
  3. Рассмотрите использование CSS Modules или scoped styles
  4. Согласуйте с пользователем область влияния изменений