How I Work With Coding Agents
Enough ranting about all those “Agent OS” stuff. I wanna provide something useful. This is how I work right now.
First things first: I don’t use any “Agent OS”, skills collection from a GitHub repo, or MCPs provided by anyone else. I work 99% in pi and herdr now. Bit of Codex as well. But it doesn’t matter too much. I stay under a 100k context window on every LLM. I read my code.
My starting point is always the same: Open pi. Build up good context.
Building good context
Building good context means that I state my intent. Can be rough but slightly bounded. Then I tell the agent that I want to have a discussion and it can interview me. Why? Because the agent and I should understand the problem we’re trying to solve. We might already dive a bit into possible solutions.
I’m also creating boundaries by stating what it is not. It’s important that I start pushing back on many ideas the agent has at this point. Or you’re starting off with scope creep already.
Once we captured the essence, I could have:
- an idea
- a small feature or change
- a bigger feature or epic (or even a full app)
Let’s go.
1. Idea
Sometimes it’s just an idea. Then I stop. The agent writes our current understanding into docs/ideas/ and I close the session. A fresh session can pick it up later.
2. Small feature or change
Here I take the conversation immediately to the solution. I’m using “🪃 boomerangs” to build context around it. I’ll explain a 🪃 at the end.
The agent scans the codebase, web, etc. Once I feel good about the solution, I let it 🪃 a plan. Not “plan mode”. Who is using that anyways still?
I might do targeted compactions along the way or a “handoff”. In the best case, I have an awesome context now and launch a 🪃 to implement.
3. Bigger feature (or app)
Here I don’t jump into the solution. I turn the context, or an existing idea, into a specification in docs/specs/. This starts another interview to close the gaps where the agent would otherwise make decisions for me.
I keep specs small. If one grows beyond roughly 300 lines of Markdown, I split it into phases. Then I promote it into an implementation plan in docs/plans/, with small slices, checkboxes, code references and tests.
Now I either work through it manually, 🪃 or Ralph it. I’ll explain.
That’s roughly it, folks! No “skills” needed. Just good context.
The workflows
Manually: fresh session, study the plan, pick the next slice, implement, commit, review the code and repeat.
Handoff: let the agent create a handoff doc in /tmp/, start a new session and bring the handoff in to continue.
Boomerang: executes tasks autonomously, then replaces the token-heavy work history with a compact handoff summary. See pi-boomerang. It’s awesome.
Ralphing: a while loop starts a fresh agent for every iteration. It studies the plan, implements the next slice and commits. After a few iterations I review the batch. Changes go back into the plan. Then I start the next batch.
My setup
- Tools: pi, herdr, Ghostty, zsh, SSH, VPS, Termius on iOS
- Extensions: pi-boomerang, pi-web-access, and my own browser steering via Playwright
- Skills: handoff (for handoff; mine), ragent (remote-agent; mine; spawns agents on my VPSs; might open-source if I have time), tldraw (not mine but brilliant)
- MCPs: nope!
How I work is heavily inspired by Mario Zechner, Geoffrey Huntley, Dexter Horthy, Mitchell Hashimoto, Paris Thomas. Those are my GOATs. And Nico Bailon for his work on pi extensions. Especially pi-boomerang and pi-web-access.
Originally posted on LinkedIn.