Habit Hooks CLI

Habit Hooks запускает линтеры после правок ИИ-агента и превращает каждое нарушение в короткую инструкцию, как исправить код

  • 250 ★ репозитория
  • Последний коммит
  • MIT
CLI

Расширенный доступ

Почему такой уровень

  • Запускает внешние линтеры и анализаторы по файлам проекта и читает исходный код
  • Пишет `.habit-hooks/config.toml` и `snooze.json` в репозиторий
Все причины и проверки

habit-hooks/habit-hooks

Установка

В терминале, через 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`. Накопленные находки отложатся, а новые появятся в отчете.

Обсуждение

Вопросов и отзывов пока нет.

Скилл состязательного аудита кода: Hunter ищет ошибки, Skeptic их оспаривает, Referee выносит вердикт, а правки без вашего разрешения не вносятся

СкиллРасширенный доступ549Звезды репозитория

Статический линтер инструкций агента: находит двусмысленные описания инструментов и пробелы в схемах до запуска, без модели и сети

CLIМинимальный доступ144Звезды репозитория

Хуки для Claude Code и Codex CLI ведут журнал действий агента и не принимают «готово» без пройденной проверки.

CLIРасширенный доступ132Звезды репозитория

Проверяет пакеты Agent Skills: структуру, ссылки, объем в токенах и качество инструкций с оценкой моделью-судьей

CLIРасширенный доступ265Звезды репозитория

Поправки, которые вы даете агенту, становятся файлами-правилами в репозитории и проверяются локально и в CI одной командой.

CLIРасширенный доступ179Звезды репозитория

Проверяет diff и переписку с агентом: ловит ошибки в коде и расхождения между вашей просьбой и тем, что агент сделал. CLI, скилл и GitHub Action

СкиллРасширенный доступ502Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйЗвезды репозиторияГлавное отличие
Habit Hooks (эта карточка)нет250
brooks-lintнет1 564набор правил для разбора кода по книгам, без запуска детекторов и подмены вывода линтеров
TDD Guardнет2 373останавливает агента, пока нет теста, и не разбирает структурные запахи кода

Коротко о README

Страница начинается с мотивации: длинные правила агенты игнорируют, а голая метрика вызывает подгонку. Затем идут результаты внешнего теста, установка в четыре шага (пакет, плагин языка, включение в конфиге, детекторы), режимы области проверки и коды выхода. Дальше описаны устройство из двух программ, каталог запахов с делением на обязательные и рекомендательные, плагины, настройка через `.habit-hooks` и отложенные нарушения.

Бейдж для README

Сообщить о проблеме

Foxx AIHabit Hooks
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.