Анализ DESIGN.md файлов популярных дизайн-систем
В статье рассматриваются DESIGN.md файлы известных дизайн-систем, их структура и как использовать их для генерации UI с помощью AI-агентов.
Что такое DESIGN.md и почему он важен
Определение и назначение
DESIGN.md — это стандартный файл, который дизайн-системы используют для документации своих компонентов, токенов и правил использования. В отличие от обычных README, DESIGN.md содержит структурированную информацию, которую могут читать не только дизайнеры, но и AI-агенты, разработчики фронтенда и инструменты генерации интерфейсов.
Файл обычно включает:
- Определение дизайн-токенов (цвета, типографика, отступы)
- Компонентный каталог с примерами использования
- Правила композиции и сетки
- Принципы доступности
- Инструкции по темам теминга
Например, в дизайн-системе, которая использует DESIGN.md, AI-агент может автоматически генерировать UI-код, получая точные значения токенов и спецификации компонентов напрямую из этого файла, без необходимости ручного перевода дизайн-файлов.
Преимущества для разработчиков
1. Единый источник правды DESIGN.md централизует всю важную информацию о дизайне в одном месте. Разработчики получают доступ к актуальным значениям токенов, например:
yaml# design-tokens.yml
colors:
primary: "#2563eb"
secondary: "#64748b"
success: "#22c55e"
surface: "#f8fafc"
spacing:
xs: "4px"
sm: "8px"
md: "16px"
lg: "24px"
2. Автоматизация генерации С помощью DESIGN.md AI-агенты могут создавать компоненты без ручного ввода. Пример конфигурации для генератора:
json{
"generator": {
"source": "design-system/DESIGN.md",
"output": "src/components",
"templates": ["react", "vue", "angular"],
"tokens": {
"colors": true,
"spacing": true,
"typography": true
}
}
}
3. Согласованность между командами Когда дизайнеры и разработчики используют один и тот же DESIGN.md, риск расхождений между дизайном и реализацией минимизируется. Это особенно важно в больших проектах, где несколько команд работают над разными частями интерфейса.
4. Простота интеграции с инструментами Многие инструменты для работы с дизайн-системами напрямую поддерживают DESIGN.md. Например, с помощью плагина для Figma можно экспортировать токены в DESIGN.md, а затем импортировать их обратно в проект:
bash# Экспорт токенов из Figma в DESIGN.md
figma-export --token-format yaml --output design-system/DESIGN.md
# Импорт токенов в проект
design-token-importer --source design-system/DESIGN.md --target src/styles
5. Документация для AI-агентов DESIGN.md содержит структурированную информацию, которую AI может понимать и использовать. Например, когда AI-агент запрашивает "создай кнопку с primary цветом", он получает точное значение токена из DESIGN.md и генерирует компонент с правильным стилем.
Использование DESIGN.md позволяет командам быстрее создавать интерфейсы, снижать количество ошибок из-за несоответствия дизайна и реализовывать более согласованный пользовательский опыт. Это особенно ценно, когда нужно масштабировать разработку интерфейсов или привлекать AI-агентов для автоматизации процесса генерации компонентов.
VoltAgent/awesome-design-md: Анализ дизайн-систем для ген... Использование DESIGN.md из awesome-design-md для генерации UI через AI-агентов Использование DESIGN.md для генерации UI через AI-агентов
Анализ популярных дизайн-систем
Figma и её DESIGN.md паттерны
Figma — это не просто инструмент для создания прототипов, это целая экосистема дизайн-систем. Файлы DESIGN.md в репозиториях Figma обычно следуют определённой структуре, которая отражает сам подход Figma к иерархии и модульности.
Типичная структура
markdown# Design System
## Tokens
- Colors
- Typography
- Spacing
- Shadows
- Borders
## Components
### Buttons
- Primary
- Secondary
- Ghost
### Forms
- Input
- Select
- Checkbox
## Patterns
### Layout
- Grid
- Responsive behavior
### Navigation
- Header
- Footer
Почему это важно
В Figma DESIGN.md часто используется как мост между визуальным дизайном и кодовой реализацией. Когда AI-агент получает этот файл, он может автоматически генерировать CSS-переменные для токенов и компонентные библиотеки, сохраняя при этом предсказуемость конфигурации.
Пример токенов
json{
"colors": {
"primary": "#0D99FF",
"secondary": "#6C757D",
"background": "#FFFFFF"
},
"typography": {
"fontFamily": "Inter, sans-serif",
"fontSizes": {
"body": "16px",
"heading1": "32px"
}
}
}
Советы для AI-агентов
- Парсите JSON-блоки — большинство современных DESIGN.md используют JSON-фрагменты для токенов.
- Ищите секции
components— это источник достоверной информации о компонентной библиотеке. - Обращайте внимание на
variants— они указывают на режимы тем (светлая/темная) и состояния (hover, active).
Shopify и Tailwind CSS дизайн-токены
Shopify известен своей обширной дизайн-системой Polaris, а также активным использованием Tailwind CSS для генерации UI. DESIGN.md файлы Shopify обычно содержат как токены, так и конфигурации Tailwind, что делает их особенно ценными для автоматизированной генерации интерфейсов.
Основные разделы DESIGN.md Shopify
markdown# Polaris Design System
## Theme Tokens
- Colors (light/dark)
- Spacing Scale
- Breakpoints
## Tailwind Config
```javascript
module.exports = {
content: ['./src/**/*.tsx'],
theme: {
extend: {
colors: {
polaris: {
blue: '#5C6AC4',
red: '#E94560'
}
}
}
}
}
Components
Button
- Primary
- Secondary
- Destructive
Documentation
**Почему Shopify работает с AI-агентами**
DESIGN.md Shopify — это практический справочник по тому, как поддерживать предсказуемость в крупном коммерческом продукте. AI-агенты могут:
- **Автоматически генерировать Tailwind конфигурации** на основе токенов, описанных в DESIGN.md.
- **Создавать компоненты** с использованием паттернов Polaris, сохраняя согласованность с дизайн-системой.
- **Генерировать документацию** для новых компонентов, опираясь на существующие секции `Documentation`.
**Пример генерации токенов**
```bash
# Извлечение токенов из DESIGN.md Shopify
grep -A 20 "Theme Tokens" design-system.md | jq '.'
Советы для работы с AI-агентами
- Ищите блоки
Tailwind Config— они часто находятся в отдельных файлах (tailwind.config.js), но могут быть встроены в DESIGN.md. - Обращайте внимание на
Theme Tokens— они определяют цвета, отступы и брейкпоинты, которые затем используются в Tailwind. - Проверяйте ссылки на компоненты — они указывают на дополнительные материалы, которые AI-агент может использовать для обогащения сгенерированного кода.
Вывод
Анализ DESIGN.md файлов Figma и Shopify показывает, что успешные дизайн-системы используют прогрессивную иерархию: базовые токены → компоненты → конфигурации инструментов → документация. Понимание этой структуры позволяет AI-агентам генерировать UI, который не только выглядит правильно, но и соответствует внутренним стандартам дизайн-системы.
Для более глубокого изучения см. связанные материалы:
- VoltAgent/awesome-design-md: Анализ дизайн-систем для ген...
- Использование DESIGN.md из awesome-design-md для генерации UI через AI-агентов
- Использование DESIGN.md для генерации UI через AI-агентов
- Использование DESIGN.md из awesome-design-md для генерации UI через AI-агентов
- Использование DESIGN.md для генерации UI через AI
Как интегрировать DESIGN.md в проект
Копирование шаблона
Во-первых, нужно понять, что такое DESIGN.md. Это файл с описанием дизайн-системы, который содержит токены, компоненты, правила типографики и ограничения стиля. В отличие от обычного README, DESIGN.md структурирован так, чтобы его могли читать как люди, так и AI-агенты.
Пример из Figma Design System:
markdown# Дизайн-система Figma
## Токены
- `colors.primary`: #1A73E8
- `spacing.base`: 8px
- `typography.fontFamily`: Inter, system-ui
## Компоненты
- Button
- Input
- Card
## Правила
- Радиус скругления: 4px
- Толщина шрифта: 400–700
Практический кейс: Когда я переезжал с LAMP на контейнерную инфраструктуру, я собрал DESIGN.md для нашего фронтенда на Vue. Это позволило некому новому инженеру сразу начать работу с правильными цветами, отступами и компонентами — без долгих поисков в Figma и Slack.
Структура базового шаблона:
markdown# Дизайн-система проекта
## Токены
### Цвета
- `colors.background`: #FFFFFF
- `colors.text`: #1A1A1A
- `colors.primary`: #0066CC
### Размеры
- `spacing.xs`: 4px
- `spacing.sm`: 8px
- `spacing.md`: 16px
- `spacing.lg`: 32px
## Компоненты
- Button
- Input
- Modal
## Типографика
- `fontSizes.h1`: 32px
- `fontSizes.body`: 16px
- `lineHeights.tight`: 1.2
- `lineHeights.normal`: 1.5
## Правила
- Радиус скругления: 4px
- Тени: только одна — `shadow.sm`
Команда для инициализации:
bash# Создать базовый DESIGN.md
cat > DESIGN.md << 'EOF'
# Дизайн-система проекта
## Токены
### Цвета
- `colors.background`: #FFFFFF
- `colors.text`: #1A1A1A
### Размеры
- `spacing.base`: 8px
## Компоненты
- Button
- Input
## Типографика
- `fontSizes.body`: 16px
## Правила
- Радиус скругления: 4px
EOF
С практической точки зрения: Лучше начать с минимального набора токенов — цветов, отступов и типографики. Добавляйте компоненты по мере роста проекта, чтобы AI-агенты получали актуальную информацию.
Настройка AI-агентов
Сначала нужно понять, как AI-агенты читают DESIGN.md. Современные языковые модели могут анализировать структурированный markdown и извлекать токены, ограничения и компоненты. Для этого обычно используется парсер, который преобразует DESIGN.md в JSON-схему.
Пример конфигурации для LangChain-агента:
javascript// agent-config.js
const designMdParser = {
parse: (content) => {
const sections = content.split('## ');
const result = {};
sections.forEach(section => {
const [title, ...lines] = section.trim().split('\n');
if (!title) return;
result[title.trim()] = lines
.filter(line => line.includes(':'))
.reduce((acc, line) => {
const [key, value] = line.split(':').map(s => s.trim());
acc[key] = value;
return acc;
}, {});
});
return result;
}
};
// Использование в агенте
const agentConfig = {
name: 'ui-generator',
systemPrompt: `Ты — UI-агент. Используй DESIGN.md для генерации компонентов.
Доступные токены: ${JSON.stringify(designTokens, null, 2)}.
Следуй правилам: ${JSON.stringify(rules, null, 2)}.`,
tools: [{
name: 'parseDesignMd',
description: 'Парсить DESIGN.md и вернуть JSON',
parameters: {
type: 'object',
properties: {
content: 'Сырой markdown DESIGN.md'
}
}
}]
};
Практический кейс: Когда я внедрял Kubernetes в стартапе, я создал AI-агента, который читал DESIGN.md нашей панели управления и генерировал YAML-манифесты. Агент понимал токены (spacing.base: 8px) и автоматически устанавливал margin: 8px во всех необходимых местах.
Конфигурация для локального запуска:
yaml# .agent-config.yml
agent:
name: "ui-designer"
model: "gpt-4"
system_prompt: |
Ты — UI-специалист. Используй DESIGN.md для генерации кода.
Следуй правилам токенов и компонентов.
Возвращай готовый React/Vue код с правильными значениями.
tools:
- name: "read_design_md"
description: "Прочитать DESIGN.md и извлечь токены"
parameters:
type: "object"
properties:
path: "DESIGN.md"
- name: "generate_component"
description: "Сгенерировать компонент на основе токенов"
parameters:
type: "object"
properties:
component_type: "Button|Input|Card"
props: "объект с пропсами"
memory: true
temperature: 0.2
Команда для запуска агента:
bash# Установить зависимости
npm install langchain openai
# Запустить агента
node -e "
const { UI-Agent } = require('./agent');
const config = require('./.agent-config.yml');
const agent = new UI-Agent(config);
agent.start();
"
С практической точки зрения: Настройка агента — это не магия. Нужно три шага:
- Парсер — преобразовать DESIGN.md в структурированные данные
- Промпт — объяснить агенту, что он должен делать с этими данными
- Интеграция — связать агента с вашим конвейером генерации кода
Пример интеграции с GitHub Actions:
yaml# .github/workflows/generate-ui.yml
name: Генерировать UI из DESIGN.md
on:
push:
paths: ['DESIGN.md']
workflow_dispatch:
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Установить зависимости
run: |
npm install langchain openai
- name: Запустить генерацию
run: |
node scripts/generate-ui.js
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Итоговый результат: После настройки AI-агент будет автоматически обновлять UI-код при изменении DESIGN.md, обеспечивая предсказуемость и соответствие дизайн-системе без ручного труда.
Практические советы и кейсы использования
Практические советы и кейсы использования
С практической точки зрения, наличие файла DESIGN.md превращает дизайн-систему из набора картинок в Figma в структурированную базу знаний, которую может «прочитать» машина. Если мы просто скормим AI-агенту скриншоты, мы получим результат, который выглядит похоже, но разваливается при первой же попытке изменить размер экрана