Это итоговый урок уровня. Возьмём одну реальную задачу и проведём её от запроса до коммита — с проверкой на каждом шаге.
Семь шагов
- Разведка в : Claude читает и отвечает, ничего не меняя.
- План — одобряй, только когда он совпадает с тем, что тебе нужно.
- Реализация — правки одобряешь по мере появления.
- Тесты — работает ли изменение, говорят они, а не итог, который пишет Claude.
- Дифф — читаешь построчно.
- Поправка — всё, что не нравится, просишь исправить обычными словами.
- Коммит — изменение сохранено, его легко откатить.
Задача
Коллега пишет: «если в linkcheck.json указана несуществующая папка, утилита говорит, что все ссылки в порядке, и выходит с кодом 0». Приложил скриншот.
1. Разведка
Нажимай Shift+Tab, пока в строке статуса не появится ⏸ plan mode on. Скриншот вставь из буфера: Ctrl+V (в iTerm2 работает и Cmd+V, в Windows и WSL — Alt+V). В поле ввода появится метка [Image #1]. Нет метки — картинка не добавилась: перетащи файл в окно Claude Code или укажи путь, например «посмотри на картинку .practice/bug.png».
Это вывод linkcheck для конфига с несуществующей папкой. Почему он считает, что всё в порядке? Где в коде читается список папок?
2. План — с падающим тестом
Спланируй исправление. Сначала добавь тест, который воспроизводит баг, и запусти его — я хочу увидеть, что он падает. Потом исправь код.
Это прямой совет из рекомендаций Anthropic: напиши падающий тест, который воспроизводит проблему, и только потом исправляй.
Пока план на экране, открой второй терминал и сохрани две вещи:
git status --porcelain > .practice/before.txt
printf '%s\n' src/config.js src/cli.js test/config.test.js > .practice/plan.txt
Первая — что рабочее дерево чистое до начала. Вторая — какие файлы план собирается менять, тест включительно. Если план называет лишние файлы, верни его и попроси держаться нужных.
3. Реализация
Выбери Yes, manually approve edits и одобряй правки по одной. Команды тоже читай: обычное Yes, когда команда делает то, что нужно плану, и No с пояснением, если она делает больше — например, прячет изменения в stash или перезаписывает файлы. Не выбирай Yes, and switch to auto mode: тогда остальные шаги проверял бы не ты, а фоновые проверки.
4. Тесты
Новый тест должен сначала упасть, а после исправления — пройти. Claude Code сворачивает длинный вывод команды до короткой сводки. Ctrl+O раскрывает его — найди итог тестов в конце, Esc вернёт назад.
5. Дифф
Набери /diff. Откроется одно из двух:
- панель рядом с разговором. Тестовые файлы в её списке скрыты, пока не нажмёшь строку со счётчиком вроде
1 test/generated (show). Если панель уже открылась сама, читай в ней: повторный/diffеё закроет; - список над полем ввода. Стрелками выбираешь файл,
Enterоткрывает его ,Escвозвращает.
Во втором терминале git diff покажет изменения в отслеживаемых файлах. Новый файл, который создал Claude, там не появится, пока не выполнишь git add -N путь/к/файлу. Если дифф остановился на двоеточии — это пейджер, выход по q.
6. Поправка
Прочитал тест и видишь, что он проверяет только один случай? Скажи прямо:
Тест проверяет только одну несуществующую папку. Добавь случай, когда из трёх папок не существует одна, и снова запусти тесты.
После поправки снова посмотри дифф и убедись, что тесты проходят.
7. Коммит
закоммить исправление вместе с тестом, в сообщении скажи, что изменилось
Claude спросит перед запуском коммита — прочитай команду целиком. Потом проверь, что коммит трогает только файлы из плана:
git show --stat HEAD
cat .practice/plan.txt
git status
В коммите не должно быть ни одного файла вне плана, а git status должен сказать nothing to commit, working tree clean.
Мини-проверка
В git show --stat HEAD есть файл src/utils.js, которого не было в плане. Что делать?
Осторожно
Скриншот уходит Claude вместе с запросом. Прежде чем вставлять, обрежь всё личное: токены, адреса почты, данные клиентов. И не путай итог Claude с результатом: фразу «всё работает» подтверждают только вывод тестов и дифф, который ты прочитал сам.
Новое в 2.1.286