Learn (Almost) Anything
КаталогСкачать курс

Claude Code: справочник разработчика

Настройка стиля вывода и кастомной statusline. Мелкая, но влияющая на удобство персонализация интерфейса агента.

ruЭнциклопедия38 уроков8 модулей7
энциклопедия claude codeClaude Codeсправочник разработчикаФундамент Claude Codeпамять и конфигурацияРабочие процессы и best practicesMCPОблачные агентыПрограммный доступAgent SDK и Claude API

Output styles и статусная строка

Настройка стиля вывода и кастомной statusline. Мелкая, но влияющая на удобство персонализация интерфейса агента.

Output styles и статусная строка

Две вещи, которые влияют на работу с Claude Code незаметно, но постоянно: output style определяет, *как* Claude отвечает на каждый ваш запрос, а статусная строка показывает состояние сессии в реальном времени. Обе — персональные настройки, которые не трогают логику агента и не потребляют API-токены сверх нормы.

---

Output styles: стиль поведения агента

Output style — это набор инструкций, которые добавляются к системному промпту Claude Code. Не к вашим сообщениям — к системному промпту, который читается один раз при старте сессии. Поэтому смена стиля вступает в силу только после /clear или нового сеанса.

Встроенные стили

Из коробки доступны четыре стиля:

СтильСуть
DefaultСтандартный системный промпт: эффективная помощь в разработке ПО
ProactiveClaude действует немедленно, делает разумные допущения, не останавливается на рутинных решениях. Более агрессивная автономность, чем auto mode, — но разрешения на инструменты всё равно спрашиваются
ExplanatoryВ ответы вставляются «Insights» — объяснения, почему выбрано именно это решение, какие паттерны кодовой базы задействованы
LearningКооперативный режим: Claude объясняет и оставляет TODO(human) — метки, куда вы должны вписать код сами

Обратите внимание: Proactive не то же самое, что bypassPermissions. Режим разрешений не меняется — меняется только поведение агента (меньше уточняющих вопросов, больше инициативы).

Проверь себя #cp-1

Вы настроили стиль Proactive. Будет ли Claude пропускать разрешения на запуск инструментов — например, на редактирование файлов?

Показать ответ

Нет. Proactive усиливает автономность поведения агента (меньше уточняющих вопросов, более смелые действия), но режим разрешений остаётся прежним. Разрешения на инструменты всё равно будут запрашиваться. Чтобы убрать запросы, нужно отдельно менять permission mode (например, acceptEdits).

Как переключить стиль

Проще всего — через /config, пункт Output style. Claude Code покажет меню, выбор сохраняется в .claude/settings.local.json на уровне проекта.

Вручную — добавьте поле outputStyle в любой файл настроек:

{
  "outputStyle": "Explanatory"
}

Иерархия настроек стандартная: enterprise → user → project → local. Если в settings.local.json стоит Proactive, а в корпоративных настройках — Default, победит local.

Кастомный output style

Когда ни один из встроенных стилей не подходит — создайте свой. Это markdown-файл с frontmatter. Имя файла становится именем стиля, если в frontmatter не задан name.

Расположение файлов:

  • Пользовательский уровень: ~/.claude/output-styles/
  • Проектный: .claude/output-styles/
  • Внутри плагина: output-styles/ в корне плагина

Пример — стиль, который требует начинать каждое объяснение с диаграммы, но оставляет всю инженерную логику нетронутой:

---
name: Diagrams first
description: Lead every explanation with a diagram
keep-coding-instructions: true
---

When explaining code, architecture, or data flow, start with a Mermaid diagram
showing the structure, then explain in prose.


Быстрое повторение #rc-3

Если в .claude/settings.local.json стоит Proactive, а в корпоративных настройках Default, какой стиль применится?

Показать ответ

Proactive (local), по иерархии: enterprise → user → project → local.

Быстрое повторение #rc-2

Режим Proactive и bypassPermissions — это одно и то же?

Показать ответ

Нет. Proactive меняет поведение агента (больше инициативы, меньше уточняющих вопросов), но режим разрешений остаётся прежним.

Быстрое повторение #rc-1

Output style изменится для текущей сессии сразу после смены в /config?

Показать ответ

Нет, только после /clear или нового сеанса, потому что стиль добавляется в системный промпт, который читается один раз при запуске.

Diagram conventions

Use flowchart TD for control flow and sequenceDiagram for request paths.

Keep diagrams under 15 nodes.


Ключевое поле frontmatter — `keep-coding-instructions`:
- `true` — Claude Code оставляет свои встроенные инструкции по разработке (как скопировать изменения, как писать комментарии, как верифицировать работу). Используйте, если вы меняете *формат* ответов, но продолжаете кодить.
- `false` (по умолчанию) — встроенные инструкции убираются. Подходит, когда Claude выступает как аналитик данных, технический писатель или любая другая роль, не связанная с разработкой.

Полный список frontmatter-полей:

| Поле | Назначение | По умолчанию |
|---|---|---|
| `name` | Имя стиля в меню `/config` | Имя файла |
| `description` | Подсказка в меню ||
| `keep-coding-instructions` | Сохранять ли встроенные инструкции | `false` |
| `force-for-plugin` | Применять стиль автоматически при подключении плагина | `false` |

Поле `force-for-plugin` стоит применять осторожно: если сразу несколько подключённых плагинов устанавливают его в `true`, Claude Code берёт первый загруженный и игнорирует остальные.

Проверь себя #cp-2

Вы создаёте output style для ролевого ассистента по написанию технической документации — без кода, без разработки. Нужно ли ставить keep-coding-instructions: true?

Показать ответ

Нет. keep-coding-instructions: true нужен, когда вы меняете формат ответов, но Claude продолжает делать разработку. Если роль несвязана с программированием совсем, встроенные инженерные инструкции только создадут шум — оставьте false (или просто не указывайте поле).

Output style vs. CLAUDE.md vs. Skills

Часто возникает вопрос: что куда класть?

Output style  → «Как Claude отвечает на каждый вопрос» (роль, тон, формат)
CLAUDE.md     → «Что Claude знает о проекте» (конвенции, команды, архитектура)
Skill         → «Что Claude умеет делать в конкретной задаче» (переносимая экспертиза)

Если вы хотите, чтобы Claude всегда отвечал по-русски и в стиле code review — это output style. Если нужно, чтобы он знал, что тесты запускаются через pnpm test --coverage — это CLAUDE.md. Если нужна переиспользуемая процедура деплоя — это skill.

---

Статусная строка

Статусная строка — полоса в нижней части интерфейса Claude Code. По умолчанию там отображается минимальный набор: модель, режим разрешений. Но строка полностью настраиваема: Claude Code запускает ваш shell-скрипт, передаёт ему JSON-данные сессии через stdin, и всё, что скрипт выведет в stdout, становится строкой.

Важно: статусная строка работает локально и не потребляет API-токены.

Быстрый старт: /statusline

Самый простой способ — описать желаемое в /statusline на естественном языке:

/statusline show model name and context percentage with a progress bar

Claude Code сгенерирует скрипт в ~/.claude/ и сразу пропишет его в settings.json. Это удобно для первого знакомства.

Ручная настройка

Для полного контроля — добавьте блок statusLine в ~/.claude/settings.json (или проектный .claude/settings.json):

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 2,
    "refreshInterval": 30
  }
}

Поля:

  • command — путь к скрипту или inline-команда (например, через jq).
  • padding — дополнительные пробелы по горизонтали.
  • refreshInterval — перезапуск скрипта каждые N секунд помимо событийных обновлений. Полезно, когда статусная строка показывает часы или статус субагентов, работающих в фоне пока основная сессия простаивает.
  • hideVimModeIndicator — убрать встроенный -- INSERT --, если вы сами рендерите vim.mode.

Строка обновляется после каждого ответа ассистента, после /compact, при смене режима разрешений и при переключении vim mode. Обновления дебаунсируются с задержкой 300 мс.

Данные, доступные скрипту

Claude Code передаёт в stdin JSON со всем состоянием сессии. Ключевые поля:

{
  "model": { "id": "claude-opus-4-8", "display_name": "Opus" },
  "workspace": {
    "current_dir": "/home/user/project",
    "git_worktree": "feature-xyz",
    "repo": { "host": "github.com", "owner": "acme", "name": "backend" }
  },
  "context_window": {
    "used_percentage": 42,
    "remaining_percentage": 58,
    "context_window_size": 200000
  },
  "cost": {
    "total_cost_usd": 0.0124,
    "total_duration_ms": 145000,
    "total_lines_added": 87
  },
  "rate_limits": {
    "five_hour": { "used_percentage": 31.5 },
    "seven_day": { "used_percentage": 18.2 }
  },
  "effort": { "level": "high" },
  "vim": { "mode": "NORMAL" },
  "pr": { "number": 42, "url": "https://github.com/...", "review_state": "pending" },
  "output_style": { "name": "Explanatory" },
  "session_name": "refactor-auth",
  "version": "2.1.153"
}

Поля rate_limits доступны только подписчикам Claude.ai (Pro/Max). Поля vim, agent, pr, worktree, session_name присутствуют только когда соответствующие фичи активны — всегда делайте fallback через // empty или or 0.

Размер терминала доступен через переменные окружения COLUMNS и LINES (Claude Code v2.1.153+). Стандартный tput cols внутри скрипта не работает — скрипт запускается без прямого доступа к терминалу.

Проверь себя #cp-3

Скрипт статусной строки делает tput cols внутри Bash, чтобы узнать ширину терминала. Почему это не сработает, и как правильно?

Показать ответ

Скрипт запускается без прямого доступа к терминалу — Claude Code перехватывает stdout, поэтому tput не может определить ширину. Правильный способ — читать переменную окружения $COLUMNS, которую Claude Code устанавливает перед запуском скрипта (начиная с версии 2.1.153).

Практический пример: цветовой индикатор контекста

#!/bin/bash
input=$(cat)

MODEL=$(echo "$input" | jq -r '.model.display_name')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

# Цвет по порогу заполненности
if [ "$PCT" -ge 90 ]; then COLOR='\033[31m'   # красный
elif [ "$PCT" -ge 70 ]; then COLOR='\033[33m' # жёлтый
else COLOR='\033[32m'; fi                      # зелёный
RESET='\033[0m'

# Прогресс-бар из 10 блоков
FILLED=$((PCT / 10)); EMPTY=$((10 - FILLED))
printf -v FILL "%${FILLED}s"; printf -v PAD "%${EMPTY}s"
BAR="${FILL// /▓}${PAD// /░}"

COST_FMT=$(printf '$%.3f' "$COST")

echo -e "[${MODEL}] ${COLOR}${BAR}${RESET} ${PCT}% | 💰 ${COST_FMT}"

Сохраните в ~/.claude/statusline.sh, сделайте исполняемым (chmod +x) и пропишите в settings.json.

Многострочная статусная строка

Каждый echo — отдельная строка в статусной области. Это позволяет организовать компактный «дашборд»:

# Строка 1: модель + директория + git-ветка
BRANCH=$(git branch --show-current 2>/dev/null)
echo -e "[${MODEL}] 📁 ${DIR##*/} | 🌿 ${BRANCH}"

# Строка 2: контекст + стоимость
echo -e "${COLOR}${BAR}${RESET} ${PCT}% | 💰 ${COST_FMT}"

subagentStatusLine

Есть ещё одно поле настроек — subagentStatusLine. Оно настраивает не нижнюю строку интерфейса, а строки субагентов в панели агентов:

{
  "subagentStatusLine": {
    "type": "command",
    "command": "~/.claude/subagent-statusline.sh"
  }
}

Скрипт получает на stdin JSON с массивом tasks — каждый субагент с полями id, name, status, description и временными метками. Вывод заменяет стандартную строку name · description · token count для каждого агента. Полезно, когда запущено несколько фоновых агентов и нужно отличить их по чему-то более значимому, чем имя по умолчанию.

ИнтерактивЧто куда настраивается#int-1
Сопоставьте задачу с нужным механизмом. Помогает запомнить разницу между output styles, statusline и CLAUDE.md.

---

Экосистема: готовые решения

Если писать скрипт с нуля не хочется, в open source уже есть несколько готовых тем и генераторов:

  • ccstatusline (GitHub: sirmalloc/ccstatusline) — Powerline-совместимые темы, настройка через конфиг.
  • claude-statusline (felipeelias, Go) — самодостаточный бинарник, готовые виджеты.
  • Starship-интеграции — если вы уже используете Starship в терминале, часть метрик можно перегнать туда.

Но помните: любой сторонний скрипт получает полный доступ к JSON-данным сессии, включая стоимость и рейт-лимиты. Проверяйте код перед использованием.

---

See also

Источники

  1. Customize your status line — Claude Code Docs
  2. Output styles — Claude Code Docs
  3. How to Customize Your Claude Code Status Line | alexop.dev