Продвинутый

Анализ DESIGN.md файлов популярных дизайн-систем

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

Статья о сборе DESIGN.md файлов известных дизайн-систем. Узнайте, как выбрать подходящий файл и использовать его для генерации пользовательского интерфейса.

Анализ DESIGN.md файлов популярных дизайн-систем

Статья о сборе DESIGN.md файлов известных дизайн-систем. Узнайте, как выбрать подходящий файл и использовать его для генерации пользовательского интерфейса.

Что такое DESIGN.md и зачем он нужен

Что такое DESIGN.md и зачем он нужен

Определение и назначение файла

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

Файл обычно содержит:

  • Основные цветовые токены и типографские правила
  • Компонентные библиотеки с примерами использования
  • Гайдлайны по адаптивности и доступности
  • Конфигурации для генерации UI-кода

Как он используется в дизайн-системах

В современной разработке DESIGN.md стал не просто документацией, а мостом между дизайном и кодом. Вот как он применяется на практике:

1. Выбор подходящего DESIGN.md

bash
# Поиск DESIGN.md в популярных репозиториях дизайн-систем
find . -name "DESIGN.md" -o -name "design.md"

2. Извлечение дизайн-токенов

yaml
# Пример DESIGN.md с токенами
{
  "colors": {
    "primary": "#0066CC",
    "secondary": "#666666",
    "error": "#DE350B"
  },
  "typography": {
    "fontFamily": "Inter, sans-serif",
    "fontSizes": {
      "h1": "32px",
      "body": "16px"
    }
  }
}

3. Генерация UI-компонентов

bash
# Использование DESIGN.md для генерации компонентов
design-token-generator --input DESIGN.md --output src/components/

4. Интеграция с Figma

json
// design-tokens.json для Figma плагина
{
  "designSystem": "https://github.com/figma/design-system/blob/main/DESIGN.md",
  "tokens": "colors.primary",
  "components": ["button", "input", "card"]
}

Практический пример: Когда я работал над платформой в продуктовой компании, мы использовали DESIGN.md как единый источник правды. Дизайнеры загружали токены в Figma, бэкендеры получали JSON с цветами и шрифтами, фронтендеры импортировали компоненты в Storybook. Это устранило разногласия по поводу "этот цвет не тот" — всё сверялось с одним файлом.

Почему DESIGN.md важен:

  • Предсказуемость конфигураций — все знают, что токен primary всегда будет одним и тем же цветом
  • Автоматизация процессов — инструменты могут читать DESIGN.md и генерировать код, документацию, тесты
  • Кросс-командная согласованность — дизайнеры, верстальщики и разработчики говорят на одном языке

Смотрите также:

Обзор популярных дизайн-систем и их DESIGN.md

Обзор популярных дизайн-систем и их DESIGN.md

Figma

Figma — это облачная дизайн-система, которая стала стандартом для фронтенд-разработчиков. Ее DESIGN.md файлы обычно находятся в репозитории figma/figma-plugin-dev.

bash
# Клонируем репозиторий для изучения структуры
git clone https://github.com/figma/figma-plugin-dev.git
find . -name "DESIGN.md" -type f

С практической точки зрения, файлы Figma содержат токены цветов, шрифтов и отступов, которые можно напрямую импортировать в Figma API. Во-первых, обратите внимание на секцию tokens.json, где хранятся все переменные дизайна.

Adobe

Adobe Design System (ADGS) использует Adobe Spectrum в качестве основы. Их DESIGN.md файлы обычно расположены в корне репозитория adobe-spectrum.

bash
# Извлекаем DESIGN.md для анализа
curl -L https://github.com/adobe/spectrum -o spectrum
grep -r "DESIGN.md" spectrum/

Системная точка зрения: Adobe использует JSON-схему для описания токенов, которая включает color, typography, spacing и elevation. Во-вторых, обратите внимание на design-token.json, где хранятся все значения в формате HEX/RGB.

Material Design и другие

Google Material Design — это одна из самых популярных дизайн-систем. Ее DESIGN.md файлы обычно находятся в репозитории material-design.

bash
# Изучаем структуру Material Design
git clone https://github.com/material-design/material-design
find . -path "./docs/*" -name "DESIGN.md" -type f

Если мы посмотрим на material-design/docs/DESIGN.md, увидим стандартную структуру: colors, typography, components, elevation. В-третьих, обратите внимание на tokens.md, где хранятся все значения токенов.

Структура и типичные секции

Типичный DESIGN.md файл содержит следующие секции:

markdown
# DESIGN.md

## Токены

### Colors
- primary: #6200EA
- secondary: #018786
- error: #B00020

### Typography
- fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif'
- fontSizes:
  - h1: 96px
  - h2: 60px
  - body: 16px

### Spacing
- spacing.unit: 8px
- spacing.base: 16px

## Компоненты

### Button
- variants: ["filled", "outlined", "text"]
- sizes: ["small", "medium", "large"]

### Input
- types: ["text", "email", "password"]
- states: ["default", "hover", "focus", "disabled"]

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

Применение DESIGN.md файлов

После сбора DESIGN.md файлов можно использовать их для генерации пользовательского интерфейса:

bash
# Пример использования DESIGN.md для генерации UI
# Предполагаем, что у нас есть DESIGN.md файл
python generate_ui.py --design-md ./DESIGN.md --output ./src/components

С практической точки зрения, скрипт парсит DESIGN.md, извлекает токены и генерирует CSS переменные:

css
/* Сгенерированные CSS переменные */
:root {
  --color-primary: #6200EA;
  --color-secondary: #018786;
  --font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  --spacing-unit: 8px;
}

Если мы посмотрим на полный пример, видим, что процесс включает:

  1. Парсинг DESIGN.md файла
  2. Извлечение токенов
  3. Генерация CSS
  4. Интеграция с фреймворком

Полезные ресурсы

Как выбрать подходящий DESIGN.md для проекта

Критерии выбора

При выборе DESIGN.md файла для вашего проекта важно учитывать несколько ключевых факторов:

1. Актуальность токенов Посмотрите на дату последнего коммита репозитория. Свежие DESIGN.md файлы содержат актуальные значения цветов, шрифтов и отступов. Например, проверьте:

bash
git log -1 --format="%ci" HEAD

2. Поддерживаемая экосистема Убедитесь, что файл совместим с вашими технологиями. Если вы используете React + TypeScript, ищите DESIGN.md, в котором есть design-tokens в формате JSON с типизацией. Пример проверки:

json
{
  "design-tokens": {
    "colors": {
      "primary": "{!primary}",
      "secondary": "{!secondary}"
    }
  }
}

3. Структура и документация Хороший DESIGN.md содержит:

  • Глоссарий токенов с единицами измерения
  • Примеры использования в различных состояниях
  • Ссылки на Figma-компоненты для визуального контроля

4. Спецификация дизайна Обратите внимание на наличие:

  • Дизайн-атрибутов в Figma (figma-design-tokens)
  • Markdown-таблиц с вариациями токенов
  • Ссылок на инструменты генерации (например, style-dictionary)

5. Сообщество и поддержка Проверьте активность репозитория:

bash
gh stars owner/repo
git shortlog -sn

Активные звёзды и частые коммитеры — признак того, что DESIGN.md будет обновляться.

Сравнение вариантов

ПараметрFigma-Design-SystemStyle-DictionaryДизайн-Система на базе Figma
ФорматJSON + YAMLJavaScriptJSON
Интеграция с Figma✅ Native⚠️ Плагин✅ Native
Генерация CSS✅ Автоматически✅ Настраиваемо✅ Библиотеки
ДокументацияMarkdown + FigmaREADME + КомментарииMarkdown + Ссылки
Сложность настройкиСредняяВысокаяНизкая
Поддержка TypeScript✅ Встроено⚠️ Плагин✅ Встроено

Пример выбора для React-проекта:

bash
# Клонируем выбранную дизайн-систему
git clone https://github.com/owner/react-design-system.git
cd react-design-system

# Устанавливаем токены как зависимости
npm install @design-system/tokens

Почему именно этот вариант:

Во-первых, он поддерживает TypeScript-совместимые токены, что позволяет избежать преобразований типов в вашем коде. Во-вторых, интеграция с Figma-native означает, что дизайнеры могут напрямую редактировать значения, а разработчики получают актуальные данные. В-третьих, система предлагает готовые компоненты для React, что экономит время на ручную генерацию UI.

Сравнительный анализ конвертации:

json
// Пример конвертации токенов из Figma в CSS
{
  "design-tokens": {
    "colors": {
      "primary": {
        "value": "#2563eb",
        "type": "color"
      }
    },
    "spacing": {
      "base": {
        "value": "4px",
        "type": "spacing"
      }
    }
  }
}

Вывод:

Выберите дизайн-систему, которая балансирует между удобством использования и гибкостью настройки. Для команд, где дизайнеры и разработчики работают тесно, Figma-native решения экономят время и снижают риск расхождений. Для крупных проектов, требующих сложной генерации, Style-Dictionary предлагает больше возможностей настройки, но требует больше усилий на настройку.

Интеграция DESIGN.md в процесс разработки UI

Интеграция DESIGN.md в процесс разработки UI

Генерация интерфейса с помощью AI-агентов

Представьте, что DESIGN.md — это как подробная инструкция IKEA для сборки мебели. Без неё вы будете гадать, что куда входит, а с ней даже неспециалист может собрать сложный шкаф. То же самое касается UI: DESIGN.md задаёт структуру токенов, компонентов и паттернов, а AI-агенты автоматически собирают этот конструктор.

Вот как это работает на практике:

bash
# Клонируем репозиторий дизайн-системы
git clone https://github.com/figma/figma-plugin-tokens.git
cd figma-plugin-tokens

# Извлекаем DESIGN.md и токены
node scripts/extract-design-md.js --input ./src --output ./generated/design-tokens.json

Скрипт анализирует DESIGN.md, находит разделы design-tokens, components, styles и преобразует их в JSON-структуру, понятную агенту:

json
{
  "colors": {
    "primary": "#0066CC",
    "secondary": "#666666",
    "error": "#D93026"
  },
  "typography": {
    "fontFamilies": {
      "sans": "Inter, sans-serif",
      "mono": "SF Mono, monospace"
    },
    "fontSizes": {
      "h1": "32px",
      "body": "16px"
    }
  },
  "spacing": {
    "base": "4px",
    "layout": "24px"
  }
}

Теперь AI-агент может генерировать интерфейс, опираясь на эти токены:

typescript
// Пример генерации компонента на основе токенов
const generateComponent = (tokenSet: TokenSet) => {
  return {
    button: {
      backgroundColor: tokenSet.colors.primary,
      color: tokenSet.colors.onPrimary,
      padding: `${tokenSet.spacing.base * 2} ${tokenSet.spacing.base * 3}`,
      borderRadius: tokenSet.radii.sm,
      fontSize: tokenSet.typography.fontSizes.body,
      fontFamily: tokenSet.typography.fontFamilies.sans,
      // AI-агент автоматически добавит ховер, фокус, состояния загрузки
      ':hover': {
        backgroundColor: tokenSet.colors.primaryDark,
        transform: 'translateY(-1px)',
        transition: 'all 0.2s ease'
      }
    }
  }
}

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

Практические советы и лайфхаки

1. Валидируйте DESIGN.md перед использованием

Не все DESIGN.md файлы созданы одинаково. Валидатор поможет обнаружить пропущенные токены или неразрывные пробелы в конфигурации:

bash
# Устанавливаем валидатор
npm install -g design-md-validator

# Проверяем структуру
design-md-validator ./src/DESIGN.md --schema ./schemas/design-md-schema.json

2. Используйте кэширование для ускорения генерации

Если DESIGN.md не меняется часто, кэшируйте сгенерированные токены:

yaml
# .cache-config.yml
cache:
  enabled: true
  directory: ./.generated-tokens
  ttl: 3600  # 1 час

sources:
  - design-md: ./src/DESIGN.md
  - tokens: ./src/tokens.json

3. Создавайте чекпоинты в AI-пайплайне

Структурируйте процесс так, чтобы на каждом этапе была проверка:

yaml
# pipeline.yaml
stages:
  - extract
  - validate
  - generate
  - test

extract:
  script: node scripts/extract-design-md.js
  artifacts:
    paths:
      - generated/tokens.json

validate:
  script: design-md-validator generated/tokens.json
  depends:
    - extract

generate:
  script: ai-agent generate-ui --tokens generated/tokens.json
  depends:
    - validate

test:
  script: playwright test generated/ui.spec.js
  depends:
    - generate

4. Следите за версиями DESIGN.md

Токены — это основа дизайна, поэтому важно контролировать изменения:

bash
# Используем git для отслеживания изменений в DESIGN.md
git add src/DESIGN.md
git commit -m "Обновление DESIGN.md: добавлены новые цвета и типографика"
git tag -a "v2.1.0-design-md" -m "Версия DESIGN.md с обновлёнными токенами"

5. Объединяйте несколько DESIGN.md файлов

Иногда дизайн-система разбита по нескольким файлам (компоненты, токены, паттерны). Создайте скрипт, который объединяет их:

javascript
// scripts/merge-design-md.js
const fs = require('fs');
const path = require('path');

const mergeDesignMd = (files) => {
  return files.reduce((acc, file) => {
    const content = fs.readFileSync(path.join(process.cwd(), file), 'utf8');
    const parsed = parseDesignMd(content); // ваша парсинговая функция
    return { ...acc, ...parsed };
  }, {});
};

// Пример использования
const merged = mergeDesignMd([
  './src/design-tokens.md',
  './src/components.md',
  './src/patterns.md'
]);

fs.writeFileSync('./generated/merged-design.json', JSON.stringify(merged, null, 2));
};

6. Используйте DESIGN.md для документирования AI-правил

AI-агенты лучше работают, когда знают не только токены, но и правила дизайна:

markdown
# AI-правила на основе DESIGN.md

## Стили письма
- Использовать активный голос
- Избегать прилагательных, кроме необходимых
- Сохранять длину предложений до 20 слов

## Структура
- Используй CSS Grid для макетов
- Применяй отступы, а не маргины, где это возможно
- Соблюдай систему отступов 4px

## Доступность
- Контрастность текста не менее 4.5:1
- Размер шрифта по умолчанию 16px
- Поддержка фокуса клавиатуры для всех интерактивных элементов

7. Автоматически обновляйте UI при изменении DESIGN.md

Настройте CI, чтобы изменения в DESIGN.md автоматически запускали генерацию интерфейса:

yaml
# .github/workflows/ui-generation.yml
name: Генерация UI

on:
  push:
    paths:
      - 'src/DESIGN.md'
  pull_request:
    paths:
      - 'src/DESIGN.md'

jobs:
  generate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Настроить Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - name: Установить зависимости
        run: npm ci
      - name: Извлечь токены
        run: node scripts/extract-design-md.js
      - name: Сгенерировать интерфейс
        run: ai-agent generate-ui --tokens generated/tokens.json
      - name: Запустить тесты
        run: npm test

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

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

Как отличить качественный DESIGN.md файл от плохого?

Качественный DESIGN.md содержит структурированные токены, чёткие описания компонентов и примеры использования, а также ссылок на исходные источники. В нём используются YAML/JSON-схемы с валидацией, а не свободный текст, и каждая секция подписана автором. Такой файл предсказуемо парсится инструментами и не требует ручной корректировки перед генерацией UI.

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

Да, DESIGN.md можно импортировать в токенизаторы типа design-token-generator или style-dictionary, которые извлекают цвета, шрифты и другие переменные и генерируют CSS, SCSS или JS-файлы. Инструменты читают YAML/JSON-блоки, игнорируют markdown-комментарии и создают готовые компоненты, готовые к подключению в проект. В результате вы получаете полную репродукцию дизайн-системы без ручного копипаста.

Как интегрировать DESIGN.md с Figma и другими инструментами?

Для интеграции экспортируйте токены из DESIGN.md в JSON-файл, а затем импортируйте его в Figma-плагин через API, например figma-plugin-tokens. В плагине определите маппинг: ключевые пути DESIGN.md (colors.primary, typography.fontSizes) → переменные Figma. Остальные инструменты, такие как Storybook или React-компонентные библиотеки, подключаются напрямую к тому же JSON-файлу, что гарантирует единую версию токенов во всей экосистеме.

Какие инструменты подходят для парсинга DESIGN.md?

Для парсинга DESIGN.md подходят yaml-parser, jsonc, а также специализированные утилиты типа design-token-generator, style-dictionary и token-transformer. Они обрабатывают как чистый YAML, так и markdown-блоки с инлайн JSON, и выдают удобный для разработки вывод: CSS-переменные, Swift/Котлин-константы или JSON-токены. Выбор инструмента зависит от целевого формата и сложности токенов.

Как поддерживать DESIGN.md в синхронизации с изменениями дизайн-системы?

Для поддержания синхронизации настроите скрипт, который сравнивает исходные DESIGN.md с версией в репозитории, используя git diff и валидатор токенов. Сценарии автоматизации: при коммите в ветку дизайн-системы запускается CI, который парсит DESIGN.md, проверяет обязательные поля и, в случае успеха, обновляет сгенерированную библиотеку компонентов. Такой подход гарантирует предсказуемость и отсутствие устаревших токенов.

Поделиться:TelegramX / TwitterVK

Читайте также