The Best Model Isn’t Enough: Harnesses, Context, and Better Prompts A developer argues that a better model alone doesn't guarantee better results, emphasizing the importance of the 'harness'—the system that controls context, tools, permissions, and feedback loops—citing Strands Agents and Claude Code as examples. The post offers prompt-engineering tips such as clarity, specificity, XML tags, and few-shot examples, and recommends building evaluation pipelines to improve prompts. We used to believe that a better model automatically meant better results. And that’s true to some degree, but the reality is that most people aren’t using all the available tools and techniques to get the most out of the model. For example, context management is key. Providing good AGENTS.md and CLAUDE.md files gives agents a solid baseline from the start. The harness is also important because the model is only one part of the system. The harness controls the context the model receives, the tools it can use, its permissions, memory, feedback loops, and how its work is evaluated. Strands Agents lets you build a harness with tools, system prompts, plugins, specialized agents, context management, tracing, and evaluations. Claude Code is another example of a coding harness: it combines the model with repository instructions, file and terminal tools, permissions, MCP integrations, and automated workflows. A better model can help, but a strong harness helps the model understand its environment, take the right actions, verify its work, and recover when something goes wrong. Prompt engineering is not the main technique for getting better results. I would say that the harness is the most important thing right now—but that doesn’t mean we shouldn’t create good prompts. Here are some useful prompt-engineering tips to help you get better results: Be clear and direct: Don’t hesitate or over-explain the request. Just say what action to take, what to create, and what the key constraints are. Be specific: Good instructions help you control: Use XML tags when appropriate: They’re useful when you’re including large amounts of data, mixing data with code and documentation, or need to clearly separate different parts of the context. Use few-shot examples: Provide examples to guide the model. Show the exact tone and style you want, as well as how it should handle edge cases and corner cases. Finally, if possible, create an evaluation pipeline for your prompts: Here’s a simple example. First attempt: What should this person eat? - Height: {prompt inputs "height" } - Weight: {prompt inputs "weight" } - Goal: {prompt inputs "goal" } - Dietary restrictions: {prompt inputs "restrictions" } Improved version: Generate a one-day meal plan for an athlete that meets their dietary restrictions.