Как сделать собственного код-ревьювера для Claude на основе истории коммитов
Вы смотрите на пул-реквест, в котором переписана половина кодовой базы. Ведущий разработчик в отпуске, и теперь вы должны проверить всё это так, будто вы — это он.
В чем секрет? Ваша команда уже написала тысячи идеальных ревью. Они просто лежат в GitHub мертвым грузом. Комментарии вроде «вынеси это в `validateUser()`» или «нарушен лимит в 80 символов, см. строку 47» — это маленькие решения, на освоение которых ушли годы.
Давайте их заберем. Мы создадим инструмент, который проанализирует каждое ревью вашей команды, выявит важные для вас паттерны и будет проверять новый код точно так же. Это не просто стандартные правила линтера — это ваши реальные стандарты. То, как Катя всегда находит утечки памяти в асинхронных функциях, или как Миша замечает, что кто-то в третий раз изобретает велосипед вместо использования общего формата дат. Это не просто «нейросеть-ревьюер», это клонирование коллективного разума вашей команды.
Никто это не записывает.
У каждой команды инженеров формируется своя культура ревью. У старших разработчиков в голове всегда есть негласный чеклист: как здесь принято называть переменные, как именно мы обрабатываем ошибки, какие архитектурные паттерны используем на самом деле и какие баги всплывают чаще всего. Все эти знания хранятся только в памяти людей и в изредка обновляемом code style документе который читают обычно один раз при онбординге
Комментарии к PR бесследно тонут в бесконечной ленте GitHub. Ценное замечание ведущего инженера о том, почему в этот API нельзя передавать null? Похоронено в PR #847 полугодичной давности.
Подход к решению
1. Соберите все комментарии из ревью, которые сможете найти. Удачные решения, ошибки, мелкие придирки — всё подряд.
2. Проанализируйте повторяющиеся моменты. Окажется, что у вашей команды есть свои паттерны — вы просто их еще не зафиксировали.
3. Сформулируйте правила. Не абстрактное «пишите чистый код», а конкретное «всегда проверяй на null перед обращением к индексам массива» с примерами из вашего репозитория.
4. Создайте агента, который проводит ревью так же, как ваш старший разработчик в три часа ночи: максимально тщательно, но без лишних слов.
Теперь раскрою каждый из этих пунктов по отдельности.
Сбор данных
Вот пример скрипта для сбора всех комментариев, которые когда-либо писал ваш проверяющий:
Уверен Claude напишет вам скрипт не хуже, поэтому я не буду больше играть в примеры кода, а сконцентрируюсь на сути.
По итогам этого этапа у вас появляется файл со всеми комментариями, вы можете выбрать удобный вам формат, от csv и json до импорта в Гугл Таблицы.
Анализ
Заваривайте кофе. Вам предстоит пялиться на две с половиной тысячи гневных комментариев. Это была шутка, вы можете попросить Claude найти повторяющиеся закономерности прямо из файла. У вас слишком много комментариев? Разбейте файл на части или используйте Gemini с большим окном контекста. Вы можете даже отдать файл двум или трем разным моделям, а потом попросить каждую из них оценить выводы друг друга. Таким образом вы сэкономите время и получите свод правил. В идеальном мире это хороший этап чтобы показать этот набор старшим разработчикам и попросить оценить. Пробежаться глазами по исходнику тоже не мешало бы. Выгружайте комментарии самых внимательных ревьюверов чтобы изначальный набор данных содержал больше полезных комментариев!
Для того чтобы искать повторяющиеся шаблоны можно быстро с помощью bash скрипта собрать повторяющиеся глаголы и фрагменты кода в ревью:
И оценить их глазами.
В моем случае мы с Клодом проанализировали 2400 комментариев и нашли 45 повторяющихся паттернов, которые распределили по 9 категориям:
- именование
- единообразие
- упрощение
- обработка ошибок
- организация тестов
- порядок кода
- ввод-вывод (IO)
- стандартные библиотеки
- миграции.
Превращаем паттерны в правила.
Каждый паттерн состоит из пяти элементов:
- Название: Понятная метка, которую вы точно запомните. -
- Правило: Одно предложение о том, что нужно или нельзя делать.
- Обоснование: Объяснение «почему», которое помогает правилу закрепиться в памяти.
- Примеры: Наглядное сравнение хорошего и плохого вариантов.
- Реальная цитата: Комментарий из практики, который стал поводом для создания паттерна.
Пример правила:
Другой пример:
Создание навыка для Claude
Начните с самого ревьюера. Его голос здесь имеет решающее значение — то, как он придирается к именам переменных, вздыхает над избыточным проектированием или каким тоном указывает на пропущенную проверку на nil. Возьмите десять его последних комментариев к пулл-реквестам, если они у вас есть. Выбирайте стоящие примеры, где он нашел реальные проблемы, а не просто написал «мелочь: лишний пробел».
Добавьте к персоне набор полученных правил из предыдущего шага. Создайте в корне Claude новый файл: `agents/review/your-reviewer.md` и поместите туда полученный выше файл из персоны и правил.
Создание своей слеш команды
Чтобы вызвать агента с помощью слеш-команды вроде `/review-like-a-king`, создайте файл навыка в `skills/review-like-a-king.md`:
Теперь вызывая команду /review-like-a-king вы будете получать код-ревью о
Интеграция с Compound Engineering
Если вы используете плагин compound-engineering, вы можете добавить собственного рецензента, чтобы он запускался вместе с другими рецензентами при выполнении команды `/workflows:review`.
Команда compound-engineering `/workflows:review` одновременно запускает несколько агентов для рецензирования.
1. **Найдите файл рабочего процесса**:
2. **Найдите раздел "Параллельные агенты"** (примерно строки 54-71) 3. **Добавьте вашего агента** в список:
Агенты с условным запуском и постоянно активные агенты
Вы можете настроить агента так, чтобы он запускался только при определённом типе файлов:
Всегда запускать (добавить в parallel_tasks)
Или запускать только для языка Go:
Можно сделать даже так:
И добавить каждого из них в compound-engineering в качестве условных агентов:
Тестирование и улучшения
1. Создайте тестовый PR с соответствующими изменениями, вы можете взять уже существующий набор PR из прошлого, где есть комментарии ваших звездных инженеров
2. Запустите команду `/workflows:review` или вашу команду `/review-like-a-king`
3. Убедитесь, что выводы вашего агента появились в сводном отчете
4. При необходимости скорректируйте промпт агента
Вывод
Создание собственного агента для ревью кода на основе реальной истории рецензий даёт инструмент, который:
- Сохраняет корпоративные знания, которые иначе могли бы быть утеряны
- Обеспечивает постоянную обратную связь независимо от доступности рецензентов
- Ускоряет адаптацию новых членов команды
- Развивается вместе с практиками вашей команды
Ваши лучшие рецензенты уже создали обучающие данные — они хранятся в истории ваших pull-request’ов. Осталось только извлечь, структурировать и закодировать их.
Технические вложения скромны (около 1–2 дней на первоначальную настройку), а шаблоны со временем накапливаются, по мере добавления новых данных и уточнения правил.
В этой статье описывается создание агента-рецензента с помощью плагинов Claude Code. Те же принципы применимы и к другим помощникам по написанию кода — основная работа заключается в извлечении и кодификации паттернов.
Об авторе.
Иван Кузнецов, ex-fullstack dev, ex-fintech-executive, теперь продуктовый менеджер, vibe-кодинг и RoR энтузиаст. Веду закрытое сообщество для опытных пользователей ИИ Нейробилд