Twelve months of agentic AI code-assist
2025 was the year of agentic AI code assistants and programming will never be the same. For some, these tools have become a critical part of their daily workflow and produce most, if not all, of the code they write. For others, these tools remain experimental and unreliable, producing more frustration than value. Loud voices on either side, surging investment and valuations, and a constantly changing tool landscape make it difficult to separate hype from reality without significant personal effort.
Prompting feels like it would be intuitive but it’s a skill that, to get good results, requires a lot of experimentation and learning. It’s expensive to learn. Even if you can afford a modern GPU, the best models won’t run on one and are only available via paid APIs or subscriptions. The models change, and the tools built on top of them change, and new models and new tools emerge, and tomorrow there’s going to be a new approach that some people are going to claim is better than what you’re doing now. It’s a significant time and money investment but the reward is remarkable productivity gains once the skill is mastered.
On the other hand, poor prompting reinforces the fallacy that writing the code yourself is both quicker and more accurate - that somehow by making each keystroke yourself you are retaining ownership and control over the code being produced. That poor prompting is proof of the fallibility of the tools and not the operator. Combined with the barrier to entry of cost and learning curve, it’s unsurprising that many developers struggle to, or do not, embrace these tools.
Toolset evolution
The key tools I used for my development workflow changed three times throughout 2025:
- Jan 2025 - Claude Desktop and MCP
- Feb 2025 - Roo Code with less MCP
- June 2025 - Claude Code with no MCP
While I tried the Claude Code VS Code extension briefly, I prefer using the terminal interface directly. Where MCP started out the year looking must-have, the CLI tools progressed to a point where I needed it far less.
Community extensions
For the first half of the year, the cost of tokens could be almost avoided by using vscode’s GitHub LLM integration which proxied calls through to model providers via your GitHub account and appeared uncapped. This allowed experimentation with extensions like Roo Code and access to models like Claude Sonnet 3.5 - the model that for me kickstarted agentic AI code assist. The free lunch would not last forever, and GitHub announced rate limits that were in effect by July.
Community-built extensions appeared to struggle, and break, as new models became available. The importance of system prompting was overhyped and huge, generic prompts were created to magically improve models but felt more like they reduced cause-and-effect understanding of prompt engineering.
Switching to Claude Code
Claude Code launched in February but remained API only until May when it started rolling out to the Max subscription plans - by June it was available on the Pro plan. Thanks to my employer, I was able to evaluate the Max plans - I started on Max200, then dropped a month later to Max100, and then went back to my personal Pro plan. The key difference between Max200 and Max100 was hitting the Opus 4 limit - I’d never hit the limit on Max200 but on Max100 within a given session it’d eventually drop me to Sonnet 4. I didn’t however feel much of a difference between Sonnet and Opus (when combined with Claude Code) so there seemed little drawback to the cheaper subscription.
The Pro plan however, only used Sonnet and would reach rate limits every session - it was just a matter of when. This meant larger tasks like full codebase refactors or conversions were not possible. It also meant I needed to obsessively focus on context management and prompt efficiency to get the most out of the limited tokens available. Constant calls to /clear and @ tagging file paths to avoid token waste forced me to develop my capability in the emerging skill of context engineering.
Frustration driven development
With each model update, and each improvement to Claude Code, the amount of frustration in the experience varied. Sometimes it felt like a task Claude performed without much guidance last week required step-by-step hand-holding this week, worsened by common utterances of:
You’re absolutely right!
In September, Anthropic released Sonnet 4.5 and over two months the combination of this model and Claude Code and my context engineering skills made it feel like frustration was significantly reduced. It was better and cheaper and faster than Opus 4.1.
By October MakerX added those interested to a Claude Team Plan which meant I could now go back to experimenting further with larger tasks. For as good as Sonnet 4.5 was, by November it was forgotten as Opus 4.5 launched, cheaper than before, replacing Sonnet usage limits in Max and Team Premium plans with Opus limits.
Where it’s at
The combination of Claude Code and Opus 4.5 is state of the art agentic code-assist in January 2026. In little over a month, along with client work, I’ve used it to:
- Continue iterating on an asteroid logistics game
- Build a tool for steering agentic workflows (posts)
- Build a 3d puzzle game using a framework I had no experience with (React Three Fibre)
- Build a low-poly ocean scene with React Three Fiber
- Further building out the capabilities of this blog, including migrating from Jekyll to Astro.
The frustration is not entirely gone, but it’s far less prevalent, and an indicator that I need to break a task down further. All of the code I write now is with the assistance of Claude Code. Most of the changes I make to my local environments are assisted by Claude Code. I summarize meeting transcriptions with it, I have it proofread my writing, I have it generate devlogs, I have it perform web searches. I have it find packages on npm for me. It’s become an indispensable part of my workflow.
It’s been hard work getting to this point, but it feels like it might be getting easier. Programming has changed forever.