12 июня 2026 · 6 мин
Как этот сайт собирают агенты
Этот сайт — не «сделан с помощью ИИ» в маркетинговом смысле. Его в прямом смысле пишут агенты: пока одна сессия Claude Code строила hero-эффекты на three.js, вторая параллельно чинила сборку, выкатывала разделы и настраивала CI. Я ставил задачи и принимал работу. Это та самая «новая эра» из секции обо мне: неважно, на каком языке ты пишешь, — важно, как ты ставишь задачу.
Что под капотом
Next.js 16 (App Router, Turbopack), React 19, Tailwind CSS 4, GSAP с ScrollTrigger, ScrollSmoother и SplitText, three.js через react-three-fiber для голографического полиэдра. Проекты в каталоге подтягиваются из GitHub API с ISR раз в час. Ничего экзотического — вся соль в процессе.
Процесс
Каждая сессия работает по одному циклу:
- Спека. Контекст живёт в CLAUDE.md и AGENTS.md прямо в репозитории: соглашения, грабли, «что не делать». Это полноценные инженерные артефакты, а не файлы-для-галочки.
- Работа. Агент пишет код сам — мелкими шагами, сверяясь со спекой. Параллельные задачи разводятся по разным сессиям.
- Верификация. Главный множитель качества: агент обязан сам убедиться, что его код работает, прежде чем показать результат. Для этого он запускает прод-сборку, открывает страницу в браузере, скроллит, кликает меню с клавиатуры, снимает скриншоты и метрики Lighthouse.
- Память. Каждая пойманная ошибка записывается в CLAUDE.md — и больше не повторяется.
Снаружи это страхует GitHub Actions: линтер и сборка на каждый пуш.
Пять багов, которые поймала верификация
Все пять — настоящие, из истории коммитов этого репозитория.
- Сборка вообще не собиралась. В коде остались вызовы выпиленного
провайдера плавного скролла — TypeScript падал. Первый же прогон
npm run buildэто показал. - Три.js грузился на телефонах — впустую. Почти мегабайт кода ехал на мобильные, где 3D не рендерится: проверка устройства жила внутри динамически загружаемого чанка. Гейт переехал до импорта — мобильный бандл похудел на ~1 МБ.
- Заголовок ломался посреди слова. «Эксперименты» при 9vw не влезало в свою колонку, и SplitText переносил его по буквам без дефиса. Увидели на скриншоте, перестроили сетку.
- Якоря из мобильного меню не работали вовсе. Пока меню открыто, body
заблокирован
overflow: hidden— нативный прыжок умирал молча. Теперь скролл выполняется после закрытия меню. - CI падал из-за package-lock. npm не записывает в лок бинарники чужих
платформ (npm/cli#4828): лок с macOS не содержал linux-сборок
lightningcss. Лечится явными
optionalDependencies.
Ни один из этих багов не виден в диффе «на глаз». Все пять видны, если открыть страницу и попробовать ей пользоваться — что агент и делает.
Вывод
Агент пишет быстрее меня. Но скорость — не главное. Главное, что цикл «спека → работа → верификация → память» делает качество воспроизводимым: вторая сессия не наступает на грабли первой, потому что грабли записаны.
Делегировать можно мышление — понимание делегировать нельзя.