К основному содержанию
хук

lint-on-save — хук для Claude Code: линт после правок

Хук запускает линтер сразу после того, как агент изменил файл. ESLint, Pylint и RuboCop срабатывают сами, без ручного вызова.

Установить в Claude Code · Через claude-code-templates Все способы и платформы ↓
npx claude-code-templates@latest --hook development-tools/lint-on-save
Открыть на GitHub

Что делает lint-on-save

Хук вешается на событие PostToolUse с матчером Edit|MultiEdit. Как только Claude правит файл, команда смотрит на расширение и выбирает инструмент: для .js, .ts, .jsx, .tsx идёт npx eslint с флагом --fix, для .py — pylint, для .rb — rubocop --auto-correct. Ошибки линтера глушатся через 2>/dev/null || true, поэтому хук не срывает работу агента, даже если линтер ругнулся.

Проверка идёт по пути из переменной $CLAUDE_TOOL_FILE_PATH. Файлы других типов просто пропускаются — ветка if не срабатывает, и ничего не запускается. Никакого обхода проекта целиком: линт получает ровно тот файл, который тронул агент.

Ставить есть смысл, если в проекте уже настроен один из трёх линтеров. ESLint вызывается через npx, значит нужен Node и локальная установка пакета — иначе команда молча ничего не сделает. То же с pylint и rubocop: они должны быть доступны в PATH.

Какие задачи решает

  • поймать ошибку стиля сразу после правки файла
  • не запускать линтер руками по каждому изменённому файлу
  • автоматически чинить мелочи в JS и TS через --fix
  • проверять Python-файлы после того, как агент их переписал
  • держать Ruby-код в форме без отдельного шага в пайплайне

Примеры запросов агенту

  • поправь src/utils.ts — и пусть линтер пройдётся после этого
  • перепиши app/models/user.rb, хук сам вызовет rubocop
  • отредактируй scripts/parse.py и покажи, что скажет pylint

Как установить lint-on-save

1Через claude-code-templates

npx claude-code-templates@latest --hook development-tools/lint-on-save

2Вручную: положить файлы

.claude/settings.json

Блок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json

По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду

Вопросы о lint-on-save

Как установить lint-on-save в Claude?

Выполните npx claude-code-templates@latest --hook development-tools/lint-on-save, затем проверьте запись в .claude/settings.json.

Что делает lint-on-save?

После правки файла запускает подходящий линтер: ESLint для JS и TS, Pylint для Python, RuboCop для Ruby. Ошибки линтера не прерывают работу агента.

Какие файлы попадают под хук?

Только .js, .ts, .jsx, .tsx, .py и .rb. Остальные расширения пропускаются, потому что ни одна ветка условия не совпадает.

Исходный текст

lint-on-save.json · MIT
{
  "description": "Automatically run linting tools after file modifications. Supports ESLint for JavaScript/TypeScript, Pylint for Python, and RuboCop for Ruby.",
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "if [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.js || \"$CLAUDE_TOOL_FILE_PATH\" == *.ts || \"$CLAUDE_TOOL_FILE_PATH\" == *.jsx || \"$CLAUDE_TOOL_FILE_PATH\" == *.tsx ]]; then npx eslint \"$CLAUDE_TOOL_FILE_PATH\" --fix 2>/dev/null || true; elif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.py ]]; then pylint \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; elif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.rb ]]; then rubocop \"$CLAUDE_TOOL_FILE_PATH\" --auto-correct 2>/dev/null || true; fi"
          }
        ]
      }
    ]
  }
}

© davila7 · MIT · davila7/claude-code-templates

Похожие хуки

Все хуки по теме «Настройка агента: память, контекст, субагенты» →

Из того же набора205

Весь набор →
smart-commit Хук Claude, который сам коммитит изменённый файл после Edit или Write. Пригодится, если не хочется вручную собирать историю git. 3 745установок architecture-review Слэш-команда для Claude, которая разбирает структуру проекта, паттерны и зависимости и выдаёт план улучшений. Пригодится перед крупным рефакторингом. 3 419установок update-search-year Хук добавляет текущий год к запросам WebSearch, если года в них нет. Пригодится, когда нужны свежие результаты, а не прошлогодние. 3 412установок technical-researcher Субагент изучает чужие репозитории и документацию: собирает метрики, оценивает качество кода и выдаёт отчёт с рекомендациями. 3 344установок todo Ведёт задачи проекта в файле todos.md прямо из чата: добавить, закрыть, удалить, посмотреть список. Пригодится, когда не хочется уходить из Claude ради таск-трекера. 2 723установок explain-code Слэш-команда разбирает незнакомый код: что он делает, как устроен, где узкие места. Пригодится, когда открываешь чужой файл или возвращаешься к своему через полгода. 2 492установок create-prd Слэш-команда превращает идею фичи в документ требований: проблема, объём работ, метрики успеха и критерии приёмки. 2 431установок workflow-orchestrator Оркестрирует цепочки задач автоматизации с графом зависимостей, расписанием и параллельным выполнением в проекте. 2 341установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой