CLAUDE.md
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this is
The “Brisk Bee” personal blog — a Jekyll site using the
minima theme, served through GitHub Pages. Despite the repo name
(peterhaldbaek.github.io), the site is published at the custom domain in CNAME
(www.briskbee.com); _config.yml url/email reflect that domain, not GitHub.
Commands
bundle install # install gems (first run / after Gemfile changes)
bundle exec jekyll serve # build + watch + serve at http://localhost:4000
bundle exec jekyll serve --drafts # also render _drafts/
bundle exec jekyll build # one-off build into _site/ (gitignored)
There is no test, lint, or CI step — pushing to main is what deploys (GitHub
Pages builds the site server-side). Note _config.yml is not hot-reloaded; restart
serve after editing it.
Content conventions
- Posts live in
_posts/namedYYYY-MM-DD-title.mdwith front matterlayout: postand atitle/date. Author defaults to “Peter Haldbæk” via_config.ymldefaults, so don’t set it per-post. Permalinks are/:year/:month/:title.html(see_config.yml) — changing a filename or this pattern breaks existing URLs. - Pages are top-level
.mdfiles (e.g.about.md, the*-tv-oversigt.mdmatch-schedule pages) withlayout: page. Addshow_in_menu: trueto surface a page in the site nav —_includes/header.htmliteratessite.pagesand only renders ones with that flag set. Useredirect_from:(jekyll-redirect-from) to preserve old URLs when moving a page. _archive/and_drafts/hold posts that are intentionally not published._archive/is a non-standard underscore dir, so Jekyll ignores it;_drafts/only renders with--drafts. To publish an archived post, move it into_posts/with a dated filename.
Theme overrides
The site is built on the gem-based minima theme, but ships a custom dark-first
look called Pollen (neon nectar-pink + honey accents on a plum-ink background).
The override files here are what produce that look; many other layouts/styles still
live inside the gem. Files here override the gem by matching its path:
_layouts/home.html, _layouts/post.html, _includes/head.html,
_includes/header.html, _includes/disqus_comments.html, and assets/main.scss.
When something looks “missing,” it’s coming from the minima gem — add a same-named
file here to override it rather than editing the gem.
Pollen theme details
assets/main.scssis self-contained — it does not@import "minima". All styling (base, header, hero, post feed, post page, code, footer, mobile nav) lives here, driven by CSS custom properties. Editing minima variables does nothing; edit the tokens at the top of this file.- Dark/light. Theme is chosen by the
data-themeattribute on<html>. Tokens are defined for[data-theme="dark"](the default) and[data-theme="light"]. An inline script in_includes/head.htmlsets the attribute before first paint (readinglocalStorage.theme, defaulting to dark) to avoid a flash; the toggle button and its click handler live in_includes/header.htmland persist the choice tolocalStorage. - Fonts load from Google Fonts in
_includes/head.html:Spectral(display / headings),Work Sans(body),JetBrains Mono(code, eyebrows, meta, tags). The display/body pairing is chosen for editorial heritage over the AI-default look. Code blocks are clean bordered panels — no colored accent stripe. - Tags. Posts may set
tags: [a, b, c]in front matter; they render as pills on the home feed (_layouts/home.html) and the post header (_layouts/post.html). Posts without tags simply show none — safe to adopt gradually. - Hero. The home page shows a hero block (only on paginator page 1). Edit its
copy in
_layouts/home.html.
Plugins in use
jekyll-feed (RSS), jekyll-paginate (10 posts/page at /page/:num/),
jekyll-redirect-from. Disqus comments are wired via the disqus shortname in
_config.yml.