Skip to main content

Colophon

This is my personal blog, version controlled on GitHub, built and published with Cloudflare Pages running Hugo. Posts are written in Markdown with Monokai syntax highlighting via Chroma — if you like the look, check out Monokai Pro. The Congo theme (stable branch) is pulled in as a git submodule, which makes updates a breeze.

How It’s Built #

Hugo compiles the site from Markdown source files, with the exact version pinned in a .hugo-version file tracked in the repo. Cloudflare Pages runs a dual-mode build pipeline: production builds on the main branch publish a clean, minified site, while every other branch gets a full preview deployment that includes drafts and future-dated posts. Large binary assets are managed with Git LFS.

Every pull request automatically gets its own preview deployment with drafts included — useful for verifying content before it goes live.

GitHub Actions #

GitHub Actions workflows automate the publishing lifecycle:

WorkflowDescription
Claude Code Action@claude in an issue or PR triggers autonomous task execution with results posted back to the thread.
Automated Content ReviewEvery PR gets an automated review by Claude Sonnet, checking accuracy, style, and broken links.
Hugo Version UpdatesWeekly check of gohugoio/hugo; opens a PR to bump .hugo-version when a new release lands.
Lintingpre-commit runs actionlint (with ShellCheck) on every PR and main push.

Dependency Automation #

Dependabot keeps infrastructure dependencies current on a weekly cadence:

EcosystemWhat’s tracked
GitHub ActionsWorkflow action versions across all workflows
Congo themegit submodule commits on the stable branch
pre-commit hooksactionlint and other hook revisions

Blog post content dependencies are tracked through a separate layer:

DependencyHow it’s tracked
Categories, namespaces, products, eventsFront matter taxonomy fields that build the internal link graph across posts
External linksValidated with curl in every PR’s content review
Images and mediaBinary assets committed via Git LFS so the repo stays lightweight
Source materialsartifacts front matter field linking each post to its artifact/ directory files

Claude Code #

Anthropic’s Claude Code is integrated throughout the composing and content verification workflow. The /hugo-update command automates Cloudflare Pages environment variable updates via the API whenever the Hugo version changes. cmux handles both terminal tab management and AI agent notifications — when a long-running task completes or needs input, the tab lights up and a notification fires without any additional tooling. The Remote Control feature lets me monitor and interact with a running Claude Code session from my iPhone, so I can kick off a task from the desk and check on it from anywhere.

Between cmux tab notifications and Remote Control on iPhone, I rarely need to watch the terminal — Claude Code surfaces results when they matter.

Writing Workflow #

Pre-commit hooks run actionlint (with ShellCheck) automatically on every commit, catching workflow and script issues before they reach CI. Hugo’s dev server provides live reload for instant feedback while composing.

Comments #

Self-hosted and fully static — how comments work.


Leave a comment

Preview

Comments are reviewed before publishing.