AmigaОбучение ИИ
Модуль 3 · Автоматизируем повторяющееся · урок 7 из 10

GitHub Actions и ревью кода

11 мин чтения▶ есть видеоверсия

Всё, что Claude делает на вашей машине, он может делать и в CI. Для GitHub есть готовое действие anthropics/claude-code-action: упомянули @claude в комментарии к issue — он реализует и откроет PR; открыли PR — он оставил замечания по строкам; наступило 9 утра — он собрал отчёт по вчерашним коммитам. В этом уроке разберём, как это подключить, как ограничить и во что это обходится. И отдельно — ревью кода: автоматическое в GitHub и локальное командой /code-review.

Что делает действие

claude-code-action запускает Claude Code внутри рабочего процесса GitHub Actions с доступом к репозиторию. Оно работает в двух режимах, и режим определяется по тому, есть ли в настройках вход prompt:

  • Интерактивныйprompt не задан. Claude ждёт упоминания @claude в комментарии к issue или PR, в ревью или в теле нового issue, выполняет запрос и отчитывается комментарием в той же ветке обсуждения.
  • Автоматическийprompt задан. Claude выполняет его на любое событие GitHub без упоминания: открытие PR, расписание, публикация релиза. Результат по умолчанию в логе запуска; в PR он пишет только если запрос это велит и есть инструмент для комментариев.

Кто может запустить: на событиях issue и PR у автора должен быть доступ на запись в репозиторий, а боты отклоняются, если не перечислены явно в allowed_bots. Это защита от петель, когда один бот триггерит другого.

Установка

Быстрый путь — из Claude Code в папке репозитория выполнить /install-github-app. Нужны установленный gh (GitHub CLI) с авторизацией и права администратора в репозитории. Команда установит GitHub App, создаст секрет с ключом и подготовит PR с файлами рабочего процесса. Останется его смержить.

Ручной путь из трёх шагов, если /install-github-app недоступен или нужен полный контроль:

  1. Установить Claude GitHub App в репозиторий. Действию нужны права на Contents, Issues и Pull requests (чтение и запись).
  2. Добавить секрет: ANTHROPIC_API_KEY с ключом API из Claude Console либо CLAUDE_CODE_OAUTH_TOKEN, который создаётся локально командой claude setup-token и работает через подписку.
  3. Положить файл рабочего процесса в .github/workflows/.

Для организации: приложение ставится один раз на уровне организации, секрет — как organization-level secret, а рабочий процесс — в каждый репозиторий или один раз как reusable workflow. Для общего секрета берите ключ API, а не токен подписки: токен привязан к тому, кто его создал.

Рабочий процесс: ответ на @claude

Базовый файл .github/workflows/claude.yml:

yaml
name: Claude Code
on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
jobs:
  claude:
    if: contains(github.event.comment.body, '@claude')
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      issues: write
      id-token: write
      actions: read
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Что здесь не шаблон: id-token: write нужен для авторизации действия через GitHub App; actions: read даёт Claude читать результаты CI на PR; условие if не поднимает раннер на комментарии без упоминания. При авторизации по подписке строка с ключом заменяется на claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}.

После мержа в любом issue или PR можно написать: «@claude реализуй по описанию задачи», «@claude почему падает тест в этом PR», «@claude поправь ошибку типов в компоненте дашборда». Claude ответит комментарием и будет обновлять его по ходу работы.

Рабочий процесс: ревью каждого PR

Для автоматического ревью используется плагин code-review из демо-маркетплейса Anthropic. Рабочий процесс запускается при открытии и обновлении PR:

yaml
name: Code Review
on:
  pull_request:
    types: [opened, synchronize, ready_for_review, reopened]
jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
      - 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 --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
          claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'

Две строки определяют, куда попадёт ревью. Флаг --comment велит Claude оставлять замечания прямо в PR — построчно, а если проблем нет, одним итоговым комментарием. Без него результат остаётся в логе. А claude_args с --allowedTools включает MCP-сервер, который и умеет писать построчные комментарии; без этой строки сервер не запустится.

Черновики, закрытые PR и PR, где Claude уже оставил комментарий, пропускаются. На публичных репозиториях GitHub не передаёт секреты в запуски из форков, так что ревью работает только для веток того же репозитория.

Заметьте: prompt принимает не только текст, но и вызов навыка. Навык из .claude/skills/ репозитория вызывается как /имя — после actions/checkout, чтобы файлы были на раннере. Навык из плагина — как /плагин:имя после установки через plugin_marketplaces и plugins. Так ваш командный навык проверки из урока «Навыки проверки» может работать и в CI.

Рабочий процесс: по расписанию

С заданным prompt действие запускается на любое событие, включая schedule. Ежедневный отчёт в 9:00 UTC:

yaml
name: Daily Report
on:
  schedule:
    - cron: "0 9 * * *"
jobs:
  report:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: read
      id-token: write
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "Собери сводку по вчерашним коммитам и открытым issue"
          claude_args: |
            --allowedTools "mcp__github__list_commits,mcp__github__list_issues"

Здесь нет actions/checkout: Claude читает коммиты и issue через MCP-инструменты GitHub, репозиторий клонировать не нужно. С текстовым prompt у Claude по умолчанию нет ни shell, ни доступа к API GitHub — всё, что нужно, выдаётся через --allowedTools в claude_args. GitHub запускает расписания только из основной ветки и отключает их в публичных репозиториях после 60 дней без активности.

Ограничение прав и стоимости

claude_args принимает любые флаги CLI из урока про headless-режим: --max-turns ограничивает число ходов, --model выбирает модель, --allowedTools перечисляет инструменты, --append-system-prompt добавляет инструкции. Вход settings принимает JSON с настройками, в том числе permissions.allow и permissions.deny.

Два правила безопасности из документации. Ключи и токены никогда не коммитятся — только через секреты GitHub. Рабочему процессу выдаётся ровно столько прав (permissions), сколько нужно: для ревью хватает чтения, для реализации по issue нужна запись.

Каждый запуск стоит минут GitHub Actions и токенов API (или лимитов подписки при OAuth-токене). Снизить расход помогают конкретные запросы к @claude, шаблоны issue с контекстом, короткий CLAUDE.md (он читается на каждом запуске), --max-turns, таймаут на уровне рабочего процесса и concurrency GitHub, чтобы не запускать параллельно десять ревью одного PR.

CLAUDE.md репозитория Claude читает и в CI, так что стандарты кода, критерии ревью и правила проекта работают там так же, как локально.

Управляемый Code Review

Помимо действия, которое вы настраиваете сами, есть управляемый сервис Code Review: владелец организации включает его в настройках claude.ai, выбирает репозитории и режим (один раз при открытии PR, после каждого пуша или вручную по комментарию @claude review), и ревью запускаются на инфраструктуре Anthropic без файлов рабочего процесса. Несколько агентов параллельно ищут разные классы проблем, потом проверяют находки на ложные срабатывания, а результат приходит построчными комментариями с пометкой серьёзности. Ревью никогда не блокирует merge — у проверки нейтральный статус.

Настраивается файлом REVIEW.md в корне: что считать важным, сколько мелочей показывать, какие пути пропускать (сгенерированный код, lock-файлы), что проверять всегда («новые маршруты API должны иметь интеграционный тест»). Сервис в статусе research preview для планов Team и Enterprise и оплачивается отдельно; условия — в документации.

Разница с действием: действие — ваш CI, ваш контроль и любые сценарии; сервис — ревью без поддержки рабочих процессов, но только ревью.

Локальное ревью: /code-review

Не обязательно ждать CI. Команда /code-review в сессии проверяет коммиты текущей ветки и незакоммиченные изменения на баги и упрощения. Работает в фоновом субагенте с отдельным контекстом, находки приходят в разговор по готовности. Можно указать цель — путь, номер PR, ветку или диапазон вроде main...my-feature.

Флаг --fix применяет находки к рабочему дереву, --comment публикует их в PR. Уровень усилий (low, medium, high) регулирует баланс между полнотой и уверенностью: на низких уровнях меньше ложных срабатываний, на высоких — шире охват. Полезно прогнать /code-review перед git push — тогда CI-ревью найдёт меньше, а ревьюеру-человеку останется дизайн, а не механика.

Если основной хостинг — GitLab, для него есть отдельная интеграция с CI/CD, описанная в документации Claude Code.

Попробуйте сами

10–15 мин на рабочем месте
  1. В тестовом репозитории выполните /install-github-app и смержите созданный PR. Откройте issue с понятной задачей и напишите @claude реализуй. Посмотрите, как выглядит ответ и PR.
  2. Добавьте рабочий процесс ревью по образцу выше. Откройте PR с намеренной ошибкой (например, неучтённый null) и проверьте, найдёт ли её построчный комментарий.
  3. Перед следующим своим git push выполните /code-review локально. Сравните находки с тем, что потом напишет CI или коллега.

Коротко

  • anthropics/claude-code-action@v1 запускает Claude Code в GitHub Actions; без prompt — отвечает на @claude, с prompt — работает автоматически на любое событие.
  • Установка: /install-github-app или вручную — GitHub App, секрет ANTHROPIC_API_KEY / CLAUDE_CODE_OAUTH_TOKEN, файл в .github/workflows/.
  • Ревью PR: плагин code-review, флаг --comment для построчных замечаний и --allowedTools для MCP-сервера комментариев.
  • Права и расход ограничиваются permissions рабочего процесса, claude_args (--max-turns, --allowedTools), коротким CLAUDE.md и concurrency.
  • Управляемый Code Review — ревью без рабочих процессов, настраивается через REVIEW.md; локально — /code-review с --fix и --comment.

Видеоверсия

Сценарий озвучки · 578 слов, ≈ 4 мин

Всё, что Claude делает на вашей машине, он может делать и в CI. Для GitHub есть готовое действие: упомянули Claude в комментарии к задаче — он реализовал и открыл пул-реквест; открыли пул-реквест — он оставил замечания по строкам; наступило утро — он собрал отчёт по вчерашним коммитам. Разберём, как это подключить, ограничить и во что обходится.

Действие работает в двух режимах, и режим определяется одним параметром — есть ли в настройках готовый запрос. Если запроса нет — интерактивный режим: Claude ждёт упоминания в комментарии к задаче или пул-реквесту, выполняет просьбу и отвечает в той же ветке обсуждения. Если запрос задан — автоматический режим: Claude выполняет его на любое событие GitHub без упоминания — открытие пул-реквеста, расписание, релиз. Запустить может только автор с правом записи в репозиторий, а боты отклоняются — это защита от петель.

Установка проще всего из Claude Code: команда «инсталл гитхаб апп» в папке репозитория. Нужен установленный GitHub CLI и права администратора. Команда поставит приложение, создаст секрет с ключом и подготовит пул-реквест с файлами рабочего процесса. Вручную — три шага: установить приложение Claude из каталога GitHub, добавить секрет с ключом API или с токеном подписки, который создаётся локальной командой «сетап-токен», и положить файл рабочего процесса. Для организации приложение ставится один раз, секрет — на уровне организации, и для общего секрета лучше ключ API, а не токен подписки, потому что токен привязан к человеку.

Базовый рабочий процесс: срабатывает на комментарии к задаче или пул-реквесту, условие проверяет упоминание, чтобы не поднимать раннер зря, дальше — чекаут репозитория и шаг с действием, куда передаётся секрет. В правах — запись в содержимое, пул-реквесты и задачи, плюс токен идентификации для авторизации приложения. После мержа в любой задаче можно написать: «реализуй по описанию», «почему падает тест», «поправь ошибку типов».

Ревью каждого пул-реквеста делается вторым рабочим процессом. Он срабатывает на открытие и обновление, устанавливает плагин ревью из демо-маркетплейса Anthropic и запускает его навык с флагом «коммент». Этот флаг велит оставлять замечания прямо в пул-реквесте, построчно. Ещё нужна строка с разрешённым инструментом: она включает MCP-сервер, который умеет писать построчные комментарии. Черновики и закрытые пул-реквесты пропускаются. И заметьте: в запрос можно передать не только текст, но и вызов навыка. Ваш командный навык проверки из прошлых уроков может работать и в CI.

Третий сценарий — по расписанию. Каждый день в девять утра — сводка по вчерашним коммитам и открытым задачам. Здесь даже чекаут не нужен: Claude читает данные через MCP-инструменты GitHub. Важно: с текстовым запросом у Claude по умолчанию нет ни шелла, ни доступа к API — всё выдаётся явно через разрешённые инструменты.

О правах и деньгах. Параметр с аргументами принимает любые флаги командной строки: ограничение ходов, выбор модели, список инструментов. Ключи никогда не коммитятся — только секреты. Рабочему процессу выдаётся ровно столько прав, сколько нужно: для ревью — чтение, для реализации — запись. Каждый запуск стоит минут GitHub и токенов. Экономят конкретные запросы, шаблоны задач с контекстом, короткий файл клод-эм-дэ — он читается на каждом запуске, — ограничение ходов и запрет параллельных запусков.

Есть и управляемый сервис Code Review: владелец организации включает его в настройках, выбирает репозитории и режим, и ревью идут на инфраструктуре Anthropic без файлов рабочего процесса. Несколько агентов ищут разные классы проблем, проверяют находки на ложные срабатывания, результат — построчные комментарии с пометкой серьёзности. Настраивается файлом ревью-эм-дэ в корне: что считать важным, что пропускать, что проверять всегда. Сервис в исследовательском превью для планов Team и Enterprise, оплачивается отдельно.

И не обязательно ждать CI. Команда «код-ревью» в сессии проверяет текущую ветку в фоновом субагенте. Флаг «фикс» применяет находки, флаг «коммент» публикует их в пул-реквест, а уровень усилий регулирует баланс между полнотой и точностью. Прогоните её перед пушем — и ревьюеру-человеку останется дизайн, а не механика.

Отметка хранится только в вашем браузере