Grip: проверяет понимание кода и безопасно ограничивает пуши
Grip — это git hook, который не даст тебе запушить код, если ты не можешь его объяснить. Он задаёт вопросы о твоих изменениях, проверяя, понимаешь ли ты, что делаешь, и насколько безопасен твой код. Отличается от обычных хуков тем, что проверяет не только код, но и уверенность разработчика в нём.
Grip будет полезен командам, которые хотят повысить качество кода и минимизировать риски. Используя ИИ, он автоматически оценит твои ответы на вопросы о диффе и заблокирует пуш, если ты не уложился в минимальную оценку. Работает с Python и запускается легко: просто установи через pipx или uvtool и создай репозиторий.
При этом у проекта есть ограничение: виртуальный провайдер fake позволяет протестировать функционал без интернет-соединения, но полная интеграция с реальными хуками требует настройки. Зато нет необходимости в ключах API или аккаунтах. Подходит для локального использования и командной работы.
Проект grip представляет собой git hook, который помогает разработчикам объяснять свои изменения перед тем, как их код покинет машину. Основная идея заключается в том, что перед выполнением команды push инструмент задает вам вопросы о внесенных изменениях, а затем оценивает ваши ответы. Это позволяет не просто проверять код, но и улучшать понимание о том, что ты делаешь и почему.
При использовании grip ты получаешь пять вопросов, основанных на различиях (diff) между текущими и предыдущими версиями кода. Оценка за ответы варьируется от 0 до 100, в зависимости от качества и содержательности ответов. Если твой балл ниже установленного порога, push останавливается. Проект ориентирован не на автоматизацию проверки кода, а на развитие критического мышления разработчиков.
Установка
Установить grip можно с помощью pipx:
pipx install grip-hook # или: uv tool install grip-hook
Проект требует Python версии 3.11 или новее и поддерживает операционные системы Linux, macOS и Windows. Установка добавляет команду grip и ее алиас git grip.
Быстрый старт
Для начала работы необходимо инициализировать hook. Выполни следующие команды в своем репозитории:
cd your-repo
grip init # создает .grip.toml и устанавливает hook перед push
git push # grip задаст пять вопросов перед выполнением push
Команда grip init создает конфигурационный файл, в котором по умолчанию устанавливается провайдер auto, что позволяет автоматически использовать доступные модели для оценки ответов.
Функционал
- Пять вопросов, основанных на diff, с оценкой по скрытой системе.
- grip whiteboard: визуализация изменений с указанием вопросов о том, что может сделать злонамеренный пользователь.
- Поддерживает различные CLI модели, такие как Claude Code, Codex и другие.
- Легко интегрируется в кодинг-агенты, предотвращая выполнение push до тех пор, пока не будут пройдены тесты.
- Автоматическое повторное использование вопросов при повторном тестировании для повышения эффективности.
Ограничения
Пока ты не установишь hook с помощью команды grip init, никаких блокировок при push не будет. Также в оффлайн-режиме без реальной оценки ответов (используя --provider fake) система просто проверяет длину ответа, что может не отражать истинной сложности взаимодействия с ней. Для реальной оценки необходимо использовать доступные модели и настраивать провайдеры в конфигурации.
В целом, grip ориентирован на обучение разработчиков, предоставляя им возможность лучше понимать свой код и быть способными защитить его перед другими, что может быть особенно полезно в командной работе.
Открыть на GitHub: guilyx/grip →
RepoRadar