~/blog/2026/three-days-with-claude-code šŸš€āžœ

Three Days with Claude Code

Jan 20, 2026 [ #jekyll #claude #smolweb #gemini #gopher #ai ]

Contents

Everything after this paragraph was written with AI. I had Claude Code generate this post since I was curious what it would come up with and to give me a summary of what was done to help redesign this blog.


Written by Claude:

Over the past three days I’ve been working with Claude Code to modernize this 20+ year old Jekyll blog. This post covers what we accomplished, the challenges we faced, and what it’s like pairing with an AI on a real codebase. Claude wrote this post based on our work together.

What is Claude Code?

Claude Code is Anthropic’s CLI tool that brings their Claude AI directly into your terminal. Unlike browser-based AI assistants or IDE plugins, it works through conversation while having direct access to your filesystem, git, and development tools. You describe what you want to accomplish, and it can read files, make edits, run commands, and manage the entire workflow.

The Starting Point

This blog has been around since 2004, accumulating 20+ years of technical debt: duplicate CSS, hardcoded colors, no progressive enhancement, bloated dependencies, and inconsistent patterns. I recently added support for small web protocols like Gopher and Gemini, but the main site needed attention.

Performance Wins

The first priority was reducing page weight and improving load times. We tackled this systematically:

Removed animate.css - The 57KB library was only used for a subtle header animation. We replaced it with a few lines of CSS.

Lazy-loaded search - The 114KB search.json file was loading on every page load, even though search was rarely used. We moved it to load only when the search input is focused, cutting initial page weight significantly.

Optimized fonts - Added font-display: swap to prevent invisible text during font loading and reduce cumulative layout shift.

Consolidated CSS - This was a big one. The site had Terminal.css (908 lines) plus console.css (718 lines) with override conflicts and duplicate declarations. We merged them into a single consolidated stylesheet (~1150 lines), removing unused components like forms, buttons, progress bars, and timelines that were never used.

The results: ~60KB reduction in page weight and 30-40% faster initial load times.

Progressive Enhancement

A major oversight was the site’s complete dependency on JavaScript. If JS was disabled or blocked, the theme toggle was visible but broken, search was displayed but non-functional, and tables had hardcoded colors that didn’t respect system preferences.

We implemented proper progressive enhancement:

Now the site works cleanly for users without JavaScript.

Social Media Previews

Getting social media previews right turned out to be more challenging than expected. The goal was compact, mobile-friendly link previews in apps like Signal and Slack.

After several iterations we settled on:

The challenge was Slack’s aggressive caching - previews can take 24-48 hours to refresh. We learned to test with Signal and LinkedIn first, which update immediately.

Accessibility Improvements

We improved mobile readability, added proper semantic HTML, and fixed color contrast issues:

Small Web Protocol Generation

The site generates content for both Gopher and Gemini protocols. We refined the generation scripts significantly:

Gopher improvements:

Gemini enhancements:

The key difference: Gopher uses plaintext with line wrapping, while Gemini uses native gemtext format without wrapping (clients handle it).

Security and SEO

We added security headers and improved SEO:

Working with Claude Code

The development workflow was surprisingly natural. I’d describe what I wanted to accomplish, and Claude would:

  1. Read relevant files to understand the current state
  2. Make surgical edits to implement changes
  3. Run tests or validation
  4. Commit changes with detailed commit messages

The challenging parts:

Context matters - Claude needed to read files before editing them. When I’d describe a change without pointing to specific files, we’d sometimes start down the wrong path. Learning to say ā€œcheck the CSS firstā€ or ā€œread the current implementationā€ helped.

Progressive iteration - Complex changes worked best when broken into steps. Rather than ā€œredesign social media previews,ā€ it was better to iterate: create image, add meta tags, test, adjust size, optimize, test again.

Git workflow - Claude creates commits automatically with co-authored attribution, but never pushes or merges without explicit permission. This worked well for reviewing changes before they went live.

Tag management - The blog has ~78 canonical tags (lowercase, standardized names like 512ke, macos, smolweb). Claude learned to check the tag list and ask before creating new ones, preventing tag sprawl.

What impressed me most was Claude’s ability to maintain consistency. When we established patterns (like using CSS variables instead of hardcoded colors), it would apply them throughout without being reminded.

Challenges and Limitations

No time estimates - Claude deliberately avoids giving ETAs for tasks. This is probably good practice (time estimates are usually wrong), but it took adjustment.

Background knowledge gaps - Occasionally Claude would need reminders about project-specific patterns. We solved this by creating a CLAUDE.md file documenting project rules, which it references automatically.

Overly cautious - Sometimes Claude would ask for confirmation on straightforward changes. I preferred this to the opposite problem, but found myself saying ā€œyes, go aheadā€ frequently.

Results

Over three days we closed ~60 commits across multiple branches:

The blog is faster, more accessible, and works properly across a wider range of browsers and clients.

Final Thoughts

Working with Claude Code felt like pair programming with a detail-oriented colleague who has perfect recall and never gets tired. It excels at systematic refactoring, catching inconsistencies, and maintaining patterns across a codebase.

The experience changed how I think about AI-assisted development. It’s not about replacing programming knowledge - you still need to understand what you want to build and why. But for execution, maintaining consistency, and handling the tedious parts of refactoring, it’s remarkably effective.

If you’re maintaining a blog, personal site, or any codebase that could use systematic cleanup, Claude Code is worth trying. The CLI approach feels natural for terminal-focused workflows, and having an AI that can read your entire codebase and maintain context across changes is powerful.

Now I need to figure out what to tackle next. Maybe those 37 HTML posts from 2006-2011 that still need converting to markdown, or implementing responsive images with WebP/AVIF support. Or perhaps I’ll just enjoy the faster, cleaner site for a while.