The recipe is simpler than you think.

Thorsten Ball walks through building a code-editing agent from scratch. The whole thing. Not a toy demo—an agent that can navigate a codebase, read files, and edit code. The punchline? It's about 300 lines of Go, and most of that is boilerplate.
The core insight: an agent is just an LLM, a loop, and enough tokens.
You give the model three tools:
read_file - read contents at a path
list_files - list files in a directory
edit_file - replace strings in a file
That's it. No graph of nodes. No complex orchestration. No hidden magic. You describe these tools to the model, and Claude—trained to recognize and use tools—figures out when to call them. You execute the tool, return the result, and let the model decide what to do next.
The loop is embarrassingly simple:
- Send messages to Claude (including tool definitions)
- If Claude wants to use a tool, execute it
- Add the result to the conversation
- Repeat until Claude says it's done
What makes this profound isn't the simplicity—it's what the simplicity reveals. The gap between this tutorial and a polished product like Amp isn't architectural. It's elbow grease: better prompts, smoother UI, smarter feedback loops, thoughtful error handling.
The fundamental mechanism is the same.
This reframes how I think about agent development. The question isn't "what complex system do I need to build?" It's "what tools do I give the model, and how do I let it use them?"
The model already knows how to reason, plan, and execute. Your job is to give it hands.