Второй мозг для Claude Code: 5 ошибок, на которых слил 80 часов

Второй мозг для Claude Code: 5 ошибок, на которых слил 80 часов

Я собирал «второй мозг» для Claude Code четыре месяца. Перестраивал его три раза. Первая версия - раздутый CLAUDE.md на 240 строк, который агент уже к третьему запросу не помнил. Вторая - отдельный репозиторий «business-context», в который Claude вообще не ходил, потому что был запущен в репе с кодом. Третья - в одной репе с проектом, 80 строк CLAUDE.md, пять папок с маршрутизацией. Эта работает.

В этой статье - пять ошибок, которые я совершил по дороге. Каждая стоила минимум 10 часов на разборки и переписывание. Если ты сейчас собираешь контекст для агента или уже собрал, но он работает странно - проверь себя по списку. И забери готовый скелет CLAUDE.md из первой ошибки - он у меня в проде на smyslokod.ru.

Ошибка №1: раздутый CLAUDE.md на 200+ строк - рабочий скелет умещается в 80

Ты читаешь, что Claude подгружает CLAUDE.md каждую сессию, и начинаешь набивать туда всё подряд: правила стиля, описание стека, бизнес-контекст, чек-листы, запреты, прецеденты прошлых ошибок. Через месяц файл весит 240-500 строк и Claude перестаёт его слушаться.

Я попался на второй неделе. К концу первого месяца CLAUDE.md выглядел как должностная инструкция стажёра вперемешку с устной историей компании. Claude игнорировал половину пунктов и придумывал свои.

Anthropic в официальной документации формулирует так:

«Keep it concise. For each line, ask: "Would removing this cause Claude to make mistakes?" If not, cut it. Bloated CLAUDE.md files cause Claude to ignore your actual instructions!» - Anthropic, Claude Code Best Practices

В переводе: «Держи коротко. Для каждой строки спроси: "Если её убрать, Claude начнёт ошибаться?" Если нет - вырезай. Раздутые CLAUDE.md заставляют Claude игнорировать твои реальные инструкции».

Целевой объём, к которому я пришёл, - 80-120 строк. Всё, что больше, выносится в отдельные папки. CLAUDE.md - это карта, а не архив.

Вот рабочий скелет, который у меня в проекте сейчас:

# Название проекта - короткое описание ## Что это за проект 2-3 предложения: что делаем, для кого, как зарабатываем. ## Структура репозитория Дерево корневых папок с одной строкой описания каждой. ## Карта знаний - куда идти за ответом - Кто я, мои принципы, тон - `ai-clone/INDEX.md` - Что за продукт, аудитория - `business/INDEX.md` - Технические планы - `plans/YYYY-MM-DD-*.md` - Рефлексии прошлых сессий - `retrospectives/` ## Ключевые принципы проекта 5-7 пунктов. Только то, что применимо к КАЖДОЙ задаче. Бизнес-специфику в business/, она грузится по требованию. ## Стек Next.js / Postgres / Redis / Coolify - одной строкой. ## Деплой 2-3 команды без подробностей. Подробности в plans/. ## Язык На русском.

Это 70-90 строк в реальном файле. Туда не лезут: 30 запретов на лексику, словари англицизмов, регламенты ФЗ-273, портреты аватаров, шаблоны email. Всё это отдельные файлы в ai-clone/ и business/, на которые CLAUDE.md ссылается через карту.

Метрика, которой я себя проверяю: если в CLAUDE.md больше 120 строк - что-то надо вынести в подпапку. Каждые 2-3 недели прохожусь по файлу и спрашиваю по каждому пункту: «Это применимо к любой задаче или только к одной зоне?» Если к зоне - вырезаю в отдельный файл.

Ошибка №2: «кладовка» вместо архитектуры - папка становится свалкой за месяц

Вторая ошибка - кидать в business/ всё подряд. Сырую переписку из чата, скриншоты экранов, отчёты, в которые никто не зайдёт второй раз. Через два месяца папка распухает до 300+ файлов, ты сам не помнишь где что, и Claude тратит токены на чтение мусора.

Через это я прошёл. Был период «положу сейчас, потом разберу». Не разобрал. Через полтора месяца Claude на простой вопрос про продукт читал больше десятка файлов вместо одного - нужный был размыт между несколькими документами.

Правило, которое я выработал: каждый файл во втором мозге закрывает один конкретный вопрос. Если на файл нельзя сформулировать «отвечает на вопрос X» в одно предложение - файл не нужен. Принцип, по которому отбирается главный файл-вход в этот контур, я разобрал отдельно в гайде как настроить CLAUDE.md в 2026 с готовым шаблоном.

Чек-лист «не клади во второй мозг», который я выписал рядом с экраном после третьей чистки:

  • Сырая переписка из чата без обработки. Инсайт из созвона - выжми в 5 строк. Инсайта не было - не клади. Чат это поток, не архив.
  • Скриншоты и картинки. Увеличивают вес папки в десятки раз и не парсятся текстовой моделью. Визуал в assets/, в business/ текстовое описание.
  • Дублирующая код информация. «Платежи через CloudPayments, конфиг в .env» - всё это Claude увидит в коде. Дублирование стареет: код поменяли, в business/ забыли, агент работает на устаревшем.
  • Динамические цифры в теле текста. «1247 клиентов» устареет за неделю. Решение - маркер LIVE и SQL-запрос. Про это ниже.
  • Серое и сомнительное. Если завтра репо уйдёт на YouTube перед 100 тысячами незнакомцев - пусть там лежит только то, что ты готов показать. Никаких имён клиентов без согласия, никаких сумм выручки помесячно, никаких паролей.

Признак того, что папка стала кладовкой: ты заходишь и непонятно, с чего начать. Решение - INDEX.md в каждой папке. Таблица «вопрос → файл». Claude читает только индекс, потом ныряет в нужный файл. Без индекса агент читает всё подряд и жжёт контекстное окно.

В моей business/ сейчас около 80 файлов, и я в любой момент скажу, где что лежит. Потому что добавил новый файл - дописал строку в INDEX.md. Это 20 секунд, но без этого ритуала через месяц снова кладовка.

Ошибка №3: бизнес в одном репозитории, код в другом - самая дорогая

Третья ошибка обошлась дороже всех. Я держал бизнес-контекст в отдельном репозитории - чтобы не «грязнить» рабочую репу с кодом. Аргумент звучал разумно: код это код, бизнес это бизнес, разделим.

На практике: Claude Code запускается в папке проекта и видит только дерево файлов от точки запуска. Второй репозиторий лежит на уровень выше - агент его не видит. Открываю чат, прошу «поправь оферту под новый тариф», Claude отвечает «не нашёл оферту в проекте». Каждый раз вручную копирую кусок из второго репо в чат. Полторы минуты вместо пяти секунд. По 30-40 минут в день, за три недели набежало больше 10 часов чистого времени на копипаст.

Когда я слил всё в одну репу, оказалось интереснее. Claude начал автоматически собирать связи между бизнес-контекстом и кодом. Прошу «добавь логику возвратов» - агент идёт в business/company/legal.md, читает регламент, идёт в business/products/pricing.md, читает тарифы, потом пишет код. Без копипаста, без объяснений. Потому что всё в одном дереве.

Anthropic формулирует это через just-in-time контекст: агенты не носят с собой данные. Они носят указатели на данные (пути, имена файлов, сохранённые запросы) и подгружают через инструменты в момент работы. Чтобы указатели работали - данные лежат в одном дереве с проектом.

Возражение «не хочу, чтобы бизнес-контекст ехал в git вместе с кодом» решается тремя способами:

  • Отдельная ветка context, между которой переключаешься по задаче. Контекст в одной репе, но не мешается.
  • Приватный submodule - выносишь business/ в отдельный приватный репо и подключаешь через git submodule. Дает разделение прав.
  • Один репозиторий с .gitignore на чувствительные файлы - самый простой вариант.

Для одиночки третий вариант обычно проще всего. Я опираюсь на правило «если завтра репо станет публичным - пусть там лежит только то, что я готов показать». Это сильнее любого .gitignore.

Полная схема, как Claude ходит по этой структуре за один запрос, - в гайде Второй мозг в Claude Code: как настроить, чтобы он помнил проект. Там пошаговая сборка с готовой структурой папок и маршрутизацией.

Ошибка №4: хардкод цифр без LIVE - через месяц агент работает на вчерашних данных

Четвёртая ошибка опасна тем, что её не видно сразу. Положил в файл «у нас 320 клиентов и средний чек 4500 ₽» - выглядит нормально. Через две недели у тебя 410 клиентов и другой чек, а в файле всё то же. Через месяц Claude рекомендует решения на цифрах месячной давности, и они уже не работают.

Я попался, когда готовил черновик письма участникам нового потока. Попросил Claude «возьми последние данные по конверсии и собери письмо». Агент взял цифру из business/marketing/funnel.md - 6.3%. К тому моменту реальная конверсия была 8.7%. Письмо ушло с заниженной цифрой. Поправил спустя 40 минут, но три участника уже успели прочитать и спросить, почему я такой осторожный.

После этого правило: цифры в файлах не хардкодятся. Вместо цифры стоит маркер LIVE и ссылка на SQL-запрос. Claude видит маркер, идёт в live-metrics.md, выполняет запрос к продовой базе и подставляет свежую цифру в момент работы.

В файле business/products/practicum.md это выглядит так:

## Потоки > **LIVE** - выполни запросы из `live-metrics.md`, секция «Продажи», > чтобы увидеть актуальные оплаты по когортам. | Поток | Даты | Оплативших | |-------|------|------------| | 1 | 7-9 апреля 2026 | LIVE | | 2 | 21-23 апреля 2026 | LIVE |

Отдельно лежит live-metrics.md с готовыми SQL-запросами:

## Продажи (оплаты по когортам)

SELECT c.name, COUNT(p.id) AS paid, SUM(p.amount) AS revenue FROM purchases p JOIN cohorts c ON c.id = p.cohort_id WHERE p.status = 'paid' GROUP BY c.name ORDER BY c.starts_at DESC;

Маршрут такой: Claude читает business/products/practicum.md, видит LIVE, открывает live-metrics.md, выполняет запрос через обёртку, отвечает на актуальных цифрах.

Это решает две проблемы. Цифры не устаревают. Решения принимаются на актуальной картине.

Важный момент про безопасность: доступ к продовой базе даю только агентам, которым доверяю. И только через обёртку, которая берёт пароль из переменной окружения и не светит его в выводе. Прямой psql с паролем в открытом виде в live-metrics.md это дыра. У меня обёртка prod-psql в bin/: логирует запросы, не показывает пароль, работает только через ssh-туннель.

За 4 месяца в моём live-metrics.md накопилось 12 готовых запросов: продажи по когортам, активные подписки, средний чек, конверсия воронки, удержание, нарастающий итог. Каждый раз, когда Claude нужны актуальные цифры, он берёт оттуда.

Ошибка №5: нет ai-clone/feedback/ - Claude повторяет один косяк 10 раз

Пятая ошибка про само-настройку системы. Первые два месяца я ловил одинаковые косяки Claude снова и снова. Длинное тире вместо дефиса. Симметрии, которые палят ИИ. Подписи «Команда» вместо «Команда СмыслоКода». Я говорил «нет, не так» - через неделю он повторял ровно то же.

Корень проблемы: правила жили у меня в голове. CLAUDE.md рос (см. Ошибку №1), правила там терялись среди других пунктов. А правила тона и стиля по природе переезжают со мной в следующий проект - привязывать их к CLAUDE.md значит привязывать к одному репо.

Решение, которое сработало: отдельная папка ai-clone/feedback/, в которой каждое правило живёт в отдельном файле. Канон файла:

--- name: no-em-dashes description: использовать дефис, не длинное тире type: feedback --- Дефис `-`, не длинное тире `—`. **Why:** длинное тире — главный визуальный маркер генеративного текста. Если он есть в публичном тексте, читатель за полсекунды считает «писал ИИ». **How to apply:** перед публикацией ЛЮБОГО клиентского текста - греп по «—». Если найдено - заменить через sed на дефис.

Без Why правило мёртвое - агент не перенесёт его на похожую ситуацию. Без How to apply непонятно, когда срабатывает.

Один из топовых разборов рабочего процесса инженера, который создавал Claude Code (howborisusesclaudecode.com), формулирует это правило так: после каждой правки заканчивай фразой «Update your CLAUDE.md so you don't make that mistake again». Claude жутко хорошо пишет правила для самого себя.

Я делаю чуть тоньше: правила идут не в CLAUDE.md, а в ai-clone/feedback/. Потому что CLAUDE.md - проектный файл, а правила тона и стиля мои личные. Они переезжают со мной в новый проект, а CLAUDE.md остаётся с проектом.

Готовый промпт, который я запускаю раз в неделю на закрытии:

Проанализируй наши последние сессии. Найди: 1. Какие правки я просил больше одного раза? 2. Какие ошибки ты повторил, хотя я корректировал? 3. Какие предпочтения по стилю и тону ты заметил? Для каждого пункта предложи правило в формате: name / description / type:feedback / Why / How to apply. Если правил больше 3 - сгруппируй и предложи самые важные.

За 4 месяца у меня накопилось около 40 правил в ai-clone/feedback/. Метрика зрелости системы - сколько раз за неделю я говорю Claude «нет, не так» по одному поводу. Сейчас ноль. Если что-то повторяется второй раз - сразу новое правило в feedback/. На третий раз правило уже работает.

Это не «Claude меняется сам». Это «система запоминает мои предпочтения и применяет их без напоминаний». Разница принципиальная: Claude не меняется, моя архитектура контекста вокруг него меняется.

Что я бы сделал на твоём месте - выводы

Пять ошибок выше не теория. На каждой я терял от 10 до 25 часов. Если ты на старте сборки контекста для Claude Code - сэкономь это время.

  • Короткий CLAUDE.md - 70-90 строк. Только то, что применимо к каждой задаче. Остальное в подпапки с маршрутизацией.
  • Один файл = один вопрос. Если файл не отвечает на конкретный вопрос - он не нужен. INDEX.md как карта обязателен в каждой папке.
  • Бизнес-контекст и код в одной репе. Разделение через .gitignore или submodule, но физически в одном дереве. Иначе Claude не увидит контекст.
  • Цифры через LIVE. Маркер в файле + SQL-запрос в live-metrics.md. Цифры всегда свежие.
  • ai-clone/feedback/ обязателен. Каждая повторённая ошибка - новое правило Rule → Why → How. Через 3-4 недели система перестаёт ошибаться по типовым поводам.

Контекст-инжиниринг в 2026 это не про умные промпты. Это про то, что лежит за пределами окна агента и подгружается в нужный момент. Andrej Karpathy и команда Anthropic называют его новым базовым навыком. Через полгода это будет такой же базовой грамотностью, как умение гуглить.

А что у тебя сейчас в CLAUDE.md? Сколько строк, и какие правила переезжают с тобой в следующий проект, а какие живут только в текущей репе?