Искра
Вайбкодинг: от идеи до продакшена

Дизайн-система в коде: из Figma, с нуля или готовая

Тема 3111 мин чтения + 1 час на заданиеРевизия 11 октября 2026

Агент собирает интерфейс из того, что видит в репозитории. Если дизайн-системы там нет, он берёт её из памяти модели: те же отступы, те же градиенты и те же компоненты, что у тысяч других проектов. В опросе zeroheight 2026 года 59% команд видят интерфейсы, собранные в обход их дизайн-системы. Эта тема про то, откуда взять систему в коде, на которой агент будет собирать твой продукт.

Путей три. Первый: у тебя есть библиотека в Figma, и её нужно перевести в код. Второй: ничего нет, и систему ты собираешь с нуля вместе с агентом. Третий: берёшь открытую систему и перекрашиваешь под себя. На практике пути смешиваются: из Figma чаще всего переносят токены, а компоненты берут готовые. Как сделать систему, которая уже есть в коде, читаемой для агента — следующая тема, «AI-first дизайн-системы».

Слово «токен» здесь означает именованное значение дизайна, цвет или отступ, а не единицу текста для модели. Разница объяснена в глоссарии.

Что изменилось: код стал источником правды

Пока интерфейсы собирали люди, дизайн-система жила в Figma, а код её догонял. Агент читает код, а не макет. Поэтому команды, которые работают с агентами, переносят источник правды в репозиторий: токены лежат в JSON, компоненты в коде со всеми состояниями, правила в файле для агента. Люк Вроблевски, собравший такую систему для агентов, пишет, что систему начали с макетов, перевели в код через Figma MCP, и источником правды стал код: писать изменения обратно в Figma на практике не понадобилось.

Figma при этом никуда не уходит. Она остаётся входом, когда агент читает библиотеку через MCP, и выходом, когда макет генерируется из кода для обсуждения с командой. Хранилищем правил она быть перестаёт.

Схема в два ряда. Верхний слева направо: библиотека Figma с переменными и вариантами, tokens.json в формате DTCG, Terrazzo или Style Dictionary, tokens.css и блок @theme. Стрелка вниз к компонентам в коде со всеми вариантами и Storybook, этот блок выделен оранжевым. Нижний ряд справа налево: файл правил для агента, CLAUDE.md или AGENTS.md, и агент, который собирает экраны с проверкой скриптом и тестами. Пунктирная стрелка от агента обратно к библиотеке Figma подписана «макет из кода: use_figma».
Код становится источником правды: Figma отдаёт токены один раз. · схема собрана для материала

Путь 1. Из библиотеки в Figma в код

Шаг 1. Приведи библиотеку в порядок до того, как подключать агента. Figma даёт короткий список: всё, что повторяется, — компонент; имена говорят о назначении (color/surface/primary, а не blue-500); цвета, отступы, радиусы и шрифты заданы переменными; auto layout вместо координат; библиотека опубликована. Слой Frame 427 ничего не говорит агенту, и он придумает значение сам. Абсолютные координаты в макете превращаются в абсолютное позиционирование в коде.

Шаг 2. Вынеси токены в JSON. Формат — DTCG, спецификация W3C Design Tokens Community Group (не стандарт W3C), первая стабильная версия вышла 28 октября 2025 года. Способа два: родной экспорт переменных Figma в JSON, анонсированный в октябре 2025 года и развёрнутый к декабрю, или плагин Tokens Studio, у которого бесплатный тариф синхронизирует один файл с Git. По отчётам пользователей, родной экспорт пока не отдаёт составные токены вроде типографики и теней, их придётся дописать руками. Этот JSON — канонический файл системы: из него Terrazzo собирает CSS-переменные и блок @theme для Tailwind v4; Style Dictionary тоже читает DTCG, но формат 2025.10 поддерживает пока не полностью. Когда переменные в Figma меняются, меняется JSON, а не код.

Шаг 3. Подключи Figma MCP и напиши правила. Удалённый сервер доступен на всех тарифах, десктопный — на Dev и Full seat платных планов. У Figma есть промпт create_design_system_rules: агент читает кодовую базу и пишет файл правил в CLAUDE.md или AGENTS.md: где лежат токены, что нельзя хардкодить, как взять компонент из проекта вместо нового. Без этого файла агент получает из MCP код на React и Tailwind с hex-значениями и собирает новую кнопку на каждый экран.

Шаг 4. Компоненты по одному. Начни с трёх-пяти самых частых: кнопка, поле ввода, карточка. Для каждого агент получает структуру узла через get_design_context, переменные через get_variable_defs и скриншот, пишет компонент на токенах, а ты сверяешь с макетом. Пропусков в матрице вариантов быть не должно: агент считает, что состояний у компонента столько, сколько он увидел. Запрос на целый экран не работает: ответ больше 25 000 токенов не влезает в клиент, и вместо системы получается один большой файл.

ДоКод кнопки PrimaryButton из ответа Figma MCP. В классах подсвечены красным захардкоженные значения: gap-[8px], h-[44px], px-[20px], rounded-[10px], bg-[#5B4CF0], text-[#FFFFFF], text-[15px], font-[600], w-[16px] и адрес иконки http://localhost:3845/assets/plus.svg.

Без файла правил: агент берёт код из MCP как есть, с hex и пикселями. На следующем экране появится ещё одна такая кнопка.

ПослеКод кнопки CreateProjectButton. Импорт Button из @/components/ui/button и иконки Plus из lucide-react подсвечен зелёным, внутри — Button с size="lg", иконка и текст «Создать проект». Комментарий: цвет, радиус и отступы приходят из tokens.css через вариант Button.

С файлом правил: та же кнопка собрана из компонента проекта, а значения пришли из токенов.

код собран для материала

Шаг 5. Свяжи макет с кодом. Code Connect показывает агенту настоящее имя и импорт компонента, когда тот встречается в макете; это доступно на тарифах Organization и Enterprise. Если тариф не позволяет, замена — таблица «компонент в Figma → файл в репозитории» в файле правил. Проверка после каждого компонента: скриншот из get_screenshot рядом с рендером, потом Storybook с визуальной регрессией.

Путь 2. Система с нуля

Начни не с Figma, а с аудита того, что уже есть в продукте или прототипе. Потом выбери базу: shadcn/ui, если проект на React и агент её уже знает; Base UI или React Aria, если нужны свои компоненты без чужих стилей. Доступность агенту с нуля писать не нужно, она достаётся от базы.

Токены первыми, и их мало. Тедди Ни из Magic Patterns советует начинать с 20–30 токенов, а не с 200: цвета, типографическая шкала из пяти-семи уровней, отступы, два-три радиуса, тени. Для цветов удобно сразу задать пары фон и текст: для поверхности, основного и второстепенного действия и для ошибки. Имена по назначению, а не по виду. Токены сразу записываются в JSON и в CSS, а Figma подключается позже, если нужна.

Один компонент сначала. Самый частый, обычно кнопка, со всеми вариантами и состояниями, в Storybook с историей на каждое состояние. По этому файлу агент учится писать остальные. Потом файл правил: короткий, всегда в контексте, в форме запретов — не выдумывать токены, не ставить hex, не создавать компонент, если похожий есть. Дианна Альтер формулирует это так: самая сильная инструкция агенту — сказать, чего не делать.

Проверка живёт там, где работает агент. Скрипт, который ищет в коде hex и пиксели вне токенов; Playwright MCP, чтобы агент смотрел на свой результат; тесты доступности. Если при нарушении правила ничего не падает, агент будет нарушать его уверенно и часто. Figma из кода делается в конце, если она нужна команде: инструмент use_figma собирает макет из компонентов и переменных.

Путь 3. Готовая открытая система

Система Для чего MCP Скиллы Figma-кит Лицензия
shadcn/ui React и Tailwind, свой вид через токены Есть Есть, от автора Только от сообщества MIT
Chakra UI v3 React, полная библиотека с темами Есть Есть Официальный, бесплатный, с режимами переменных MIT
Mantine React, много компонентов из коробки Есть Есть Нет официального, только от сообщества MIT
MUI Material Design Есть Есть Официальный, бесплатная версия урезана MIT
Nuxt UI v4 Vue и Nuxt Есть Есть Официальный, бесплатный, с переменными MIT
Astryx React, система Meta в бете Заявлен Нет Нет MIT
Терминал в проекте my-app. Команда npx shadcn@latest add button создаёт файл src/components/ui/button.tsx. Команда npx skills add shadcn-ui/ui ставит два скилла, shadcn и migrate-radix-to-base, в папку .claude/skills. Команда ls показывает, что button.tsx и обе папки скиллов появились в проекте.
Компонент и скилл ставятся двумя командами, и оба оказываются в репозитории: код кнопки можно править, а скилл агент прочитает сам. Флаги -a claude-code -y --copy ставят скилл только для Claude Code без вопросов; без них команда спросит, для каких агентов ставить. Вывод сокращён. · shadcn CLI 4.21.4, skills CLI

Критерия выбора четыре: фреймворк проекта; есть ли официальные MCP и скиллы; нужен ли Figma-кит с переменными; лицензия. Есть системы, которые брать не нужно. Polaris React архивирован в сентябре 2026 года. PrimeVue с пятой версии и PrimeReact с одиннадцатой распространяются по лицензии PrimeUI, бесплатной только для небольших компаний с выручкой до миллиона долларов. Material Web без активной разработки с 2024 года.

shadcn/ui: почему её выбирают по умолчанию и чем за это платят

shadcn/ui — не библиотека, а способ распространения кода: команда shadcn add копирует исходник компонента в проект, и дальше он твой. Автор снабдил её всем, что нужно агенту: MCP-сервер, официальный скилл, файл llms.txt, команда info --json с конфигурацией проекта, реестры, из которых компоненты других авторов ставятся той же командой. С июля 2026 года база доступности по умолчанию — Base UI, Radix остаётся по флагу.

Плюсы. Код принадлежит проекту, и агент правит его как свой. Агенты знают её без подсказок, потому что в обучающих данных она встречается чаще других. Доступность достаётся от базы. Токены уже семантические, пары background и foreground перекрашиваются под бренд, для этого есть редактор tweakcn. Всё бесплатно под MIT.

Минусы. Компоненты не обновляются сами, флаг --diff у команды add только показывает расхождения. Интерфейсы на нетронутых токенах выглядят одинаково: в исследовании 500 сайтов с Show HN 23,5% использовали компоненты без изменений. Официального Figma-кита нет. Самый полный кит, shadcndesign, платный и независимый от shadcn/ui, хотя автор библиотеки его публично одобрил; бесплатные киты в Figma Community есть, но за их полноту никто не отвечает. Только React и Tailwind. Кода в проекте больше, и отвечаешь за него ты.

Правило простое. shadcn/ui подходит, если проект на React и ты переопределишь токены под свой бренд до первого экрана. Если библиотека в Figma большая и команда ждёт официальный кит, смотри Chakra или MUI.

Пример: библиотека на 30 компонентов

У дизайнера библиотека из 30 компонентов на тарифе Professional и пет-проект на React, пример условный. Аудит занял день: у 12 компонентов не было вариантов, 40 цветов стояли без переменных. После правок переменные получили имена по назначению, а библиотека была опубликована. Экспорт в JSON и сборка через Terrazzo дали tokens.css и блок @theme.

Дальше агент поставил shadcn/ui с пресетом, переписал переменные под tokens.css и получил в файле правил таблицу: 22 компонента из библиотеки соответствуют компонентам shadcn/ui, 8 — свои. Восемь своих агент перенёс по одному через get_design_context, с историями в Storybook. Code Connect на Professional недоступен, его заменила та же таблица. В конце скрипт проверки нашёл в коде ноль hex-значений вне tokens.css, и на этом система была готова к первому экрану.

Так выглядит начало этой таблицы в CLAUDE.md:

Компонент в Figma Файл в репозитории Откуда
Button src/components/ui/button.tsx shadcn/ui
Text field src/components/ui/input.tsx shadcn/ui
Card src/components/ui/card.tsx shadcn/ui
Modal src/components/ui/dialog.tsx shadcn/ui
Price tag src/components/price-tag.tsx свой

Где ИИ в этой работе вредит

ИИ вредит, когда агент получает целый экран вместо компонента. Когда токены переносятся из макета как hex. Когда у компонента в коде один вариант, потому что в Storybook одна история. Когда файл правил написан один раз и не обновляется с ростом системы. Когда проверка делается глазами после, а не скриптом во время. И когда система выбирается за популярность, а не за совместимость с фреймворком проекта.

Примеры команд для практики

Куда вставлятьТерминальный агент с подключённым Figma MCP
Прочитай узел [ссылка на компонент в Figma с node-id] через get_design_context и get_variable_defs. Напиши компонент [имя] в src/components/ui на токенах из src/styles/tokens.css. Hex-значений и пикселей вне токенов быть не должно. Сделай все варианты и состояния из макета, для каждого — история в Storybook. Покажи скриншот из get_screenshot рядом со своим рендером и перечисли расхождения
Пройди по опубликованной библиотеке [ссылка] и составь таблицу: компонент в Figma → файл в репозитории, который ему соответствует. Для компонентов без соответствия напиши "нет". Запиши таблицу в CLAUDE.md в раздел "Соответствие макета и кода"
Куда вставлятьТерминальный агент в репозитории
Вот tokens.json в формате DTCG. Настрой Terrazzo так, чтобы из него собирались tokens.css с CSS-переменными и блок @theme для Tailwind v4. Семантические имена сохрани, составные токены типографики разложи на шрифт, размер и высоту строки. Добавь npm-скрипт tokens:build и проверку, что в src нет hex-значений вне tokens.css
Создай файл правил дизайн-системы в CLAUDE.md: где лежат токены и компоненты; что нельзя хардкодить; как проверить, есть ли похожий компонент, прежде чем создавать новый; что делать, если нужного токена нет — остановиться и спросить, а не придумывать. Правила в форме запретов, не длиннее 60 строк
Мы на shadcn/ui. Перепиши переменные в globals.css под эту палитру: [цвета бренда]. Пары background и foreground сохрани, контраст текста на фоне проверь по WCAG AA, значения запиши в OKLCH. Потом собери страницу с кнопкой, полем ввода и карточкой во всех вариантах, чтобы я посмотрел результат
Куда вставлятьЛюбой чат-ассистент
У меня проект на [фреймворк], команда из [число] человек, тариф Figma [тариф], библиотека на [число] компонентов. Сравни shadcn/ui, Chakra UI и Mantine по пяти критериям: фреймворк, официальные MCP и скиллы, Figma-кит с переменными, лицензия, обновления. Дай рекомендацию и раздели, что в ней следует из моих ограничений, а что — из общих свойств систем
Мини-задание

Возьми библиотеку из своего пет-проекта или любую опубликованную в Figma Community. Проведи аудит по пяти пунктам из шага 1 и запиши, что нужно исправить. Экспортируй переменные в JSON и собери из них CSS-переменные третьим промптом. Напиши файл правил четвёртым промптом. Перенеси один компонент первым промптом и сравни результат со скриншотом.

Время: 60 минут
Готово, если: есть список правок библиотеки, файл tokens.css, собранный из JSON, файл правил в форме запретов и один компонент в коде со всеми вариантами и историей в Storybook

Источники

  1. Structure your Figma file for better code — Figmadevelopers.figma.com
  2. Refine your components and variables for the Figma agent — Figma Helphelp.figma.com
  3. Figma MCP server: tools and promptsdevelopers.figma.com

    промпт create_design_system_rules в разделе Prompts

  4. Rate limits and accessdevelopers.figma.com

    на Starter и на View и Collab seat любого тарифа 20 вызовов в месяц, на Dev и Full seat Professional и Organization 200 в день, Enterprise 600 в день

  5. Guide to the Figma MCP server — Figma Helphelp.figma.com

    удалённый сервер на всех тарифах, десктопный на Dev и Full seat платных планов

  6. Code Connect — Figma Helphelp.figma.com

    Organization и Enterprise, Full или Dev seat

  7. Design Tokens Format Module 2025.10 — W3C Design Tokens Community Groupdesigntokens.org

    28 октября 2025

  8. Schema 2025 recap — Figmafigma.com

    28 октября 2025; экспорт и импорт переменных обещаны на ноябрь

  9. DTCG composite token export support — форум Figmaforum.figma.com

    26 февраля 2026; отчёт пользователей о составных токенах

  10. Tokens Studio: тарифыtokens.studio

    Starter бесплатный, синхронизация нескольких файлов в платном

  11. Multi-file syncdocs.tokens.studio
  12. Style Dictionary и DTCGstyledictionary.com
  13. Terrazzo: Tailwind pluginterrazzo.app
  14. Theme variables — Tailwind CSS v4tailwindcss.com
  15. Theming — shadcn/uiui.shadcn.com
  16. shadcn/ui: MCPui.shadcn.com
  17. shadcn/ui: Skillsui.shadcn.com
  18. shadcn/ui: Figmaui.shadcn.com
  19. shadcn/ui: Changelogui.shadcn.com

    CLI 4.21.4 от 7 октября 2026

  20. Design Systems for AI Agents — Luke Wroblewskilukew.com

    1 октября 2026

  21. State of AI in Design Systems 2026 — zeroheightzeroheight.com

    123 респондента; 82% используют ИИ, 48% запустили MCP-сервер, 17% оценивают свою документацию как «very AI-ready»

  22. Building a Design System Faster with AI — Teddy Ni, Magic Patternsmagicpatterns.com

    3 мая 2026; «Start with 20 to 30 tokens, not 200»

  23. Agentic design system — Dianne Alter, The Design Projectdesignproject.io

    7 мая 2026

  24. Agentic design system: Context edition — Dianne Alter, The Design Projectdesignproject.io

    28 августа 2026

  25. Agentic AI, design systems and Figma — Christine Vallaurechristinevallaure.substack.com

    31 марта 2026; полная матрица вариантов и истории в Storybook

  26. Design systems for AI agents — Headwayheadway.io

    28 июля 2026; проверка там, где работает агент

  27. Codex CLI + Figma MCP — Daniel Vaughancodex.danielvaughan.com

    18 апреля 2026, обновлено 10 октября 2026; ответы больше 25 000 токенов, hex без имени токена, новая кнопка без Code Connect

  28. Why your design system needs its own Figma → Code MCP — Malaka Venugopal Reddymalakavenu.com

    5 мая 2026; около 3 400 захардкоженных значений в репозитории на 600 компонентов

  29. GIGAZINE об исследовании Адриана Кребса: 500 сайтов с Show HN и типовой ИИ-дизайнgigazine.net

    23 апреля 2026

  30. Storybook 10.3: MCP, a11y improvements, & workflow upgradesstorybook.js.org

    6 апреля 2026

  31. Storybook MCP for React, бенчмаркstorybook.js.org

    23 марта 2026; с MCP на 12,8% лучше использование кода библиотеки (improved code usage), в 2,76 раза быстрее, замер вендора

  32. Agent Skillsagentskills.io
  33. vercel-labs/skillsgithub.com
  34. vercel-labs/agent-skillsgithub.com
  35. Chakra UI: MCPchakra-ui.com
  36. Mantine: LLMs and MCPmantine.dev
  37. MUI: MCPmui.com
  38. Nuxt UI: MCPui.nuxt.com
  39. Astryxastryx.atmeta.com
  40. Shopify/polaris — GitHubgithub.com

    архив с 11 сентября 2026

  41. PrimeUI Licensecdn.jsdelivr.net
  42. material-web: maintenance modegithub.com

    10 июня 2024

Нашёл ошибку или устаревший факт? Напиши: hey@iskra.guide