format-python-files — хук для Claude Code: автоформат .py через black
Хук прогоняет black по каждому .py-файлу, который Claude изменил через Edit. Форматирование перестаёт быть отдельным шагом.
npx claude-code-templates@latest --hook post-tool/format-python-filesЧто делает format-python-files
Хук вешается на событие PostToolUse с матчером Edit. После правки файла команда проверяет, что путь заканчивается на .py, и запускает black по этому файлу. Всё, что Claude записал в Python-файл, сразу приводится к одному виду.
Внутри одна строка: условие на расширение и вызов black "$CLAUDE_TOOL_FILE_PATH" с подавлением ошибок — 2>/dev/null || true. Поэтому отсутствие black не сломает сессию, но и форматирования не будет. Ставить его нужно заранее: pip install black.
Хук срабатывает только на Edit, а не на Write и не на правки через терминал. Если вы генерируете файлы другим инструментом, формат останется как есть — это повод проверить, каким инструментом вы обычно пишете код.
Какие задачи решает
- привести изменённый .py к единому стилю без ручного запуска black
- убрать расхождения в отступах и кавычках после правок агента
- не отвлекаться на форматирование во время длинной сессии
- закрыть вопрос стиля до код-ревью
Примеры запросов агенту
- Поправь функцию парсинга в
parser.py, чтобы она читала вложенные словари - Отрефактори
utils.pyи вынеси работу с датами в отдельную функцию - Исправь ошибку типов в
models.py
Как установить format-python-files
1Через claude-code-templates
npx claude-code-templates@latest --hook post-tool/format-python-files2Вручную: положить файлы
.claude/settings.jsonБлок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json
По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду
Вопросы о format-python-files
Как установить format-python-files в Claude?
Выполните npx claude-code-templates@latest --hook post-tool/format-python-files, затем проверьте запись в .claude/settings.json.
Что делает format-python-files?
После каждой операции Edit запускает black по изменённому файлу, если у него расширение .py.
Что нужно для работы хука?
Установленный black: pip install black. Без него команда молча завершится, и файл останется неотформатированным.
Исходный текст
format-python-files.json · MIT
{
"description": "Automatically format Python files after any Edit operation using black formatter. This hook runs 'black' on any .py file that Claude modifies, ensuring consistent Python code formatting. Requires black to be installed ('pip install black'). The command includes error suppression (2>/dev/null || true) so it won't fail if black is not installed.",
"hooks": {
"PostToolUse": [
{
"matcher": "Edit",
"hooks": [
{
"type": "command",
"command": "if [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.py ]]; then black \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; fi"
}
]
}
]
}
}
© davila7 · MIT · davila7/claude-code-templates