I start from the failure. Before writing an agent I want to know what it looks like when it’s wrong, who notices, and what that costs — the harness I build for my copilot scores confident-and-wrong on purpose, because a system that fabricates is worse than one that abstains. That answer determines the architecture, and retrofitting it later never really works.
I keep systems small enough to hold in your head. An orchestrator and two specialists with legible prompts beats one model holding twelve tools — not because it’s more elegant but because you can test the pieces and reason about what broke. Every graph I build has a bounded hop counter and per-node retry budgets: loops terminate, and failures are explainable.
I measure before I tune. Prompt changes go through the harness, not straight to production: sixty scenarios that pin the graph state, run at temperature, and fail the build on regression. If a change can’t be shown to matter, I’d rather not ship it.