# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Architecture Overview This is a Hugo static site for the Foss Cat blog (fosscat.com), using the Gokarna theme. The site includes blog posts, TILs (Today I Learned), and project pages. Key architectural components: - **Hugo framework**: Static site generator with content in Markdown - **Gokarna theme**: Git submodule theme providing the site's design - **Content structure**: Posts in `content/posts/`, TILs in `content/tils/`, projects in `content/projects/` - **Static assets**: Images and other assets in `static/` directory - **Custom layouts**: Overrides in `layouts/` for TILs and other content types - **Configuration**: Main site config in `config.toml` ## Development Commands ### Environment Setup ```bash # Initialize git submodules (theme) git submodule init git submodule update # Enter Nix development environment (if using Nix) nix develop ``` ### Building and Development ```bash # Start development server with live reload hugo server # Build static site for production hugo # Build with drafts included hugo --buildDrafts ``` ### Linting and Quality Checks ```bash # Lint markdown files markdownlint content/**/*.md # Format markdown files prettier --write content/**/*.md # Spell check (requires aspell with English dictionary) aspell check --mode=markdown --lang=en --personal=./.aspell.en.pws [filename.md] ``` ### Git Hooks - Pre-commit hooks automatically installed via `scripts/install_hooks.sh` - Hooks run markdown linting and spell checking on staged `.md` files - Personal dictionary in `.aspell.en.pws` for spell checking ## Content Management ### Creating New Content ```bash # Create new blog post hugo new posts/post-title.md # Create new TIL hugo new tils/til-title.md # Create new project hugo new projects/project-name.md ``` ### TILs (Today I Learned) - Custom archetype in `archetypes/tils.md` - Custom layouts in `layouts/tils/` for list and single views - Accessible via `/tils/` URL path ## Site Configuration - **Base URL**: - **Theme**: Gokarna (git submodule) - **Syntax highlighting**: catppuccin-frappe style - **Content language**: English (en-us) - **Social icons**: Configured for Gitea, Twitch, RSS - **Navigation menu**: Defined in `config.toml` ## Development Environment This repository uses Nix flakes for reproducible development environment including: - Hugo static site generator - Marksman (Markdown LSP) - Prettier (code formatter) - markdownlint-cli - aspell with English dictionaries ## Quality Assurance - Markdown linting enforced via `.markdownlint.jsonc` configuration - Spell checking with personal dictionary support - Pre-commit hooks prevent commits with linting/spelling errors - Use `git commit --no-verify` to bypass hooks if needed