← Все статьи

TOOLING · 2026-05-25 · ~6 мин

Мой statusline для Claude Code — практически идеален

3 месяца допиливал. Теперь это одна строка внизу терминала, которая показывает всё, что обычно держишь в голове или проверяешь руками

3 месяца допиливания

На протяжении последних 3 месяцев активной работы с Claude Code я постоянно дорабатывал свой statusline. И вот, считаю, что он практически идеален.

Это одна строка внизу терминала, которая показывает всё, что обычно приходится держать в голове или проверять руками. И многое из того, что интерфейсный Claude Code не показывает.

Выглядит так:

Op 4.7 (1m) │ claude-…tusline (main) │ 3M 1? ↑2 push ⚠ md drift │ ██░░░ 480k/1M │ cache 87% ↓75k +360 1h:42m │ 5h:35%(2h15m) │ 7d:42%(4d)

Исходник лежит на GitHub: ilia-pluzhnikov/claude-code-statusline. Один файл, ~370 строк Node.js, без зависимостей и без сборки. macOS, Linux, Windows.

Кому полезно

Если вы реально работаете в Claude Code, ведёте проекты в Git и хотите меньше думать о техническом состоянии сессии, а больше — о самой задаче.

Из чего состоит

  • ✔️ Модель

    Сразу видно, на чём работаешь: Opus / Sonnet / Haiku, версия и размер контекста.

  • ✔️ Папка и ветка Git

    Показывает текущий проект и branch. Умеет делать truncate длинных названий проекта.

  • ✔️ Состояние репозитория

    Modified / added / deleted / renamed / untracked / conflicts — всё в одной компактной строке. Конфликты подсвечиваются красным, потому что это единственное, что реально блокирует коммит.

    Визуализируется через стандартные гитовские сокращения:

    • 3M — 3 files modified
    • 1A — 1 added
    • 1D — 1 deleted
    • 1R — 1 renamed
    • 2? — 2 untracked
    • 1! — 1 conflict
  • ✔️ Ahead / behind относительно origin

    Надо ли пушить или подтянуть изменения.

  • ✔️ Drift между CLAUDE.md / AGENTS.md / GEMINI.md

    Я использую и Claude Code, и Codex, и Gemini — у них разные главные контекст-файлы. Мой statusline показывает, когда они разъехались. Чтобы все имели одинаковый контекст.

  • ✔️ Контекстное окно

    Це база.

    Показывает, сколько контекста уже занято: бар + токены типа 480k/1M. Есть ранние предупреждения, когда сессия начинает подходить к зоне, где Claude скоро захочет compact.

  • ✔️ Prompt cache

    Видно cache hit ratio, сколько токенов читается из кэша, сколько записывается, и когда TTL протухнет. Помогает лучше понимать, сколько стоит каждый запрос и была ли инвалидация кэша.

  • ✔️ Rate limits 5h и 7d

    Показывает, сколько лимитов осталось и время до reset.

Формат сделал плотным, чтобы всё помещалось в одну строку. Если надо — можно сделать мультистрочный statusline.

Цвета показывают уровень важности: норм / внимание / опасно.

Плюс внутри несколько доп. хуков.

Что значат цвета и пороги

Контекстный бар и rate-лимиты используют одну цветовую шкалу. Подсмотрел у себя же в Figma — те же сигнальные градации, что и в интерфейсах.

  • < 50% — pink, всё спокойно
  • 50–65% — yellow, можно начинать поглядывать
  • 65–80% — orange, скоро упрёшься
  • ≥ 80% — red, и на контекстном баре префикс 💀

У контекстного бара есть отдельное правило: как только сожжено больше 250k токенов, pink принудительно повышается до yellow. 250k — это практический порог «уже много»: качество модели начинает деградировать, и включается длинноконтекстный тариф Anthropic. Сессия с 1M-контекстом на 250k/1M — это 25%, но уже не уютно.

Установка

  1. Склонировать или скачать репозиторий
  2. Положить statusline.js куда удобно. Естественное место — ~/.claude/hooks/statusline.js
  3. Прописать в ~/.claude/settings.json:
{
  "statusLine": {
    "type": "command",
    "command": "node \"/absolute/path/to/statusline.js\"",
    "refreshInterval": 60
  }
}

refreshInterval: 60 нужен для отсчёта TTL кэша — без него значения замирают в idle. Нужен Claude Code ≥ 2.1.97.

Перезапустить Claude Code. На этом всё.

Как это остаётся быстрым

Statusline дёргается часто, поэтому он не должен ничего тормозить. Что я для этого делаю:

  • Все git-проверки локальные. Никакого git fetch, никакой сети. Hard timeout 1 секунда на каждую git-команду — даже если git зависнет, statusline отдаст какую-то строку и двинется дальше
  • Bridge-файл в os.tmpdir(). Значение контекста пишется в claude-ctx-{session_id}.json, чтобы другие хуки (например, PostToolUse-монитор контекста) читали то же число без повторного парсинга stdin
  • Stdin-timeout 3 секунды. Если Claude Code так и не прислал данные — скрипт чисто выходит вместо того, чтобы зависнуть и заблокировать терминал
  • Silent on error. Любая ошибка → пустой stdout. Сломанный statusline никогда не блокирует сессию

На Windows ещё используется windowsHide: true для каждого git-сабпроцесса — иначе во время git-поллинга мигали бы окна консоли.

Доп. хуки внутри

В папке optional-hooks/ лежат три маленьких хука. Никто из них не нужен для самой статусной строки, но вместе они закрывают всю историю с MD-файлами и git'ом.

  • md-sync-check.js

    SessionStart-хук. Предупреждает Claude, что MD-трио разъехалось, чтобы агент знал об этом с начала сессии.

  • sync-md.js

    PostToolUse-хук. При Edit или Write по CLAUDE.md автоматически зеркалит контент в AGENTS.md и GEMINI.md. Один файл правишь — два других перегенерируются сами.

  • github-sync-check.js

    SessionStart-хук. Предупреждает про незакоммиченные файлы и сообщает, когда ветка разошлась с origin. Фоновый git fetch, чтобы следующая сессия стартовала со свежими данными.

Кастомизация

Скрипт — 370 строк Node.js без зависимостей. Открываешь и правишь. Самое частое, что хочется поменять:

  • Спрятать сегмент кэша — удалить блок Prompt cache state. Полезно, если в этом терминале не запускаешь Claude Code или не хочешь видеть счётчики токенов
  • Сменить цветовые пороги — найти < 50 / < 65 / < 80 и поправить под себя
  • Спрятать имя модели — убрать `\x1b[2m${model}\x1b[0m` из массива segments в самом низу
  • Поменять разделитель — заменить ' │ ' (символ ) на что-то другое

Ссылки

  1. claude-code-statusline на GitHub

    Исходник, README, лицензия MIT. PR'ы и форки приветствуются

  2. optional-hooks/

    Три опциональных хука: md-sync-check.js, sync-md.js, github-sync-check.js

  3. Claude Code

    CLI-агент от Anthropic, для которого всё это и писалось. Поддержка statusline — с версии 2.1.97

Хочешь поглубже разобраться в Claude Code, контексте и агентах? Раз в месяц я беру 10 человек на поток и провожу через 6 уровней — от установки до Context Engineering.

Записаться в поток