к содержимому

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 раз в час. Ничего экзотического — вся соль в процессе.

Процесс

Каждая сессия работает по одному циклу:

  1. Спека. Контекст живёт в CLAUDE.md и AGENTS.md прямо в репозитории: соглашения, грабли, «что не делать». Это полноценные инженерные артефакты, а не файлы-для-галочки.
  2. Работа. Агент пишет код сам — мелкими шагами, сверяясь со спекой. Параллельные задачи разводятся по разным сессиям.
  3. Верификация. Главный множитель качества: агент обязан сам убедиться, что его код работает, прежде чем показать результат. Для этого он запускает прод-сборку, открывает страницу в браузере, скроллит, кликает меню с клавиатуры, снимает скриншоты и метрики Lighthouse.
  4. Память. Каждая пойманная ошибка записывается в 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.

Ни один из этих багов не виден в диффе «на глаз». Все пять видны, если открыть страницу и попробовать ей пользоваться — что агент и делает.

Вывод

Агент пишет быстрее меня. Но скорость — не главное. Главное, что цикл «спека → работа → верификация → память» делает качество воспроизводимым: вторая сессия не наступает на грабли первой, потому что грабли записаны.

Делегировать можно мышление — понимание делегировать нельзя.