Несколько дизайн-систем и брендов на одной основе
37 высказываний
Хабр 27 · другая площадка 6 · vc.ru 4
2023–2026
Спросите что угодно о Прохоре
Отвечает модель по материалам сайта. Чего нет в кейсах, того она не знает.
Отвечает модель и может ошибаться. Проверяйте важное у самого Прохора.
Кейс, Дизайн-системы
Сайт, UI-киты и прототипы жили каждый в своём наборе значений, а ИИ-агент, который писал прототип, не знал, по какой системе пишет. За 1–2 октября 2026 года собрал единую точку: реестр из 17 систем с наследованием, токены в DTCG, один контракт компонента, витрины и коннектор, через который агент получает систему файла. Кейс в работе.
Дизайн-систему обычно показывают набором компонентов. Здесь она продукт со своими пользователями: дизайнер, разработчик и ИИ-агент. Агенту нужно меньше всего слов и больше всего проверок, поэтому на нём хорошо видно, где система держится сама, а где нужен человек.
Design Systems, Product Design, ИИ-агенты
2026
Самостоятельный концепт · в разработке

Результаты
Проблема бизнеса
У сайта была настоящая система: токены в три слоя, сборка, линтер, перепись страниц. Но все проверки смотрели только на сайт. UI-киты не были связаны с ним ни одной ссылкой, прототипы хранили значения четырьмя способами, а у беспилотного такси был свой второй конвейер сборки. Одно имя в разных местах значило разное. Агенту, который писал прототип, никто не говорил, какая у файла система, и линтер такие файлы не мерил.
Исследование
PRD
Дизайнер или тимлид, который ведёт ИИ-агента по своей дизайн-системе, в длинной сессии получает экран со значениями в обход системы и придуманными токенами и замечает это не сразу.
Доля ошибок агента: неверная система или придуманное значение. Меньше 5% на 20 путях и 20 заданиях, порог допущение до прогона стенда. База: 3 из 4 краевых путей уходили в site до правки kit_for 02.10.2026 (f0024bc6); после правки база не замерена
Меряем: Стенд агента: 20 путей через kit_for, 20 заданий агенту, сверка ответа с ожиданием; повтор после каждой правки
Защитная: сборка токенов не дольше секунды: медиана пилота 339 мс
Figma как источник правды: расширенные коллекции и запись переменных через API только в Enterprise, поэтому направление одно, из кода в Figma
Перенос значений разом: они остаются в нынешних файлах, запись системы только указывает на них
Витрины закрытых систем без входа: их видят только вошедшие в комнату
Ширины в контракте компонента: пока их держит вёрстка
Хватит ли системы по пути: агент знает систему и всё равно уезжает от неё в длинной сессии (vt-002#024, vt-002#010); нужна ли проверка после каждой правки, покажет стенд агента
Запрет «когда нельзя» текстом не держится, держит проверка, которая не даёт сделать (vt-002#027): закроется проверкой на стенде
Кому раздел не нужен: скептики считают, что кит окупается только у больших команд (vt-001#019, vt-001#026, vt-001#036, vt-002#028); граница «для кого» проверится на UX-тесте с несогласной персоной
Кто владеет системой и когда компонент становится общим (vt-001#005, vt-001#018): у раздела нет ни владельца, ни статуса; решится разговорами с живыми людьми по готовым скринеру и гайду
Порог 5% допущение: поставлен до замера, стенд агента ещё не собран. Краевые пути замерены до правки kit_for 02.10; теперь kit_for называет их путём без системы, устаревшим путём и собранным файлом, а не site. Новая база появится с первым прогоном стенда
Обсуждения
Открытые обсуждения живых людей на форумах и в отзывах: пересказ и короткие цитаты со ссылкой и датой, авторы не названы
37 высказываний
Хабр 27 · другая площадка 6 · vc.ru 4
2023–2026
23 высказывания
Хабр 15 · vc.ru 7 · другая площадка 1
2026
Гипотезы
Ограничения
Дизайн-решения
Одна папка systems/, по записи на систему: ядро, сайт, две платформы, три кита, продукты. Прототип привязан к системе одним полем, а индекс из записей читают все: раздел на сайте, коннектор, линтер и хук
Шесть слоёв, от примитивов до экрана, и ссылаться можно только вниз: направление проверяет сборка. Новые смысловые имена заводит только ядро, система лишь даёт им значения
Токены в DTCG 2025.10, собирает их Terrazzo одной командой: CSS со слоями и light-dark(), типы, мост Tailwind и файлы Figma по режимам
Контракт компонента один на все системы: что это, когда ставить и когда нет, варианты, состояния, значения, доступность, пример. По нему одна витрина на систему, 120 компонентов в 17 системах
Агент получает систему файла сам: kit_for по пути отдаёт цепочку, шкалу и имена, kit_read часть системы, kit_component контракт со значениями по цепочке и тем, что не сошлось
User flow
Схемы
Поправка человека становится проверкой: так тест вкладок появился после пустых вкладок.
Состояния
| Экран | Пусто | Загрузка | Ошибка | Частично | Нет прав | Много данных |
|---|---|---|---|---|---|---|
| Дизайн-системы | Не бывает Гость с выдачей раздела видит хотя бы запись сайта, а без выдачи раздел закрыт целиком | Не бывает Страница собирается на сервере из индекса реестра в памяти процесса, на запросе ничего не разбирается | Не бывает Индекс реестра входит в сборку и на запросе не читается: битый индекс останавливает сборку, а не страницу | Собрано Гость с выдачей «Дизайн-системы» видит только открытые записи, со старой выдачей «Набора значений» только сайт | Собрано Без выдачи раздела дверь входа в комнату вместо списка | Собрано 17 систем в пяти группах, в ряду не больше трёх карточек и без одной в последнем ряду |
| Система: значения | Описано «Значений нет» под шапкой системы | Не бывает Страница собирается на сервере из индекса в памяти, на запросе ничего не разбирается | Собрано Неизвестная система: 404 | Описано Часть записи не прочиталась: блок «Не прочиталось» со списком ошибок записи и кита под вкладками | Собрано Закрытая система для гостя: 404, её нет ни в списке, ни на странице, ни в витрине | Собрано Значения группами по файлам; если есть переопределённые, фильтр «Все», «Своё», «Переопределено» без JS |
| Система: компоненты | Описано «Компонентов нет»; запись с пустой вкладкой не проходит тест вкладок перед пушем | Собрано Витрина в рамке высотой 640 точек, пока документ витрины не прислал свою высоту | Собрано Неизвестная система: 404 | Не проверено Компонент есть в контракте, а образца в витрине нет | Собрано Закрытая система для гостя: 404, витрина не отдаётся | Собрано Ряд имён над витриной: нажатие прокручивает к разделу, рамка растёт по содержимому, прокрутка у страницы |
| Система: экраны | Описано «Экранов нет»; запись с пустой вкладкой не проходит тест вкладок перед пушем | Собрано Снимки грузятся лениво, место под них занято сразу по сторонам из индекса | Собрано Неизвестная система: 404 | Не проверено Снимок кейса без имени в записи кита идёт без подписи | Собрано Снимки отдаёт ручка раздела с проверкой прав: нет права, 404 без подробностей | Не проверено У «Второй попытки» пять образцов, десятки снимков не пробовали |
| Система: связи | Описано «Связей нет»; запись с пустой вкладкой не проходит тест вкладок перед пушем | Не бывает Страница собирается на сервере из индекса и модулей сайта | Собрано Неизвестная система: 404 | Не проверено Прототип привязан к системе, а открытой страницы у него нет | Описано Закрытая запись в цепочке гостю видна ключом, без имени | Не проверено Связи группами, длинные группы не пробовали |
| Система: подстройка | Не бывает Вкладка есть только у открытой системы со своими файлами значений: у платформы, закрытой и системы без значений её нет | Собрано Рамки показа 640 точек, пока витрина не прислала высоту; кнопка в работе с крутилкой | Собрано Значения не прочитались: строка с причиной ядра вместо строк; отказ сохранения словами под кнопками | Собрано Правки, которые в исходник как есть не ложатся, уходят только текстом задания агенту, и это сказано над кнопками | Собрано Гость двигает ползунки без кнопок; ручка сохранения только хозяину, на боевом сервере только готовит правку для агента | Собрано Строки группами по типу с поиском и «Правки»; темы витрины рядом, приложения рамками в своём размере |
| Витрина кита | Не бывает Витрину без компонентов раздел не показывает: вкладка пишет «Компонентов нет» | Собрано Рамка 640 точек, пока документ витрины не прислал высоту | Не проверено Документ витрины не ответил, и рамка остаётся в начальной высоте | Не проверено Стиль или шрифт кита не дошёл до витрины | Собрано Рамка в песочнице без allow-same-origin: куки и данные сайта витрине недоступны | Собрано Рамка растёт до 40 000 точек, прокрутка у страницы, а не у рамки |
Гость с выдачей раздела видит хотя бы запись сайта, а без выдачи раздел закрыт целиком
Страница собирается на сервере из индекса реестра в памяти процесса, на запросе ничего не разбирается
Индекс реестра входит в сборку и на запросе не читается: битый индекс останавливает сборку, а не страницу
Гость с выдачей «Дизайн-системы» видит только открытые записи, со старой выдачей «Набора значений» только сайт
Без выдачи раздела дверь входа в комнату вместо списка
17 систем в пяти группах, в ряду не больше трёх карточек и без одной в последнем ряду
«Значений нет» под шапкой системы
Страница собирается на сервере из индекса в памяти, на запросе ничего не разбирается
Неизвестная система: 404
Часть записи не прочиталась: блок «Не прочиталось» со списком ошибок записи и кита под вкладками
Закрытая система для гостя: 404, её нет ни в списке, ни на странице, ни в витрине
Значения группами по файлам; если есть переопределённые, фильтр «Все», «Своё», «Переопределено» без JS
«Компонентов нет»; запись с пустой вкладкой не проходит тест вкладок перед пушем
Витрина в рамке высотой 640 точек, пока документ витрины не прислал свою высоту
Неизвестная система: 404
Компонент есть в контракте, а образца в витрине нет
Закрытая система для гостя: 404, витрина не отдаётся
Ряд имён над витриной: нажатие прокручивает к разделу, рамка растёт по содержимому, прокрутка у страницы
«Экранов нет»; запись с пустой вкладкой не проходит тест вкладок перед пушем
Снимки грузятся лениво, место под них занято сразу по сторонам из индекса
Неизвестная система: 404
Снимок кейса без имени в записи кита идёт без подписи
Снимки отдаёт ручка раздела с проверкой прав: нет права, 404 без подробностей
У «Второй попытки» пять образцов, десятки снимков не пробовали
«Связей нет»; запись с пустой вкладкой не проходит тест вкладок перед пушем
Страница собирается на сервере из индекса и модулей сайта
Неизвестная система: 404
Прототип привязан к системе, а открытой страницы у него нет
Закрытая запись в цепочке гостю видна ключом, без имени
Связи группами, длинные группы не пробовали
Вкладка есть только у открытой системы со своими файлами значений: у платформы, закрытой и системы без значений её нет
Рамки показа 640 точек, пока витрина не прислала высоту; кнопка в работе с крутилкой
Значения не прочитались: строка с причиной ядра вместо строк; отказ сохранения словами под кнопками
Правки, которые в исходник как есть не ложатся, уходят только текстом задания агенту, и это сказано над кнопками
Гость двигает ползунки без кнопок; ручка сохранения только хозяину, на боевом сервере только готовит правку для агента
Строки группами по типу с поиском и «Правки»; темы витрины рядом, приложения рамками в своём размере
Витрину без компонентов раздел не показывает: вкладка пишет «Компонентов нет»
Рамка 640 точек, пока документ витрины не прислал высоту
Документ витрины не ответил, и рамка остаётся в начальной высоте
Стиль или шрифт кита не дошёл до витрины
Рамка в песочнице без allow-same-origin: куки и данные сайта витрине недоступны
Рамка растёт до 40 000 точек, прокрутка у страницы, а не у рамки
| Экран | Пусто | Загрузка | Ошибка | Частично | Нет прав | Много данных |
|---|---|---|---|---|---|---|
| kit_for: система файла для агента | Собрано «Для «…» системы нет. Список даёт kit_list.» | Не бывает Коннектор отвечает агенту целым текстом на вызов, промежуточного вида у ответа нет | Собрано «Нужен path (apps/retry/app.css) или app (retry).» | Описано Список приложений, загруженных через комнату, не пришёл: ответ только по apps/ репозитория, без пометки | Собрано Закрытая система гостю не существует: ответ тот же, что для системы, которой нет | Не проверено Длина ответа у длинной цепочки; в кейсе ответ показан целиком, кроме переходных имён |
«Для «…» системы нет. Список даёт kit_list.»
Коннектор отвечает агенту целым текстом на вызов, промежуточного вида у ответа нет
«Нужен path (apps/retry/app.css) или app (retry).»
Список приложений, загруженных через комнату, не пришёл: ответ только по apps/ репозитория, без пометки
Закрытая система гостю не существует: ответ тот же, что для системы, которой нет
Длина ответа у длинной цепочки; в кейсе ответ показан целиком, кроме переходных имён
Процесс
Тему проверил по чеклисту из 19 пунктов, и слабое место нашлось сразу: пользователь пока один, я и мои ИИ-агенты, а это близко к «мне так удобнее». Поэтому скринер зовёт тех, кто вёл системы годами. Остальное сошлось: не сайт и не перерисовка, а продукт с ролями и ограничениями, сверху Figma Enterprise и старый Safari. Потери времени и ошибки агентов меряются числом, задача есть у любой команды, где больше одного продукта, а развилок хватает: наследование, переименование, закрытые системы. Свой опыт прямой, систему сайта веду сам.
Разобрал, как системы отдают себя ИИ-агентам. Лучший набор у Primer MCP: поиск значения, контракт, примеры и проверка CSS в одном сервере. Storybook MCP собирает манифест компонентов из историй, но только для React. У shadcn проект сам объявляет, из каких реестров берёт компоненты, у v0 система хранится навыком со стартовым приложением, которое человек проверяет до сохранения. zeroheight отдаёт страницы руководства, то есть документ, а не компонент. Взял у Primer поиск и проверку в одном месте, у shadcn привязку в файле проекта, у v0 образец экрана. Не взял модель документа и Figma как источник.
Данные гипотетические: смоделированы для анализа, до проверки на людях
Подготовил скринер на восемь разговоров и пять тестов: дизайнер, разработчик, продакт, два ИИ-агента и два скептика, владелец системы в большой компании и архитектор платформы. К нему гайд JTBD-интервью. Живых разговоров не было, роли смоделировал, а скептики говорят доводами спора о масштабе, каждый довод с местом в коде. Главное: продукт молчит там, где должен отказать, и даёт правдоподобный ответ вместо «не знаю». Пользователь меряет время до работающей системы, а продукт меряет время записи. И имя это интерфейс: ключ ds-NNN вылезает туда, где пишет человек.
Данные гипотетические: смоделированы для анализа, до проверки на людях
Главная работа: когда продукту нужен свой вид, получить систему, согласованную с родителем, которую любой агент применит без ошибок. Под неё пять ролей с мерой успеха и восемь Job Stories, например: когда путь файла не привязан ни к одной системе, услышать «системы нет, вот как привязать». Решил, что ключ остаётся личностью записи, но уходит из того, что пишет человек: app.json принимает имя.
Перед планом правок два агента-скептика спорили: один звал систему переусложнённой, другой недостаточно гибкой. Почти все их замечания подтвердились в коде, спорили о порядке. Расширенные коллекции Figma основой семей не стали: они только в Enterprise. Свой вывод под Android отложил, пока нет заказчика: у каждого вывода цена поддержки, а пакет в плоском DTCG прогонит через Style Dictionary тот, кому нужен Compose. Переписывать палитру родителя дочке нельзя, на общей палитре держится согласованность Сбера; свои роли она заводит в своём пространстве. Глубину держу не больше трёх уровней, сейчас местами четыре; канал llms.txt не делаю.
Девять объектов по схемам реестра: система, ключ, имя, название, псевдоним, контракт, экран, приложение и журнал. Система ссылается на родителя по ключу, прототип на систему одним полем, а прежнее имя после переименования отвечает с пометкой. Для страницы раздела хватило словаря из пяти слов: система, имя, название, ключ, контракт.
«завести дочернюю систему» описал дважды. Сейчас: четыре развилки и минимум три ручных шага после команды, а без app.json прототип молча меряется системой сайта. Цель: одна команда, платформа и компоненты от родителя, app.json записан сам. Screenflow раздела «Дизайн-системы»: список, сводка, компоненты, экраны и связи, и что добавить в каждый по итогам.
Здесь прототип и есть продукт. Спецификацию единой точки собрал вместе с ИИ 1 октября, план до работы проверил агент-критик, а сборщик сменил только после пилота строка к строке. Код писали ИИ-агенты по шагам с проверяемым итогом, я проверял и возвращал недоделанное.
Данные гипотетические: смоделированы для анализа, до проверки на людях
Написал пять задач теста: найти систему файла, завести дочку, переименовать, отдать систему ИИ, выбрать компонент. Прошёл их глазами пяти типичных пользователей: команды выполнены на деле на копии репозитория, реакции смоделированы. Нашёл: три краевых пути из четырёх молча уходят в систему сайта, переименование Сбера задевает шесть файлов и 35 мест, а отказ в пробном переименовании печатается после плана. По итогам 23 правки, двенадцать малых закрывают ошибки агентов ещё до теста на людях.
Данные гипотетические: смоделированы для анализа, до проверки на людях
First Click на сводке системы retry в разделе: 30 дизайнеров, которые ведут системы, и задание «Найдите, какие значения retry взял у родителя, а какие свои». Порог до замера: 70 % первым нажатием приходят в одно место. Итог: «Связи» 12, «Компоненты» 10, цепочка в шапке 8. Ни одно место не набрало и половины: ответа на этот вопрос в разделе нет. Отсюда вкладка «своё против родителя» в правках.
A/B-тест здесь неприменим: автор один, трафика нет. Вместо него до и после на стенде агента: 20 путей и 20 заданий, прогон до правок и после каждой. Метрики продукта, а не экрана: время завести систему, цель до пяти минут одной командой; доля ошибок агентов, цель меньше 5 %; число мест на правку семьи, цель одно; и все пятеро видят отказ до запуска команды.
Проверка
ИИ в исследовании
Разборы, план и код писали ИИ-агенты по шагам. План перед работой проверял отдельный агент-критик, и каждое его замечание сверялось по коду.
Что не получилось сразу
Передача в разработку
Дизайн-система
Так выглядит контекст, который агент получает о файле. Это вывод kit_for для формы «Второй попытки», без сокращений, кроме списка переходных имён.

Результат
Кейс в работе. Семнадцать систем отвечают из одной точки, агент получает систему файла по пути, а сверка снимками и тест вкладок ловят то, что раньше уходило на сайт. Впереди ширины в контракте и проверка kit_check.
Моя роль
Решал я: как называется раздел, в каком порядке шаги и что открыто без входа. Terrazzo взят по условию, которое я поставил заранее: если пилот даст те же значения. Разборы, план и код писали ИИ-агенты, я проверял итог и возвращал недоделанное. Проверяли агенты-скептики, решения о принятии их замечаний мои; ревью людей пока не было. Замеров на людях здесь нет. Начни я заново, вышел бы к тем, кто ведёт системы годами, до первого кода; взял бы тему уже; завёл бы контракты компонентов до прототипов, а скептика держал бы с первого дня, а не после пустых вкладок.
Что дальше
Работы
Чек с часов закрывает строку в чужом реестре
Отказ банка говорит, где деньги, а повтор ждёт ответа
СберПрайм встаёт на паузу, а не только отключается
Пятнадцать систем, один контракт и сверка снимками