Figma
Дизайн · издатель buff · версия 1.0.1
Макеты как контекст: параметры, токены и структура экранов для любой модели, картинка — для той, которая видит. Вопросы в комментариях к дизайну.
Ответ в Buff опирается на макет: цвет кнопки назван по имени стиля, а не по догадке. Форма настройки: адрес API уже подставлен, остаётся назвать файлы или проекты. Подключение работает: свой процесс, восемь инструментов, у одного отметка «картинка». Проверка связи говорит, кто вошёл, сколько файлов в области и читаются ли переменные на этом плане. Что интеграция получит, видно в каталоге коннектора до установки.
Нажмите на снимок, чтобы открыть его целиком. Все снимки — с работающей установки.
Обзор
Экран описан в макете точнее, чем в задаче: размеры, отступы, цвета, шрифты, из каких компонентов он собран и как ведёт себя автолейаут. Интеграция даёт Buff читать отмеченные файлы Figma так, как их показывает панель инспектора, — параметрами и именами токенов, — и принимает вопросы прямо в комментариях к макету. Картинку макета получает только модель, которая умеет читать изображения; всё остальное работает с любой.
Сценарии
Ситуации, ради которых его ставят.
Сверстать экран как в макете, а не как показалось
Разработчик берёт задачу «сделать экран входа». В задаче — одна строка и ссылка на Figma. Отступы, скругления, размеры шрифтов и цвет кнопки он обычно снимает глазами и округляет.
Результат. Бот читает фрейм экрана инструментом и отвечает параметрами: автолейаут по вертикали с отступом 24 и интервалом 16, кнопка 48 в высоту со скруглением 12, заливка — стиль «Кнопка/Малахит», #0FA37F. Верстать есть с чего, и цифры совпадают с макетом.
Дизайн-система: какие токены есть и что они значат
В проекте появляется третий оттенок зелёного, потому что никто не помнит, какой из них «основной». Токены записаны в Figma — стилями и переменными, — но туда редко заглядывают из кода.
Результат. Инструмент get_styles отдаёт опубликованные стили со значениями и переменные по режимам: «Цвет/Акцент» — #0FA37F в светлой теме и #33CC99 в тёмной. Ответ ссылается на имена токенов, и в код попадают они, а не ещё один hex.
Вопрос прямо на макете
Дизайнер оставляет в Figma комментарий к экрану: «а что будет, если почта уже занята?». Раньше такой вопрос уходил в чат и терялся между двумя инструментами.
Результат. Он упоминает бота в комментарии. Бот отвечает в ту же ветку, опираясь на код проекта и на сам макет: какой текст ошибки в коде, есть ли для него состояние в компоненте поля. Обсуждение остаётся там, где макет.
Ревью: макет и код расходятся
На ревью спорят, той ли толщины обводка у поля и тот ли межстрочный интервал у заголовка. Скриншот на скриншот — аргумент слабый, а открывать Figma и мерить вручную долго.
Результат. Бот сравнивает: в макете обводка 1, цвет #D1D5DB, заголовок Inter Semi Bold 24/32 с трекингом −0.5. В коде — 2 и 28. Расхождение названо в числах, спор закрыт за один комментарий.
Примеры
Что написать и что придёт в ответ. Обращение к боту задаётся в настройках подключения — здесь это «@buff».
@buff какие отступы и цвет у кнопки «Войти» на экране входа?
комментарий к макету или вопрос в приложении Buff
инструмент:
search_nodes + get_nodeКнопка «Войти» — экземпляр компонента «Кнопка/Основная», 342×48. Автолейаут горизонтальный, отступы 12 сверху и снизу, 24 по бокам, интервал 8. Заливка — стиль «Кнопка/Малахит» (#0FA37F), скругление 12, тень 0/4 с размытием 12. Подпись — Inter Semi Bold 16, белая, по центру.
@buff покажи токены цвета в этом файле
комментарий к макету
инструмент:
get_stylesОпубликованные стили заливки: «Фон/Поверхность» #FFFFFF, «Текст/Основной» #111827, «Кнопка/Малахит» #0FA37F; текстовый стиль «Заголовок/H1» — Inter Semi Bold 24/32. Переменные на вашем плане Figma не читаются — их имена видны в привязках узлов, значения берутся из стилей.
/research чем экран входа в макете отличается от того, что в коде
комментарий к фрейму экрана
инструмент:
get_node + код проектаСлово после обращения выбирает работу: без него — короткий ответ, «research» — исследование с документом, «task» — черновик задачи разработки. Исследование прочитает макет параметрами и сверит с вёрсткой в репозитории.
@buff что в макете называется «Поле почты» и из чего оно состоит?
вопрос в приложении Buff
инструмент:
search_nodes + get_nodeФрейм «Поле почты» 342×56 на экране входа: горизонтальный автолейаут с отступом 16, скругление 8, белая заливка и обводка 1 цвета #D1D5DB. Внутри — текст-подсказка «Электронная почта», Inter 16, цвет #6B7280.
Что умеет
Читает макет параметрами, как панель инспектора
get_file показывает структуру: страницы, фреймы, размеры. get_node отдаёт узел с поддеревом и всем, что о нём знает редактор: положение и размер, автолейаут (направление, отступы, интервалы, выравнивание, поведение по ширине и высоте), заливки и обводки в hex, скругления, эффекты, типографику и сам текст. Ничего не обрезается: у фрейма с сорока слоями в ответе сорок слоёв.
Токены — по именам, а не по идентификаторам
Узел в Figma ссылается на стили и переменные идентификаторами; интеграция превращает их в имена — «Кнопка/Малахит», «Цвет/Акцент», — потому что имя есть в документации дизайн-системы, а идентификатор не читает никто. get_styles отдаёт опубликованные стили со значениями (цвета, шрифты, эффекты, сетки) и переменные с значениями по режимам, где план Figma позволяет их читать.
Картинка — только модели, которая видит
render_node отрисовывает узел в PNG. Этот инструмент помечен как отвечающий картинкой, и платформа отдаёт его лишь модели, которая читает изображения; текстовая модель его не видит и не может вызвать. Так модель, которая не умеет смотреть, никогда не получит картинку, которую «прочитала бы» наугад. Все параметры узла доступны и без него.
Отвечает там, где спросили
Упоминание бота или команда через слэш в комментарии к макету запускает вопрос, исследование или черновик задачи; ответ приходит в ту же ветку комментариев. Ветка — это корневой комментарий, приколотый к месту на макете, поэтому второй вопрос в ней продолжает тот же разговор. Единственный пишущий инструмент — комментарий, и модели он не отдаётся ни на одной стадии.
Файлы и проекты — это контроль доступа
Бот работает только в перечисленных файлах и в файлах перечисленных проектов — и читает, и пишет только там. Пустой список означает «нигде». Права учётной записи бота в Figma — внешняя граница, список — внутренняя.
Честно о плане Figma
Переменные (Variables) Figma отдаёт по API только на плане Enterprise. На остальных планах интеграция берёт токены из опубликованных стилей и из привязок узлов, а в проверке связи прямо говорит, читаются ли переменные, — вместо пустого списка без объяснений.
Как пользоваться
Всё происходит на машине, где стоит коннектор. Открывать доступ к вашей сети снаружи не нужно ни на одном шаге.
Шаг 1
Установка занимает одно нажатие
Откройте раздел «Маркетплейс» на локальной странице коннектора. До установки видно, что интеграция получит: адреса, по которым она сможет ходить (API Figma и хранилище картинок), какие учётные данные попросит и какие инструменты увидит модель — с отметкой у того, что отвечает картинкой.
КоннекторГраницы доступа видны в каталоге до установки. Шаг 2
Настройка — токен и список файлов или проектов
Адрес API уже подставлен (`https://api.figma.com`), менять его не нужно. Ключ файла виден в его адресе: `figma.com/design/КЛЮЧ/…`; номер проекта — в адресе проекта: `figma.com/files/project/НОМЕР/…`. Достаточно одного из двух списков. Personal access token выпускается в настройках учётной записи Figma и хранится на вашей машине: интеграция его не видит.
КоннекторФорма настройки: адрес уже на месте. Шаг 3
Заведите боту отдельную учётную запись
Дайте ей доступ на просмотр к нужным файлам и право комментировать. Ничего больше интеграции не нужно: она не редактирует макеты, не публикует библиотеки и не меняет права.
Шаг 4
То же самое из командной строки
Установка без графики равноправна: `connector install figma`, затем `connector instance add figma --config projects=4815162342` — адрес API подставится сам.
Шаг 5
События приходят сами
Опрос работает всегда и портов не требует: интеграция раз в 20 секунд читает комментарии отмеченных файлов. Если хочется быстрее — включите приём событий у коннектора и заведите в Figma вебхук FILE_COMMENT на выданную ссылку: он не разбирается по содержимому, а просто будит опрос, поэтому ответ приходит сразу.
КоннекторКаждое подключение — отдельный процесс со своим набором инструментов.
Границы доступа
То же самое коннектор показывает на вашей машине до установки. Список берётся из подписанного каталога, а не написан здесь руками.
Ходит наружу
только по адресам из полей base_urlimages_base
Учётные данные
api — значения остаются в коннекторе, интеграция их не видит
Вебхуки
wake — порт открываете вы, по желанию
| Инструмент | Что делает | Доступ |
|---|---|---|
| list_files | Перечислить подключённые макеты — когда вопрос про дизайн, а файл не назван | только чтение |
| get_file | Структура макета — страницы, фреймы, размеры, стили и компоненты файла | только чтение |
| get_node | Узел с параметрами — положение, автолейаут, цвета в hex, типографика, стили и переменные по именам | только чтение |
| get_styles | Дизайн-токены файла — стили со значениями и переменные по режимам, где план даёт их читать | только чтение |
| search_nodes | Найти узлы по словам в имени слоя или тексте — когда известно название, но не id | только чтение |
| get_comments | Обсуждения макета — ветки комментариев, к какому узлу приколоты, решены ли | только чтение |
| render_node | Отрисовать узел в PNG — только для модели, которая читает изображения | только чтениекартинка |
| add_comment | Написать комментарий в обсуждение макета | пишет |
Интеграция работает отдельным процессом под собственным пользователем операционной системы: она не видит ключа коннектора, не читает файлы других подключений и не может выйти в сеть мимо коннектора. Подробнее — в разделе о безопасности.
Требования
- Figma на любом плане; переменные (Variables) читаются только на Enterprise — остальным доступны стили и привязки узлов.
- Personal access token учётной записи бота с доступом на просмотр к нужным файлам и правом комментировать.
- Сетевой доступ от машины с коннектором до api.figma.com и до хранилища картинок Figma — наружу из вашей сети ничего открывать не нужно.
- Коннектор версии 0.6 или новее: интеграция объявляет инструмент-картинку и значения по умолчанию в настройках, которых старые версии не понимают.
- Коннектор, запущенный с правом заводить отдельного пользователя ОС для интеграции (root или CAP_SETUID).
- Модель, читающая изображения, — только если нужен инструмент render_node; всё остальное работает с любой моделью.
Вопросы
- Наша модель не умеет смотреть картинки. Интеграция бесполезна?
- Нет — она построена именно для этого случая. Модель получает макет параметрами: размеры, автолейаут, цвета в hex, типографику, имена стилей и переменных, компоненты и их свойства. Единственный инструмент с картинкой ей просто не предлагается, и ответы считаются по параметрам и токенам.
- Как Buff узнаёт, видит ли модель картинки?
- По описанию модели у провайдера: там указано, какие типы входа она принимает. Если среди них есть изображения — инструмент render_node предлагается; если нет — не предлагается. Настраивать это руками не нужно.
- Вы скопируете наши макеты к себе?
- Нет. Интеграция читает узлы по запросу модели, когда ответ этого требует, и ничего не переносит и не индексирует заранее. Прочитанное попадает в контекст конкретного ответа, а не в хранилище.
- Почему переменные не читаются?
- Потому что так устроен API Figma: доступ к переменным (Variables) есть только у планов Enterprise. На остальных планах интеграция берёт токены из опубликованных стилей и показывает имена переменных из привязок узлов; в проверке связи это сказано прямо.
- Бот сможет что-то изменить в макете?
- Нет. Он читает узлы и пишет комментарии; редактировать слои, публиковать библиотеки или менять права он не умеет — таких инструментов у интеграции нет вовсе.
- Большой файл — это большой счёт?
- Читается то, что модель запросила: структура с заданной глубиной, конкретный узел, стили. Ответ не обрезается — у фрейма с сорока слоями в ответе сорок слоёв, — но за файл целиком модель идёт только при поиске по имени, и это видно в списке вызовов инструментов.
Дальше
Подключить Figma
Поставьте коннектор в своей сети, откройте его локальную страницу и установите интеграцию из каталога. Пересобирать ничего не нужно.
Юрлицам и ИП — оплата переводом по реквизитам и закрывающие документы