Белого SEO пост. Часть 3. Как я вайбкодил чужой легаси и не убил магазин
Меня спрашивали, как я один за месяц перелопатил то, на что раньше уходил год с разрабом. Рассказываю, но не про промпты. Про то, как вайбкодил.
Вводные: чужой движок, зашифрованное ядро, живой магазин с заказами. Разраба нет. Каждая правка едет сразу в бой. Ошибся, и ты положил корзину людям, которые возможно прямо сейчас покупают.
Правило, которое я вывел
Первую неделю я работал как всегда: увидел проблему, попросил модель починить, залил. И слегка влетел.
Полез править оформление заказа и сам создал баг. Сломал корзину. Откатывали. Причём модель была уверена в себе, я тоже, а проблема оказалась вообще не там, где мы оба думали.
После этого я в CLAUDE(.md) завёл правило и ни я, ни агенты не нарушили его больше ни разу:
1. Сначала ресерчер. Только чтение, никаких правок. Отдельный агент лезет в код и отвечает на один вопрос: где корень проблемы и какие точки изменения. Ему запрещено что-либо трогать.
2. Потом эксперты. Другие агенты, с другими ролями (senior-разработчик, e-commerce, технический SEO), смотрят на предложенный подход и ищут, где он выстрелит в ногу.
3. Потом я показываю план заказчику и только после "ок" пишу код. Об этом клод-код мне сразу напоминает. Без аппрува основной агент сожрёт мне мозг.
Звучит как бюрократия. На деле это то, что спасло мне проект.
Где эксперты меня остановили
Заказчик просит: сделай телефон обязательным при заказе. Я иду чинить форму заказа. Ресерч показывает: телефон там уже обязателен, и в форме, и на сервере. А дыра совсем в другом месте: на сайте вход по e-mail-коду, человек за десять секунд заводит аккаунт, и после этого чекаут телефон у него не спрашивает вообще. Полез бы чинить очевидное, потратил бы день и не починил бы ничего.
Дальше веселее. Я решил заодно подставлять в поле телефон, который человек ввёл на шаге доставки. Логично же. Залили, и заказчик пишет: заказы идут без телефона. Оказалось, при выборе СДЭК в это поле подставляется телефон пункта выдачи, а не покупателя. Я своими руками сделал новый баг из "улучшения". Спасибо, что владелец проверяет всё вживую.
Ещё случай. Надо было склеить сотни дублей товаров. Я придумал искать пару прямо в момент запроса. Эксперт зарубил: запрос уйдёт на каждый просмотр карточки, индекса товара в БД может не быть, а 301 кэшируется у пользователя навсегда. Ошибёшься один раз, и человек будет ходить не туда, пока не
почистит кэш. Переделал: пары считаются заранее, глазами проверяются, в рантайме только точный поиск по ключу. Этот скрипт будет запускаться строго руками раз в месяц, как профилактика дублей. Автоматизация здесь избыточна.
И финальное. Переписал генератор карты сайта, он стал удалять устаревшие xml файлы. Эксперт: а что будет, если база в этот момент отдаст мало данных, потому что идёт загрузка прайса? Правильно: карта перезапишется пустой, а старая удалится. Одна неудачная ночь, и поисковик перестаёт видеть сайтмапы магазина. Добавил предохранитель: пришло мало данных, ничего не трогаем.
Второе правило: предпросмотр
На боевом сайте я теперь ничего не запускаю без режима "только посмотреть".
Любой скрипт, который меняет данные, сначала выдаёт отчёт: вот что я собираюсь сделать. Смотрю глазами. И только потом &apply=1.
Это буквально спасло меня на дублях. Отчёт показал: артикулы sd-1091 и sd1091 после нормализации совпадают, но это рулевая тяга одного бренда и тормозной диск другого. Склеил бы вслепую, и редирект был бы не на тот товар. Живые деньги.
Третье: журнал и откат
Каждая операция, которая трогает базу, пишет журнал. Откат одной ссылкой. Скрипты, которые меняют данные, на сервере не живут: залил, отработал, удалил.
Что я понял за месяц
Модель не заменяет разраба. Она заменяет скорость разраба. Думать всё равно приходится тебе, и самое ценное время уходит не на код, а на то, чтобы понять, что вообще происходит.
Зато с ней ты можешь позволить себе то, чего раньше не мог: проверить гипотезу, которая скорее всего не подтвердится. Раньше это стоило недели ожидания и денег. Сейчас это стоит десять минут. Половина находок в этом кейсе именно оттуда.
И да, я пару раз сам себе создавал баги. Оба раза их ловил не я, а живой человек, который открыл сайт и попробовал купить.
Вайбкодинг в чужом легаси работает. Просто не давай модели писать код первой. Пусть сначала читает.
Мораль всех трёх частей
Падает трафик, а позиции целы, не ищи фильтр. Ищи свои 404.
Меняешь URL, ставь 301. Всегда! Поисковик помнит адрес, а не товар. Без редиректа ты не переехал, ты сжёг всё, что страница копила годами.
Отчёт "Не найдено" это не мусорка, а карта потерянных денег. Полистай свою.
Самый дешёвый трафик это тот, который у тебя уже был. Ищи то, что сам же и закопал.
И ещё. Разработчик уволился, а проект только ускорился. Полтора года узким местом был живой человек, каждая таска от недели до месяца. Теперь всё быстро. Тот случай, когда "нет разраба" это не проблема, а уже почти преимущество.
#белое_seo