vercel-auto-deploy — хук для Claude Code: что делает и как установить
Запускает деплой в Vercel сразу после того, как Claude Code меняет файлы исходного кода в проекте.
npx claude-code-templates@latest --hook automation/vercel-auto-deployЧто делает vercel-auto-deploy
Хук перехватывает событие PostToolUse для операций Write, Edit и MultiEdit. Если правка прошла успешно, а изменённый файл имеет расширение .js, .jsx, .ts, .tsx, .json, .md, .css, .scss или .html, скрипт запускает сборку. Папки node_modules, .next и .vercel фильтр автоматически игнорирует.
Поведение зависит от текущей ветки Git. В ветках main и master хук отправляет запрос к Vercel API v13 и создаёт релиз для GitHub. Если активны ветки develop или staging, запускается команда vercel --yes --force для предпросмотра. В любых других ветках автодеплой выключен.
Для работы скрипта обязательно нужны утилиты bash, jq, curl и установленный Vercel CLI в системе. Без заданных переменных окружения VERCEL_TOKEN и VERCEL_PROJECT_ID деплой не сработает.
Какие задачи решает
- запускать деплой в Vercel сразу после редактирования файлов агентом
- создавать превью-сборки при правках в ветках develop и staging
- отсекать ложные триггеры при изменении артефактов в node_modules или .next
Примеры запросов агенту
- Обнови компонент
Header.tsxи добавь новую кнопку входа - Отредактируй стили в
styles/main.cssдля тёмной темы - Поправь конфигурацию роутов в файле
routes.json
Как установить vercel-auto-deploy
1Через claude-code-templates
npx claude-code-templates@latest --hook automation/vercel-auto-deploy2Вручную: положить файлы
.claude/settings.jsonБлок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json
По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду
Вопросы о vercel-auto-deploy
Как установить vercel-auto-deploy в Claude Code?
Выполните в терминале команду npx claude-code-templates@latest --hook automation/vercel-auto-deploy. Конфигурация запишется в .claude/settings.json.
Что делает vercel-auto-deploy?
Отслеживает изменения исходных файлов инструментами редактирования Claude Code и вызывает API Vercel или Vercel CLI для деплоя текущей ветки.
Какие переменные окружения нужны хуку?
В системе должны быть заданы переменные VERCEL_TOKEN (токен из профиля Vercel) и VERCEL_PROJECT_ID (идентификатор проекта из панели управления).
Исходный текст
vercel-auto-deploy.json · MIT
{
"description": "Automatically trigger Vercel deployments when code changes are committed, with environment-specific deployment strategies and rollback on failure. Setup: Export environment variables 'export VERCEL_TOKEN=your_token' and 'export VERCEL_PROJECT_ID=your_project_id' (get your token from vercel.com/account/tokens and project ID from your Vercel dashboard). Hook triggers on PostToolUse for Write, Edit, and MultiEdit operations affecting source code files.",
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "bash -c 'input=$(cat); TOOL_NAME=$(echo \"$input\" | jq -r \".tool_name\"); FILE_PATH=$(echo \"$input\" | jq -r \".tool_input.file_path // empty\"); SUCCESS=$(echo \"$input\" | jq -r \".tool_response.success // false\"); if [ \"$SUCCESS\" = \"true\" ] && [[ \"$FILE_PATH\" =~ \\.(js|jsx|ts|tsx|json|md|css|scss|html)$ ]] && [[ ! \"$FILE_PATH\" =~ node_modules ]] && [[ ! \"$FILE_PATH\" =~ \\.next ]] && [[ ! \"$FILE_PATH\" =~ \\.vercel ]]; then echo \"🚀 Code change detected in $FILE_PATH, checking for auto-deployment...\"; if [ -n \"$VERCEL_TOKEN\" ] && [ -n \"$VERCEL_PROJECT_ID\" ]; then BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo \"unknown\"); if [ \"$BRANCH\" = \"main\" ] || [ \"$BRANCH\" = \"master\" ]; then echo \"📦 Triggering production deployment on $BRANCH branch...\"; DEPLOY_RESULT=$(curl -s -X POST \"https://api.vercel.com/v13/deployments\" -H \"Authorization: Bearer $VERCEL_TOKEN\" -H \"Content-Type: application/json\" -d \"{\\\"name\\\":\\\"auto-deploy\\\",\\\"project\\\":\\\"$VERCEL_PROJECT_ID\\\",\\\"gitSource\\\":{\\\"type\\\":\\\"github\\\",\\\"ref\\\":\\\"$BRANCH\\\"}}\"); DEPLOY_URL=$(echo \"$DEPLOY_RESULT\" | jq -r \".url // empty\"); if [ -n \"$DEPLOY_URL\" ]; then echo \"✅ Deployment initiated: https://$DEPLOY_URL\"; echo \"🔄 Monitor status: vercel ls --limit 1\"; else echo \"❌ Deployment failed. Check Vercel logs.\"; fi; elif [ \"$BRANCH\" = \"develop\" ] || [ \"$BRANCH\" = \"staging\" ]; then echo \"🎯 Triggering preview deployment on $BRANCH branch...\"; vercel --yes --force 2>/dev/null && echo \"✅ Preview deployment completed\" || echo \"❌ Preview deployment failed\"; else echo \"ℹ️ Auto-deployment disabled for branch: $BRANCH (only main/master/develop/staging)\"; fi; else echo \"⚠️ VERCEL_TOKEN or VERCEL_PROJECT_ID not configured. Set environment variables to enable auto-deployment.\"; fi; else echo \"ℹ️ File $FILE_PATH not eligible for auto-deployment (non-source file or unsuccessful operation)\"; fi'",
"timeout": 120
}
]
}
]
}
}
© davila7 · MIT · davila7/claude-code-templates