Customize with an agent
Where content is meant to stay stable, the look and feel is the exact opposite: it's meant to be thrown away and rebuilt as often as you like. The project is laid out so that an AI agent can do that safely.
Everything visual is reachable from one place
site/index.ts is the only thing the engine imports for rendering. Behind it:
site/site.config.ts branding: title, author, nav, socials, analytics
site/styles/index.css the theme
site/components/*.ts layout, nav, post, listing
Want a different look? You only ever touch site/. The content and the engine stay put.
The agent skill
This repo ships a skill at .claude/skills/customize/SKILL.md. It encodes the boundaries โ
which files are fair game, which are off-limits, and how to verify a change. So instead of
hunting through the codebase, you describe the outcome:
"Make it a warm sepia theme with a serif body font and a centered single-column layout."
"Add a projects page to the nav and a footer with my email."
"Make the post listing a dense table instead of grouped-by-year cards."
The agent edits site/ only, runs bun run build and bun run typecheck, and the typed
contract guarantees it can't silently break your posts while restyling them.
Why this works
Customization is risky precisely when presentation and content are tangled. Here they aren't: the contract from the previous post means a styling change provably can't reshape your writing. That safety is what makes "let an agent redesign it" a reasonable thing to say out loud.
Open the skill file, point your agent at it, and tell it what you want.