Sorry, long one: I’m almost 4 weeks into trying Claude. I’ve had some super efficient workflows and I’ve had some horrible failure workflows using agentic coding. I think all of my workflows would be improved if I could treat Claude more like a pair-programming partner and less like someone that I boss around. But this will require a new way of using an IDE to enable it.
What I want to see is like Claude-Code’s existing terminal interface or VScode IDE plugin, so I can write out longer ideas and give Claude a bigger prompt that’s an overview of what we’re going to do. I might use this also to provide some initial info about a plan for changes I’d like to make. This already exists and it works well.
Then I want Claude to generate its code/docs/tests/whatever and make a git commit on a wip-branch and show me that commit effectively as tabs for each file. The git commit message will include my original request, any back-and-forth conversation we had, and then explain in detail how it interpreted my request and why it made the changes it made. Then I can review the changes.
Within the tabs representing each file in the git commit, I want to be able to interactively select text and start a conversation tree which branches off from either the root of our conversation or another branch of our conversation, so I can request changes or ask more detailed questions. The idea of having it be a conversation tree with branches is so that I can preserve as much context as possible when I’m exploring the agent’s proposed changes. During this, I can also directly edit the changes in the git commit (but this won’t modify the existing commit).
I want this style of work because I’ve found that with the current CLI tools I end up having a variety of feedback on each change the agent proposes but many times each of my feedback tidbits has nothing to do with other tidbits. Sadly, since it’s a linear conversation this all fills Claude’s context and hurts agent performance.
Based on my tree of feedback, conversations, and edits, then another git commit is made with all of the new conversation trees embedded in the commit message and any of my changes as actual file changes. Possibly each conversation branch becomes a git commit, so things are more granular, but my main idea is to capture the conversation which lead to the change.
From there, Claude replies by making its changes based on my feedback, and again makes a git commit explaining why. We iterate like this as long as needed, making a HUGE number of git commits. This becomes it’s own line of context which we can both review.
Once the full set of changes is acceptable, then we make a final marker commit marking this line of work as being done and we transition to figuring out how to structure the actual git commits so we can share them with others, like for making a pull request. The full stream-of-consciousness set of commits is made just to preserve context and allow us to easily see how we’ve iterated, it’s not meant as the final work. We’ll clean up the commits in a similarly iterative way, having conversations about how to structure them and possibly iterating on this process a few times (how to record this iteration isn’t yet clear to me).
If I’m sitting next to a human, pair-programming, this is basically the flow. We have a conversation about what we’re going to do, one person writes some code/docs/tests/whatever, and the other then looks at it, points at it, asks questions, makes edits, and the iteration begins.
The current CLI agentic coding tools work great if the agent can implement what you’re asking on the first or second try, but if you have to iterate tens of times on a non-trivial quantity of code or documentation, it becomes a burden on the human to verify every set of proposed changes by the agent haven’t screwed something else up compared to their last proposal and as the conversation grows in linear length the agent’s context gets polluted. By having the conversation tree and restricting each conversation branch to a subset of the code with each change being its own commit, it becomes easier to follow what’s changing in each iteration and for the agent to preserve as much context as possible.