Пока Claude Code думает над вашим запросом, в терминале мелькают слова. Не «Thinking» и не «Processing», а Noodling. Honking. Clauding. Smooshing.
Я залип на этом минут на десять, полез в исходники — и обнаружил целую систему кастомизации, о которой почти не пишут. 56 слов-спиннеров, кастомные стили вывода, statusline как в tmux, правила по папкам, и конфиг, в котором можно менять вообще всё — от модели до поведения автокомпакта. Собрал всё в одном месте.
56 слов спиннера: система Tengu
Внутри Anthropic систему спиннер-глаголов называют Tengu — в честь японского духа-трикстера. Каждый раз, когда Claude Code думает, он показывает случайное слово из списка. Вот мои любимые:
Cerebrating — от cerebrum (кора мозга). Буквально «мозговая деятельность»
Cogitating — латынь, cogito ergo sum
Ruminating — жевать мысли, как корова жвачку
Noodling — ковыряться в идее. По-русски ближе всего «залипать»
Smooshing — сминать и склеивать
Finagling — выкручиваться, химичить
Schlepping — тащить (из идиша)
Honking — гусиный гудок
Clauding — клодить. Пасхалка-самоотсылка
Vibing — вайбить
И это кастомизируется. В ~/.claude/settings.json есть поле spinnerVerbs:
{ "spinnerVerbs": [ "Кодирую", "Думаю", "Ломаю прод", "Деплою в пятницу", "Читаю ваш код (ужас)" ] }
Полный список дефолтных слов: gist от mandarBadve
Мелочь? Да. Но по таким деталям видно, что команда делает продукт с любовью, а не просто фичи по спринтам.
Файловая структура Claude Code — что где лежит
Прежде чем лезть в настройки, стоит понять структуру:
~/.claude/ # глобальные настройки ├── CLAUDE.md # ваши личные инструкции ├── settings.json # глобальный конфиг └── skills/ # скиллы для всех проектов your-project/ ├── CLAUDE.md # инструкции для проекта └── .claude/ ├── settings.json # конфиг проекта (в git) ├── settings.local.json # личные настройки (не в git) ├── rules/ # правила по папкам │ ├── api-rules.md │ └── testing-rules.md ├── skills/ # скиллы проекта ├── agents/ # кастомные субагенты └── .mcp.json # MCP-серверы
Ключевое: CLAUDE.md — это «что Claude должен знать», settings.json — «что Claude может делать». Если вы пишете JSON-конфиг в CLAUDE.md — он должен быть в settings.json. Если пишете правила на человеческом языке в settings.json — они должны быть в CLAUDE.md.
CLAUDE.md — память Claude между сессиями
Claude Code читает CLAUDE.md автоматически при каждом запуске. Не нужно копировать, не нужно ссылаться — он просто знает всё, что там написано.
Что туда стоит класть:
# Проект: мой-сервис ## Стек - Backend: Django 5.1, PostgreSQL, Redis - Frontend: React 19, TypeScript, Tailwind - Деплой: Docker Compose на VPS ## Правила - Всегда пиши тесты к новому коду - Используй ruff вместо black для форматирования - Не трогай файлы в /legacy — там драконы - Коммиты на русском языке ## Архитектура - API в /api/v2/, старый /api/v1/ не трогать - Авторизация через JWT, не через сессии - Все переменные окружения в .env, не хардкодь ## При компактинге сохраняй - Текущие редактируемые файлы - Сообщения об ошибках тестов - Архитектурные решения из этой сессии
Последний пункт — неочевидный, но важный. Когда контекст заполняется и Claude делает /compact (сжатие истории), он может потерять важную информацию. Инструкция «при компактинге сохраняй» говорит ему, что оставить.
settings.json — реально полезные настройки
Модель и уровень усилий
{ "model": "claude-sonnet-4-6", "effortLevel": "high", "alwaysThinkingEnabled": true }
effortLevel: low (быстрые ответы), medium (стандарт), high (глубокое reasoning). Также переключается командой /effort прямо в сессии.
Автокомпакт — когда сжимать контекст
{ "env": { "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75" } }
По умолчанию Claude сжимает контекст когда он заполнен на ~80%. Для задач, где нужен большой контекст — ставьте 85%. Для коротких задач — 60-65%, чтобы экономить токены.
Разрешения — самая важная часть
{ "permissions": { "allow": [ "Bash(npm run lint)", "Bash(npm run test *)", "Bash(npm run build)" ], "deny": [ "Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)", "Bash(rm -rf *)", "Bash(git push --force *)" ] } }
Команды в allow выполняются без подтверждения. В deny — полностью заблокированы. Всё остальное — спрашивает. Это убирает главное раздражение: бесконечные «Allow this command? y/n».
Важно: deny для .env файлов — обязательно. Без этого Claude может прочитать ваши API-ключи и включить их в ответ.
Хуки — автоматические действия
{ "hooks": { "PostToolUse": [ { "matcher": "Write|Edit", "hooks": [ { "type": "command", "command": "npx prettier --write \"$CLAUDE_TOOL_INPUT_FILE_PATH\"" } ] } ] } }
После каждой записи/редактирования файла — автоматический prettier. Код всегда отформатирован, без ручных команд.
Output Styles — стили вывода
Мало кто знает, но Claude Code поддерживает три стиля вывода, переключаемых через /config:
Default — лаконичный, только суть
Explanatory — добавляет обоснование решений, почему выбран такой подход
Learning — режим парного программирования, с маркерами
TODO(human)и объяснениями
Для обучения Learning — находка. Claude объясняет каждый шаг и отмечает места, где нужно ваше решение.
Можно создавать свои стили в .claude/styles/.
Statusline — dashboard в терминале
Statusline — скрипт, который показывает информацию внизу терминала после каждого хода Claude. Настраивается через /statusline или вручную.
Что можно показывать: текущая директория, git-ветка, процент заполнения контекста (с цветовой кодировкой: зелёный < 50%, жёлтый 50-80%, красный > 80%), стоимость сессии.
/cost — показывает, сколько денег вы потратили за сессию (для API-ключей). /stats — для подписчиков Max/Pro.
LSP — навигация по коду
Скрытая фича, которая включается через переменную окружения:
{ "env": { "ENABLE_LSP_TOOL": "1" } }
После включения Claude Code подключается к языковому серверу (tsserver, pylsp, gopls, rust-analyzer) и получает навигацию по коду: go to definition, find references, автокомплит. Результат — Claude лучше понимает структуру проекта и точнее редактирует код.
Нужен установленный LSP-сервер для вашего языка. Для TypeScript — tsserver (ставится вместе с TypeScript). Для Python — pylsp.
Shift+Tab — переключение режимов
Три режима, переключаемые через Shift+Tab:
Default — стандартный режим, спрашивает подтверждение
acceptEdits — автоматически применяет правки, но спрашивает про команды
Plan Mode — только планирует, ничего не выполняет
Plan Mode — недооценённый режим для сложных задач. Claude анализирует задачу и пишет план, но ничего не трогает. Вы читаете план, корректируете, и только потом даёте зелёный свет.
Итого: минимальный конфиг для старта
Если не хотите разбираться во всех параметрах — вот конфиг, который закрывает 90% потребностей. Положите в ~/.claude/settings.json:
{ "model": "claude-sonnet-4-6", "effortLevel": "medium", "permissions": { "deny": [ "Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)" ] }, "env": { "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75" } }
И создайте CLAUDE.md в корне проекта с описанием стека, правил и архитектуры. Этих двух файлов достаточно, чтобы Claude Code перестал быть «просто терминальным ChatGPT» и стал инструментом, который знает ваш проект.
Какие настройки Claude Code используете вы? И поменяли ли spinnerVerbs — если да, на что?
