architect/ai/runtime/claude/output-styles-guide.md

type: guide
title: "Output Styles, Resume, Compaction — полное руководство"
status: active
version: 1.0.0
date: 2026-04-15


Claude Code — Output Styles, Resume, Compaction

Исчерпывающее руководство. Всё что не очевидно из документации.


1. Output Style — что это

Output Style — Markdown-файл с YAML-шапкой, который заменяет (или дополняет) системный промпт Claude Code.

---
name: "Название стиля"
description: "Что делает"
keep-coding-instructions: false    ← КЛЮЧЕВОЙ параметр
---

# Инструкции для Claude

[Markdown-содержимое — становится системным промптом]

keep-coding-instructions

Значение Поведение
false Стиль ЗАМЕНЯЕТ базовый системный промпт Anthropic. Наши правила — единственные системные инструкции.
true Стиль ДОБАВЛЯЕТСЯ к базовому промпту. Базовые инструкции Anthropic имеют высший приоритет и могут перебивать наши правила.

Вывод: Для платформы всегда keep-coding-instructions: false.


2. Где хранить файлы стилей

Порядок поиска файла стиля по имени:

1. WORKSPACE/.claude/output-styles/    ПЕРВЫЙ (высший приоритет)
2. ~/.claude/output-styles/            второй (пользовательский fallback)
3. Встроенные стили Claude Code        последний

Важно: Если файл есть в обоих местах — workspace-версия побеждает.

Для платформы: Файлы стилей хранятся в /opt/claude-workspace/.claude/output-styles/. Это правильно — они в git, синхронизируются на все серверы.


3. Порядок загрузки settings.json

Managed settings        высший (нельзя переопределить)
CLI arguments           временный override для сессии
.claude/settings.local.json   LOCAL: личные настройки (в .gitignore)
.claude/settings.json         PROJECT: настройки команды (в git)  наш файл
~/.claude/settings.json       USER: глобальные настройки

Правило: Project outputStyle: Default-test побеждает User outputStyle: Default.

Итог на нашей платформе:
- ~/.claude/settings.jsonoutputStyle: "Default" (не важно)
- /opt/claude-workspace/.claude/settings.jsonoutputStyle: "Default-test"побеждает
- Файл Default-test.md ищется в workspace .claude/output-styles/ → найден ✅


4. Что выживает при сжатии контекста (Compaction)

При /compact или автосжатии:

Механизм Выживает? Почему
Output Style ДА Часть системного промпта, не истории. Перезагружается автоматически.
CLAUDE.md (корень workspace) ДА Инжектируется из файла заново при каждом сжатии.
CLAUDE.md (вложенные папки) НЕТ Загружается только когда Claude читает файл в той папке.
Правила с paths: НЕТ Только при обращении к совпадающим файлам.
MEMORY.md (auto memory) ДА Первые 200 строк перезагружаются.
Hooks ДА Хуки — код, не контекст. Всегда срабатывают.

Вывод: Output Style и CLAUDE.md корня — вечные. Вложенные CLAUDE.md — временные.


5. Resume (claude --resume <id>)

При возобновлении сессии:

Что Восстанавливается?
История сообщений ✅ Полностью
Output Style ✅ Перечитывается из файла заново
CLAUDE.md корня ✅ Перечитывается из файла заново
MEMORY.md ✅ Первые 200 строк
Разрешения сессии ❌ Нужно переподтверждать

CWD имеет значение: Claude Code ищет .claude/settings.json и стили относительно текущей директории. При resume нужно быть в workspace:

cd /opt/claude-workspace && claude --resume <session-id>

Наш start.sh делает это правильно: cd "$WORKSPACE" перед каждым exec claude.


6. Хук SessionStart

SessionStart срабатывает при:
  - Новая сессия    (source: "startup")
  - claude --resume (source: "resume")
  - /clear          (source: "clear")
  - /compact        (source: "compact")

Хук срабатывает всегда — независимо от CWD. Но если хук использует относительные пути, а CWD неправильный — хук сработает с ошибкой.


7. Почему Output Style иногда "не работает"

Симптом: правила загружены, но Claude их нарушает

Это не баг загрузки. Это ограничение модели:
- Правила в тексте стиля — инструкции, не принудительный механизм
- Claude читает и понимает, но делает суждения
- Свежая сессия без контекста → суждения менее точные
- Длинная сессия с контекстом → суждения более точные

Что реально помогает

  1. keep-coding-instructions: false — убирает конкурирующие инструкции Anthropic
  2. Конкретность правил — "перед созданием папки в projects/ ПРОЧИТАЙ workflows/new-project.md" работает лучше чем "следуй режиму проектора"
  3. SessionStart hook — инжектирует напоминание в каждую сессию
  4. PreToolUse hook — может детектировать нарушение и блокировать

Не работает


8. Правильная настройка с нуля

Шаги

1. Workspace settings:
   /opt/claude-workspace/.claude/settings.json
   { "outputStyle": "Default-test" }

2. Файл стиля:
   /opt/claude-workspace/.claude/output-styles/Default-test.md
   --- keep-coding-instructions: false ---
   [Правила платформы]

3. Запуск ТОЛЬКО из workspace:
   cd /opt/claude-workspace && exec claude "режим ..."

4. (Опционально) SessionStart hook для напоминаний

Проверка что всё работает

# Написать в новой сессии: "создай файл test.md"
# ✅ Норма:   Claude показывает план и ждёт "ок"
# ❌ Сломано: Claude создаёт файл сразу

9. Текущий статус платформы

Компонент EU (91) 155
settings.json → Default-test
Default-test.md в workspace
keep-coding-instructions: false
start.sh cd перед запуском
SessionStart hook

Вывод: Оба сервера технически настроены одинаково и правильно. Разница в поведении — особенность свежих vs. длинных сессий.