📅 Posted 2026-02-05

Thursday again. Wow, this comes around fast. If you’re just joining me, I’ve been writing a blog-a-week since the start of 2026. Every Thursday. And it’s been going well, because I front-loaded my CMS with a few blogs as I thought of them ahead of time. Now I’ve got to the end of the pre-written material and I need to start picking up topics off my list.
Today’s topic is my first proper exploratioin of Claude Code, an AI coding assistant from Anthropic. He’s pretty much a peer programmer who you can pull into various typical software development tasks.
The target? Quite simply, my CMS that sits behind this blog.
My CMS has a number of dirty coding aspects that I’m not too proud of (like callback hell), but it works so there is little incentive to tidy things up, given the relatively large effort to do so. Things like better linting, coding styles or more modern frameworks.
Now that I have picked up Claude, he can help with with some of the more mundane tasks that I simply don’t have enough time to do.
This is less of a review blog and more of a summary of “well, that’s interesting” things that I found whilst throwing a few problems at Claude to see what works.
Overall, I’m very impressed. But let’s dive in deeper and look at what I tried.
The context here is a monorepo of mostly JS code: a static HTML web-app built using Ractive, 70 or so Lambda functions using Node, and some HTML templates and general glue code to deploy things. The application itself is a serverless CMS. It’s something I’ve worked on over a number of years, but only really done maintenance over the past few years and no real feature development as such.
I migrated from ESLint to Biome.js based on a hunch it would be better. People at work rave about it. It’s certainly faster. I actually didn’t ask Claude for Biome specifically, but I did say change ESLint to something more modern. This worked really well and even though the first pass of the linter found some issues, Claude was able to address and fix these in the code. There were some references to ESLint that Claude didn’t find in the codebase, but I was able to fix these up manually as it was quicker.
I’m running out of tokens on a daily basis and it doesn’t matter because I’m not pressed to meet a deadline. I’m also asking for stupid giant prompts like “refactor this entire application from framework X to something not abandoned and also remove JQuery k thx bye”. So waiting until the next day to continue isn’t too much of a problem for what I’m throwing at it.
I’ve asked Claude to migrate all 70 NodeJS Lambda functions from callback hell (I didn’t actually say hell but maybe I should have) to async/await. It worked first go, although needed a cheeky lint at the end. I deployed all functions and found only one broke in an obvious way. It happened to be the main publish function. A bit important that one, for a CMS.
I told Claude he’d introduced a bug into publish.js, without telling him what the bug was. He was convinced he found and solved it. He didn’t. I actually grabbed the real error from Cloudwatch and fed that into Claude so he’d have a better idea of what to do, and found and fixed it immediately. This time for real. Deployed into the test environment and the publishing system was working great again!
I asked to find and remove any function that wasn’t actually being used. He found a couple and removed these. Job done, all good there.
Next I wanted to fix my deployment scripts, which had my functions split into 4 different batches to make it faster to deploy in parallel. Even Claude found the split of functions amongst the 4 files to be “arbitrary” which he proudly told me as he analysed what was wrong with my deployment scripts. New scripts were written and the functions all deployed just fine. However, it was twice as slow as my script to deploy! So, hacky script 1, Claude 0.
I asked Claude to optimise the deployment script and he came back with a neat way to parallelise the deployment tasks. It saved about 25% of time to deploy now. But it was still slower than my original scripts. I think I’ll stick with Claude’s versions because they are so much more neater and maintainable, and I can wait a few extra seconds while the system deploys.
In fixing up the deployment script, Claude found an old Hugo binary deployment piece which was a mismatching version. Actually it’s not even being used anymore. But having been alerted to it, I was able to remove this clutter from the project.
So where does this leave us?
Right now I’m about 70% through a migration of the frontend from Ractive to Vue. Again, I didn’t ask for a specific framework, I just said remove Ractive and JQuery and go to town on it. This has taken me several days to get through as I’m burning tokens like they’re going out of fashion. So far, due to the structure of the original codebase, the conversion is looking really good. I can see some issues I’d like to get closer to, such as the amount of repetitive CSS everywhere and somehow Claude forgot about Biome (it’s specified in my CLAUDE.md file) and is setting up ESLint for the front end, despite using Biome for the backend.
This is OK because I can always shake Claude’s solution down a bit once the overall migration and heavy lifting is done. I have no idea what the app will look like visually at the end and I’m anticipating that first time I open up the app in my browser. Perhaps it will identical, or it will completely not work at all. I’m keen to have a look what’s going on under the hood and perhaps this is a good opportunity for me to jump in and fix up some things, so that I’m closer to the actual implementation and I understand what makes it tick.
It’s all very tempting to just keep mashing that “Yes” button like a drinking bird for each question that Claude asks. YOLO right? It’s even more tempting to put in rules to auto apply certain things. Homer Simpson would feel really at home with a tool like this. But would you trust it running your nuclear powerplant? Actually, maybe it would do a better job than Homer.
Anyways, off topic now. My token limit is about to be refreshed so please excuse me while I get Claude to fix up some other part of my codebase and finish off that ridiculous refactor.
Expect more blogs on this topic as my time with Claude Code is not up yet and I have so much more to explore and form opinions on.
Like this post? Subscribe to my RSS Feed or
Buy me a coffee
Comments are closed