К основному содержанию
хук

deployment-health-monitor — хук для Claude Code: установка

Отслеживает статус деплоев в Vercel при старте сессии и после команд сборки. Предупреждает об ошибках и падении доли успешных релизов.

Установить в Claude Code · Через claude-code-templates Все способы и платформы ↓
npx claude-code-templates@latest --hook automation/deployment-health-monitor
Открыть на GitHub

Что делает deployment-health-monitor

Хук проверяет состояние проектов в Vercel прямо во время работы с Claude Code. При старте сессии событие SessionStart запрашивает через Vercel API последний деплой и выводит его статус: готов, собирается или завершился с ошибкой.

Второе событие, PostToolUse, перехватывает команды в bash со словами vercel, deploy или build. Скрипт анализирует пять последних деплоев, считает долю успешных запусков и выводит ссылки на сбойные сборки. Если доля успешных сборок падает ниже 50%, скрипт завершает работу с кодом 2.

Для работы хука в окружении обязательно нужны переменные VERCEL_TOKEN и VERCEL_PROJECT_ID, а также утилиты curl и jq. Без заданных токенов мониторинг просто пропускает проверки.

Какие задачи решает

  • отслеживать статус последнего деплоя в Vercel при старте сессии
  • перехватывать ошибки сборки сразу после команд vercel и deploy
  • контролировать процент успешных релизов по последним пяти запускам
  • получать прямые ссылки на упавшие сборки для быстрого поиска причин

Примеры запросов агенту

  • Собери проект и запусти деплой на Vercel через bash
  • Выполни npm run build, чтобы проверить состояние сборки
  • Запусти команду vercel --prod и посмотри отчёт по релизу

Как установить deployment-health-monitor

1Через claude-code-templates

npx claude-code-templates@latest --hook automation/deployment-health-monitor

2Вручную: положить файлы

.claude/settings.json

Блок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json

По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду

Вопросы о deployment-health-monitor

Как установить deployment-health-monitor в Claude Code?

Выполните команду npx claude-code-templates@latest --hook automation/deployment-health-monitor либо добавьте конфигурацию хука в .claude/settings.json.

Что делает хук deployment-health-monitor?

Он проверяет недавние деплои в Vercel через API при запуске Claude Code и после вызова команд сборки или публикации, выводя статус и ссылки на ошибки.

Какие переменные окружения нужны для работы?

Необходимо экспортировать VERCEL_TOKEN из настроек аккаунта Vercel и VERCEL_PROJECT_ID из панели проекта.

Исходный текст

deployment-health-monitor.json · MIT
{
  "description": "Monitor deployment status, error rates, and performance metrics, sending notifications for failed deployments or performance degradation. Tracks Vercel deployment health, monitors build success/failure rates, and provides alerts for deployment issues. Setup: Export 'export VERCEL_TOKEN=your_token' and 'export VERCEL_PROJECT_ID=your_project_id' (get from vercel.com/account/tokens and Vercel dashboard).",
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'input=$(cat); COMMAND=$(echo \"$input\" | jq -r \".tool_input.command // empty\"); SUCCESS=$(echo \"$input\" | jq -r \".tool_response.success // false\"); if [[ \"$COMMAND\" =~ (vercel|deploy|build) ]] && [ -n \"$VERCEL_TOKEN\" ] && [ -n \"$VERCEL_PROJECT_ID\" ]; then echo \"🏥 Deployment Health Monitor: Checking deployment status...\"; DEPLOY_DATA=$(curl -s -H \"Authorization: Bearer $VERCEL_TOKEN\" \"https://api.vercel.com/v6/deployments?projectId=$VERCEL_PROJECT_ID&limit=5\" 2>/dev/null); if [ -n \"$DEPLOY_DATA\" ] && [ \"$DEPLOY_DATA\" != \"null\" ]; then RECENT_DEPLOYMENTS=$(echo \"$DEPLOY_DATA\" | jq -r \".deployments[]\"); TOTAL_DEPLOYMENTS=$(echo \"$DEPLOY_DATA\" | jq \".deployments | length\"); SUCCESS_COUNT=0; ERROR_COUNT=0; BUILDING_COUNT=0; echo \"📊 Recent deployment analysis ($TOTAL_DEPLOYMENTS deployments):\"; echo \"$DEPLOY_DATA\" | jq -r \".deployments[] | \\\"State: \\(.state) | Created: \\(.created | todateiso8601) | URL: \\(.url // \\\"N/A\\\")\\\"\"; for state in $(echo \"$DEPLOY_DATA\" | jq -r \".deployments[].state\"); do case \"$state\" in READY) ((SUCCESS_COUNT++));; ERROR|CANCELED) ((ERROR_COUNT++));; BUILDING|QUEUED) ((BUILDING_COUNT++));; esac; done; SUCCESS_RATE=$(( SUCCESS_COUNT * 100 / TOTAL_DEPLOYMENTS )); echo \"\" ; echo \"📈 Deployment Health Summary:\"; echo \"✅ Successful: $SUCCESS_COUNT/$TOTAL_DEPLOYMENTS ($SUCCESS_RATE%)\"; echo \"❌ Failed: $ERROR_COUNT/$TOTAL_DEPLOYMENTS\"; echo \"🔄 In Progress: $BUILDING_COUNT/$TOTAL_DEPLOYMENTS\"; if [ $ERROR_COUNT -gt 0 ]; then echo \"\" >&2; echo \"🚨 DEPLOYMENT HEALTH ALERT!\" >&2; echo \"Recent failures detected: $ERROR_COUNT failed deployments\" >&2; echo \"Success rate: $SUCCESS_RATE%\" >&2; echo \"\" >&2; echo \"🔍 Failed deployments:\" >&2; echo \"$DEPLOY_DATA\" | jq -r \".deployments[] | select(.state == \\\"ERROR\\\" or .state == \\\"CANCELED\\\") | \\\"❌ \\(.created | todateiso8601): \\(.url // \\\"No URL\\\")\\\"\" >&2; echo \"\" >&2; echo \"💡 Troubleshooting steps:\" >&2; echo \"• Check Vercel dashboard for detailed error logs\" >&2; echo \"• Review recent code changes\" >&2; echo \"• Verify environment variables are set\" >&2; echo \"• Check for build script errors\" >&2; if [ $SUCCESS_RATE -lt 50 ]; then echo \"🚨 CRITICAL: Success rate below 50%!\" >&2; exit 2; fi; elif [ $SUCCESS_RATE -lt 80 ]; then echo \"⚠️ Warning: Success rate below 80%\"; fi; if [ $BUILDING_COUNT -gt 2 ]; then echo \"⏳ Multiple builds in progress ($BUILDING_COUNT)\"; echo \"💡 This might indicate build queue issues\"; fi; LATEST_DEPLOY=$(echo \"$DEPLOY_DATA\" | jq -r \".deployments[0]\"); LATEST_STATE=$(echo \"$LATEST_DEPLOY\" | jq -r \".state\"); LATEST_URL=$(echo \"$LATEST_DEPLOY\" | jq -r \".url // empty\"); LATEST_CREATED=$(echo \"$LATEST_DEPLOY\" | jq -r \".created\"); if [ -n \"$LATEST_CREATED\" ] && [ \"$LATEST_CREATED\" != \"null\" ]; then MINUTES_AGO=$(( ($(date +%s) - $LATEST_CREATED/1000) / 60 )); echo \"🕒 Latest deployment: $LATEST_STATE ($MINUTES_AGO minutes ago)\"; if [ -n \"$LATEST_URL\" ]; then echo \"🌐 URL: https://$LATEST_URL\"; fi; fi; echo \"✅ Deployment health check completed\"; else echo \"❌ Unable to fetch deployment data from Vercel API\"; fi; else echo \"ℹ️ Deployment health monitoring skipped (not a deployment command or missing tokens)\"; fi'",
            "timeout": 30
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "matcher": "startup",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'if [ -n \"$VERCEL_TOKEN\" ] && [ -n \"$VERCEL_PROJECT_ID\" ]; then echo \"🏥 Deployment Health Monitor: Initial health check...\"; DEPLOY_DATA=$(curl -s -H \"Authorization: Bearer $VERCEL_TOKEN\" \"https://api.vercel.com/v6/deployments?projectId=$VERCEL_PROJECT_ID&limit=1\" 2>/dev/null); if [ -n \"$DEPLOY_DATA\" ] && [ \"$DEPLOY_DATA\" != \"null\" ]; then LATEST_STATE=$(echo \"$DEPLOY_DATA\" | jq -r \".deployments[0].state // empty\"); LATEST_URL=$(echo \"$DEPLOY_DATA\" | jq -r \".deployments[0].url // empty\"); LATEST_CREATED=$(echo \"$DEPLOY_DATA\" | jq -r \".deployments[0].created // empty\"); if [ -n \"$LATEST_CREATED\" ] && [ \"$LATEST_CREATED\" != \"null\" ]; then MINUTES_AGO=$(( ($(date +%s) - $LATEST_CREATED/1000) / 60 )); case \"$LATEST_STATE\" in READY) echo \"✅ Latest deployment: READY ($MINUTES_AGO minutes ago)\"; if [ -n \"$LATEST_URL\" ]; then echo \"🌐 Live at: https://$LATEST_URL\"; fi;; ERROR) echo \"❌ Latest deployment: FAILED ($MINUTES_AGO minutes ago)\" >&2; echo \"🔧 Check Vercel dashboard for details\" >&2;; BUILDING) echo \"🔄 Latest deployment: BUILDING ($MINUTES_AGO minutes ago)\"; echo \"⏳ Build in progress...\";; QUEUED) echo \"⏳ Latest deployment: QUEUED ($MINUTES_AGO minutes ago)\";; *) echo \"❓ Latest deployment: $LATEST_STATE ($MINUTES_AGO minutes ago)\";; esac; echo \"📊 Deployment monitoring active\"; else echo \"ℹ️ No recent deployments found\"; fi; else echo \"⚠️ Unable to connect to Vercel API\"; fi; else echo \"ℹ️ Deployment health monitoring disabled (VERCEL_TOKEN or VERCEL_PROJECT_ID not set)\"; fi'",
            "timeout": 15
          }
        ]
      }
    ]
  }
}

© davila7 · MIT · davila7/claude-code-templates

Похожие хуки

Все хуки по теме «DevOps и инфраструктура» →

Из того же набора804

Весь набор →
optimize-api-performance Слэш-команда разбирает API по узким местам: медленные эндпоинты, запросы к базе, кэш, лимиты. Пригодится, когда ответы тормозят под нагрузкой. 518установок setup-linting Настраивает линтеры и проверки качества в проекте: ESLint, Flake8, Pylint, MyPy, Clippy. Пригодится, когда правила стиля надо закрепить автоматически. 510установок vercel-deploy-optimize Оптимизирует сборку Next.js и выкладывает её на Vercel, попутно проверяя конфиги и подключая мониторинг производительности. 506установок prevent-direct-push Блокирует прямую отправку коммитов в защищённые ветки main и develop из Claude Code. Защищает проект от случайных изменений в обход пулреквестов. 505установок nextjs-api-tester Команда анализирует эндпоинты в Next.js и пишет для них проверки. Помогает протестировать авторизацию, валидацию данных и ошибки в App или Pages Router. 479установок e2e-setup Команда разворачивает сквозное E2E-тестирование в проекте, подбирает фреймворк и настраивает запуск тестов в CI. 477установок optimize-memory-usage Команда ищет утечки и лишний расход памяти, затем предлагает настройки и проверки для frontend, backend или базы данных. 476установок ci-pipeline Настраивает и проверяет CI/CD в GitHub Actions прямо из диалога. Пригодится, когда нужно развернуть пайплайн с тестами, матрицей версий и деплоем на staging и production. 470установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой