sakutto
Generative AI

The New Rules of Context Engineering: Cutting 80% of the System Prompt

context engineeringClaude Codeprompt design
The New Rules of Context Engineering: Cutting 80% of the System Prompt

What context engineering is

Context engineering means designing the background information handed to an AI on every request. In Anthropic's framing it covers everything assembled from sources other than the user's typed prompt: system prompt, skills, CLAUDE.md, memory and more.

Prompt versus context

Prompt
A one-off request for the moment. Can be written specifically
Context
Used across many requests. Cannot be written as specifically
Components
System prompt / skills / CLAUDE.md / memory and others
The difficulty
Writing general guidance without knowing what the user will ask

Design prompts and context as different things

The difference is whether it gets reused. A prompt applies once, so it can be as specific as you like. Context applies across many requests, so it cannot be made specific in the same way. You have to prepare general guidance without knowing what will be asked. That is the hard part.

What makes it harder is that the right answer moves as models improve. Writing that used to work becomes counterproductive in a new generation. This publication is a report that such a turning point has arrived.

View official source →
But when you send a message to Claude, the prompt is only a small part of the context it gets. Much of your context is assembled from your system prompt, Skills, CLAUDE.md files, memory, and other sources. We call this context engineering, and it makes a big impact on the results you generate when using Claude Code or in building your own agents. / Unlike a prompt, context is used generally across many requests, so it cannot be as specific. How do you build these general prompts and guidance for Claude, especially when you don't know what a user's prompt might be? — From the components of context and how it differs in nature from a prompt

Cutting 80% of the system prompt caused no degradation

This is the number that draws attention. Anthropic removed over 80% of Claude Code's system prompt for newer-generation models like Claude Opus 5 and Claude Fable 5, with no measurable loss on its coding evaluations.

The cause it identifies is overconstraining Claude Code. Reviewing internal usage logs turned up multiple conflicting instructions within a single request—for example, "document as needed" and "don't write comments" colliding across the system prompt, a skill, and the user's own request.

Claude can interpret user intent and reach the right answer, but it has to work through those overlapping, conflicting messages first. That reconciliation cost was pure waste. Constraints once needed to avoid worst cases can now be dropped and left to surrounding context and judgment. The angle of reducing token consumption itself is covered in our article on Claude Code's startup token overhead.

View official source →
We removed over 80% of Claude Code's system prompt for models like Claude Opus 5 and Claude Fable 5 with no measurable loss on our coding evaluations. / Overall, we found that we were overconstraining Claude Code, both through our system prompt and in our CLAUDE.md files and skills. / Generally, Claude can interpret the user's intent to get to the right answer, but Claude must think more carefully about these overlapping and conflicting messages before deciding what to do. — From the reported reduction and the description of overconstraining

The six reversals

The post presents six former best practices as myths, paired as Then and Now. Here is the overview first.

Context engineering, Then → Now (six items)

#ThenNow
1Give rulesLet Claude use judgment
2Show examplesDesign interfaces
3Put it all upfrontLoad it when needed
4Repeat yourselfOne concise place: the tool description
5Write memory into CLAUDE.mdLet automatic memory handle it
6Simple specsRich references

1. Stop binding with rules, leave room for judgment

When Claude Code first shipped, worst cases like deleting files had to be avoided, so strong instructions were placed even where they were not always right. The old system prompt contained lines like: in code, default to writing no comments; never write multi-paragraph docstrings or multi-line comment blocks—one short line max.

That instruction is plainly wrong for some requests: when the user has their own preferences, or when complex code needs a multi-line explanation. On older models, comment quality could not be held without such guardrails (forced rules that prevent runaway behavior), so the trade-off had to be accepted.

Newer models have better judgment and handle these decisions well without explicit rules. So the new system prompt replaces all of it with one sentence: write code that reads like the surrounding code, matching its comment density, naming, and idiom. A shift from enumerating prohibitions to stating a standard.

View official source →
In code: default to writing no comments. Never write multi-paragraph docstrings or multi-line comment blocks — one short line max. Don't create planning, decision, or analysis documents unless the user asks for them — work from conversation context, not intermediate files. / In the new system prompt we say: Write code that reads like the surrounding code: match its comment density, naming, and idiom. — From the contrast between the old system prompt text and the new wording

2. Stop giving examples, design the interface

The number one rule for tool usage used to be showing examples. That has flipped too. With the newest models, examples were found to constrain the model to a certain exploration space.

What is recommended instead is thinking about the design of the tools, scripts and files themselves: what parameters exist, and how they can be made more expressive. That is where the effort should go.

The official example makes it concrete. In a Todo tool, simply typing the state as an enum (a type whose possible values are fixed in advance) of pending, in_progress and completed conveys how to use it. Add one line—keep in_progress to exactly one—and the desired behavior is defined. A type plus a short constraint works harder than a page of examples.

View official source →
The number one rule for tool usage was to give Claude examples on how to use them. With our newest models, we've found that giving examples actually constrains them to a certain exploration space. Instead of using examples, think more about the design of your tools, scripts and files- what parameters does Claude have and how can they be more expressive? — From the shift away from examples toward interface design

3. Stop frontloading, read it when it is needed

Claude Code's system prompt used to carry detailed procedures for code review and verification—not always needed, but decisive when they were.

Not anymore. Claude Code became competent enough at loading the right context at the right time that verification and code review were moved into their own skills, called only when needed. This idea is called progressive disclosure.

It applies beyond skills. Lazy loading was applied to tools as well, with some tools now searched for and retrieved before use. You can grow the number of tools without consuming context until they are used. The same idea applies to your own CLAUDE.md and skills. A common myth is that you should make them a central repository of every practice because Claude would not find it otherwise—instead, build a tree of files that can be loaded at the right time.

View official source →
Since then, Claude Code has gotten very competent at using progressive disclosure- loading the right context at the right times. For example, we moved verification and code review into their own skills that Claude Code could selectively call. / A common myth is that you want to make these a central repository for every known practice that you might run into, because Claude would not find it otherwise. Instead, consider having a tree of files that can be loaded at the right time. — From the shift to progressive disclosure and the myth of centralization

The other three reversals (repetition, memory, references)

If the first three are about design philosophy, the remaining three are more operational. All share the same shape: something held in two places moves to one.

4. Stop repeating, consolidate into the tool description

Earlier models sometimes needed repeated instructions, and were more likely to follow instructions at the end of the context window than at the start. That produced a doubled structure, with tool references in the main system prompt and instructions in the tool description as well.

Those duplicates could be deleted: put instructions on how to use tools in the tool descriptions rather than the system prompt. It amounts to not writing the same thing twice, but it reliably shrinks the breeding ground for the conflicting instructions described in reversal 1.

View official source →
Earlier Claude models could sometimes need repeated instructions or be more likely to listen to instructions at the end of their context window than at the start. This meant our system prompt would sometimes have references to tools in the main system prompt as well as instructions in the tool description. / We found we could delete these repeat examples and put instructions on how to use tools in the tool descriptions rather than the system prompt. — From where instructions used to land best on older models, and the removal of duplication

5. Stop hand-writing memory into CLAUDE.md

Users used to be encouraged to save things to memory with the # hotkey, writing into CLAUDE.md. Now Claude automatically saves memories relevant to the work and to you, so accumulating them by hand matters less. Stop using CLAUDE.md as a memory store and narrow it to the gotchas described below.

View official source →
We used to encourage users to save things to Claude's memory, by using the # hotkey to write to their CLAUDE.md automatically. Instead, Claude now automatically saves memories that are relevant to the work and to you. — From the shift from hand-written memory to automatic memory

6. Stop writing simple specs, use rich references

In plan mode it was common to save the plan as a Markdown file and reference it later. For long-running projects, keeping specs inside the codebase is a standard move.

Claude can now handle considerably more complicated references. Instead of simple Markdown, it can reference HTML artifacts created by the artifacts feature. Giving specs as code works well too: a detailed test suite, or a function in another codebase to port from, is itself a spec.

There is also the rubric form. You hand over your criteria for, say, what good API design looks like, and have verifier agents check work against them.

View official source →
But we've found that Claude can handle increasingly more complicated references. Instead of simple markdown files, Claude can reference HTML artifacts created by our new artifacts feature. / You may also give Claude references in the form of code. A spec may also be a detailed test suite, or a function in a different codebase that Claude might port. / Rubrics are another form of references. Rubrics allow Claude to try and verify your taste in a particular field (e.g. what does a good API design look like) by using dynamic workflows and spinning up verifier agents with those rubrics. — From richer references, specs as code, and rubrics

How to trim your own CLAUDE.md and skills

All of the above is about Anthropic's side. So how should you revise your own setup? The post gives guidance per component.

Guidance by component

System prompt
Tied to product context. Claude Code users generally do not touch it
CLAUDE.md
Keep it light; spend most tokens on gotchas
Skills
Write as lightweight guides. Split long ones across files
References
Code and HTML give higher fidelity than prose

Spend CLAUDE.md tokens on what is not obvious

The guidance for CLAUDE.md is clear. Briefly describe what the repo is for, and spend most of the tokens on gotchas inside the codebase—organization-specific conventions like "all type definitions live in one large file and nowhere else."

What to avoid is stating the obvious, the things visible from the file system or the repo. They cost tokens and they feed the conflicts described in reversal 1. If you have several bespoke instructions, such as verification procedures, split them into a verification skill and reference it from CLAUDE.md rather than listing them there.

View official source →
Keep your CLAUDE.md lightweight and briefly describe what your repo is for, but spend most of the tokens on gotchas inside of the codebase. … Avoid stating 'the obvious' things Claude should know by looking at your file system or your repo. — From what to write and what to leave out of CLAUDE.md

Write skills as lightweight guides and split long ones

Skills are framed as lightweight guides that let Claude find information when needed. Outside of highly important areas, avoid making them overconstrained. Split long skills across multiple files so progressive disclosure can work.

Skills pay off most when they record views, knowledge and practices specific to you, your team or your product. They are not a place to copy out general advice.

There is guidance on references too. Files can be pulled in by mentioning them with @, but you should generally prefer files that are in code, because that gives clear, high-fidelity instructions in a language Claude knows very well. For design work, the post notes that an HTML mockup produces better results than prose or screenshots.

View official source →
Think of skills as lightweight guides to let Claude find information when needed. Avoid making them overconstrained, except in highly important areas. / Generally you should prefer files that are in code as it provides clear, high-fidelity instructions to Claude in a language it knows very well. — From how to write skills and why code is preferred for references

Use the /doctor command to audit mechanically

Before rereading everything by hand, there is a tool for it. Anthropic has put the best practices from this post into claude doctor, and points to Claude Code's /doctor command for rightsizing your skills and CLAUDE.md files.

The trimming itself is unglamorous work: going across your system prompt, skills and CLAUDE.md dropping duplicates and obvious statements. The post notes that you may need to simplify just as Anthropic did, and offers the command for exactly that.

When you cut context, knowing how much the volume changed before and after gives you something to judge by. Exact token counting differs per model, but tracking character counts is enough to tell which files are heavy.

Free ToolCharacter CounterCount characters, words, lines, and bytes in real time. Great for social media posts and reports.Try it now →

View official source →
We've put these best practices in `claude doctor;` use the command /doctor in Claude Code to rightsize your skills, and CLAUDE.md files. / Across your system prompt, skills, and CLAUDE.md files, you may need to simplify just like we did. We rolled out a new command called `claude doctor,` which will help you do this automatically as well. — From the purpose of the `/doctor` command and the note that users may need to simplify too

Summary: context engineering moved from adding to removing

The new rules of context engineering fit in one line. As model judgment improved, the background information humans write can shrink. The premise that more writing yields better results has inverted. Accepting that is the starting point.

Since Anthropic itself cut over 80% of Claude Code's system prompt with no measurable loss, there is likely comparable room in your own CLAUDE.md and skills. Run /doctor first, then cut what is visible from the file structure and what appears in two places. That order is the easiest to start with.

But this is a result on the Opus 5 and Fable 5 generation. If you also run older models, the same cut may not carry over. When trimming, measure the volume before and after so you can confirm the effect as you go.

Free ToolCharacter CounterCount characters, words, lines, and bytes in real time. Great for social media posts and reports.Try it now →

FAQ

Q. Won't performance drop if I cut the system prompt?
It did not in Anthropic's testing. For newer-generation models like Claude Opus 5 and Claude Fable 5, the company reports removing over 80% of Claude Code's system prompt with no measurable loss on its coding evaluations. That result is for the new generation, though—the same cut may not hold on older models.
Anthropic official blog — The new rules of context engineering
We removed over 80% of Claude Code's system prompt for models like Claude Opus 5 and Claude Fable 5 with no measurable loss on our coding evaluations. Anthropic official blog — The new rules of context engineering
Q. What should go in CLAUDE.md?
Briefly describe what the repo is for, and spend the remaining tokens on codebase-specific gotchas. The guidance explicitly says not to state things that are obvious from the file system or the repo. When procedures get long, split them into a separate skill and reference it rather than packing everything into CLAUDE.md.
Anthropic official blog — Applying this to your context / CLAUDE.md
Keep your CLAUDE.md lightweight and briefly describe what your repo is for, but spend most of the tokens on gotchas inside of the codebase. … Avoid stating 'the obvious' things Claude should know by looking at your file system or your repo. Anthropic official blog — Applying this to your context / CLAUDE.md
Q. Should I stop giving tool usage examples?
With the newest models, examples are found to constrain the model to a certain exploration space. Instead of listing examples, the guidance is to think about the design of your tools, scripts and files—what parameters exist and how they can be made more expressive.
Anthropic official blog — Then: Give Claude examples / Now: Design interfaces
With our newest models, we've found that giving examples actually constrains them to a certain exploration space. Instead of using examples, think more about the design of your tools, scripts and files- what parameters does Claude have and how can they be more expressive? Anthropic official blog — Then: Give Claude examples / Now: Design interfaces
Q. Is there a quick way to audit my own setup?
Claude Code's /doctor command. Anthropic says it has put the best practices from this post into claude doctor and points to the command for rightsizing your skills and CLAUDE.md files. Running it is a faster starting point than rereading everything by hand.
Anthropic official blog — opening guidance
We've put these best practices in `claude doctor;` use the command /doctor in Claude Code to rightsize your skills, and CLAUDE.md files. Anthropic official blog — opening guidance

Related Tools

Related Tool Categories

Articles