People have stopped talking about prompt engineering and moved on to “context engineering” (Andrej Karpathy, Simon Willison, and Shopify’s CEO have all made the case). That’s because the prompt turned out to be maybe 10% of the equation, while the other 90% is everything the AI already knows before you type anything - your CLAUDE.md, your folder structure, your docs, your RFCs. All of that is context, and it determines what you get back way more than how you word any individual message. Someone with a solid CLAUDE.md can type “fix the nav” and get exactly what they need, while someone without project context writes a detailed three-paragraph prompt and still gets generic output. Once your project context is solid, you barely need to think about prompting at all.
THE THREE LAYERS OF CONTEXT
Think of it like cooking (because everything comes back to food metaphors in my brain). Context engineering has three layers, and understanding which one needs work saves you from wasting time on the wrong thing.
- Project context is your kitchen setup. The pantry is stocked, tools are in the right drawers, recipes are pinned to the wall. This is your CLAUDE.md, your docs folder, your RFCs, your folder structure - everything that exists before you even start a session. If your kitchen is a disaster with no ingredients and dull knives, no recipe is going to save dinner.
- Session context is what’s on the counter right now. The ingredients you’ve pulled out, the pan that’s heating, the conversation you’re actively having with Claude. This includes everything Claude has read, every file it’s looked at, every decision you’ve made so far. It fills up over time and eventually needs clearing - that’s compaction.
- Prompt context is the specific instruction. “Chop the onions.” This is the individual message you type. It matters, but if there are no onions on the counter and no knife in the kitchen, the phrasing isn’t going to save dinner.
THE TOOLS THAT HANDLE EACH LAYER
Each layer has tools that build and manage it. We’ve covered most of these individually, but here’s how they map to the kitchen:
Your kitchen setup (project context):
- CLAUDE.md loads every session automatically with your project’s rules, patterns, and preferences. This is the single most impactful file you can create.
- RFCs are the notes you leave yourself between cooking sessions - what you finished, what didn’t work, and where to pick up tomorrow so you’re not starting from scratch.
- Hooks are automated rules that fire without you remembering to mention them, like a kitchen timer that goes off whether you’re paying attention or not.
- Memory is the chef’s personal notebook about your kitchen. Unlike CLAUDE.md which you write, memory is what Claude figures out on its own over time - “this project uses bun not npm,” “tests live in the /tests folder.” It loads automatically each session.
Keeping the counter clean (session context):
- Subagents and agent teams get their own fresh context windows, so complex tasks don’t clutter up your main conversation. Think of it as sous chefs working at their own stations instead of everyone crowding around one cutting board.
/compactsummarizes your session when things pile up, and/clearwipes the counter between unrelated tasks.
Your saved recipes (prompt context):
- Skills are your recipes - step-by-step instructions you’ve written down so you’re not explaining the whole dish from memory every time you cook it.
MOST AI CODING FRUSTRATION IS A CONTEXT PROBLEM
Most frustration people have with AI coding - “Claude is dumb,” “it keeps forgetting,” “the output is generic” - are context problems, not prompt problems, and once you fix your context it stops feeling like you’re constantly fighting the AI. The work compounds too: every rule you add to CLAUDE.md, every RFC you write, every skill you save makes the next session better without you doing anything extra. My 50th session on this blog was dramatically better than my 5th, and I definitely didn’t get better at prompting - my project context just got richer over time. Claude’s own docs say CLAUDE.md works best under 200 lines, so start small, add context when things actually go wrong instead of trying to write the perfect file upfront, and let it grow naturally from there.