Начнём с важной оговорки, чтобы не возникло недоразумения. REVIEW.md — не системный файл Claude Code. В отличие от CLAUDE.md, .claude/rules/ и каталога auto memory, этот файл нигде не описан в документации, автоматически не загружается и специального смысла для инструмента не имеет. Это обычный markdown в вашем репозитории, а имя выбрано командами по договорённости.
Зачем тогда о нём говорить? Затем, что он решает реальную задачу, для которой пройденные механизмы не подходят. Требования к код-ревью — это чек-лист: что смотреть, что считать блокирующим, что оставить на усмотрение автора. Он объёмный, нужен строго в момент проверки диффа и должен читаться людьми не меньше, чем агентом.
После этого урока вы соберёте такой чек-лист, научитесь подключать его в промпт и поймёте, где проходит граница между практическим паттерном и системным механизмом.
Что уже умеем / что добавим
В прошлом уроке вы вывели алгоритм выбора механизма: нужно всегда — CLAUDE.md, часть кодовой базы — правило с paths, справочник или процедура — скилл. Теперь применим этот алгоритм к конкретной задаче и увидим, что делать в промежуточном случае: когда материал уже перерос CLAUDE.md, но оформлять его вы пока не готовы.
Что вы узнаете в рамках статьи
- Почему требования к ревью плохо ложатся в CLAUDE.md и правила
- Как устроен работающий чек-лист ревью и чем он отличается от списка пожеланий
- Три способа подключить файл к сессии и чем они различаются по стоимости
- Как избежать эффекта, при котором проверяющий находит проблемы там, где их нет
- Как понять, что паттерн пора превращать в полноценный механизм
Ключевые термины
- Практический паттерн — способ организации работы, придуманный командой, а не заложенный в инструмент.
- Чек-лист ревью — перечень проверок, применяемых к изменениям перед приёмкой.
- Блокирующее замечание — проблема, из-за которой изменения не принимаются, в отличие от необязательного пожелания.
- Явное подключение — передача файла в контекст через
@-ссылку в промпте. - Постоянное подключение — импорт файла в CLAUDE.md через
@path, при котором он грузится в каждой сессии.
Почему требования к ревью не помещаются в известные механизмы
Прогоним материал через алгоритм трёх вопросов.
Нужен ли он в каждой сессии? Нет. Когда вы правите баг, чек-лист проверки диффа в контексте бесполезен. К тому же он объёмный: полноценный список занимает десятки строк, а CLAUDE.md рекомендуется держать до 200.
Касается ли он части кодовой базы? Тоже нет, и это ломает paths. Ревью применяется к изменениям, а не к файлам определённого типа: сегодня в дифф попал API, завтра стили. Привязка сработала бы криво — правило подключалось бы при чтении файлов, а не при разборе диффа.
Остаётся третий вариант: справочник или процедура. Ответ здесь — да, и логично оформить это скиллом. Но скиллы мы разберём только в следующей главе, а задача есть уже сейчас. К тому же у обычного файла есть достоинство, которого нет у скилла: его читают люди. REVIEW.md в корне репозитория виден любому, кто открывает проект.
Отсюда паттерн: держать чек-лист обычным файлом и подключать в нужный момент.
Как выглядит рабочий чек-лист
Главное отличие работающего чек-листа от неработающего — в разделении обязательного и желательного. Без этого разделения на выходе получается список из двадцати замечаний, где принципиальная утечка соседствует с предпочтением по именованию переменной.
# Требования к ревью
## Блокирующее: без исправления изменения не принимаются
- Ошибки корректности: неучтённые граничные случаи, гонки,
необработанные ветки исполнения
- Секреты в коде: ключи, пароли, токены в любом виде
- Отсутствие тестов на новое поведение при наличии тестовой базы
- Обратно несовместимые изменения публичного API без пометки
## Обязательные проверки
- Изменения соответствуют заявленной задаче, лишнего нет
- Обработка ошибок присутствует и не является пустым перехватом
- Новые зависимости обоснованы и зафиксированы в lock-файле
## Необязательное: отмечать, но не блокировать
- Предложения по именованию и структуре
- Возможности упростить без изменения поведения
## Не отмечать
- Форматирование: за него отвечает линтер
- Стилистические предпочтения без влияния на поведение
Обратите внимание на последний раздел. Он не менее полезен, чем первый: явный запрет на замечания о форматировании убирает шум и не даёт проверке выродиться в спор о пробелах.
Формулировки должны быть проверяемы, как и в CLAUDE.md. «Хорошая обработка ошибок» ничего не даёт; «обработка ошибок не является пустым перехватом» — даёт.
Как подключить файл
Способов три, и различаются они стоимостью контекста.
Явное подключение через @ в промпте — основной вариант. Файл попадает в контекст ровно тогда, когда нужен, и ничего не стоит в остальное время.
Проверь текущий дифф по требованиям из @REVIEW.md.
Раздели замечания на блокирующие и необязательные.
По каждому укажи файл и строку.
Отмечай только то, что реально влияет на корректность
или нарушает перечисленные требования.
Постоянное подключение импортом — строка @REVIEW.md в CLAUDE.md, после чего файл грузится каждую сессию. Для чек-листа ревью это плохой выбор: постоянная плата за материал, нужный изредка.
Указание в CLAUDE.md без импорта — компромисс. Одна строка с упоминанием файла в обратных кавычках, чтобы она не превратилась в импорт:
- Перед приёмкой изменений сверяйтесь с `REVIEW.md`
Это стоит одной строки контекста и напоминает о существовании файла, оставляя загрузку на момент реальной надобности.
Как не получить выдуманные замечания
Есть эффект, о котором предупреждает документация: проверяющий, которому поручено найти пробелы, обычно их находит — даже когда работа сделана хорошо, просто потому, что его об этом попросили. Погоня за каждым таким замечанием ведёт к переусложнению: лишним абстракциям, защитному коду и тестам на невозможные случаи.
Лечится это двумя приёмами. Первый — в самом файле: явный раздел «не отмечать» задаёт границу снизу. Второй — в промпте: прямое указание отмечать только влияющее на корректность или нарушающее заявленные требования. Формулировка «отмечай пробелы, а не стилистические предпочтения» работает лучше, чем «проверь внимательно».
Полезно и требовать доказательств: по каждому замечанию — файл, строка и объяснение, почему это проблема. Замечание, для которого нельзя указать конкретное место, обычно и не является замечанием.
Когда паттерн пора превращать в механизм
Файл в репозитории — хорошее начало, но у него есть предел.
Признак первый: вы подключаете REVIEW.md почти в каждой проверке и печатаете вокруг него один и тот же промпт. Это ровно тот триггер, по которому заводят скилл.
Признак второй: файл разросся, и внутри появились разделы под разные ситуации — отдельно для миграций, отдельно для API. Часть из них удобнее переложить в правила с привязкой к путям.
Признак третий, более серьёзный: проверка должна выполняться обязательно, а не по вашей просьбе. Здесь никакой файл не поможет — инструкции не гарантируют исполнения. Для обязательных проверок есть отдельный механизм, срабатывающий детерминированно; до него доберёмся в восьмой главе.
Пока же паттерн решает задачу малой кровью, и это его главное достоинство.
Частые ошибки
- Считать REVIEW.md системным файлом. Он не загружается автоматически и специального значения для Claude Code не имеет. Не подключите явно или импортом — агент о нём не узнает.
- Чек-лист без градации важности. Список без разделения на блокирующее и необязательное даёт поток равнозначных замечаний, где серьёзное теряется среди косметического.
- Непроверяемые формулировки. «Код должен быть поддерживаемым» нельзя применить как критерий. Переводите пункты в наблюдаемые признаки: наличие теста, отсутствие пустого перехвата.
- Постоянный импорт объёмного файла. Строка
@REVIEW.mdв CLAUDE.md грузит чек-лист каждую сессию, включая те, где он не нужен. Подключайте через@в момент проверки.
Наиболее частые вопросы
- Обязательно ли имя REVIEW.md? — Нет, имя произвольное: это договорённость команды, а не требование инструмента. Важно лишь, чтобы все знали, где файл лежит.
- Загрузится ли файл сам, если положить его в корень? — Нет. Автоматически загружаются только CLAUDE.md, CLAUDE.local.md и файлы из
.claude/rules/; остальное подключается явно. - Чем это лучше, чем написать требования прямо в промпте? — Файл переживает сессии, лежит в репозитории, доступен команде и правится обычным pull request.
- Можно ли применить паттерн к другим задачам? — Да, схема универсальна: чек-листы развёртывания, шаблоны разбора инцидентов, регламенты миграций.
- Что делать, если проверка находит слишком много мелочей? — Расширьте в файле раздел «не отмечать» и потребуйте в промпте отмечать только влияющее на корректность и заявленные требования.
Итоги
Отличная работа: вы освоили не только конкретный файл, но и более общий навык — отличать практический паттерн от системного механизма. REVIEW.md не загружается сам и ничего не значит для инструмента, но закрывает задачу, для которой в пройденном материале готового ответа нет. Вы умеете построить чек-лист с градацией важности, подключить его без лишних трат контекста и добиться замечаний по делу вместо потока придирок.
Вы также знаете, куда паттерн разовьётся: в скилл, когда сценарий станет повторяться, или в обязательную проверку, когда её нельзя доверить просьбе. В следующем уроке останемся в теме документов, но шире: разберём документацию кода, README и материалы в docs/ — и как не получить формальные комментарии вместо полезных объяснений.