Продвинутый

Использование DESIGN.md для генерации UI через AI

Алексей Кузнецов
Алексей Кузнецов
Системный администратор22 октября 2026 г.15 мин чтения

Разбор репозитория awesome-design-md: как использовать файлы дизайн-систем для обучения AI-агентов созданию интерфейсов, соответствующих вашему бренду.

Использование DESIGN.md для генерации UI через AI

Разбор репозитория awesome-design-md: как использовать файлы дизайн-систем для обучения AI-агентов созданию интерфейсов, соответствующих вашему бренду.

Проблема консистентности интерфейсов при работе с AI

Проблема консистентности интерфейсов при работе с AI

Когда мы начинаем использовать LLM для генерации фронтенда, возникает иллюзия, что задача решена. Вы просите нейросеть «сделать кнопку в стиле современного финтеха», и она выдает вполне приличный результат. Но как только дело доходит до масштабирования на десять, двадцать или сто компонентов, магия исчезает. Вместо единого интерфейса вы получаете лоскутное одеяло из разных оттенков синего, случайных радиусов скругления и несовместимых отступов.

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

Почему LLM ошибаются в стилях

Основная причина ошибок — это вероятностная природа больших языковых моделей. LLM не «видит» ваш брендбук и не понимает концепцию визуального единства. Она просто предсказывает следующий наиболее вероятный токен на основе своего обучения. Если в обучающей выборке чаще всего встречались кнопки с border-radius: 4px, модель будет предлагать именно это значение, даже если в вашей дизайн-системе заложены 12px.

Без жестких ограничений AI-агент начинает галлюцинировать стилями. Рассмотрим типичный пример того, как выглядит запрос без контекста:

text
// Запрос к AI: "Создай компонент карточки товара на Tailwind CSS"

// Результат (вероятный, но не консистентный):
<div class="p-4 bg-white rounded-lg shadow-md">
  <h2 class="text-xl font-bold text-blue-600">Товар</h2>
  <button class="mt-2 px-4 py-2 bg-blue-500 text-white rounded">Купить</button>
</div>

В этом примере всё выглядит «нормально», но для реального проекта это катастрофа. Цвет blue-500 может не совпадать с вашим брендовым цветом, а rounded-lg — это случайный выбор модели, а не часть вашей системы. Чтобы избежать такого хаоса, необходимо перейти от описательных запросов к структурным. Подробнее о том, как это реализовать, можно прочитать в материале Использование DESIGN.md для AI-агентов.

Роль дизайн-токенов в автоматизации

Чтобы добиться предсказуемости, нам нужно уйти от передачи в AI «свободного текста» и перейти к передаче структурированных данных. Здесь на сцену выходят дизайн-токены.

Дизайн-токены — это атомарные единицы вашей системы: значения цветов, размеров шрифтов, отступов и теней, сохраненные в машиночитаемом формате (обычно JSON). Вместо того чтобы просить AI «сделать синюю кнопку», мы говорим ему: «используй токен color.brand.primary».

Если мы посмотрим на структуру типичного файла токенов, который может быть описан в рамках awesome-design-md, мы увидим нечто подобное:

json
{
  "color": {
    "brand": {
      "primary": { "value": "#0052FF", "type": "color" },
      "secondary": { "value": "#6B7280", "type": "color" }
    }
  },
  "spacing": {
    "small": { "value": "8px", "type": "dimension" },
    "medium": { "value": "16px", "type": "dimension" }
  },
  "radius": {
    "button": { "value": "12px", "type": "dimension" }
  }
}

Когда эти токены упакованы в файл DESIGN.md, они становятся «единым источником истины» (Single Source of Truth) для AI. Теперь задача модели меняется: она не придумывает стили, а занимается их маппингом.

С точки зрения инженера, это превращает генерацию UI из творческого процесса в инженерную задачу. Мы ограничиваем пространство поиска модели только теми значениями, которые разрешены нашей системой. Это и обеспечивает ту самую предсказуемость, которая критически важна при настройке DESIGN.md для генерации UI ИИ.

Обзор коллекции awesome-design-md

Обзор коллекции awesome-design-md

Когда мы говорим об автоматизации верстки или генерации интерфейсов через AI-агентов, главной проблемой становится предсказуемость результата. LLM (Large Language Models) отлично пишут код, но они не знают, какой отступ вы считаете «стандартным» или какой оттенок синего соответствует вашему бренду. Они гадают.

Коллекция awesome-design-md решает эту задачу, собирая в одном месте примеры того, как описывать дизайн-системы в текстовом формате. Это не просто список ссылок, а база знаний о том, как превратить визуальные абстракции из Figma в структурированные данные, которые понимает машина. С практической точки зрения, это набор эталонных спецификаций, которые можно использовать как контекст для промптов.

Структура файлов DESIGN.md

Если проанализировать содержимое репозитория, становится ясно, что качественный файл DESIGN.md — это не длинное художественное описание, а строгая иерархия токенов. Чтобы AI-агент не превратил ваш интерфейс в кашу из случайных цветов, структура должна быть логичной.

Обычно типичный файл в этой коллекции строится по следующему принципу:

  1. Core Tokens (Базовые токены): Самые примитивные значения — цвета (HEX/RGB), типографика (размеры шрифтов, межстрочные интервалы), сетка и отступы.
  2. Semantic Tokens (Семантические токены): Привязка базовых значений к смыслу. Например, не просто #0055FF, а color-action-primary. Это критически важно для предсказуемости: если вы решите сменить брендбук, вам нужно будет изменить значение в одном месте, а не переписывать все компоненты.
  3. Component Tokens (Компонентные токены): Специфические параметры для конкретных элементов, вроде button-border-radius или card-shadow-depth.

Пример того, как может выглядеть фрагмент такого файла для обучения модели:

markdown
## Design Tokens

### Colors
- primary-600: #2563eb (Main brand color)
- surface-background: #ffffff (Main app background)
- text-main: #1f2937 (High emphasis text)

### Spacing
- space-xs: 4px
- space-sm: 8px
- space-md: 16px
- space-lg: 24px

### Typography
- font-family: 'Inter', sans-serif
- scale-base: 16px
- weight-bold: 700

Такая структура позволяет настроить DESIGN.md для генерации UI ИИ, создавая четкий «словарный запас» для агента.

Анализ подходов популярных брендов

В коллекции собраны примеры того, как разные команды подходят к документированию. Это позволяет увидеть разницу между «описательным» подходом и «математическим».

Во-первых, одни авторы делают упор на Design Tokens в чистом виде. Это максимально близко к тому, как работают современные инструменты вроде Style Dictionary. Такие файлы содержат только ключи и значения. Это идеальный вариант, если ваша цель — использование DESIGN.md для AI-агентов, которым нужно генерировать чистый CSS или Tailwind-конфиги.

Во-вторых, встречаются подходы, ориентированные на Layout & Composition. Здесь акцент смещается с цветов на правила построения интерфейса: правила использования отступов, логику адаптивности и поведение компонентов при изменении размера экрана.

Если мы посмотрим на разницу между подходами, то увидим:

ПодходДля чего лучше подходитЧто получает AI на выходе
Token-firstГенерация стилей и темТочные цвета, шрифты, тени
Component-firstГенерация готовых блоковСтруктуру HTML и логику отступов
HybridПолноценное создание UIИ то, и другое, но требует больше контекста

Для тех, кто только начинает путь в автоматизации интерфейсов, я рекомендую сначала изучить использование DESIGN.md для генерации UI, опираясь на самые простые примеры с цветовыми токенами. Это даст понимание того, как минимальное количество текстовых данных может радикально изменить визуальный результат работы нейросети.

Практическое применение в проектах

Интеграция файлов в контекст AI-агента

Когда мы говорим об использовании AI-агентов для верстки, главная проблема — это «галлюцинации» стилей. Без четких инструкций модель начнет использовать стандартные значения из своих обучающих данных: какой-нибудь blue #0000FF вместо вашего фирменного оттенка или стандартные отступы вместо принятой в проекте сетки. Чтобы добиться предсказуемости, файл DESIGN.md нужно подавать агенту не как справочник, а как жесткий набор правил (constraints).

С практической точки зрения, наиболее эффективный способ — это передача файла через системный промпт или в качестве контекстного файла при инициализации сессии. Если вы используете инструменты вроде Cursor, Windsurf или специализированных агентов через CLI, структура подачи данных должна быть максимально строгой.

Если вы работаете с агентом через терминал, можно подготовить контекст, объединив спецификацию с текущим состоянием проекта. Например, чтобы агент понимал, на какие токены он может опираться, можно использовать простую команду для сборки контекста:

bash
# Собираем дизайн-токены и структуру компонентов в один файл для передачи агенту
cat DESIGN.md src/components/base-tokens.json > ai_context.md

При настройке промпта важно указать агенту, что DESIGN.md является единственным источником истины (Single Source of Truth) для визуальных параметров. Если вы уже изучали настройку DESIGN.md для генерации UI ИИ, то знаете, что агент должен сначала проанализировать файл, а только потом приступать к написанию кода.

Получение предсказуемого UI-кода

Цель интеграции DESIGN.md — превратить генерацию кода из творческого процесса в инженерный. Мы хотим, чтобы вместо «сделай красиво» агент выполнял команду «реализуй компонент, используя токены из спецификации».

Предсказуемость достигается за счёт того, что агент перестаёт выдумывать CSS-свойства и начинает использовать существующие переменные. Рассмотрим пример. Допустим, в вашем DESIGN.md описаны цветовые токены и правила скругления углов.

Пример содержимого DESIGN.md:

markdown
## Color Tokens
- primary: #2563eb
- surface: #ffffff
- text-main: #1f2937

## Spacing & Radius
- radius-md: 8px
- spacing-unit: 4px

Если мы попросим агента создать кнопку, не имея контекста, он выдаст стандартный CSS. Но при наличии DESIGN.md и правильно настроенном использовании DESIGN.md для AI-агентов, результат будет выглядеть иначе.

Вместо этого:

css
/* Плохой результат: галлюцинации стилей */
.button {
  background-color: blue;
  border-radius: 4px;
}

Агент выдаст предсказуемый код, соответствующий вашей дизайн-системе:

tsx
// Хороший результат: использование токенов
import { tokens } from './theme';

export const Button = ({ label }) => {
  return (
    <button style={{
      backgroundColor: tokens.colors.primary,
      borderRadius: tokens.radius.md,
      padding: `${tokens.spacing.unit * 4}px ${tokens.spacing.unit * 8}px`
    }}>
      {label}
    </button>
  );
};

Чтобы этот процесс работал стабильно, я рекомендую всегда проверять, как агент интерпретирует сложные связи. Например, если в системе прописано, что отступы всегда кратны 4px, агент не должен предлагать margin: 13px. Если вы столкнулись с тем, что агент игнорирует правила, стоит пересмотреть настройку DESIGN.md для генерации UI ИИ, добавив в раздел «Constraints» явный запрет на использование произвольных значений (magic numbers).

Для более глубокого понимания того, как подготовить базу для таких задач, рекомендую изучить материал по использованию DESIGN.md для генерации UI.

Ограничения и нюансы подхода

Ограничения и нюансы подхода

Несмотря на то что использование DESIGN.md значительно повышает предсказуемость результата, важно понимать: мы не передаём нейросети саму графику. Мы передаём ей математическую модель стиля. Это создаёт определённый разрыв между «красивой картинкой» в Figma и тем, что в итоге отрендерит AI-агент.

Точность передачи сложных визуальных состояний

Главная проблема заключается в том, что текстовое описание дизайн-токенов отлично справляется с базовыми вещами: цветом фона, радиусом скругления углов или шрифтом. Но как только дело доходит до динамики — анимаций, сложных переходов или специфических состояний элементов (например, hover, focus-visible или disabled в контексте сложных интерактивных компонентов) — текстового файла становится недостаточно.

Если в вашем DESIGN.md прописаны только основные цвета, AI может сгенерировать кнопку, которая выглядит правильно в статике, но «разваливается» при взаимодействии. Для минимизации этого риска нужно описывать не только значения, но и логику их применения.

Например, вместо простого перечисления цветов, стоит добавить секцию с правилами взаимодействия:

markdown
## Interaction States

### Button Component
- **Default**: background: var(--color-primary), color: var(--color-on-primary)
- **Hover**: background: var(--color-primary-dark), transition: background 0.2s ease-in-out
- **Pressed**: transform: scale(0.98)
- **Disabled**: opacity: 0.5, cursor: not-allowed

Без таких уточнений агент будет полагаться на свои внутренние веса, обученные на случайных примерах из интернета, что мгновенно убивает консистентность бренда. Если вы хотите глубже разобраться в том, как правильно структурировать такие инструкции, рекомендую изучить материал про настройку DESIGN.md для генерации UI ИИ.

Необходимость доработки сгенерированного кода

Второй важный момент — это чистота и архитектурная пригодность кода. AI-агенты склонны к «инлайновому» безумию. Вместо того чтобы использовать созданные нами токены, модель может попытаться прописать значения напрямую в стилях (hardcoded values), если контекст файла DESIGN.md не был подгружен в текущее окно контекста или если промпт был недостаточно строгим.

С практической точки зрения, процесс выглядит так:

  1. Агент генерирует компонент.
  2. Вы проверяете, использует ли он переменные (CSS Variables или Tailwind classes).
  3. Вы исправляете семантические ошибки.

Если вы заметили, что агент игнорирует ваши правила, скорее всего, проблема в том, как именно вы подаёте инструкции. Это часто обсуждается в контексте использования DESIGN.md для AI-агентов.

Пример того, как выглядит «плохой» код, который нужно вычищать:

css
/* Плохо: агент проигнорировал токены и использовал магические числа */
.submit-button {
  background-color: #3b82f6; /* Вместо var(--color-primary) */
  border-radius: 4px;        /* Вместо var(--radius-md) */
  padding: 10px 20px;
}

Правильный подход требует от разработчика внедрения этапа автоматизированной проверки (Linter). Можно настроить простой скрипт, который будет проверять сгенерированные файлы на наличие запрещённых HEX-кодов или специфических значений, не входящих в вашу систему.

В конечном счёте, DESIGN.md — это не «волшебная кнопка», которая заменяет фронтенд-разработчика, а мощный инструмент для ускорения рутины. Он переносит фокус с вопроса «какой здесь цвет?» на вопрос «как этот компонент должен работать в нашей системе?». Для более детального понимания процесса настройки, посмотрите руководство по использованию DESIGN.md.

Заключение

Практические выводы

Если мы посмотрим на опыт использования awesome-design-md, становится ясно: подход к генерации интерфейсов меняется. Раньше мы просили нейросеть «сделай красиво», получая в ответ набор случайных цветов и отступов. Теперь, когда у нас есть структурированный DESIGN.md, мы даём агенту не просто пожелание, а техническое задание, основанное на дизайн-токенах.

С практической точки зрения, внедрение этого стандарта даёт три ключевых преимущества:

  1. Предсказуемость. Вы точно знаете, что кнопка, сгенерированная сегодня и через месяц, будет использовать один и тот же hex-код и радиус скругления.
  2. Масштабируемость. Один файл заменяет десятки промптов. Если меняется брендбук, вы правите один конфиг, и все последующие генерации подстраиваются автоматически.
  3. Связь с кодом. Токены из Markdown легко транслируются в CSS-переменные или переменные в Tailwind.

Когда этот метод может не сработать

Несмотря на системный подход, важно понимать ограничения. DESIGN.md — это декларативный слой. Он отлично описывает «что» должно быть (цвета, шрифты, сетка), но не всегда может передать «как» это должно двигаться.

Если ваша задача — создать сложную микроанимацию или нестандартный UX-паттерн, одного текстового описания токенов будет недостаточно. AI-агент может идеально соблюсти цветовую гамму, но промахнуться с логикой взаимодействия. В таких случаях файл дизайна должен дополняться более детальными инструкциями по поведению компонентов.

Также стоит учитывать, что качество генерации напрямую зависит от того, насколько чисто описаны ваши токены. Если в файле возникнет противоречие (например, указаны два разных значения для primary-color), предсказуемость результата резко упадет.

Что делать дальше

Для тех, кто хочет внедрить этот процесс в свой рабочий цикл, я рекомендую двигаться поэтапно:

  1. Соберите текущие константы. Не пытайтесь сразу описать всё. Начните с базовой палитры и типографики. Подробнее о том, как это сделать, читайте в материале Настройка DESIGN.md для генерации UI ИИ.
  2. Протестируйте на малых задачах. Попробуйте скормить ваш файл агенту и попросите создать один простой компонент, например, карточку товара.
  3. Автоматизируйте экспорт. Если вы работаете с Figma, настройте процесс выгрузки токенов так, чтобы они попадали в ваш репозиторий в формате Markdown.

Если вы уже начали экспериментировать с агентами, изучите Использование DESIGN.md для AI-агентов, чтобы понять, как лучше структурировать контекст для LLM.

Для закрепления материала рекомендую вернуться к основам и изучить Использование DESIGN.md для генерации UI, чтобы убедиться, что ваша структура соответствует стандартам индустрии.

FAQ

Как подготовить токены из Figma для DESIGN.md?

Напрямую скопировать текст из Figma не получится — нейросети нужен структурированный формат, а не просто список цветов. С практической точки зрения, самый надёжный путь — экспортировать токены в JSON, а затем конвертировать их в Markdown.

Если вы используете плагины вроде Tokens Studio, вы получите JSON-файл. Чтобы превратить его в понятный для AI формат, можно написать простой скрипт на Python или воспользоваться готовыми утилитами. Главная задача — превратить значения вроде #FF5733 в семантические токены, например color-primary-action.

Пример того, как должна выглядеть секция токенов в вашем DESIGN.md, чтобы AI-агент не гадал, какой оттенок синего использовать:

markdown
## Design Tokens

### Colors
- primary-brand: #0055FF (используется для основных кнопок и активных состояний)
- surface-background: #F4F7FA (фон основных контейнеров)
- text-main: #1A1A1B (основной цвет текста)

### Spacing
- spacing-sm: 8px
- spacing-md: 16px
- spacing-lg: 24px

Чем выше предсказуемость именования, тем меньше вероятность, что агент создаст интерфейс, который «развалится» при первой же попытке интеграции с вашей CSS-системой.

Можно ли использовать DESIGN.md для генерации кода компонентов?

Да, если вы правильно настроите контекст. Сам по себе файл — это спецификация, «чертёж». Чтобы AI-агент (например, Claude Engineer или специализированные агенты в Cursor) начал писать код, ему нужно передать этот файл как системную инструкцию или часть контекста проекта.

Если вы хотите, чтобы агент создавал компоненты на React или Vue, соблюдая стилистику, лучше всего сначала настроить DESIGN.md для генерации UI ИИ, а затем подавать файл вместе с запросом.

Для проверки того, как агент понимает правила, попробуйте такой промпт: «Создай кнопку Primary, используя правила из DESIGN.md. Используй Tailwind CSS для реализации отступов и цветов, указанных в токенах».

Если вы только начинаете путь, рекомендую сначала изучить материал по использованию DESIGN.md для AI-агентов, чтобы понять разницу между простым описанием стилей и полноценным управлением контекстом разработки.

Что делать, если AI-агент игнорирует правила дизайна?

Это типичная проблема, когда контекстное окно переполнено или инструкции в DESIGN.md слишком размыты. Если агент начинает использовать стандартные цвета Tailwind вместо ваших брендовых токенов, значит, веса его базовых знаний перевешивают ваш файл.

Чтобы вернуть предсказуемость, выполните следующие действия:

  1. Упростите структуру. Если файл весит слишком много, агент может «забывать» середину. Разделите спецификацию на логические блоки.
  2. Используйте строгие формулировки. Вместо «используй синий цвет» пишите «всегда используй токен color-primary для элементов взаимодействия».
  3. Добавьте примеры (Few-shot prompting). Вставьте в DESIGN.md пример правильного кода.

Пример блока с примером кода внутри документа:

markdown
## Implementation Example

When creating a card component, follow this pattern:

```tsx
// Correct implementation
const Card = ({ children }) => (
  <div className="bg-surface-background p-spacing-md rounded-lg shadow-sm">
    {children}
  </div>
);

Если проблема сохраняется, стоит пересмотреть подход к [настройке DESIGN.md для генерации UI ИИ](/guides/nastroyka-designmd-dlya-generatsii-ui-ii-tslxe3) и убедиться, что вы не перегружаете файл лишней информацией, не относящейся к визуальному языку.

## Часто задаваемые вопросы

### Нужно ли переписывать существующую дизайн-систему под формат DESIGN.md?

Нет, переписывать готовую систему не требуется. Суть подхода заключается в создании текстового описания, которое служит мостом между визуальными правилами и языком, понятным нейросети. Вы можете извлечь ключевые параметры — такие как цветовые палитры в HEX, сетки, правила типографики и радиусы скругления — и структурировать их в файл, который AI сможет использовать как справочник.

### Как обеспечить точность цветовых значений при генерации кода?

Для достижения предсказуемости результата в DESIGN.md следует указывать не просто названия цветов, а конкретные значения в форматах HEX или RGB, а также привязывать их к токенам. Если вы используете Tailwind CSS, в файле стоит прописать соответствие: например, что `primary-brand` — это именно `#0055FF`. Это исключит ситуацию, когда модель выбирает наиболее вероятный, но неверный оттенок из своей базы знаний.

### Можно ли использовать DESIGN.md для работы с компонентами, которых ещё нет в проекте?

Да, это один из самых эффективных сценариев использования. Когда у вас есть четко описанный стандарт, вы можете просить AI создать совершенно новый компонент, который будет на 100 % соответствовать визуальному языку вашего приложения. Файл выступает в роли технического задания, которое ограничивает «творчество» модели рамками вашей дизайн-системы.

### Поможет ли DESIGN.md решить проблему верстки на разных устройствах?

Сам по себе текстовый файл не заменит качественный CSS, но он поможет задать правила адаптивности. В DESIGN.md можно прописать логику изменения отступов или размеров шрифтов для разных брейкпоинтов. Если модель получит четкую инструкцию, что «на мобильных устройствах `container-padding` всегда равен `16px`, а на десктопах — `48px`», вероятность корректной адаптивной верстки значительно возрастет.
Поделиться:TelegramX / TwitterVK