I’ve written extensively on techniques I use to maximize Claude Code’s capabilities. But one area I haven’t explored as much is how to refine my overall approach with Claude Code. How can I enhance the way I communicate with my Claude Code sessions, and how can I fine-tune the way Claude Code functions within the code repositories I’m working on?
In this piece, I’d like to share how I’m constantly evolving my approach to interacting with Claude Code and adjusting how it operates, a process that steadily increases both my productivity and my coding agent’s effectiveness.
The idea of continuous improvement is immensely powerful: even small daily gains of a few percent compound into a massive advantage over weeks and months. This can make you dramatically more effective than someone relying on the default Claude Code or any other coding agent.
Why focus on continuous improvement?
I usually start by explaining why a topic matters and how it benefits you. The case for continuous improvement is straightforward: relying on the default setup of Claude Code, Codex, or any similar tool means you’re missing out on significant potential. While these tools are remarkably capable—far surpassing what was available even a few years ago—that’s not the point.
What truly matters is that ongoing refinement delivers another substantial boost to your productivity.
Here, I’ll detail a straightforward method I use to have Claude Code improve itself daily, and I’ll also share strategies I’ve developed for enhancing my own interactions with Claude Code to ensure the human-agent collaboration is as productive as possible.
Enabling Claude Code to self-improve
Let’s begin with an easy technique you can implement immediately that will almost certainly enhance Claude Code’s performance.
You can create a skill within Claude Code that does something like this:
Review my past interactions with Claude Code from the last 24 hours.
Identify any issues I faced, inefficiencies, or unnecessary tool calls. Look for recurring errors Claude Code made and other areas for improvement.
Carefully examine all recent conversations and develop a plan for optimizing our workflow moving forward, both within individual projects and across multiple ones. Also, identify any insights that would benefit the coding agent to know upfront, whether before entering a repository or when handling tasks across several repositories at once.Let’s name this skill review-past-performance. The next step is to create a scheduled task (cron job) to execute this skill nightly at 2 AM or another time when you’re not actively using your agents.
Once you’ve set this up, Claude will analyze all your conversations from the previous 24 hours. It will review the discussion threads, identify where you hit roadblocks with Claude Code (situations that took more time than necessary), and pinpoint where Claude Code got sidetracked due to faulty tool calls, incorrect assumptions, or a lack of necessary context to complete a task efficiently.
It will then create a plan to prevent these issues in the future, making Claude Code more effective. This might involve changes such as:
- Updating agents.md or similar project-level markdown files with additional context
- Building targeted skills that the agent can load or trigger when handling specific types of tasks
- Setting up dedicated scripts or tools, like pre-commit hooks and testing scripts, to prevent recurring mistakes
The real beauty of scheduling this skill is that you don’t need to manage the agents at all. Claude can efficiently self-identify issues, adjust workflows, and incrementally improve over time. Perhaps best of all, Claude Code becomes tailored to your specific needs. Your particular tech stack or workflow preferences within your repositories will get recognized and optimized for peak efficiency.
By simply running this nightly task, I’ve experienced remarkable gains in productivity—my coding agents are now far stronger than before, making fewer errors, following better approaches, and aligning more closely with my preferences.
Enhancing human-agent collaboration
A more complex area to refine is how humans interact with coding agents. I dedicate significant time to thinking about and refining how I communicate with my agents, aiming to get them to implement the desired code as quickly and accurately as possible.
Clearly, this remains a challenge, given the ongoing development of new tools and platforms aimed at improving the coding agent experience. In this section, I’ll share my thoughts on optimizing human interactions with coding agents, along with the strategies I use.
Keep in mind that the methods I describe are custom-fit to my personal workflows. I encourage you to review them and consider how they might apply to your own processes.
Managing 7+ concurrent agents
I frequently run multiple agents simultaneously due to the volume of tasks I need to tackle in parallel. Of course, external factors determine whether running so many agents is practical or even worthwhile. When the situation permits and the efficiency gains justify it, I’ll naturally run as many agents as I can at once.
However, I’ve noticed that once I exceed seven concurrent agents, I begin losing oversight. I struggle to effectively switch between them, track what each one is doing, and respond adequately when an agent has questions.
I’ve experimented with various tools and platforms to streamline this workflow. Currently, I’m using Warp, utilizing split panes for every
I open a new tab for each parallel agent I’m running within a single repository, and I start separate tabs for every different repository I’m working on. This approach works fairly well, although, as I mentioned, I hit a limit when I try to run more than seven agents simultaneously.
I’ve also experimented with more IDE-based tools like Conductor or Omnara, but I haven’t found them to be any more productive than what Warp already offers me.
The key takeaway from this section is about maximizing the number of agents you can run at once. First, the situation has to be right. You need enough tasks that can truly run in parallel, and you need to be able to let each agent work for a long stretch without constant interruptions. The very first step is simply making sure the tasks you’re working on actually allow for this kind of parallel execution.
Second, a game-changer when juggling multiple agents at once is using recaps. Claude Code now provides a recap at the bottom of each chat, which is incredibly useful. It gives you a quick snapshot of what’s happening in that conversation, so you can rapidly regain context when you need to jump back into an agent’s work. I highly recommend enabling recaps and making a habit of using them whenever you need to catch up on a specific thread.
Finally, I want to point out that Claude Code just released an agent view as of the time I’m writing this article. This new view is designed to help you keep track of all your agents in one place. I haven’t had a chance to try it yet, but it seems to directly address the challenge I’ve been describing here. I plan to test it out and share my thoughts in a future article.
Let the agent come to you with questions, not the other way around
This is a fascinating shift because the typical way we interact with AI models—at least initially—is to ask them questions and get back short, direct answers. But this dynamic flips once you start working with long-running coding sessions. Instead of you constantly asking it questions, you want the agent to work as independently as possible for as long as it can, and only pause when it genuinely needs your input.
This is something I strongly recommend you build into the prompts for your coding agents. You want them to operate as autonomously and for as long as possible, and only stop when they hit a point where they need to ask you a question. Of course, this connects closely to another article I wrote about how to let Claude Code validate its own work. To keep an agent running for extended periods, you need to give it a way to verify its own output, which I covered in a separate Towards Data Science article. Check it out below:
How to Make Claude Code Validate Its Own Work
Conclusion
In this article, I shared how I continuously improve my Claude Code setup—both by having Claude Code refine itself through nightly self-reflection and by improving how I interact with Claude Code and other coding agents. I believe both of these areas are worth optimizing as an engineer to make your development work more effective. As an engineer, you should always be identifying the next bottleneck: what’s currently slowing you down the most and what would give you the biggest productivity boost if you solved it. For me, the two biggest bottlenecks were:
- Claude Code repeating the same mistakes, which the first section of this article addresses
- How I interact with Claude Code as a human, which I covered in the second section
I encourage you to constantly look for these kinds of bottlenecks and work to eliminate them as quickly as possible so your coding efforts can be as productive as they can be.
👋 Get in Touch
👉 My free eBook and Webinar:
🚀 10x Your Engineering with LLMs (Free 3-Day Email Course)
📚 Get my free Vision Language Models ebook
💻 My webinar on Vision Language Models
👉 Find me on socials:
💌 Substack
🐦 X / Twitter



