Первый агент за одну команду

Агент описывается как Markdown-файл в директории agents/ - в примере из документации фронтматтер задаёт имя, модель и набор инструментов, а тело файла становится системным промптом агента. Команда ant apply agents/summarizer.md определяет тип ресурса по пути к файлу, показывает план изменений в интерактивном терминале и ждёт подтверждения - ответ «d» показывает детали каждого нового ресурса или построчный diff при обновлении уже существующего.

Файл состояния claude-lock.json

Первый запуск ant apply создаёт lock-файл claude-lock.json в директории, откуда он был запущен - поэтому запускать команду нужно из корня репозитория. В нём фиксируются ID созданных ресурсов, организация и рабочее пространство, а также два хеша, по которым команда отслеживает, изменился ли файл локально или сам ресурс - на стороне API. Именно коммит этого файла вместе с остальным кодом позволяет следующему запуску, локальному или в CI, находить и обновлять те же самые ресурсы, а не плодить дубликаты.

Как ресурсы ссылаются друг на друга

Кроме агентов, файлами можно описать окружения (YAML в environments/), хранилища памяти (YAML в memory_stores/), деплои (Markdown в deployments/) и скиллы (директория со SKILL.md внутри). Ресурсы ссылаются друг на друга просто по относительному пути к файлу - например, агент-ревьюер подключает скилл через путь, а деплой указывает своего агента и окружение тоже по пути; ant apply сам определяет правильный порядок создания зависимостей. Скилл можно подключить и напрямую по GitHub-ссылке на директорию в репозитории, и такая ссылка закрепляется на конкретном разрешённом коммите, пока её не обновят флагом --upgrade.

Что происходит при расхождении с реальностью

Если ресурс был изменён, заархивирован или удалён вне управляемых файлов - например, кто-то отредактировал агента прямо в консоли Anthropic, - план завершается сообщением «This plan cannot be applied:» с указанием причины, и команда завершается с ошибкой «refusing to apply». Перезаписать такое расхождение можно только явно передав флаг --force. Удаление самого файла оставляет ресурс на месте с предупреждением, а флаг --prune реально удаляет его (архивирует, либо удаляет насовсем для скилла). Важное ограничение: ant apply не может «усыновить» ресурс, созданный вручную в консоли или командой ant beta:agents create, - под управлением находятся только те ресурсы, что уже зафиксированы в lock-файле, а попытка применить файл с описанием уже существующего вручную созданного агента создаст второй, дублирующий агент.

Как это встраивается в CI

Без интерактивного терминала команда печатает план и останавливается, требуя явного флага --yes для применения или --dry-run только для просмотра плана. Рекомендуемая схема: на pull request запускать ant apply --dry-run для показа плана ревьюерам (это чисто информационный шаг, завершается кодом 0 даже если план заблокирован), а ant apply --yes - уже на основной ветке после слияния. Обновлённый claude-lock.json нужно коммитить в конце джобы даже если применение завершилось частичной ошибкой, поскольку файл фиксирует то, что реально успело создаться. Рекомендуется запускать только один apply одновременно, поскольку ничего не блокирует lock-файл от параллельного изменения, а для аутентификации в CI - использовать Workload Identity Federation вместо хранимого API-ключа.

С какой версии CLI доступна команда ant apply?
С версии 1.30.0, выпущенной 3 сентября 2026 года.
Какие типы ресурсов можно описывать файлами?
Агентов, окружения, скиллы, хранилища памяти и деплои.
Что произойдёт, если кто-то вручную изменит агента в консоли Anthropic?
Следующий запуск ant apply откажется применять план с сообщением «refusing to apply» - перезаписать можно только явным флагом --force.
Можно ли подключить скилл напрямую с GitHub?
Да, скилл можно указать GitHub-ссылкой на директорию, и она закрепляется на конкретном разрешённом коммите до явного обновления флагом --upgrade.
Как использовать ant apply в CI без интерактивного терминала?
Через флаги --dry-run для показа плана на pull request и --yes для реального применения после слияния изменений в основную ветку.
Может ли ant apply взять под управление агента, созданного вручную в консоли?
Нет, управляются только ресурсы, уже зафиксированные в lock-файле - попытка применить файл с описанием такого агента создаст второй, дублирующий ресурс.
Источники (1)
  1. Manage resources as code with ant apply - Claude Platform Docs
← Все статьи блога