Пока 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 — если да, на что?