About

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 Hugo-Coder theme is pulled in as a git submodule, which makes updates a breeze.

How It’s Built Link to heading

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.

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

GitHub Actions Link to heading

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 Link to heading

Dependabot keeps infrastructure dependencies current on a weekly cadence:

EcosystemWhat’s tracked
GitHub ActionsWorkflow action versions across all workflows
Hugo-Coder themegit submodule commits on the theme’s main 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 Link to heading

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.

Note
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 Link to heading

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.