InquirerMt. Guiting-Guiting climbing activities suspended for three monthsThe Jerusalem PostAmericans begin voting in midterm election races with major implications for US-Israel policyBollywood HungamaAmit Rai exits OMG 3? Director and makers reportedly part ways over creative differencesDaily MaverickSTATES OF GOVERNANCE OP-ED: Can SA’s Public Service Amendment Act deliver better governance in Joburg’s Deep South?ZDF heuteAktuelle Pressemitteilungen des ZDFTechCrunchRivian spinout Also was working on an e-moto project in Kenya — until it walked awayIl Fatto QuotidianoMedaglie agli animali eroi, ma senza diritti: il paradosso del ddl della LegaFotogramasTim Burton, sobre Johnny Depp: "Que le guste el dinero o la fama es mentira, él no se convirtió en actor para ser glamuroso, sino para esconderse detrás de un personaje"E! OnlineHow Hoda Kotb and Joel Schiffman Remain Friendly ExesThe Hollywood Reporter‘Starlog’ Magazine Returns with First Cover in 17 Years7sur7Schaerbeek introduit un recours contre le permis du projet immobilier “Carré des Chardons”EuronewsTents return to Lisbon square after Portugal protest victory
The Daily Newsstand · Free, Always
Tuesday, November 3, 2026

Как и зачем дизайнеры развивают библиотеку ИИ‑компонентов от макета до кода

Translate

Привет! Меня зовут Егор Шувалов, я дизайнер в Cloud.ru и работаю над интерфейсами для взаимодействия с ИИ-агентами. Вместе с коллегами мы развиваем отдельную библиотеку компонентов на базе нашей основной дизайн-системы.

Как мы заметили потребность в общей библиотеке

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

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

Один из общих элементов — блок с шагами работы агента. В Storybook слева виден пример с вызовами инструментов, справа — параметры отображения. Названия и длительность заполнены тестовыми данными

Один из общих элементов — блок с шагами работы агента. В Storybook слева виден пример с вызовами инструментов, справа — параметры отображения. Названия и длительность заполнены тестовыми данными

На дизайн-ревью мы стали замечать пересечения. Я показывал сценарий, в котором агент обращается к инструменту и собирает конфигурацию, а у коллег появлялись похожие задачи. Каждый делал компонент под свой сценарий: поле ввода у одного было устроено немного иначе, вызов инструмента у другого выглядел по-своему. Так у нас начали появляться разные варианты одних и тех же элементов.

Мы заметили это до того, как они успели распространиться по продуктам. Если бы каждый продолжил развивать свой вариант, различия накопились бы и в макетах, и в коде. Договориться об общих правилах пришлось бы тогда, когда нужно переделывать уже используемые компоненты. Поэтому мы решили заранее выделить работу над собственной библиотекой в отдельный процесс. Хотели дать дизайнерам общую основу, которую можно переиспользовать в своих сценариях.

Главным инициатором стал мой коллега Владимир: он работает над Гига-помощником в консоли облака и раньше всех столкнулся с потребностью в таких элементах. Сначала мы начали вдвоем, позже присоединился Павел. Теперь мы втроем проектируем компоненты для ИИ-интерфейса. Владимир взял на себя роль владельца продукта: он ведет бэклог, организует встречи и договаривается с разработкой об участии фронтендеров и бэкендеров.

Гига-помощник открыт справа от основного интерфейса консоли. В чате видны шаги работы, источники и ответ на вопрос пользователя

Гига-помощник открыт справа от основного интерфейса консоли. В чате видны шаги работы, источники и ответ на вопрос пользователя

Почему мы организовали отдельный процесс

Потребность в общих элементах совпала с другой проблемой — изменения в Snack UI Kit, нашей основной дизайн-системе, проходят слишком долгий для нас путь. У ее команды свой бэклог и порядок работы. Дизайнер готовит задачу, собирает компонент в ветке Figma, проходит согласования и ревью. При этом реализация зависит и от планов команды, у которой есть другие задачи.

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

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

Мы выделили отдельное направление и взяли его развитие на себя. Теперь сами определяем очередность, исследуем сценарии, проектируем и реализуем компоненты, проверяем их и готовим мерж-реквесты (merge request, MR). Фронтендеры подключаются к ревью кода. Так работа внутри нашего направления не зависит от очереди задач основной команды.

При этом наша библиотека опирается на Snack UI Kit: мы используем ее базовые компоненты, иконки, токены и гайдлайны. Свои элементы строим в той же системе оформления. Получается, что библиотека ИИ-компонентов развивается параллельно основной системе и дополняет ее под наши задачи.

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

От исследования продуктов к бэклогу

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

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

Как мы проектируем общий компонент для разных продуктов

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

У вызова инструмента, например, рассматриваем ожидание, выполнение, успех и ошибку. Проверяем свернутый и раскрытый вид, короткие и длинные названия, сведения, которые нужно показать пользователю.

Состояния вызова инструмента в Storybook. Название и длительность заполнены тестовыми данными

Состояния вызова инструмента в Storybook. Название и длительность заполнены тестовыми данными

Компактный вариант вызова инструмента: слева — раскрытое описание с ресурсами, справа — свойства и переключатель состояния. Пример заполнен тестовыми данными

Компактный вариант вызова инструмента: слева — раскрытое описание с ресурсами, справа — свойства и переключатель состояния. Пример заполнен тестовыми данными

В библиотеку мы готовим общую платформенную версию компонента. Продуктовая команда потом использует ее в своем сценарии и задает нужное наполнение. Поэтому мы отдельно обсуждаем, где проходит граница между поведением элемента и логикой продукта.

Например, список команд Action List открывается по «/». В библиотеке мы описываем его устройство, раскрытие и работу со вложенными пунктами, а конкретные команды задает продукт. Так разные команды могут использовать один компонент, сохраняя собственный набор действий.

Во время тестирования: список команд открыт над полем ввода. Здесь показаны примеры наполнения, которое определяет продукт

Во время тестирования: список команд открыт над полем ввода. Здесь показаны примеры наполнения, которое определяет продукт

Вложенный список в том же компоненте. Отдельно проверяем переход к нему и возврат к основному списку

Вложенный список в том же компоненте. Отдельно проверяем переход к нему и возврат к основному списку

Компоненты мы проектируем в Figma. Для сборки используем агента, который работает с макетом через MCP — подключение к Figma, позволяющее агенту читать и изменять его содержимое. К общему ревью каждый из нас готовит компонент в ветке Figma с необходимыми состояниями.

На основных встречах мы работаем втроем: обсуждаем варианты, спорные моменты и замечания. Мы также созваниваемся с другими дизайнерами, которые делают компоненты под задачи Гига-помощника. Эти компоненты затем тоже попадают в нашу библиотеку ИИ-компонентов.

После встреч мы делаем выжимку из стенограммы и сохраняем договоренности в задаче компонента в бэклоге. Так у нас остается общая запись принятых решений и их причин. На нее мы опираемся при подготовке спецификации и проверке макета перед переносом в код.

Как мы фиксируем решения для реализации

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

В основу спецификации мы кладем результаты исследования, решения из обсуждений и замечания коллег. Агент получает эти материалы, включая записи из нашей вики в Obsidian, и оформляет описание в Figma рядом с компонентом.

Агент работает со скиллами из нашего пакета Design Lab — это инструкции о том, как выполнять задачу и проверять результат. Спецификация описывает конкретный компонент, а скилл задает порядок работы агента. Мы используем скиллы при подготовке материалов, оформлении спецификаций, проверке макетов и приемке кода перед MR. Требования к компоненту, сами решения и ответственность за результат остаются у дизайнеров.

Например, при работе над Message Bubble я разобрал сценарии и собрал компонент из подготовленных элементов. Коллеги оставили замечания и подсказали, что еще учесть. После исправлений я передал агенту материалы и поручил обновить существовавшую спецификацию. Для таких задач в Design Lab есть три основных скилла: design-spec помогает оформить договоренности рядом с макетом; aix — описать общие правила компонента и проверить макет или код по спецификации; accept — проверить готовый результат по требованиям к качеству перед передачей автору задачи.

Еще один пример оформления — Field Request. Слева находятся варианты компонента, справа — его назначение и описание устройства

Еще один пример оформления — Field Request. Слева находятся варианты компонента, справа — его назначение и описание устройства

Получившееся описание перечитывает автор компонента, а перед завершением работы вместе проходим по основным моментам. Агент может что-то упустить или неверно перенести из материалов, поэтому мы проверяем, все ли нужные состояния описаны, совпадают ли названия и соответствует ли документ тому, о чем договорились.

Для подготовки спецификаций я использовал Claude Code и Codex. Заметной разницы в своем опыте не увидел, но специального сравнения, если честно, и не проводил. Я уделяю больше внимания тому, какие материалы передаю и как ставлю задачу: что уже решено, что нужно оформить и по каким требованиям буду проверять результат.

От спецификации к мерж-реквесту

Перед переносом компонента в код дизайнеру нужно получить доступ к репозиторию библиотеки в GitLab с необходимой ролью и правами, настроить подключение агента к репозиторию и проверить, что локальный Storybook запускается. Для подключения могут понадобиться SSH-ключи и настройки API. После этой подготовки дизайнер реализует компонент вместе с агентом и доводит изменения до ревью фронтендеров.

Для меня новым было именно участие в реализации компонента. Раньше я уже сталкивался с GitLab и GitHub, но не отвечал за эту часть работы в таком объеме. С настройкой мне помогли инструкции и советы коллег, которые уже подготовили все необходимое для себя. В итоге подготовка не заняла много времени.

После проверки компонента и спецификации мы завершаем работу в ветке Figma и создаем отдельную ветку в репозитории. Передаем агенту макет, описание и контекст задачи и поручаем подготовить реализацию. Полученный результат запускаем и проверяем в локальном Storybook — среде, где компонент можно посмотреть отдельно от продуктового интерфейса, поменять свойства и проверить состояния.

В Storybook проверяем реализацию и меняем свойства через панель Controls. Длительность «365 дней» и название инструмента здесь тестовые

В Storybook проверяем реализацию и меняем свойства через панель Controls. Длительность «365 дней» и название инструмента здесь тестовые

Сверяем реализацию с макетом и спецификацией, исправляем найденное и готовим MR.

Фронтендеры получают код для ревью. Например, в одном из моих MR они заметили, что свойство названо иначе, чем принято в главной дизайн-системе. Мы исправили название, чтобы оно соответствовало общим правилам.

В моих первых задачах замечания в основном касались таких деталей. Это были небольшие компоненты. С более сложными компонентами вопросов возникает больше, в том числе при нашей собственной проверке.

После исправлений мы возвращаем MR на ревью. Когда изменения согласованы и слиты, компонент становится доступен в нашей библиотеке ИИ-компонентов и Storybook.

Что обнаруживается при проверке в браузере

На макете компонент может выглядеть готовым, но при взаимодействии с ним становятся видны упущения: отступ воспринимается иначе, размер кнопки не подходит, панель занимает больше места, чем ожидали. Приходится возвращаться к решениям и проверять их снова.

Так случилось с большим полем ввода. Мы предусмотрели в нем добавление навыков, выбор моделей, дополнительные действия и список команд. Проработали десктопный и мобильный варианты: как открываются панели, что происходит при разном количестве пунктов, как ведут себя текст и прокрутка.

Агент проверял реализацию по скиллу для ревью, но часть расхождений с макетом и требованиями не заметил. Мы обнаружили их, когда сами проверяли работающее поле. Например, крестик в метке выбранного навыка оказался меньше, чем на макете. Подсказка параметров оставалась видимой, когда пользователь уже начал вводить текст, а на мобильном устройстве полоса прокрутки вложений наезжала на плитки. Эти расхождения нам пришлось исправить в коде.

Бывает, что проверка в браузере меняет саму механику. При тестировании на мобильном устройстве мы поняли, что список действий по «/» неудобно открывать над полем ввода. Мы изменили логику: теперь пользователь открывает этот список кнопкой, а сами действия появляются в мобильной шторке.

Когда мы находим ошибку, которую агент пропустил при проверке реализации, мы дополняем соответствующий скилл в Design Lab: уточняем, что и как нужно проверить в браузере. Изменения в инструкции мы оформляем через MR в отдельном репозитории. Так результаты нашей ручной проверки становятся требованиями к следующим проверкам агента. При этом мы продолжаем просматривать его работу сами: обновленная инструкция не исключает новых пропусков.

От начала работы над большим полем ввода до ревью реализации в коде прошло примерно полтора месяца. За это время мы с нуля исследовали сценарии, спроектировали сложный компонент, подготовили спецификацию и реализацию, а после проверки вернулись к части решений. Для нас это первый результат работы над таким сложным компонентом. Сравнимых замеров по прежнему процессу у нас нет. Время на доработки приходится учитывать, даже если на макете все состояния выглядят продуманными.

Что уже получилось

Сейчас в нашей библиотеке 15 компонентов: вызовы инструментов, блоки с шагами работы агента, карточки, подсказки и кнопки. Готовые компоненты уже реализованы в Гига-помощнике в личном кабинете пользователя. Несколько небольших компонентов прошли проектирование, реализацию и ревью фронтендеров, а более сложное поле ввода мы пока проверяем в коде.

Подсказки в Storybook: раскрытая группа показывает вложенные варианты. В Controls доступны настройки размера, блокировки и раскрытия

Подсказки в Storybook: раскрытая группа показывает вложенные варианты. В Controls доступны настройки размера, блокировки и раскрытия

В своих продуктовых задачах я могу взять готовый компонент из библиотеки вместо того, чтобы рисовать его с нуля или собирать из других компонентов и заново продумывать логику. Я также могу поручить агенту использовать реализацию из Storybook в моем прототипе и проверить на работающем примере свою гипотезу. По моим ощущениям, так я трачу меньше времени на ручную сборку и могу раньше перейти к проверке пользовательского сценария.

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

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

А как у вас устроена работа над общими компонентами: дизайнеры доводят их до кода или передают реализацию отдельной команде? Что в вашем процессе помогает изменениям доходить до продукта?

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.