GitHub Actions и автоматический code review
claude-code-action — это GitHub Action, построенный поверх Claude Agent SDK. Проще говоря: тот же движок агентного цикла, что работает у вас в терминале, теперь запускается прямо в CI-раннере GitHub. Агент получает контекст из репозитория, читает файлы, пишет код и взаимодействует с GitHub API — всё на стандартных ubuntu-latest runners, ваш инфраструктуры не касаясь.
Важно разделить два режима с самого начала, потому что их часто путают:
- Интерактивный режим — агент реагирует на упоминание
@claudeв комментариях к PR или issue. Это on-demand запуск: кто-то написал, агент прочитал контекст и выполнил задачу. - Автоматизированный режим — агент запускается без триггера из комментария: по расписанию, при открытии PR, по любому GitHub-событию. Здесь вы передаёте инструкцию через параметр
promptпрямо в YAML-файле.
Есть и третий вариант — Code Review, управляемый сервис на инфраструктуре Anthropic. Его мы разберём отдельно в конце.
Архитектура: что происходит за кулисами
Когда кто-то пишет @claude в комментарии к PR, вот что происходит:
sequenceDiagram
actor Dev as Разработчик
participant GH as GitHub
participant App as Claude GitHub App
participant Runner as GitHub Runner
participant Agent as Агент (Agent SDK)
participant API as Anthropic API
Dev->>GH: Комментарий «@claude fix the bug»
GH->>App: Webhook: issue_comment event
App->>Runner: Запуск workflow
Runner->>Runner: actions/checkout (опц.)
Runner->>Agent: anthropics/claude-code-action@v1
Agent->>GH: Читает PR-контекст, диффы, файлы
Agent->>API: Агентный цикл (plan → tool calls)
loop Инструменты
Agent->>Runner: Read / Edit / Bash
Agent->>GH: GitHub API (get_pr_files и т.д.)
end
Agent->>GH: Создаёт коммит / оставляет комментарий
GH->>Dev: Уведомление о результате1. GitHub App (github.com/apps/claude) получает webhook-событие
2. Запускается workflow из .github/workflows/
3. Action anthropics/claude-code-action@v1 запускает агентный цикл
4. Агент читает контекст: диффы, файлы, историю комментариев
5. Выполняет инструменты (Read/Edit/Bash/GitHub API)
6. Публикует результат как комментарий или создаёт PR/коммит
Главное отличие от локального запуска: агент работает на раннере GitHub (изолированная виртуальная машина), имеет доступ к репозиторию через actions/checkout, и общается с GitHub API через токен GitHub App.
Быстрая установка: /install-github-app
Для большинства репозиториев самый простой путь — запустить в терминале:
claudeproject:~$ claude
/install-github-appКоманда пройдёт по шагам: установит GitHub App (https://github.com/apps/claude) в репозиторий, добавит секрет ANTHROPIC_API_KEY и создаст файл .github/workflows/claude.yml.
Ограничение: /install-github-app работает только если вы используете Anthropic API напрямую. Для Amazon Bedrock или Google Vertex AI — только ручная настройка (см. ниже).
Ручная настройка
Если автоустановка не подходит или нужен полный контроль:
Шаг 1. Установить GitHub App: https://github.com/apps/claude. Необходимые permissions репозитория: Contents (read & write), Issues (read & write), Pull requests (read & write).
Шаг 2. Добавить секрет ANTHROPIC_API_KEY в Settings → Secrets and variables → Actions.
Шаг 3. Создать файл .github/workflows/claude.yml.
Минимальный рабочий workflow для интерактивного режима:
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# Всё — больше ничего не нужно для работы @claudeAction сам определит режим: если в workflow нет prompt, он ждёт триггера @claude в комментарии.
Работа с @claude: что умеет агент в PR
После настройки можно писать в любом комментарии к PR или issue:
@claude реализуй фичу из описания issue
@claude почини TypeError в компоненте UserDashboard
@claude сделай ревью этого PR на предмет безопасности
@claude добавь unit-тесты для функции parseExpiryАгент читает весь контекст: описание PR, изменённые файлы, историю комментариев, CLAUDE.md вашего репозитория. Затем — агентный цикл: планирует, редактирует файлы, коммитит прямо в ветку PR, оставляет комментарий с результатом.
Прогресс виден в виде динамических чекбоксов в комментарии агента — удобно отслеживать, что он делает.
Автоматизированные workflow: prompt без триггера
Для задач, которые не требуют ручного вызова:
name: Ежедневный отчёт
on:
schedule:
- cron: "0 9 * * 1-5" # будни в 9:00 UTC
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Проанализируй вчерашние коммиты и открытые issues, составь краткий отчёт"
claude_args: "--model claude-opus-4 --max-turns 5"Параметр claude_args — это прямой проброс CLI-флагов, как если бы вы запускали claude в терминале. Можно передать --model, --max-turns, --allowedTools, --mcp-config — всё, что поддерживает CLI.
Автоматический ревью каждого PR при открытии:
name: Code Review on PR
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Проверь этот PR на предмет багов, безопасности и соответствия стилю проекта"
claude_args: "--max-turns 3"Использование плагинов и навыков
В prompt можно передать не просто текст, но и вызов навыка или команду из плагина. Например, установить плагин code-review из официального маркетплейса и вызвать его навык:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
plugins: "code-review@claude-code-plugins"
prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"Для навыков из самого репозитория — сначала actions/checkout, потом Action.
Code Review: управляемый сервис
Отдельно от claude-code-action существует Code Review — managed-сервис, который запускается на инфраструктуре Anthropic (не на ваших раннерах). Доступен для Team и Enterprise подписок.
Отличия принципиальные:
- Не требует YAML-файла и настройки workflow
- Запускает флот специализированных агентов параллельно
- Каждый агент ищет отдельный класс проблем; затем — верификационный проход
- Результаты — инлайн-комментарии прямо на строках кода в диффе, с маркерами 🔴 (баг перед мерджем) и 🟡 (нит)
- Среднее время — 20 минут; средняя стоимость — $15–25 за ревью
Кастомизация поведения через два файла в корне репозитория:
CLAUDE.md— общие правила проекта (нарушения → нит-уровень)REVIEW.md— review-специфичные инструкции, инжектируются как высший приоритет в каждый агент флота
Пример REVIEW.md, который ограничивает «важные» находки только production-багами:
# Review instructions
Что считать Important
Только то, что сломает поведение в продакшне: некорректная логика,
унскопированные DB-запросы, PII в логах. Стиль — Nit максимум.
Лимит нитов
Не более 5 Nit на ревью; остальное — как "плюс N похожих" в саммари.
Не проверять
- Всё, что покрывает CI (линтинг, типы, форматирование)
- Файлы под src/gen/ и любые *.lock
Вручную запустить ревью можно комментарием `@claude review` на PR.
### Enterprise: Bedrock и Vertex AI
Для организаций с требованиями к data residency — `claude-code-action` поддерживает Amazon Bedrock и Google Vertex AI. Вместо `ANTHROPIC_API_KEY` используется OIDC-аутентификация:
Amazon Bedrock
- uses: anthropics/claude-code-action@v1
with:
use_bedrock: "true"
github_token: ${{ steps.app-token.outputs.token }}
claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'
Обратите внимание: модели Bedrock используют региональный префикс в имени (`us.anthropic.claude-sonnet-4-6`). Для Vertex — другой формат (`claude-sonnet-4-5@20250929`). При переходе на облачного провайдера это одна из самых частых причин ошибок.
### Несколько практических соображений
**Стоимость.** Каждый `@claude` в комментарии = GitHub Actions минуты + токены API. При `pull_request: synchronize` агент запускается на каждый push, что быстро накапливается. Ограничивайте `--max-turns` и используйте `concurrency` на уровне workflow, чтобы новый push отменял предыдущий запуск.
**Безопасность.** Никогда не кладите API-ключи напрямую в YAML. Секрет `ANTHROPIC_API_KEY` — через Settings → Secrets. О том, почему `bypassPermissions` опасен при prompt injection — в [Модель разрешений, безопасность и доверие](/lessons/254125da-d07f-44fd-aed7-374d07a4dd1a/4).
**CLAUDE.md в репозитории.** Агент читает его так же, как при локальном запуске. Это главный способ передать контекст проекта: стиль кода, запрещённые паттерны, структуру директорий. Без него агент действует вслепую относительно конвенций команды — детально разобрано в [CLAUDE.md и система памяти](/lessons/254125da-d07f-44fd-aed7-374d07a4dd1a/6).
**Версия `@v1`.** Актуальная мажорная версия — `@v1` (вышла в августе 2025). Если у вас старые workflows с `@beta` и параметрами `mode`, `direct_prompt`, `custom_instructions` — это бета-версия с несовместимым API. Обновить несложно: заменить `@beta` на `@v1`, `direct_prompt` → `prompt`, остальные опции перенести в `claude_args`.
See also
- Claude Agent SDK: программная сборка агентов — движок, на котором основан
claude-code-action - GitLab CI/CD и headless-автоматизация — аналогичная интеграция для GitLab-пайплайнов
- Skills — переносимые навыки — как вызывать навыки из prompt в Actions
- Plugins и marketplace — установка плагинов в workflow
- CLAUDE.md и система памяти — как контекст проекта влияет на агента в CI
- Модель разрешений, безопасность и доверие — почему важно ограничивать права агента в публичных репозиториях
- Практика: GitHub, базы данных и веб-API через MCP — GitHub MCP Server как дополнение к Actions-интеграции