Build a Tool to Write Tools
I still reach for an off-the-shelf coding harness most of the time. What I find more interesting is that I no longer have to. You can take one that already exists, strip it down, and bend it into exactly the shape your work needs.
The interesting version of this is recursive. You take a harness and customize it into a tool whose only job is to write other tools. With that you have something specific, and you used the general thing to build it.
When you do that, most of the harness falls away. A general agent has to render text to a terminal, manage a chat interface, handle a hundred interaction patterns it will never touch for your task. None of that helps you produce a tool. So you cut it. You keep the file access, the test runner, the handful of actions that matter for the kind of code you ship, and you drop everything else. The baggage was there to serve every possible user. You have one job.
This changes how you think about specialization. You can specialize an agent by piling context onto a general harness - an agent.md, a stack of skill files, instructions that describe in prose what good output looks like. That works, but it is a thick layer of text sitting on a tool that was never built for the task. A customized harness moves the specialization into the tool itself. If you only ever build on one framework, the harness becomes the thing that knows that framework and produces the same shape of code to the same standard every single time.
And that focus is where the quality comes from. A narrow harness can carry guardrails and checks that a general one could never justify. It can refuse to emit code that fails the linter, run the test it just wrote before it hands anything back, and enforce the conventions of your codebase as part of the loop. The harness makes bad output hard to produce.
This is what makes it practical inside ChatBotKit. The harness runs in the cloud, so the tool you deploy stays lightweight. It does not carry the model, the reasoning, or the state - those live server-side, and the thing in front of you is just the handful of tools that matter for the job. With the weight gone, building a tool that writes other tools is fairly straightforward.
Stop treating the harness as a finished thing you adopt. It is raw material. Shape it into the tool you actually need.