Назначение: Сюда записываются факты о системе, которые не очевидны из кода, но критически влияют на поведение.
Когда записывать: Только с разрешения оператора. Предложить — при обнаружении; записать — после "да".
Уровни:
- 🔴 Критическое — без этого знания система работает неправильно незаметно
- 🟡 Важное — влияет на поведение, есть обходной путь
- 🟢 Полезное — ускоряет диагностику, не обязательно
Формат:
## [KN-XXX] Название
Уровень / Открыто / Симптом / Проверка / Решение / Ссылка
Уровень: 🔴 Критическое
Открыто: 2026-02-19
Решено: 2026-03-27
Документ: architect/arh/analysis/2026-02-19-instruction-conflict/SUMMARY.md
Суть:
Claude Code имеет слоёвую архитектуру инструкций. При keep-coding-instructions: true наши Output Styles ДОБАВЛЯЮТСЯ к базовым инструкциям Anthropic, а не заменяют их. Базовые инструкции (Layer 1) имеют наивысший приоритет и побеждают в конфликтах.
Слои (по приоритету):
LAYER 1: Base System Prompt (Anthropic) ← ВЫСШИЙ, всегда побеждает (если true)
LAYER 2: --append-system-prompt ← теряется после compaction
LAYER 3: Output Styles (.claude/output-styles/) ← выживает compaction
LAYER 4: SessionStart hook (additionalContext) ← напоминание, не приказ
LAYER 5: CLAUDE.md (claudeMd) ← САМЫЙ НИЗКИЙ
Механизм провала (при keep-coding-instructions: true):
Base: "NEVER create files unless absolutely necessary"
+ SafeDialog: "показывай план, жди подтверждения"
= Base побеждает → Claude создаёт файлы БЕЗ подтверждения
Решение: keep-coding-instructions: false
keep-coding-instructions: false
= Output Style ПОЛНОСТЬЮ ЗАМЕНЯЕТ базовый системный промпт
= Наши правила становятся системными инструкциями (Layer 1)
= Base prompt Anthropic отключается
Выживаемость при разных состояниях сессии:
| Состояние | CLAUDE.md (L5) | Output Style (L3) | Hook (L4) |
|---|---|---|---|
| Старт новой сессии | ✅ Да | ✅ Да | ✅ Да (если cd WORKSPACE) |
| Compaction (сжатие контекста) | ✅ Да | ✅ Да (файлы, не история) | ❌ Нет (не повторяется) |
| Restart (claude --resume) | ✅ Да | ✅ Да | ⚠️ Только если cd WORKSPACE |
Вывод: Output Styles выживают везде. С false — наши правила всегда активны.
Симптом (как понять что сломалось):
- Claude выполняет L3-L4 операции без запроса подтверждения
- Claude создаёт файлы сразу, не показывая план
- Claude задаёт вопросы "А или Б?" вместо таблицы с рекомендацией
- Claude игнорирует протоколы уровней L1-L4
Проверка:
Написать: "создай файл test.md"
✅ Норма: Claude показывает план и ждёт "ок"
❌ Сломано: Claude создаёт файл сразу
Статус: ✅ ИСПРАВЛЕНО 2026-03-27 — SafeDialog.md переписан с keep-coding-instructions: false
Решение: Изменить на keep-coding-instructions: false + переписать styles с явными OVERRIDES
Уровень: 🟡 Важное
Открыто: 2026-03-25
Документ: architect/standards/HOOKS_SESSION.md
Суть:
Claude Code ищет .claude/settings.json (и хуки внутри него) относительно текущей рабочей директории (CWD) при запуске. Если claude --resume вызван не из /opt/claude-workspace, хук SessionStart не срабатывает — CLAUDE.md не инжектируется в сессию.
Симптом:
- Claude не знает правил после resume сессии
- CLAUDE.md не применяется (нет ответа "HOOK OK" при старте)
- Инструкции работают после start (новая сессия), но теряются при session (resume)
Проверка:
grep "WORKSPACE\|cd /opt" /usr/local/bin/session
# Должно быть: cd "$WORKSPACE" перед каждым claude --resume
# Если пусто — хук не сработает при прямом вызове session
Статус: ⚠️ НЕ ИСПРАВЛЕНО — cd "$WORKSPACE" отсутствует в system/scripts/session
Правило: Любой скрипт с claude --resume обязан сначала cd /opt/claude-workspace
Обходной путь: Всегда запускать через start (он делает cd сам)
Уровень: 🟢 Полезное
Открыто: 2026-02-19
Суть:
CLAUDE.md читается как claudeMd (Layer 5 — самый низкий приоритет). Это "напоминание" в контексте, а НЕ системная инструкция. Любое правило в CLAUDE.md может быть перебито базовым system prompt Anthropic. Попытки добавить "OVERRIDE" или "КРИТИЧНО" в CLAUDE.md не работают — они игнорируются.
Вывод для будущего:
- Строгие правила → писать в Output Styles (Layer 3) с keep-coding-instructions: false
- CLAUDE.md → только для контекста, справочников, ссылок, не для поведенческих правил
Уровень: 🟡 Важное
Открыто: 2026-03-27
Суть:
Output Style активен только если пользователь выбрал его через /style. Если стиль не выбран — работает только базовый промпт. keep-coding-instructions: false помогает только когда стиль АКТИВЕН.
Сценарии отказа:
| Сценарий | Поведение | Риск |
|---|---|---|
Новая сессия без /style SafeDialog |
Базовый промпт, без наших правил | 🔴 Высокий |
/style Default выбран вместо SafeDialog |
Default правила | 🟡 Средний |
| Compaction | Стиль выживает (файлы не удаляются) | ✅ Нет риска |
claude --resume |
Стиль выживает | ✅ Нет риска |
Защита (layered fallback):
УРОВЕНЬ 1: SafeDialog.md (keep-coding-instructions: false) ← лучший вариант
УРОВЕНЬ 2: Default.md (keep-coding-instructions: false) ← если wrong style
УРОВЕНЬ 3: CLAUDE.md раздел "КРИТИЧЕСКИЕ ПРАВИЛА" ← если вообще нет стиля
Правило:
- Все output styles должны иметь keep-coding-instructions: false
- В CLAUDE.md должен быть блок критических правил как fallback
- При новой сессии в новом проекте — сразу /style SafeDialog
Последнее обновление: 2026-03-27