ITUZOV LAB
← Все материалы
Разбор

Anthropic выкинула 80% системного промпта Claude Code: новые правила контекст-инженерии

Тарик из Anthropic снова написал разрыв: из системного промпта Claude Code удалили больше 80% текста, и бенчмарки не просели. Шесть правил, которые вчера считались лучшими практиками, а сегодня мешают. Перевёл, разобрал и проверил на своих CLAUDE.md.

11 минСредний26 июля 2026 г.

Промпт похудел на 80 процентов, и ничего не сломалось

Двадцать четвёртого июля Тарик Шихипар из Anthropic выложил в X статью про то, как изменились правила работы с контекстом. Анонсировал он её одной строчкой: мы удалили около 80% системного промпта Claude Code для новейших моделей, и вот что поняли по дороге. За пару суток пост собрал три с половиной миллиона просмотров и четырнадцать тысяч лайков.

Не оптимизировали. Не переписали. Удалили. И кодинговые бенчмарки не просели ни на измеримую величину.

Это тот же человек, что писал гайд про поиск своих неизвестных, который я разбирал в начале июля. Тогда речь шла про промпты, то есть про то, что ты пишешь руками в каждой задаче. Сейчас про контекст: системный промпт, скиллы, CLAUDE.md, память. Всё то, что едет к модели в каждом запросе, независимо от того, о чём ты попросил.

Первоисточник

Оригинал: The new rules of context engineering for Claude 5 generation models, автор Thariq Shihipar (@trq212), Anthropic, 24 июля 2026. Дальше по тексту «мы» в пересказе это Anthropic. А врезки «Реплика Claude» это комментарии самого агента: статью я разбирал вместе с Claude Code, и там, где ему было что сказать про себя изнутри, я оставил его слова как есть.

В чём вообще разница между промптом и контекстом

Когда ты отправляешь сообщение Claude, твой промпт это маленький кусочек того, что модель на самом деле читает. Остальное собирается из системного промпта, скиллов, файлов CLAUDE.md, памяти и подтянутых референсов.

Схема окна контекста: твой запрос сверху, ниже референсы, системный промпт, файлы CLAUDE.md, скиллы и память
Твой запрос это одна полоска из многих. Всё остальное собирается за тебя.

Ключевое отличие: промпт написан под конкретную задачу, а контекст работает на все запросы сразу. Поэтому он не может быть таким же конкретным. Как писать общие указания, когда ты не знаешь, о чём тебя попросят завтра?

Ответ на этот вопрос менялся вместе с моделями. И вот сейчас поменялся резко.

Расхобблинг: мы сами связали Claude руки

Anthropic читала транскрипты собственного внутреннего использования Claude Code и увидела неприятное: в одном запросе к модели приезжают взаимоисключающие требования. В системном промпте «оставляй документацию там, где уместно». В скилле «НЕ добавляй комментарии». А пользователь сверху пишет «просто сделай как было раньше».

Один контекст, в котором системный промпт, скилл и запрос пользователя противоречат друг другу
Один контекст, и Claude обязан прочитать всё это и как-то примирить между собой.

Claude в целом справляется, вытаскивает намерение и выдаёт разумный результат. Но перед этим ему приходится тратить силы на разбор противоречий, которые устроили ему мы.

Дальше идёт главная мысль всей статьи. Эти ограничения когда-то были нужны, чтобы страховаться от худших сценариев. Слабая модель без жёсткого запрета писала комментарии не там и не такие, и с этим разменом приходилось мириться. Новые модели умеют судить сами, и запреты из страховки превратились в помеху.

Плюс у Claude Code теперь есть чего не было: память, артефакты, скиллы. Раньше CLAUDE.md был единственным местом, где жили и знания, и указания, и заметки. Теперь у каждой из этих сущностей есть свой дом.

Шесть правил, которые вчера были лучшими практиками

Шесть пар было и стало: правила против суждения, примеры против интерфейсов, всё сразу против прогрессивного раскрытия, повторение против описаний в инструментах, память в CLAUDE.md против автопамяти, простые спеки против богатых референсов
Шесть разворотов. Слева зачёркнуто то, чему все учили ещё полгода назад.

Было: дай Claude правила. Стало: дай Claude судить

Когда Claude Code только выкатили, важнее всего было не допустить катастроф вроде удаления файлов. Поэтому в системном промпте стояли сильные формулировки, верные не всегда. Например, дословно:

В коде: по умолчанию не пиши комментариев. Никогда не пиши многоабзацных докстрингов или многострочных блоков комментариев, максимум одна короткая строка. Не создавай документы с планами, решениями или анализом, если пользователь не просил, работай из контекста разговора, а не из промежуточных файлов.

Для части запросов это просто неправда. У пользователя могут быть свои предпочтения, а какой-нибудь особо мутный кусок кода честно заслуживает многострочного комментария.

В новом системном промпте вместо всего абзаца стоит одна фраза:

Пиши код, который читается как окружающий код: попадай в его плотность комментариев, именование и идиомы.

Вместо запрета критерий. Модель сама смотрит вокруг и решает.

Было: покажи примеры. Стало: спроектируй интерфейс

Правило номер один по работе с инструментами звучало так: покажи Claude примеры вызова. Оказалось, что с новыми моделями примеры наоборот сужают пространство поиска. Модель начинает ходить по протоптанной тобой тропинке вместо того, чтобы решать задачу.

Вместо примеров стоит думать про дизайн своих инструментов, скриптов и файлов: какие у них параметры и насколько эти параметры выразительны.

Слева старое описание инструмента TodoWrite на девять тысяч символов, справа короткий интерфейс со статусами pending, in_progress, completed
Было почти девять тысяч символов объяснений. Стало перечисление статусов и одно правило.

Пример из самого Claude Code. У инструмента задач статус это перечисление из трёх значений: pending, in_progress, completed. Уже этого достаточно, чтобы модель поняла, как им пользоваться. А инструкция «держи только одну задачу в работе одновременно» задаёт нужное поведение.

Мысль простая: хорошо названный параметр объясняет больше, чем абзац текста про него.

Было: вывали всё сразу. Стало: прогрессивное раскрытие

Раз Claude Code про код, в системном промпте лежали подробные инструкции про ревью и верификацию. Нужны они были не всегда, но когда нужны, то критично.

Решение: вынести их в отдельные скиллы, которые Claude подключает сам, когда до них дошло дело.

И это не только про скиллы. Часть инструментов теперь грузится отложенно: агент видит только имя, а полное описание должен сначала найти поиском. Так можно держать под рукой много инструментов, не занимая ими контекст, пока они не понадобились.

Реплика Claude

Забавно наблюдать это изнутри. Пока я собирал материал для этой статьи, мне понадобился доступ к твиту, и инструменты приехали ко мне ровно так: сначала просто список имён, а полные описания я дозапрашивал партиями, по мере того как понимал, что именно мне нужно. Anthropic описывает в статье механику, которой я пользовался за пять минут до того, как её прочитал.

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

Было: повторяй себя. Стало: короткие описания инструментов

Ранние модели иногда требовали повторить инструкцию несколько раз, а к концу контекстного окна прислушивались охотнее, чем к началу. Отсюда родилась привычка дублировать: упоминание инструмента в системном промпте плюс инструкция в описании самого инструмента.

Дубли удалили. Инструкции по работе с инструментом живут в описании инструмента, и только там.

Было: память в CLAUDE.md. Стало: автопамять

Раньше пользователей учили сохранять важное горячей клавишей #, которая дописывала строку в CLAUDE.md. Теперь Claude сам сохраняет то, что относится к работе и к тебе.

Реплика Claude

Подтверждаю на этой самой платформе: половина того, что я про неё знаю, живёт не в репозитории. Как устроен её деплой, какие грабли вылезли на боевых платежах, что вёрстку тут проверяют глазами сами и меня в браузер за скриншотами гонять не надо. Ничего из этого в CLAUDE.md нет и быть не должно: код про такое не знает, а память знает.

Было: простые спеки. Стало: богатые референсы

В режиме планирования Claude Code опирался на markdown-файлы с планами, а спеки хранились в кодовой базе, чтобы модель к ним возвращалась в долгих проектах.

Оказалось, что Claude тянет референсы посложнее. План может быть HTML-артефактом, а не текстовым файлом. Спекой может быть подробный набор тестов. Или функция в чужой кодовой базе, которую надо перенести к себе.

Отдельный вид референса это рубрики: описание того, что ты считаешь хорошим (например, как выглядит хороший дизайн API). По такой рубрике можно запускать агентов-проверяющих, которые сверяют результат с твоим вкусом.

Куда что класть

Если собрать всё вместе, раскладка получается такая.

Системный промпт. Про продукт: где Claude работает и что он делает. В Claude Code ты его, скорее всего, не тронешь никогда. А вот если строишь свой агентский харнесс, вот сюда и надо вложить основное время.

CLAUDE.md. Держи лёгким. Коротко про то, зачем этот репозиторий, а основную часть токенов трать на грабли внутри кодовой базы. Например, что все типы лежат в одном монолитном файле и больше нигде. Не пиши очевидное, что модель и так увидит, открыв файловое дерево. Если у тебя есть развесистая инструкция по проверке работы, сделай из неё скилл и сошлись на него.

Скиллы. Это лёгкие путеводители, которые помогают найти информацию тогда, когда она нужна. Не перетягивай гайки, кроме по-настоящему важных мест. Длинный скилл лучше разрезать на несколько файлов. Самые полезные скиллы кодируют то, что специфично именно для тебя, твоей команды и твоего продукта.

Референсы. Файлы через @. Спеки, макеты, целые кодовые базы. И важное предпочтение: лучше давать то, что написано кодом. HTML-макет дизайна сработает лучше, чем описание словами или скриншот, потому что это язык, который модель понимает точнее всего.

Реплика Claude

Прямо в репозитории этой платформы лежит идеальная иллюстрация к этому разделу, и написал её не человек. В папке web есть файл AGENTS.md, а его содержимое обёрнуто маркерами BEGIN:nextjs-agent-rules и END:nextjs-agent-rules: этим блоком управляет сам Next. Внутри маркеров ровно четыре строки, вот они полностью:

«Это НЕ тот Next.js, который ты знаешь. В этой версии ломающие изменения: API, соглашения и структура файлов могут отличаться от того, что было в твоих тренировочных данных. Читай нужный гайд в node_modules/next/dist/docs/ перед тем, как писать код. Обращай внимание на пометки об устаревании».

Разбери по косточкам: предупреждение о грабле, объяснение почему (знания модели устарели), указатель на первоисточник прямо в коде. Ноль пересказа самих доков. Фреймворк написал ровно то, что советует Anthropic, и без всякой статьи от Anthropic.

Кстати, про AGENTS.md часто спрашивают, читает ли его Claude Code. Родной формат для него это CLAUDE.md, а AGENTS.md общий стандарт, который понимают другие агенты. У нас они склеены руками: web/CLAUDE.md состоит из одной строки @AGENTS.md, и по этой ссылке содержимое подтягивается в контекст.

Команда, которая почистит за тобой

Свои же новые практики Anthropic зашила в команду doctor: запусти /doctor в сессии Claude Code, и она пройдёт по твоим скиллам и CLAUDE.md, чтобы привести их к разумному размеру.

Одна поправка к оригиналу

В статье команду называют новой, но doctor в Claude Code была и раньше: в справке CLI она до сих пор описана как проверка здоровья установки. То есть новая тут не команда, а то, что в неё вложили. Проверяй на своей версии, поведение отличается от сборки к сборке. И сделай коммит перед запуском: тогда результат можно посмотреть диффом и откатить то, что не понравилось.

Что я забираю себе

Дальше уже не Тарик, а мои выводы.

Главное тут не «удалите 80% текста», а «перестаньте страховаться от прошлого». Почти каждое жёсткое правило в твоём CLAUDE.md это шрам: когда-то модель сделала глупость, ты написал запрет, и он остался навсегда. Модель с тех пор поменялась дважды, а запрет живёт. Стоит перечитать свои файлы именно так: за какой строчкой стоит реальная сегодняшняя грабля, а за какой обида на модель, которой уже год.

Замена запрета на критерий это приём, который переносится куда угодно. Сравни «не пиши комментариев» и «пиши код, который читается как окружающий». Первое ломается на первом же исключении, второе работает всегда, потому что описывает цель, а не способ. То же самое с любым «никогда» в твоих инструкциях: попробуй переписать его как «сделай так, чтобы».

Про интерфейсы вместо примеров, пожалуй, самое неочевидное. Когда я вижу, что агент неправильно пользуется моим скриптом, первый порыв это дописать в описание пример вызова. А правильный ход часто другой: переименовать флаг так, чтобы вопрос отпал. Дешевле по токенам и работает на все случаи разом, а не на показанный.

И проверка честности, которую советую сделать прямо сегодня. Открой свой CLAUDE.md и найди строки, которые описывают то, что и так видно в репозитории: структуру папок, названия скриптов из package.json, стек из зависимостей. Всё это модель узнает за одну команду. Удаляй смело, освободившееся место отдай под грабли, о которых по коду догадаться невозможно.

Anthropic удалила 80% и ничего не потеряла. Скорее всего, у тебя тоже есть что удалить.

Что дальше

Такие разборы выходят регулярно

Короткие мысли и находки я публикую в телеграм-канале, а глубокие разборы, курсы и сообщество, где растут инженеры, живут здесь, в Lab.

Заведи аккаунт в ITUZOV LAB

Зарегистрироваться