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

smart-formatting — хук для Claude Code: что делает и как установить

Автоматически форматирует код после правок агента с помощью Prettier, Black, gofmt, rustfmt или php-cs-fixer по расширению файла.

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

Что делает smart-formatting

Хук перехватывает события PostToolUse для инструментов Edit и MultiEdit в Claude Code. Как только агент меняет файл, сценарий проверяет его расширение через переменную $CLAUDE_TOOL_FILE_PATH и вызывает подходящую утилиту.

Для файлов JavaScript, TypeScript, JSON, CSS и HTML хук запускает npx prettier --write. Скрипты на Python обрабатываются через black, код на Go форматируется утилитой gofmt -w, Rust — через rustfmt, а файлы PHP — с помощью php-cs-fixer fix.

Каждый вызов содержит подавление ошибок 2>/dev/null || true. Без установленного в системе форматтера файл просто останется в исходном виде, а агент не получит предупреждения о сбое.

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

  • приводить код на JavaScript, TypeScript и HTML к стилю Prettier сразу после правок агента
  • выравнивать структуру Python-файлов утилитой Black
  • форматировать исходники на Go через gofmt после каждого изменения
  • запускать rustfmt для кода на Rust без ручного вызова в консоли

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

  • Поправь типизацию и логику валидации в server/auth.ts
  • Добавь обработчик ошибок в функцию экспорта в main.py
  • Перепиши структуру данных в pkg/storage.go

Как установить smart-formatting

1Через claude-code-templates

npx claude-code-templates@latest --hook development-tools/smart-formatting

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

.claude/settings.json

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

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

Вопросы о smart-formatting

Как установить smart-formatting в Claude Code?

Запустите команду npx claude-code-templates@latest --hook development-tools/smart-formatting в терминале или добавьте конфигурацию хука в файл .claude/settings.json.

Какие языки и утилиты поддерживает хук smart-formatting?

Он проверяет расширения файлов и форматирует JS, TS, JSON, CSS и HTML через Prettier, Python через Black, Go через gofmt, Rust через rustfmt и PHP через php-cs-fixer.

Что произойдёт, если нужный форматтер не установлен в системе?

Команда завершится без прерывания работы агента, потому что все вызовы содержат 2>/dev/null || true. Форматирование файла в таком случае просто не применится.

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

smart-formatting.json · MIT
{
  "description": "Smart code formatting based on file type. Automatically formats code using Prettier, Black, gofmt, rustfmt, and other language-specific formatters.",
  "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 || \"$CLAUDE_TOOL_FILE_PATH\" == *.json || \"$CLAUDE_TOOL_FILE_PATH\" == *.css || \"$CLAUDE_TOOL_FILE_PATH\" == *.html ]]; then npx prettier --write \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; elif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.py ]]; then black \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; elif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.go ]]; then gofmt -w \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; elif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.rs ]]; then rustfmt \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; elif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.php ]]; then php-cs-fixer fix \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; fi"
          }
        ]
      }
    ]
  }
}

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

Похожие хуки

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

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

Весь набор →
technical-researcher Субагент изучает чужие репозитории и документацию: собирает метрики, оценивает качество кода и выдаёт отчёт с рекомендациями. 3 344установок lint-on-save Хук запускает линтер сразу после того, как агент изменил файл. ESLint, Pylint и RuboCop срабатывают сами, без ручного вызова. 3 235установок api-security-audit Субагент для проверки REST API на дыры в аутентификации, авторизации и защите данных. Пригодится, когда нужно разобрать чужой код перед релизом. 3 202установок git-flow-manager Субагент Claude, который создаёт ветки по Git Flow, сливает их, ставит теги и собирает pull request. Пригодится, если в проекте строгая схема ветвления, а руки до неё не доходят. 3 127установок todo Ведёт задачи проекта в файле todos.md прямо из чата: добавить, закрыть, удалить, посмотреть список. Пригодится, когда не хочется уходить из Claude ради таск-трекера. 2 723установок explain-code Слэш-команда разбирает незнакомый код: что он делает, как устроен, где узкие места. Пригодится, когда открываешь чужой файл или возвращаешься к своему через полгода. 2 492установок research-orchestrator Координирует многоэтапные исследовательские проекты в Claude Code. Субагент делит сложные темы на фазы и распределяет задачи между профильными помощниками. 2 448установок create-prd Слэш-команда превращает идею фичи в документ требований: проблема, объём работ, метрики успеха и критерии приёмки. 2 431установок

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

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