code-simplifier
Анализирует и упрощает написанный код при завершении сессии. Срабатывает после изменения 3+ файлов.
Описание
Простым языком
AI склонен усложнять код: пишет длинные функции, использует магические числа вместо понятных названий, делает файлы слишком большими. После большой сессии это незаметно. Хук замечает это за тебя.
После работы с 3 и более файлами хук проверяет: нет ли чего-то слишком раздутого? Не правит сам — просто говорит: вот здесь стоит посмотреть. Ты сам решаешь исправлять сейчас или записать на потом.
Что делает
Хук code-simplifier срабатывает при завершении сессии, если было изменено 3 и более файлов. Анализирует написанный код на сложность и формирует список для ревью: длинные функции, дублирование, магические числа.
Не правит код автоматически — только указывает на проблемы. Финальное решение за разработчиком. Это мягкий code-reviewer на выходе из сессии.
Когда срабатывает
Триггер: Stop — при завершении сессии. Условие: изменено 3+ файлов за сессию. Действие: статический анализ изменённых файлов, вывод списка потенциальных улучшений.
Установка
- Добавь конфиг
Stopв.claude/settings.json - Создай
~/.claude/hooks/code-simplifier.shс правамиchmod +x - Установи
clocдля точного подсчёта строк кода (опционально)
Конфиг settings.json
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/code-simplifier.sh"
}
]
}
]
}
}Скрипт хука
#!/bin/bash
# code-simplifier.sh — анализ сложности кода после сессии
# Stop: при изменении 3+ файлов
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"
CHANGED_FILES=$(git -C "$PROJECT_DIR" diff --name-only 2>/dev/null)
CHANGED_COUNT=$(echo "$CHANGED_FILES" | grep -c '.' 2>/dev/null || echo 0)
if [ "$CHANGED_COUNT" -lt 3 ]; then
exit 0
fi
echo ""
echo "━━━ CODE SIMPLIFIER ━━━"
echo "Проверяю $CHANGED_COUNT изменённых файлов..."
echo ""
ISSUES=0
while IFS= read -r FILE; do
[ -z "$FILE" ] && continue
FULL_PATH="$PROJECT_DIR/$FILE"
[ ! -f "$FULL_PATH" ] && continue
case "$FILE" in
*.ts|*.tsx|*.js|*.jsx|*.py|*.go) ;;
*) continue ;;
esac
LINES=$(wc -l < "$FULL_PATH" 2>/dev/null || echo 0)
if [ "$LINES" -gt 500 ]; then
echo "WARN $FILE — $LINES строк (>500). Рассмотри разбиение на модули."
ISSUES=$((ISSUES + 1))
fi
MAGIC=$(grep -nE '[2-9][0-9]{2,}' "$FULL_PATH" 2>/dev/null | grep -v '//' | head -3)
if [ -n "$MAGIC" ]; then
echo "MINOR $FILE — магические числа (вынеси в константы):"
echo "$MAGIC" | sed 's/^/ /'
ISSUES=$((ISSUES + 1))
fi
done <<< "$CHANGED_FILES"
if [ "$ISSUES" -eq 0 ]; then
echo "Всё чисто. Код выглядит хорошо."
else
echo ""
echo "Найдено $ISSUES потенциальных улучшений"
echo "Исправлять необязательно прямо сейчас — запиши как техдолг"
fi
echo "━━━━━━━━━━━━━━━━━━━━━━"
echo ""Примеры работы
Пример вывода после сессии с 5 изменёнными файлами:
━━━ CODE SIMPLIFIER ━━━
Проверяю 5 изменённых файлов...
WARN src/collections/Frameworks.ts — 612 строк (>500). Рассмотри разбиение на модули.
MINOR src/lib/data.ts — магические числа (вынеси в константы):
187: const LIMIT = 1000
234: if (views > 500) {
Найдено 2 потенциальных улучшений
Исправлять необязательно прямо сейчас — запиши как техдолг
━━━━━━━━━━━━━━━━━━━━━━Что пропускает
- Сессии с менее чем 3 изменёнными файлами
- Файлы без кода:
.md,.json,.env.example - Числа 0 и 1 — не считаются magic numbers
- Числа в комментариях (строки с
//)
Что анализирует
- Файлы больше 500 строк — предложение модульного разбиения
- Магические числа больше 99 — предложение вынести в константы
- Список файлов выводится в порядке изменений из git diff
Настройка под себя
- Измени порог файлов:
500на нужное значение - Добавь проверку функций через
awkдля подсчёта строк в функциях - Добавь запись результатов в
docs/ai-notes/как техдолг - Интегрируй с
jscpdдля поиска дублирования кода
Код не становится проще сам по себе. code-simplifier — это напоминание смотреть назад, а не только вперёд.
> Пока нет комментариев
Связанный контент
Похожие инструменты
/typecheck
Проверка типов: tsc для TypeScript, pyright для Python. Показывает ошибки с пояснениями.
Открыть →/autoformat
Форматирование кода: Prettier для JS/TS, ruff для Python. Весь проект или конкретные файлы.
Открыть →/cleanup
Удаление debug-кода: console.log, debugger, print(), закомментированный код. Чистка перед коммитом.
Открыть →/code-review
Запуск ревью кода через субагента code-reviewer. Проверяет DRY, KISS, безопасность, именование.
Открыть →