Строим с Claude Code
Весь курс мы писали код руками, чтобы понять, как устроен API. В работе большую часть этого кода за вас напишет Claude Code — агент для разработчика, которому посвящён отдельный курс. В этом уроке разберём, как использовать его именно для разработки приложений на Claude API: как ставить задачу, чем снабдить, где он ошибается и как это проверять.
Почему здесь есть подвох
Claude Code пишет код на основе того, что модель знает, а API Claude менялся в 2025–2026 годах заметно: изменился способ включения рассуждения, версии встроенных инструментов, параметры структурированного вывода, появились Managed Agents. Модель может уверенно написать thinking: { type: "enabled", budget_tokens: 4000 } — и это будет ошибка 400 на Opus 5. Или подставить идентификатор модели с датой, которого не существует.
Поэтому главное правило: Claude Code должен работать от документации, а не от памяти. Всё остальное в уроке — способы это обеспечить.
Дать документацию
Самый прямой способ — сослаться на документацию в задаче. У Claude Code есть инструмент загрузки страниц, и он сходит по ссылке сам.
Прочитай https://docs.claude.com/en/docs/build-with-claude/tool-use и
https://docs.claude.com/en/docs/about-claude/models, а потом реализуй
в src/review/ агента, который проверяет pull request: инструменты get_diff
и read_file, модель claude-opus-5, адаптивное рассуждение, tool runner из SDK.Второй способ — положить актуальные примеры в репозиторий. Если у команды уже есть работающая интеграция (тот же классификатор из второго урока), скажите: «Возьми за образец src/support/classify.ts». Рабочий код в репозитории для модели убедительнее любых инструкций.
Третий — проверить, есть ли в вашей установке Claude Code встроенный справочник по Claude API. В свежих версиях он поставляется как навык и загружается, когда в задаче упоминается Anthropic SDK; проверить можно командой /skills или вопросом «какие навыки у тебя есть». Если справочник есть, Claude Code сверится с ним сам; если нет — ссылки на документацию обязательны.
Записать правила в CLAUDE.md
Всё, что вы узнали в курсе о «правильном» API, стоит записать в CLAUDE.md проекта один раз, чтобы не повторять в каждой задаче. Пример раздела:
## Claude API
- Используем @anthropic-ai/sdk, модель `claude-opus-5` (алиас без даты).
- Рассуждение: `thinking: { type: "adaptive" }`, глубина — `output_config.effort`.
Никогда не использовать `budget_tokens`.
- Структурированный вывод: `client.messages.parse` + `zodOutputFormat`.
- Агентный цикл: `client.beta.messages.toolRunner` с `betaZodTool`;
ручной цикл только по явной просьбе.
- Версии встроенных инструментов и бета-заголовки брать из docs.claude.com,
не по памяти. Перед использованием нового параметра — прочитать документацию.
- Ключ только из `ANTHROPIC_API_KEY`; никаких вызовов API из браузера.
- В историю сообщений всегда добавлять `response.content` целиком.Это те же правила, что в уроках про режим рассуждения, вызов инструментов и контекст, только в форме, которую Claude Code прочитает при каждом запуске. Как устроен CLAUDE.md — в уроке курса по Claude Code.
Рабочий процесс
Процесс тот же, что для любой задачи в Claude Code: исследовать, спланировать, написать, проверить. Для интеграций с API есть особенности на каждом шаге.
Исследовать. Попросите Claude Code сначала прочитать документацию и существующий код, не трогая файлы. Хороший первый промпт: «Прочитай документацию по MCP-коннектору и наш src/portal/, потом расскажи, как ты подключишь сервер трекера, но пока ничего не пиши».
Спланировать. Потребуйте план с перечислением параметров API, которые он собирается использовать: имена типов инструментов, бета-заголовки, поля запроса. Этот список легко сверить с документацией до того, как написана хоть одна строка. Если в плане есть budget_tokens или модель с датой в идентификаторе — исправляйте на этом этапе.
Написать. Дайте написать код и тесты. Для тестов SDK удобно подменять: попросите вынести клиент в зависимость, чтобы тест подставлял заглушку с заранее известным ответом. Отдельно — один интеграционный тест на настоящем ключе с минимальным запросом (max_tokens: 16), который запускается вручную или в отдельном CI-шаге.
Проверить. Здесь важнее всего не доверять тому, что «тесты зелёные». Заглушка не заметит неправильного имени параметра. Запустите интеграционный тест, посмотрите на usage и stop_reason в ответе, откройте консоль на platform.claude.com и убедитесь, что запрос там виден с ожидаемой моделью.
Чек-лист ревью кода от Claude Code
Перед тем как влить интеграцию, пройдитесь по списку. Он собран из ошибок, которые модель делает чаще всего.
- Идентификатор модели — из документации, без выдуманной даты.
- Рассуждение —
adaptive, никакогоbudget_tokensна Opus 5, Sonnet 5 и Fable. - Типы встроенных инструментов с актуальной датой версии;
code_executionне смешан с веб-инструментами_20260209. - Бета-функции (компакция, очистка, MCP-коннектор, навыки, Managed Agents) вызываются через
client.beta.messagesс правильным заголовком. - В агентном цикле
response.contentдобавляется в историю целиком; всеtool_resultодного шага — одним сообщением; ошибки инструментов — черезis_error. - Есть ограничение на число итераций.
stop_reasonпроверяется;pause_turnиrefusalобработаны.- Ключ не захардкожен, нет вызовов API из клиентского кода.
- Команды и пути из
tool_useне выполняются без проверки. - В
usageпишутся логи, кэширование проверено поcache_read_input_tokens.
Многие пункты можно закрыть тестами, и Claude Code напишет их, если попросить: «добавь тест, который падает, если в коде встречается budget_tokens».
Что Claude Code делает хорошо
Не стоит воспринимать урок как список опасений. В разработке интеграций Claude Code реально экономит время там, где работа рутинная: обвязка вокруг SDK, обработка ошибок по классам, типизация ответов, тесты с заглушками, миграция существующего кода на новую модель (для этого достаточно дать ему страницу с руководством по миграции). Он хорошо разбирает большой JSON ответа и пишет диспетчеры инструментов. И он отлично объясняет чужой код: «расскажи, что делает этот цикл и где он может зависнуть» — быстрый способ провести ревью интеграции, которую писал не вы.
Главное — помнить, кто отвечает за результат. Claude Code написал, вы проверили по документации и на настоящем ключе, потом влили.
Попробуйте сами
10–15 мин на рабочем месте- Добавьте в
CLAUDE.mdсвоего проекта раздел про Claude API из урока. Попросите Claude Code написать классификатор обращений и проверьте, соблюдены ли правила. - Дайте Claude Code задачу «включи режим рассуждения в этом запросе» без ссылок на документацию. Посмотрите, какой параметр он использует. Потом дайте ссылку на документацию и повторите.
- Попросите Claude Code провести ревью ревьюера PR из уроков курса по чек-листу выше. Сравните его замечания со своими.
Коротко
- Claude Code должен писать интеграцию от документации, а не от памяти: API менялся, устаревшие параметры дают 400.
- Давайте ссылки на docs.claude.com в задаче, рабочие примеры в репозитории и правила в
CLAUDE.md. - Процесс: исследовать без правок → план с перечислением параметров API → код и тесты → проверка на настоящем ключе.
- Тесты с заглушкой не ловят неправильные параметры; нужен минимальный интеграционный тест и взгляд в консоль.
- Проходите по чек-листу: модель, рассуждение, версии инструментов, бета-заголовки, цикл,
stop_reason, ключи, безопасность инструментов. - Ответственность за результат остаётся у вас.
Видеоверсия
Сценарий озвучки · 504 слова, ≈ 4 мин
Весь курс мы писали код руками, чтобы понять, как устроен API. В работе большую часть этого кода за вас напишет Claude Code. В этом уроке — как использовать его именно для интеграций с Claude API и где он ошибается.
Начнём с подвоха. Claude Code пишет код на основе того, что модель знает, а API Claude за последние два года заметно менялся: способ включения рассуждения, версии встроенных инструментов, структурированный вывод, управляемые агенты. Модель может уверенно написать старый параметр с бюджетом токенов для рассуждения — и это будет ошибка на современных моделях. Или подставить идентификатор модели с датой, которого не существует. Отсюда главное правило: Claude Code должен работать от документации, а не от памяти.
Как это обеспечить. Первый способ — дать ссылки прямо в задаче. У Claude Code есть инструмент загрузки страниц, он сходит по ссылке сам. Например: прочитай страницу про вызов инструментов и страницу про модели, потом реализуй агента-ревьюера. Второй способ — положить рабочий пример в репозиторий и сказать «возьми за образец». Работающий код убедительнее инструкций. Третий — проверить, есть ли в вашей версии Claude Code встроенный справочник по API: в свежих версиях он поставляется как навык и подключается сам, когда в задаче упоминается SDK.
Дальше — записать правила в файл клод-эм-дэ в корне проекта, чтобы не повторять их в каждой задаче. Какую модель используем. Что рассуждение — адаптивное, а старый параметр запрещён. Что структурированный вывод — через метод «разобрать» со схемой. Что агентный цикл — через tool runner. Что версии инструментов и бета-заголовки берутся из документации. Что ключ только из окружения и никаких вызовов из браузера. Это те же правила, что мы прошли в курсе, просто в форме, которую Claude Code читает при каждом запуске.
Рабочий процесс — тот же, что для любой задачи: исследовать, спланировать, написать, проверить. Но с особенностями. На этапе исследования просите прочитать документацию и существующий код, ничего не трогая. На этапе плана требуйте перечислить параметры API, которые он собирается использовать: типы инструментов, заголовки, поля. Этот список легко сверить с документацией до первой строчки кода. На этапе написания просите вынести клиент в зависимость, чтобы тесты подставляли заглушку, и отдельно сделать один интеграционный тест на настоящем ключе с минимальным запросом. И на этапе проверки не доверяйте зелёным тестам: заглушка не заметит неправильного имени параметра. Запустите интеграционный тест, посмотрите на расход и причину остановки, откройте консоль и убедитесь, что запрос там виден с ожидаемой моделью.
Перед вливанием пройдитесь по чек-листу. Модель — из документации. Рассуждение — адаптивное. Версии инструментов актуальные. Бета-функции — через бета-клиент с правильным заголовком. В цикле ответ добавляется в историю целиком, результаты одного шага — одним сообщением, ошибки — через флаг. Есть лимит итераций. Причина остановки проверяется. Ключ не в коде. Команды из ответа модели не выполняются без проверки. Многие пункты можно закрыть тестами, и Claude Code напишет их, если попросить.
И чтобы не звучало как список опасений: Claude Code реально экономит время на рутине — обвязка вокруг SDK, обработка ошибок, типизация, тесты, миграция на новую модель по странице из документации. Он отлично объясняет чужой код и находит, где цикл может зависнуть. Просто помните, кто отвечает за результат: он написал, вы проверили по документации и на настоящем ключе, потом влили. В последнем уроке подведём итоги курса.
