Aider — AI-помощник по программированию на базе терминала. Он читает указанные вами файлы, генерирует правки в виде унифицированных диффов и применяет их непосредственно к вашей кодовой базе. Каждое изменение доступно для проверки до применения. Этот diff-ориентированный рабочий процесс хорошо сочетается с токен-ориентированным дизайн-хэндоффом — вы можете точно видеть, использует ли сгенерированный код spacing.16 из файла токенов или сдрейфовал к хардкоду 16px.

Это руководство охватывает полный пайплайн Aider + figmascope: генерацию бандла, загрузку его в сессию Aider, использование режима Architect для первоначального скаффолда и итерацию с точечными запросами на редактирование.

Предварительные требования

Установите Aider, если ещё не установили:

pip install aider-chat
# или
brew install aider

Aider поддерживает несколько бэкендов моделей. В примерах используется Claude Sonnet через Anthropic API, но рабочий процесс идентичен с OpenAI или локальными моделями.

export ANTHROPIC_API_KEY=sk-ant-...
# или OPENAI_API_KEY для GPT-4o

Шаг 1: Генерация бандла

Откройте figmascope.dev, вставьте URL вашего Figma-файла и нажмите Export Agent Context. Экспортёр работает в браузере — ваш личный токен доступа Figma хранится в localStorage и никогда не покидает ваш компьютер.

Загрузка сохраняется как context-bundle.zip.

Шаг 2: Распаковка в ваш проект

unzip ~/Downloads/context-bundle.zip -d ./design/

ls design/
# CONTEXT.md  _meta.json  components/  screens/  strings.json  tokens.json

Шаг 3: Запуск Aider с файлами бандла в области видимости

Передайте файлы бандла через командную строку. Aider загружает их как контекст для чтения — модель может на них ссылаться, но не редактирует их, если явно не использовать /add для продвижения в редактируемые файлы.

aider \
  --read design/CONTEXT.md \
  --read design/tokens.json \
  --read design/strings.json \
  design/screens/home.json \
  src/screens/HomeScreen.kt

Шаблон: --read для файлов бандла (только контекст, без редактирования), позиционные аргументы для исходных файлов, которые нужно изменить. Это сохраняет бандл чистым — механизм диффов Aider не будет пытаться редактировать tokens.json.

Если нужно создать новый файл, а не редактировать существующий, просто укажите целевой путь, которого ещё не существует. Aider создаст его.

Шаг 4: Добавление референсных PNG

Aider может включать изображения как контекст для мультимодальных моделей. Используйте команду /add после запуска:

/add design/screens/home.png

PNG — это рендер в 2× из Figma. С мультимодальной моделью (Claude Sonnet, GPT-4o) Aider включает его как визуальный референс. Используйте для проверок во время ревью — каноническая спецификация это JSON, не изображение.

Шаг 5: Режим Architect — первоначальный скаффолд

Команда /architect в Aider использует двухшаговую модель: один проход для планирования, один для реализации. Это правильная отправная точка для полного экрана, где нужна цельная структура перед редактированием отдельных частей.

/architect Implement design/screens/home.json as a Jetpack Compose screen.

Context:
- Read CONTEXT.md for framework constraints and target conventions.
- All spacing, color, and radius values come from tokens.json.
  Map token keys directly: spacing.16 → 16.dp, color.7f5cfe → Color(0xFF7F5CFE).
- Use string keys from strings.json via stringResource() with the fallback field as the literal fallback.
- IR node kinds: stack(vertical)→Column, stack(horizontal)→Row, overlay→Box,
  absolute→Box+Modifier.offset, leaf(text)→Text, leaf(rect)→Box+Modifier.background.
- Do not hardcode any value that has a token equivalent.

Output to: src/screens/HomeScreen.kt

Aider сначала генерирует план, показывает его вам, затем производит дифф. Проверьте план — если маппинг узлов выглядит неверным, исправьте это до запуска прохода реализации.

Шаг 6: Редактирование конкретных файлов со ссылками на токены

После создания скаффолда используйте точечные запросы /edit для исправления конкретных проблем. Здесь проявляется сила diff-рабочего процесса Aider — каждое редактирование представляет собой небольшое, проверяемое изменение, а не полную перегенерацию.

The card component in HomeScreen.kt uses hardcoded 12dp for corner radius.
Check tokens.json for the correct radius token and replace it.

Aider производит минимальный дифф: одна или две изменённые строки, больше ничего. Вы точно видите, что изменилось.

Для аудита отступов по всему файлу:

Audit every .dp value in src/screens/HomeScreen.kt against the spacing tokens in design/tokens.json.
Produce a diff that replaces any hardcoded value with its token equivalent where one exists.
Leave a // TODO comment for any value that doesn't match a spacing token.

Шаг 7: Проверка диффов по спецификации

Просмотр диффов Aider — это поверхность для ревью. Перед принятием любого изменения проверьте:

Если дифф выглядит неверным, отклоните его с помощью n в промпте и скажите Aider, что исправить. Короткий цикл обратной связи — промпт, дифф, принять/отклонить, уточнить — означает, что дрейф вы замечаете сразу, а не после приземления большого блока кода.

Почему diff-рабочий процесс Aider хорошо сочетается с бандлом

Дрейф токенов виден в диффах. Если сгенерированная строка говорит color = Color(0xFF7F5CFE) вместо color = tokens.colorPrimary, вы видите это до слияния. Нет «проверить позже» — ревью происходит встроенно.

Итеративное уточнение дёшево. Вы не перегенерируете весь экран при каждом изменении. Каждый последующий промпт производит точечный дифф. Бандл обеспечивает стабильный контекст; Aider обеспечивает хирургическое редактирование.

Бандл версионируется вместе с кодом. При обновлении дизайна повторно экспортируйте бандл из figmascope, сравните с предыдущей версией и попросите Aider применить только изменённые узлы. Рабочий процесс масштабируется через несколько итераций дизайна без полной переработки.

Типичные паттерны и подводные камни

Не добавляйте все экраны сразу. Передавайте по одному JSON экрана за раз. Больше контекста не всегда лучше — Aider (и базовая модель) работает лучше с сфокусированным контекстом, чем с дампом всех экранов файла.

Используйте --read для бандла, а не позиционные аргументы. Если передать tokens.json как позиционный аргумент, Aider может попытаться его редактировать. Используйте --read для обозначения контекста только для чтения.

Проверьте _meta.json перед первым промптом. Массив warnings перечисляет заливки и эффекты, которые экспортёр не смог полностью разрешить. Сообщите об этом Aider заранее, чтобы он не аппроксимировал молча:

cat design/_meta.json | python3 -c "import sys,json; w=json.load(sys.stdin).get('warnings',[]); print('\n'.join(w))"

Включите все предупреждения в ваш architect-промпт: «Пропустите заливку hero-background — градиент не поддерживается. Оставьте комментарий TODO.»

Предпочитайте Aider для хирургических, проверяемых правок — а для полного контекста сессии по множеству файлов используйте Cursor или Claude Code. Все три рабочих процесса начинаются одинаково: основное приложение figmascope выполняет экспорт в браузере.