Конспект урока «Routines and Headless» из бесплатного курса Anthropic Claude Code in Action. Оригинал урока: https://anthropic.skilljar.com/claude-code-in-action/486935
Это пересказ на русском, а не перевод. Права на курс принадлежат Anthropic.
Когда ты уже доверяешь Клоду какую-то задачу, следующий шаг — перестать запускать её руками. Если это один и тот же промпт по повторяющемуся триггеру, незачем каждый раз сидеть и нажимать старт.
Способы передать работу выстраиваются в шкалу. На одном конце — routines, которые крутятся на инфраструктуре Anthropic и не требуют от тебя ничего собирать. На другом — headless-режим и Agent SDK, где Клод запускается из твоего собственного кода и ты контролируешь всё. Начнём с того конца, где строить меньше всего.
Routine — самый прямой способ автоматизировать задачу. Ни скрипта, ни сервера. Она связывает три вещи: промпт, репозиторий, с которым работает, и нужные коннекторы. Дальше этот набор запускается в облаке по триггеру.
Ключевое: инфраструктура — Anthropic. Твоя машина не должна стоять включённой на ночь, и никакого workflow-файла поддерживать не надо. Один раз описал задачу — она просто работает.
Триггеры бывают трёх видов:
Подходит всё, что сводится к одному промпту по повторяющемуся триггеру: утренний аудит зависимостей, разбор входящих пул-реквестов, ежедневный просмотр тикетов Sentry на предмет самого срочного.
Через веб — на claude.ai/code/routines: имя, инструкции для каждой сессии, репозиторий,
триггер.
Или прямо из Claude Code, не выходя из терминала, — командой /schedule с описанием
обычными словами:
/schedule daily dependency audit at 9am
Точка входа роли не играет, выбирай, что удобнее.
claude/, если ты сам не ослабишь это правило для
конкретного репозитория. Это и есть предохранитель, не дающий автономному прогону
переписать main.Routines хороши, пока работа укладывается в облако. Но иногда задаче нужна именно твоя среда или логика вокруг запуска. Тогда спускаемся в headless.
Основа режима — флаг -p (сокращение от --print). Он запускает Claude Code как разовую
команду без интерактивного интерфейса: читает stdin, пишет stdout, то есть встраивается в
пайпы как любая другая утилита:
claude -p "summarize the changes in this diff"
Что важно знать: -p пропускает автообнаружение хуков, скиллов, плагинов, MCP-серверов
и файла CLAUDE.md. Ты получаешь Клода плюс те инструменты, которые разрешил явно, и ничего
из того, что случайно подтянуло локальное окружение. Плюс в том, что старт заметно быстрее.
Раз режим встраивается в пайпы, часто хочется получить обратно данные, а не прозу. Можно задать JSON-схему вместе с форматом вывода JSON — и Клод ограничит вывод твоей схемой.
Объект по схеме приходит в поле structured_output, откуда его удобно достать через jq и
отправить дальше — в базу или в следующий скрипт:
claude -p "Extract the exported function names from src/core/style.js" \
--output-format json \
--json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \
| jq '.structured_output.functions'
На выходе — чистый массив для следующего шага.
Не обязательно втискивать всё в одну команду. Забери идентификатор сессии из JSON-ответа и возобнови её позже:
claude --resume "$(jq -r .session_id /tmp/plan.json)"
Один скрипт начинает работу, другой продолжает её с полным контекстом. Удобно, когда первый проход строит план, а второй его выполняет.
Когда CI должен получать одинаковый результат при каждом запуске, есть флаг --bare —
детерминированный режим. Это правильный выбор для пайплайна, где нужна повторяемость, а не
вариативность от прогона к прогону.
Последняя ступень шкалы — библиотека, встраивающая Claude Code в твои приложения на TypeScript или Python.
В обоих языках есть функция query и те же примитивы, что у CLI. Передаёшь промпт и опции:
allowedTools — что Клоду позволено;Дальше перебираешь сообщения, которые Клод шлёт в ответ, и обрабатываешь их так, как нужно приложению. Движок тот же, что у CLI, просто вызывается изнутри твоего продукта.
| Инструмент | Когда |
|---|---|
| Routines | по умолчанию для повторяющейся работы — крутится у Anthropic, хостить нечего |
Headless -p |
когда задаче нужен твой пайплайн и данные надо прогнать через скрипт |
--bare |
когда CI должен давать одинаковый результат каждый раз |
| Agent SDK | когда работа должна жить внутри твоего продукта |
Начинай с routines. Спускайся ниже по шкале только тогда, когда задаче действительно нужен дополнительный контроль.