# performance-budget-guard

Хук для Claude проверяет размер JS-бандла после сборки Next.js и не даёт выкатить сборку, которая вылезла за бюджет.

- хук · `type=hook` · Claude Code · 393 установки
- Автор: davila7
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/davila7/claude-code-templates/tree/HEAD/cli-tool/components/hooks/performance/performance-budget-guard.json
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/hooks/performance-budget-guard

## Что делает

Хук срабатывает на `PostToolUse` после команд `npm run build`, `next build`, `vercel build` и `yarn build`. Если сборка прошла успешно, он считает суммарный размер всех `.js` в `.next/static/chunks` и сравнивает с лимитом 350KB. Уложились — покажет остаток бюджета и предупредит, если свободно меньше 50KB. Не уложились — выведет перерасход, топ-5 самых тяжёлых чанков и список рекомендаций, а затем завершится с кодом 2, то есть заблокирует деплой.

Второй триггер — правки файлов через `Write`, `Edit` и `MultiEdit`. Хук смотрит на `.js`, `.jsx`, `.ts` и `.tsx` вне `node_modules` и подсказывает по ходу: файл больше 100KB, больше 15 импортов, импорт через звёздочку, полный `lodash` вместо точечного, `moment` в коде. Это не блокировка, а замечания — они не мешают работе.

Учтите: лимит 350KB зашит в скрипт, отдельной настройки под свой проект там нет. И проверка размера завязана на каталог `.next`, поэтому для сборок вне Next.js она просто скажет, что каталога нет. Хук рассчитан на macOS-вариант `stat` с фолбэком на GNU, так что на Linux и в CI тоже отработает.

## Установка

### Claude Code (родная платформа)

1. **Через claude-code-templates**
```bash
npx claude-code-templates@latest --hook performance/performance-budget-guard
```

2. **Вручную: положить файлы**
- Файл: `.claude/settings.json` — Блок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/davila7/claude-code-templates/tree/HEAD/cli-tool/components/hooks/performance/performance-budget-guard.json

## Когда брать
- поймать распухший бандл сразу после сборки, а не на проде
- заблокировать деплой, который вылез за бюджет по размеру JS
- найти самые тяжёлые чанки в `.next/static/chunks`
- заметить полный импорт `lodash` или `moment` в свежем файле
- увидеть, что до лимита осталось меньше 50KB

## Примеры запросов агенту
- собери проект и покажи, укладываемся ли мы в бюджет по размеру бандла
- проверь, что после моей правки в `app/page.tsx` не появилось тяжёлых импортов
- прогони `npm run build` и разбери, какие чанки самые большие

## Похожие
- [react-performance](https://affpapa.org/nevibecode/skills/react-performance.md) — скилл · 4900 установок
- [performance-monitor](https://affpapa.org/nevibecode/agents/performance-monitor.md) — субагент · 298 установок
- [lesson](https://affpapa.org/nevibecode/skills/lesson.md) — скилл · 3900 установок
- [token-budget-advisor](https://affpapa.org/nevibecode/skills/token-budget-advisor.md) — скилл · 4700 установок

Из того же набора: [davila7/claude-code-templates](https://affpapa.org/nevibecode/by/davila7/claude-code-templates.md) — 205 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
