I recently had some time off in August and used it to vibe code a refresh to this website. At first, it was just something fun while I procrastinated on other tasks. Then I was so impressed by the results that I decided to invest in a total refresh. Along the way, I experienced both highs and lows with AI agents.

Based on the recommendations of developer friends, I relied on Claude Code for this and bought a Max plan for the month to access the latest shiny Opus 4.1 model. So these results are about as good as you can get right now.

Let me say upfront, I did not go heavy into an agents.md or a claude.md file. And while I use AI all the time, I don’t always use AI Agents for work, and I spend more time with Junie than I do with Claude. So I was deliberately being fast and loose and a bit lazy with this test.

Productive vs Procrastinating Meme

Old Website

Up until a few days ago, this website had the same custom CSS and font design that I used years ago. If you look at Internet Archive, the design is unchanged since at least 2018.

2018 Screenshot

Now compare that with a week ago, and it is effectively unchanged:

Before website image

That’s the sign of a productive developer! Who can fiddle with the frontend when there is real backend work to be done?

The site was and is built with Jekyll, which is more than fine for my needs. Over the years, I have hosted it variously on Netlify, GitHub pages, and other static hosting places that struck my fancy. Really, it’s just a bunch of HTML, CSS, and some images. This also meant I had been using Ruby for a long time, although I never delved deeply into its logic. This was framework-driven development, where I knew that any issue I had was likely solved by others well before, and was either the official docs or a few Google searches away.

New Website

Now, let’s jump forward to a few half days of vibe coding work, and you see the site today. What is new?

  • Beige background and styling, still in custom CSS, updated code syntax
  • Search bar with search functionality and fuzzy search with Fuse.js
  • Added categories
  • Updated Ruby and Jekyll forward an embarrassing number of versions and years
  • A long list of small other things…

After website image

The Process

I started and ended this process in peak laziness mode, so I didn’t even tell Claude what to do. Instead, my early prompts were basically, “How should I fix this site?” It duly added the entire site to the context window and went to work.

The result was a to-do list featuring design recommendations, features (such as search and categories), optimizations, and so on.

I told Claude to attack them one by one so I could try to control what it was doing. The issue with all agents, not just Claude, is that they LOVE to write code. So they want to just pump out changes. I really want them to only do small things at a time. The problem is you have to watch them like a hawk. While updating search.js, they might tweak something in _config.yml that breaks a major part of the site.

Although the ideas are often quite good, Claude needed help with implementations. I had to do a lot of trial and error. Or sometimes for the design work, take a screenshot and say, Hey Claude, this truly doesn’t work.

At one point, while resizing for large monitors, I asked whether we should just switch to Tailwind, and Claude said no, give me one more chance. And then fixed the issue! Even after 5+ failed attempts before. So perhaps being slightly threatening works.

Moving on, the first crack at search was not bad, implementing some meh JavaScript to power it. Again, I wanted everything static and open source. During later revisions, Claude suggested Fuse.js, which is great; however, it took almost an hour of fiddling to get it to work with the CSS, and then again in production.

Pros and Cons

What are my takeaways from this process? The first is that, perhaps unsurprisingly, dumping your entire project into the context window of an agent works better than not. It is also a lot more expensive in tokens.

Claude was excellent at suggesting ideas and finding weird errors. It was so-so on actually fixing them. I probably could have solved the issues myself faster, but I was in full sit-back-and-watch mode.

The other thing was, I personally HATE waiting for the agent to go. It gets me out of flow state. This seems to work fine for others, but for me, stopping and starting constantly is exhausting. I’d rather just do the work myself.

Another thing I noticed was that for the latest versions of things, like switching from GitHub pages to Cloudflare Pages, there weren’t many posts to refer to. I suspect many developers like me, who in the past might have taken the time to blog up the answer to these things, step-by-step and with screenshots, now figure why bother? An LLM will just copy it anyway and then present to users as its own work. My own SEO is waaaay down, as is that of every other tech content creator (who isn’t on video) that I know.

Agents and LLMs are ok right now, trained on years of people taking the time to create that content. Both on personal websites, on Stack Overflow, and more. How can autoregressive LLMs possibly improve when the underlying content anecdotally has to be declining? I don’t know.

As amazing as AI agents can be, I don’t prescribe to any notions that what they are doing is “intelligence.” Does it feel like magic and work wonders sometimes? Yeah. It does. Do I trust it? No, I don’t. You shouldn’t either.

Part of the reason this experiment worked is that I have previously spent years working with Jekyll, CSS, JavaScript, and general web things, so I have a spidey sense of when things are amiss. If I did not, there is no way I would not have run into different black holes with this refactor.

And that, I think, speaks to what is still the biggest issue I have with agents. AI chatbots and the like are great because they replace search. Again, I don’t fully trust them, but they are way better than Google and they can often be 80% right on stuff. That’s helpful.

Giving an agent full autonomy to just code away feels reckless. And I don’t know how you can control them if you are using it in areas you, the human, don’t already have deep experience in.

Final Takeaways

So would I vibe code an update to this site in the future? Yes, probably. As stated at the beginning, this site is meant to be a place for me to write. It’s not a codebase I take great pride in. That said, I use it and care about its quality. However, if I wanted to be a Ruby or Jekyll developer, I would not jump into using agents all the time. In fact, I’d go back to building 10-20 such websites from scratch with the latest technologies before trying to use agents. Only then, once I felt I had a handle on the tech, would I try to unleash agents.