The Most Underrated Skill in Modern Development
Here’s a pattern I keep seeing: a developer installs GitHub Copilot, feeds it a vague prompt, gets mediocre output, and concludes that AI coding tools are overhyped. The problem isn’t the model. It’s what the model can see.
I’ve spent months building feedback loops between AI tools and my codebases, and I’ve landed on a conviction: context engineering is the most underrated skill in software development right now. Not prompt engineering — context engineering. The distinction matters more than most developers realize.
When Andrej Karpathy — co-founder of OpenAI — publicly stated “+1 for ‘context engineering’ over ‘prompt engineering’,” he wasn’t making a semantic quibble. He was pointing at a fundamental shift in how we should think about working with large language models. As he put it, context engineering is “the delicate art and science of filling the context window with just the right information for the next step.”
What Context Engineering Actually Means
Prompt engineering is writing a clever question. Context engineering is designing the entire information system that determines what the model sees before it generates a single token.
Anthropic’s engineering team published what I consider the definitive guide on this topic, defining context as “the set of tokens included when sampling from a large-language model” and the engineering challenge as “optimizing the utility of those tokens against the inherent constraints of LLMs.” That framing changed how I think about every interaction with AI tools.
The AirOps comparison framework puts it cleanly: prompt engineering focuses on the words inside a single request, while context engineering shapes everything that surrounds those words. One is writing a good exam question; the other is preparing the entire study guide, references, and tools before the exam starts.
| Dimension | Prompt Engineering | Context Engineering |
|---|---|---|
| Scope | Single request | Entire information pipeline |
| Focus | Wording and structure | What the model sees, remembers, and acts on |
| Approach | Craft clever one-liners | Design systems that assemble context dynamically |
| Scale | Individual tasks | Production AI systems and agents |
As Addy Osmani wrote, the quality of AI output directly depends on the quality of your input — and “input” means far more than your prompt. It means instructions, examples, retrieved documents, tool outputs, and conversation history working together.
What Hurts (and Helps) AI Context
Through trial and error across multiple projects, I’ve built a mental model for what tanks AI performance versus what supercharges it.
What Hurts Context
- Repositories without unit tests. AI tools have no feedback mechanism to validate their own output. They generate code that looks right but may break silently.
- Missing documentation. When there’s no README, no architecture docs, and no inline comments on complex logic, the model is flying blind.
- No clear coding conventions. If your codebase mixes three different naming patterns and two architectural styles, the AI will too.
What Helps Context
- Comprehensive unit tests as feedback loops. Tests give AI tools — and the developers reviewing their output — a concrete way to verify correctness.
- Grounding documents and instruction files. Files like
copilot-instructions.md,CLAUDE.md, or.cursorrulestell the AI what conventions to follow before it writes a single line. - Clear bug fix conventions. My rule: reproduce the bug with a failing test first, then fix. This gives AI the exact context it needs.
- Iterative code review processes. Push code, receive AI-powered code review, assess suggestions, implement fixes, and — critically — update your instruction files so the same issue never recurs.
“The key insight: Without proper feedback loops, AI agents can lead your codebase down rabbit holes, creating unmaintainable code.”
That quote is from a post I wrote on LinkedIn, and it’s the single most important lesson I’ve learned about AI-assisted development. Feedback loops aren’t optional — they’re the difference between AI as a productivity multiplier and AI as a technical debt generator.
The Three Pillars of Context Engineering
The industry has coalesced around three core pillars, well-documented by LangChain’s engineering blog and Neo4j’s technical guide:
-
Context Retrieval — Dynamically pulling relevant information into the model’s window. This includes RAG (Retrieval-Augmented Generation), code search, and documentation lookup. The goal: give the model the right slice of your codebase, not the entire thing.
-
Context Assembly — Structuring and ordering information optimally. Not all tokens are created equal. A well-structured instruction file with clear headings beats a wall of unformatted text every time.
-
Context Management — Monitoring, compacting, and refreshing context as tasks evolve. Long conversations degrade performance. Anthropic’s research shows that techniques like context compaction — automated summarization of older interactions — keep agents effective over extended workflows.
Practical Playbook: What I Actually Do
Here’s the workflow I’ve refined over months of building with AI tools:
1. Maintain Living Instruction Files
Every repository I work in has a .github/copilot-instructions.md file. It contains coding conventions, architecture decisions, naming patterns, and known gotchas. Burke Holland’s guide on essential custom instructions is a great starting point. The key: treat these files as living documents. When an AI makes a recurring mistake, I update the instruction file — not just the prompt.
2. Structure Repos for AI Readability
AI tools use file names, folder structures, type annotations, and variable names as signals. Packmind’s guide on context engineering for AI coding makes the case clearly: without explicit, structured context about your architecture, even the most advanced models will guess wrong. I invest in clear interfaces, consistent naming, and comprehensive READMEs not just for human developers — but for AI ones too.
3. Build Feedback Loops, Not One-Shot Prompts
My workflow isn’t “prompt → accept.” It’s a cycle: push code → receive AI code review → assess suggestions → implement fixes → update instruction files. Each iteration makes the AI more effective on the next task. Faros AI’s developer guide calls this the key determinant of whether teams ship reliable code or generate expensive technical debt.
4. Be Intentional About Context Windows
I don’t dump my entire codebase into the context. I use @file, @folder, and @docs mentions strategically. I reset context when switching tasks to avoid cross-contamination. As Towards Data Science documented, context has a huge impact on answer quality — asking an LLM to write a SQL query without providing the schema guarantees suboptimal results.
Why This Matters Now
The AI developer community is undergoing a fundamental shift. As multiple industry leaders — Karpathy, Shopify CEO Tobi Lütke, Osmani, and the Anthropic engineering team — have argued, we’ve moved past the era where a clever prompt is enough. Modern AI agents run in loops, orchestrate multi-step workflows, and manage evolving knowledge over extended sessions. That demands a systems-level approach to context.
I wrote about this broader shift in my article on building the future with AI-powered development. The developers who treat context engineering as a core discipline — not a nice-to-have — will have a significant advantage in the coming years.
The Bottom Line
Context engineering isn’t about finding magic words. It’s about designing systems — instruction files, test suites, documentation, feedback loops — that consistently give AI the right information at the right time. The developers who master this discipline won’t just write better prompts. They’ll build better software, faster, with AI as a genuine force multiplier rather than a source of frustration.
Start with one thing today: create a copilot-instructions.md in your repo. Write down your conventions. Watch what happens next.