Habit Hooks CLI
Habit Hooks запускает линтеры после правок ИИ-агента и превращает каждое нарушение в короткую инструкцию, как исправить код
- 250 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Запускает внешние линтеры и анализаторы по файлам проекта и читает исходный код
- Пишет `.habit-hooks/config.toml` и `snooze.json` в репозиторий
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add cli/habit-hooksОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Запускает внешние линтеры и анализаторы по файлам проекта и читает исходный код
- Пишет `.habit-hooks/config.toml` и `snooze.json` в репозиторий
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Habit Hooks ставится как Python-пакет и запускается в корне проекта командой `habit-hooks`. Внутри две программы, соединенные каналом. `habit-sensors` запускает детекторы проекта (`ruff`, `eslint`, `knip`, `jscpd`, `phpmd`, `PMD`, `rubocop`) и собирает находки. `habit-mapper` группирует их по типу проблемы и вместо сырого правила линтера выводит короткую инструкцию: что искать, как исправить и чего избегать. Агент читает этот вывод и правит код. Зачем нужна подмена. В независимом тесте Лийны Суониеми на 18 функциях Python Sonnet 4.6 при голой метрике `function is too complex (11 > 5)` исправлял код по-настоящему в 5,6% попыток и в 79 из 90 случаев подгонял проверку: дробил ветки на вспомогательные функции, и число падало, а код проще не становился. С инструкцией доля настоящих исправлений выросла до 83,3%. Первый запуск проверяет весь проект, поэтому на живом коде сначала выполняют `habit-sensors --all | habit-snooze --snooze`: текущие находки отмечаются принятыми, и дальше показываются только новые. Область проверки задают флаги `--branch`, `--last`, `--since` и `--file`. Код выхода 0 означает чистый результат, 1 обязательную находку, 2 поломку самого инструмента.
Для кого. Командам, которые пишут код с Claude Code, Codex или Cursor и устали от правок, где агент обходит линтер вместо исправления кода.
Подходит, если
- Агент подгоняет код под порог сложности функции: дробит ее на куски, а читать код проще не стало
- Проект на Python, TypeScript, PHP, Java или Ruby, и линтеры уже настроены, но агент плохо понимает их сообщения
- На старой кодовой базе нужно ловить только новые проблемы, а накопленные отложить командой `habit-snooze`
- В CI нужен различимый код выхода: 1 для находки, 2 для поломки инструмента
- Нужны свои инструкции: файл `guides/<smell>.md` в `.habit-hooks` заменяет стандартную подсказку
Не подходит, если
- Нужна проверка корректности и архитектуры: инструмент ловит структурные запахи кода, а ошибки в логике не видит
- Язык проекта вне списка плагинов (Python, TypeScript, PHP, Java, Ruby): остается только общий плагин с длиной файла и дублированием
- Детекторы вроде `ruff`, `eslint` или `jscpd` поставить нельзя: Habit Hooks их не включает в пакет
- Требуется запуск без Python 3.11 или новее
Пример запроса к агенту
Подключи Habit Hooks к этому проекту на TypeScript, отложи накопленные находки и после каждой правки запускай `habit-hooks`Ограничения
- Нужен Python 3.11 или новее. Установка ставит ядро и общий плагин, плагин языка добавляют отдельно, например дополнение `habit-hooks[typescript]`.
- Плагин работает только после записи в `.habit-hooks/config.toml`. Установленный, но не включенный плагин ничего не проверяет, и пустой отчет часто означает такой случай.
- Детекторы (`jscpd`, `ruff`, `eslint`, `knip`) ставят в проект сами. Повторная команда `uv` tool install с другим дополнением заменяет прежний набор, поэтому все языки перечисляют в одной команде.
- Инструмент ловит структурные запахи кода и не проверяет корректность или дизайн.
Как отключить. Уберите плагины из списка plugins в `.habit-hooks/config.toml` или удалите папку `.habit-hooks`. Сам пакет снимает команда `uv tool uninstall habit-hooks` (для `pip` — `pip uninstall habit-hooks`).
Частые вопросы
Чем Habit Hooks отличается от обычного линтера?
Линтер выдает правило и номер строки, а Habit Hooks заменяет их инструкцией по исправлению. Сами проверки выполняют те же `ruff`, `eslint`, `knip` и другие детекторы, инструмент их запускает и переводит вывод в понятные агенту подсказки.
Как включить Habit Hooks для TypeScript-проекта?
Поставьте пакет с дополнением: `uv tool install "habit-hooks[typescript]"`, затем в корне проекта выполните `habit-hooks init`. Команда запишет `.habit-hooks/config.toml` с нужными плагинами и перечислит недостающие детекторы, например `eslint`, `knip` и `ts-morph`.
Что делать, если `habit-hooks` ничего не находит?
Чаще всего плагин установлен, но не включен в `.habit-hooks/config.toml`. Повторный запуск `habit-hooks init` ничего не меняет в настроенном проекте и покажет, чего не хватает.
Какие языки поддерживает Habit Hooks?
Отдельные плагины есть для Python, TypeScript, PHP, Java и Ruby, а общий плагин считает длину файлов и дублирование в любом проекте. Плагин языка надо поставить и включить в конфиге.
Как не разбирать все старые нарушения сразу?
Выполните `habit-sensors --all | habit-snooze --snooze` и закоммитьте `.habit-hooks/snooze.json`. Накопленные находки отложатся, а новые появятся в отчете.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыСкилл состязательного аудита кода: Hunter ищет ошибки, Skeptic их оспаривает, Referee выносит вердикт, а правки без вашего разрешения не вносятся
Статический линтер инструкций агента: находит двусмысленные описания инструментов и пробелы в схемах до запуска, без модели и сети
Хуки для Claude Code и Codex CLI ведут журнал действий агента и не принимают «готово» без пройденной проверки.
Проверяет пакеты Agent Skills: структуру, ссылки, объем в токенах и качество инструкций с оценкой моделью-судьей
Поправки, которые вы даете агенту, становятся файлами-правилами в репозитории и проверяются локально и в CI одной командой.
Проверяет diff и переписку с агентом: ловит ошибки в коде и расхождения между вашей просьбой и тем, что агент сделал. CLI, скилл и GitHub Action
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| Habit Hooks (эта карточка) | нет | 250 | |
| brooks-lint | нет | 1 564 | набор правил для разбора кода по книгам, без запуска детекторов и подмены вывода линтеров |
| TDD Guard | нет | 2 373 | останавливает агента, пока нет теста, и не разбирает структурные запахи кода |
Коротко о README
Страница начинается с мотивации: длинные правила агенты игнорируют, а голая метрика вызывает подгонку. Затем идут результаты внешнего теста, установка в четыре шага (пакет, плагин языка, включение в конфиге, детекторы), режимы области проверки и коды выхода. Дальше описаны устройство из двух программ, каталог запахов с делением на обязательные и рекомендательные, плагины, настройка через `.habit-hooks` и отложенные нарушения.