- new paper/ink palette with single red accent, replacing catppuccin - self-hosted IBM Plex Serif (display) + Source Serif 4 (body), drop Outfit - rebuilt homepage masthead, numbered post index, navbar with active states - switch syntax highlighting + utterances to gruvbox, synced via postMessage - remove terminal/404 easter egg chrome, clean up remaining inline styles - fix stray syntax.css link causing a 404
3.5 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this is
A personal blog (andwati.com — "Thoughts and Musings") built with Zola, a Rust-based static site generator. All templates, styles, and content are custom (no external theme is used — themes/ is empty).
Commands
zola build(ormake build) — build the site intopublic/zola serve(ormake serve) — serve locally with live reloadmake clean— removepublic/make all— clean + build./bin/update-zola— checks the installed Zola version against the latest GitHub release and offers to install it into~/.cargo/binnode scripts/validate-post.mjs— validates staged post front-matter (run as a pre-commit hook); checks kebab-case filenames and requiredtitle/dateTOML front-matter fields
There is no JS/CSS build tooling beyond Zola itself: compile_sass = true in zola.toml means Sass under sass/ is compiled directly by Zola.
Docker: Dockerfile does a multi-stage build — zola build in the ghcr.io/getzola/zola image, then serves public/ via static-web-server.
Content structure
- Posts live in
content/posts/, either as a single.mdfile (content/posts/my-post.md) or as a directory withindex.md(content/posts/my-post/index.md) when a post has co-located assets. - Front matter is TOML (
+++ ... +++), e.g.:+++ title = "..." description = "..." author = "mockingspectre" date = YYYY-MM-DD [taxonomies] tags = ["..."] +++ tagsis the only taxonomy (taxonomies = [{ name = "tags" }]inzola.toml).content/archive/_index.md,content/about.md,content/_index.mdare standalone pages.- Custom shortcodes available in post bodies:
note,tip,warning,danger(callout boxes, seetemplates/shortcodes/) andyoutube(id="...").
Templates & styling
templates/base.htmlis the root layout; page-type templates (index.html,page.html,posts.html,taxonomy_list.html,taxonomy_single.html,archive.html,404.html) extend it.templates/partials/holds reusable fragments (header, footer, profile, post-card, post-nav, series-nav, related-posts, toc/toc-sidebar, comments, social-share).templates/feed.json,templates/rss.xml,templates/sitemap.xml,templates/robots.txtare generated-output templates driven by thegenerate_feeds/generate_robots_txtsettings inzola.toml.- Sass is split by concern in
sass/(_layout,_header,_footer,_hero,_article,_typography,_theme,_search,_variables,_utilities,_transitions,_404,_scroll-top,_feed) and assembled viasass/main.scss. - Site supports light/dark theme toggling (
enable_theme_toggle) and full-text search (enable_search,build_search_index = true) — search index and theme logic live in the corresponding JS understatic/js/and Sass partials above.
Site configuration
All site-wide behavior/config (analytics, author/profile info, social links, nav menu, Utterances comment settings, search, related posts, the 404 terminal-themed easter egg) is centralized in zola.toml under [extra]. Check there before hardcoding values in templates.
Agent skills
.agents/skills/ contains pulled-in skills (animation-vocabulary, emil-design-eng, review-animations) tracked via skills-lock.json, useful for UI/animation review and design-engineering guidance when touching templates or Sass.