Handoff умер: теперь дизайн и код живут в одном пространстве. MCP меняет правила
Основной чат
Чат для вайбкодеров: новости, гайды, поиск исполнителей, маркетплейс и разбор реальных кейсов.
Откройте любой проект двухлетней давности и посмотрите, как там устроена передача дизайна в разработку. Скорее всего, это Figma с пометками «final-v3», ссылки в Jira, отдельная страница «for dev», ручные экспорты иконок, переписка в Slack «а тут какой отступ?». Handoff как ритуал: дизайнер закончил, разработчик начал, между ними — стена из спецификаций.
Эта модель доживает последние месяцы. Не потому что кто-то решил так на конференции, а потому что у неё перестали сходиться экономика и скорость. Любая правка токена цвета превращается в три тикета. Любой новый компонент рождается дважды — в Figma и в коде, и почти всегда по-разному. А когда сверху приходит AI-агент, который умеет писать фронтенд по описанию, выясняется, что описание-то у нас живёт в макете, до которого агент не дотягивается.
MCP (Model Context Protocol) — это та штука, которая закрывает разрыв. Не «ещё один плагин для экспорта», а способ дать модели и IDE прямой структурированный доступ к источнику дизайна: компонентам, токенам, состояниям, связям. Дизайн перестаёт быть картинкой и становится данными, которые код может читать сам.
Почему handoff больше не работает
Старая схема исходила из того, что дизайнер и разработчик — два разных человека с разными инструментами, и им нужен переводчик в виде спецификации. Сейчас это допущение ломается с трёх сторон одновременно.
- Компонентные системы стали настолько большими, что вручную поддерживать соответствие Figma ↔ код физически невозможно. Любой дрейф множится.
- AI-агенты в IDE генерируют интерфейсы быстрее, чем дизайнер успевает их нарисовать. Если у агента нет доступа к дизайн-системе, он придумывает свою — и в продукте появляется третий набор кнопок.
- Продуктовые циклы короче. Никто не готов тратить день на «сверку отступов», когда фича должна уехать к пятнице.
Симптомы того, что handoff у вас уже мёртв, но вы его ещё хороните
- Разработчики не открывают Figma — смотрят скриншоты в Linear.
- В коде живут «почти такие же» компоненты, которых нет в дизайн-системе.
- Токены цвета и типографики синхронизируются вручную раз в квартал.
- На ревью PR дизайнер ловит расхождения, которые проще исправить в коде, чем в макете.
- AI-ассистент в IDE генерирует кнопки, которые визуально не совпадают ни с чем.
Если узнали два пункта — это не «надо подтянуть процессы». Это сигнал, что модель передачи устарела.
Что меняет MCP на практике
MCP — это протокол, через который инструмент (Figma, дизайн-система, Storybook, репозиторий токенов) отдаёт структурированный контекст модели или редактору. Для дизайнера это значит простую вещь: ваш макет перестаёт быть финальной точкой и становится живым источником, к которому обращается код.
Что становится возможным
- Агент в IDE при генерации формы сам подтягивает компоненты из вашей дизайн-системы, а не выдумывает свои.
- Изменение токена в одном месте прорастает в код без ручного экспорта.
- Code review может ссылаться на конкретный компонент макета, а не на скриншот.
- Новый разработчик не «изучает Figma», а получает контекст системы через тот же интерфейс, что и его AI-ассистент.
Чего MCP не делает
Это важно проговорить до того, как команда побежит «внедрять MCP».
- Не заменяет дизайн-систему. Если у вас в Figma бардак — MCP отдаст бардак модели, только быстрее.
- Не отменяет дизайнера. Решения о структуре, иерархии, поведении всё ещё принимает человек.
- Не делает код автоматически качественным. Агент с доступом к токенам всё ещё может собрать неудобный интерфейс.
С чего начать переход: первый честный аудит
Прежде чем подключать что-либо, ответьте на несколько вопросов о текущем состоянии. Это занимает час и экономит месяцы.
Чеклист готовности к жизни без handoff
- Есть ли единый источник токенов (цвет, типографика, отступы), который синхронизирован между Figma и кодом?
- Совпадают ли названия компонентов в макете и в репозитории? Хотя бы на 80%?
- Покрыта ли дизайн-система состояниями (hover, disabled, loading, error), а не только default?
- Знают ли разработчики, где в коде лежит компонент, соответствующий конкретному фрейму?
- Есть ли человек, который отвечает за расхождения между макетом и продакшеном?
Если на половину вопросов ответ «нет» или «не уверен» — внедрять MCP рано. Сначала наводится порядок в системе, потом подключается протокол. Иначе вы автоматизируете хаос.
Вопросы для ревью процесса с командой
- Где сейчас живёт «правда» о компоненте — в Figma, в Storybook, в коде?
- Что происходит, когда они расходятся? Кто принимает решение?
- Сколько времени уходит на сверку макета и продакшена на типичной фиче?
- Если завтра убрать страницу «for dev» — что сломается?
Короткий итог сегмента: handoff умирает не потому что появился модный протокол, а потому что старая модель не выдерживает текущей скорости и присутствия AI. MCP — это способ перестроить отношения дизайна и кода так, чтобы они читали один источник. Но работает он только поверх дисциплинированной системы, не вместо неё.
Как выглядит рабочий день дизайнера, когда handoff больше нет
Самое неочевидное в переходе — меняется не инструмент, а ритм. Раньше дизайнер закрывал макет, ставил статус Ready for dev и переключался на следующую задачу. Теперь макет не закрывается: он остаётся подключённым к коду, и любое прикосновение к нему — это уже маленький релиз. Это требует другой дисциплины, не другого софта.
Новый цикл: от фрейма до продакшена
Прикидочный сценарий, как фича проходит через команду, в которой код и дизайн читают один источник:
- Дизайнер собирает экран из компонентов системы. Не «рисует кнопку», а кладёт ту, что уже есть. Если нужной нет — это отдельная задача в систему, не внутри фичи.
- Агент в IDE подтягивает структуру фрейма и токены через протокол. Разработчик пишет логику, не верстает с нуля.
- Спорные места (анимация, пограничные состояния, контент-эджи) обсуждаются прямо в комментариях к компоненту, а не в Slack-треде с двумя скриншотами.
- На ревью PR дизайнер видит не «как получилось», а отклонения от источника. Если их нет — ревью занимает минуты.
Ключевое отличие: дизайнер перестаёт быть финальной инстанцией приёмки и становится автором правил, по которым приёмка происходит автоматически.
Что ломается в первые недели
Команды, которые подключают MCP без перестройки процессов, наступают примерно на одни и те же грабли.
Анти-паттерны
- «Подключим, разберёмся по ходу». Без аудита системы агент начинает тянуть в код то, что в Figma лежит как черновик. В продакшене всплывают фреймы с именами вроде
Frame 1247. - Дизайнер продолжает работать в отдельном файле «на подумать». Если этот файл подключён к источнику — он уезжает в код. Если не подключён — теряется смысл протокола.
- Компоненты без вариантов. Агент видит только default, и в коде появляются собственные hover и disabled, не совпадающие ни с чем.
- Токены живут в Figma, но не в репозитории. Каждое изменение цвета превращается в ручной экспорт, и через месяц всё снова расходится.
- Никто не отвечает за систему. «Все следят» = не следит никто. Расхождения копятся молча.
Диагностика: где именно сыпется
Если уже работаете в новом режиме и чувствуете, что что-то идёт не так — пройдитесь по симптомам.
- В коде появились компоненты, которых нет в библиотеке → агент не нашёл подходящий и сгенерировал свой. Чините не код, а покрытие системы.
- Дизайнер постоянно правит мелочи после мержа → источник отдаёт неполный контекст (например, нет состояний или адаптива).
- Разработчики игнорируют подключение и пишут руками → им быстрее, чем разбираться в структуре макета. Это сигнал, что система перегружена слоями и группами.
- AI-агент стабильно ошибается в одном и том же месте → у компонента двусмысленное имя или непрозрачная структура. Переименуйте, перестройте, не воспитывайте модель промптами.
Как дизайнеру применять это в макете уже завтра
Не нужно ждать, пока команда «внедрит MCP». Большую часть работы можно начать делать в одиночку — и это окупится, даже если протокол подключат через полгода.
Привычки, которые делают макет читаемым для кода и модели
- Называйте слои так, как они должны называться в коде.
button-primary, а неRectangle 12 copy. - Любое состояние — это вариант, а не отдельный фрейм рядом. Hover, disabled, loading, error, empty — внутри компонента.
- Auto layout везде, где возможно. Это не эстетика, это структура, которую модель умеет читать.
- Не плодите «почти такие же» компоненты. Если отличие в одном пикселе — это вариант существующего, а не новый.
- Описывайте правила прямо в библиотеке: где применяется, с чем не сочетается, какие минимальные размеры.
Вопросы для self-review перед тем, как отдать макет
- Если человек никогда не видел этот продукт, поймёт ли он по именам слоёв, что здесь происходит?
- Все ли состояния компонентов покрыты, или я молча полагаюсь на «разработчик догадается»?
- Есть ли в макете что-то, что я не могу объяснить ссылкой на систему? Если да — почему?
- Что произойдёт, если завтра токен основного цвета поменяется? Прорастёт он сам или придётся ходить по фреймам?
Короткий итог сегмента
Жизнь без handoff — это не про скорость, а про дисциплину источника. Инструмент только ускоряет то, что уже есть: чистую систему он превращает в продакшен почти без потерь, грязную — в грязный продакшен за минуты. Поэтому единственное, что дизайнер может сделать прямо сейчас, — перестать относиться к макету как к картинке и начать как к коду, который ещё не скомпилировали.
Продвинутые сценарии: где новый процесс реально выстреливает
Базовая связка «компонент из библиотеки → компонент в коде» окупается уже на втором спринте. Но настоящая ценность начинается там, где раньше команды теряли дни на синхронизацию: масштабные редизайны, мультибрендовые продукты, эксперименты, локализации.
Редизайн без «большого релиза»
Раньше редизайн жил по схеме: полгода в Figma, потом героический мерж и две недели багов. Когда источник подключён напрямую, редизайн становится миграцией токенов и вариантов. Меняете значение токена surface/primary — и все экраны, использующие его, приходят в новое состояние одновременно. Никаких «забыли обновить модалку в настройках».
Что это меняет на практике:
- Редизайн можно катить кусками: сначала токены, потом типографика, потом плотность.
- Откат — это не «вернуть макеты», а вернуть значения.
- Дизайнер видит, какие компоненты ещё держатся на старых токенах, потому что система это показывает сама.
Мультибренд и white label
Если продукт живёт в нескольких брендах, старый процесс превращался в копипасту с мутациями. В новом — есть один набор компонентов и несколько наборов токенов. Бренд — это тема, а не отдельная библиотека. Агент при сборке экрана берёт структуру из общего источника, а оформление — из активной темы.
Анти-паттерн здесь — заводить «почти такие же» компоненты под каждый бренд. Через квартал вы получаете три расходящиеся системы вместо одной.
A/B-эксперименты и временные состояния
Эксперимент перестаёт быть отдельной веткой макета, про которую через месяц никто не помнит. В библиотеке появляется вариант компонента с пометкой эксперимента, в коде — флаг. Когда эксперимент закрывается, вариант либо становится основным, либо удаляется в одном месте.
Командный контекст: кто за что отвечает
Главный конфликт нового процесса — не технический, а ролевой. Когда источник один, граница «дизайнер рисует, разработчик пишет» размывается, и команды первое время не понимают, кто принимает решение.
Распределение ответственности, которое работает
- Дизайн-системщик отвечает за контракт: имена, токены, варианты, правила. Это автор API библиотеки.
- Продуктовый дизайнер работает строго внутри этого контракта. Если не хватает компонента — заводит запрос в систему, а не рисует «временно своё».
- Разработчик отвечает за то, что код соответствует источнику. Не за то, чтобы догадаться, как должно быть.
- Тимлид или продакт держит правило: расхождение источника и кода — это баг, а не «ну работает же».
Если этих ролей нет явно — выживает та, у кого громче голос на ревью. Обычно это не дизайн.
Как объяснить переход команде
Главная ошибка — продавать MCP как «ускоритель». Команда слышит «теперь будем делать больше за то же время» и сопротивляется. Работает другой разговор.
- Разработчикам: «Вы перестаёте угадывать отступы по скриншоту. Спецификация теперь машинно-читаема».
- Продакту: «Время от макета до продакшена сокращается за счёт исчезновения handoff-петель, а не за счёт давления на людей».
- Дизайнерам: «Вы перестаёте быть бутылочным горлышком приёмки и становитесь автором правил».
- QA: «Регрессии по визуалу теперь ловятся диффом токенов, а не глазами».
Один и тот же инструмент, четыре разных обещания. Каждое — правда.
Как проверять качество результата
Когда между макетом и кодом нет ручного шва, старые способы приёмки («посмотрел, вроде совпадает») не работают. Нужны другие.
Что измерять
- Доля компонентов из системы в продакшен-коде. Если падает — система не покрывает реальные задачи.
- Количество кастомных стилей вне токенов. Растёт — значит, кто-то снова решает «на глаз».
- Время от изменения токена до его появления в продакшене. Длинное — где-то есть ручной шаг, который притворяется автоматическим.
- Количество правок после мержа, касающихся визуала. Если их много — источник отдаёт неполный контекст.
Эти метрики важнее, чем «скорость выкатки экранов». Скорость — следствие, а не цель.
Вопросы для ревью процесса раз в квартал
- Какие компоненты команда обходит стороной и пишет руками? Почему?
- Сколько раз за квартал мы правили токен и сколько раз — конкретный стиль в коде? Соотношение в норме?
- Есть ли в библиотеке мёртвые компоненты, которые никто не использует?
- Кто за последний месяц добавил вариант «временно, потом уберём»? Убрали?
- Если завтра уволится автор системы, сможет ли её кто-то поддерживать?
Короткий итог сегмента
Продвинутые сценарии — редизайн, мультибренд, эксперименты — становятся дешёвыми только тогда, когда у команды есть явные роли и метрики здоровья системы. Инструмент не назначает ответственного и не считает кастомные стили за вас. Он лишь делает видимым то, что раньше можно было замолчать: качество источника, дисциплину команды и реальную стоимость «маленьких отступлений от системы».
Анти-паттерны, которые убивают единый источник
Большинство команд не разрушают новый процесс сознательно. Его подтачивают мелкие компромиссы, каждый из которых по отдельности кажется разумным.
«Один раз можно — потом перенесём в систему»
Самая дорогая фраза в проекте. Один раз — это уже минимум два места, где живёт стиль: в коде и в голове автора. Через полгода «временные» отступы становятся параллельной квази-системой, про которую никто не помнит. Правило простое: если компонента нет в библиотеке — он не появляется в коде. Сначала запрос в систему, потом реализация.
Дизайнер «дорисовывает» в коде через AI
Когда дизайнер получает доступ к генерации кода, появляется соблазн обойти систему: «я же сам и сделаю, зачем заводить компонент». В итоге в продакшен попадает кнопка, которой нет в библиотеке, но которая выглядит «почти как». Через месяц таких кнопок шесть, и ни одна не совпадает с системой по hover-состоянию.
Разработчик чинит визуал, не трогая источник
Классика: на ревью замечают, что отступ не такой. Разработчик правит padding в компоненте на конкретной странице. Макет и токены остаются прежними. Поздравляю, у вас расхождение, которое уже не видно никаким диффом, потому что оба места по отдельности «выглядят нормально».
Библиотека как кладбище идей
Команда добавляет компоненты «на будущее», варианты «вдруг пригодятся», экспериментальные состояния «пусть полежит». Через год в системе сто компонентов, из них реально используется двадцать. Новый человек тратит день, чтобы понять, какие живые, а какие — археология.
MCP как замена дизайнеру
Самый опасный анти-паттерн — управленческий. «Раз код генерируется из макета, давайте сократим дизайн-ресурс». Через квартал получаете продукт, где каждый экран технически собран из компонентов системы, но визуально — каша. Потому что некому держать смысл и иерархию, только форму.
Чеклист запуска процесса
Если вы только перестраиваете работу под единый источник, пройдитесь по списку перед тем, как объявить переход.
- У библиотеки есть один владелец, а не «общая ответственность».
- Токены покрывают цвет, типографику, отступы, радиусы, тени, длительности анимаций.
- У каждого компонента в системе описаны состояния: hover, focus, disabled, loading, error, empty.
- Названия токенов и компонентов одинаковы в дизайн-инструменте и в кодовой базе. Без переводов.
- В команде есть договорённость, что считается багом расхождения, а что — фичей.
- Есть способ быстро увидеть, какие компоненты живые, а какие не используются.
- Понятно, кто и как заводит новый компонент: с какого момента он считается частью системы.
- Эксперименты и временные варианты помечены так, что их видно отдельно от стабильной части.
- Изменение токена попадает в продакшен без ручного шага «перенести значение».
Если хотя бы три пункта не выполнены — переход преждевременный. Сначала наведите порядок в источнике, потом подключайте автоматизацию. Иначе вы автоматизируете беспорядок.
Вопросы для ревью раз в спринт
Эти вопросы стоит задавать на ретро, пока процесс не устоялся.
- Был ли в этом спринте случай, когда мы сделали «вне системы»? Почему?
- Сколько правок на ревью касались токенов, а сколько — конкретных значений в коде?
- Появились ли компоненты, которые мы планируем «потом унифицировать»?
- Кто-то ждал апдейта библиотеки и пошёл писать своё, чтобы не блокироваться?
- Какие места в продукте мы не трогаем, потому что боимся сломать визуал?
Последний вопрос — самый честный индикатор здоровья. Если такие места есть, значит источник не до конца управляет результатом, и команда это знает.
Практический итог
Handoff не умер сам по себе — его сделала бессмысленным новая архитектура работы, в которой макет, токены и код смотрят в один источник. Это не магия инструмента и не вопрос моды на AI. Это управленческое решение: договориться, что у дизайн-решения есть одно место жительства, и все остальные представления — производные от него.
Дальше всё сводится к дисциплине. Кто владеет источником. Кто имеет право его менять. Как мы видим, что код и макет разошлись. Что мы делаем с «временными» отклонениями. На эти вопросы инструмент не отвечает — отвечает команда. Если ответы есть, переход даёт ровно то, ради чего затевался: меньше потерь на стыках, больше времени на смысл, и продукт, который выглядит цельным не потому что кто-то героически следит, а потому что иначе он просто не собирается.