2025-12-30
Or: You’re telling me a vibe coded this site?
This site is now built using a small static site builder that Claude Code wrote for me. Iterating on the site is so much fun now!
Year of vibes
In 2025, AI tooling for software engineers did so many leaps forward that it’s hard to fathom. My workflow has gone from GitHub Copilot in VSCode, to Cursor, to now using agents1 like Amp and Claude Code. I’m now regularly using agents at work, both in new codebases and in old. I use it for
- writing new code
- modifying existing code
- debugging
- finding terminal commands
Writing a simple static site builder to host my site is a perfect task f…
2025-12-30
Or: You’re telling me a vibe coded this site?
This site is now built using a small static site builder that Claude Code wrote for me. Iterating on the site is so much fun now!
Year of vibes
In 2025, AI tooling for software engineers did so many leaps forward that it’s hard to fathom. My workflow has gone from GitHub Copilot in VSCode, to Cursor, to now using agents1 like Amp and Claude Code. I’m now regularly using agents at work, both in new codebases and in old. I use it for
- writing new code
- modifying existing code
- debugging
- finding terminal commands
Writing a simple static site builder to host my site is a perfect task for a coding agent, as they are especially good at starting from scratch. Here’s how I built this site.
First Claude Code session
To begin, I created a new directory and copied over my existing blog posts. I opened claude and gave it this prompt:
I want to create a static site from scratch. The code to build it needs to
be in Go. I want it to be very minimal: The site builder needs to be able
to take md blog posts and embed them. I have posts in the content repo.
Their slugs need to be preserved.
Some back and forth to refine its implementation plan, and a few minutes later I had a fully functioning site builder rendering my existing posts.
⏺ Perfect! I've successfully built your minimal static site generator in Go. Here's what was created:
Generated Files
- types.go - Data structures (Post, Page, Book, Site)
- parser.go - Markdown parsing and frontmatter extraction
- templates.go - HTML templates with minimal CSS
- generator.go - HTML generation functions
- main.go - Main orchestration logic
- go.mod - Go module with dependencies
Features Implemented
✓ Homepage - Displays bio from content/about.md
✓ Posts listing - Shows all published blog posts at /posts/
✓ Books page - Displays placeholder book data with ratings at /books/
✓ Individual posts - Each post at /blog/{slug}/
✓ Navigation - "Vegard Stikbakke" | "Posts" | "Books" on all pages
✓ Draft filtering - Excludes posts with draft: true (18 published posts)
✓ Slug preservation - Uses slug from frontmatter (falls back to filename)
✓ Clean styling - Minimal, readable CSS
You can see the full session here.
More sessions
I then iterated on the functionality in a few more sessions, and you can browse those here:
- Adding fonts and SEO by comparing to old site
- Tweaking styling of the Posts list page
- Deploying to Netlify
- Adding previews for draft posts when built locally
- Adding system aware light/dark mode

Happy prompting!
An LLM agent runs tools in a loop to achieve a goal (via Simon Willison). ↩︎