# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview Kestrel's Builds is a static site of craft build write-ups. Builds vary (foam and printed parts, paint techniques, sewing, electronics), so each one ships a guide plus whatever files that project needs. The index must not promise templates or print files for every build. There is no build step and no backend. **Live URL:** https://builds.kestrelsnest.social ## File Structure - `index.html` - Site index (HTML/CSS in one file, no JavaScript). One `` card per build, newest first; the newest also has class `first` (full-width card). - `og-image.jpg` - OpenGraph image for the index, 1200 x 630 - `deploy` - Rsync deployment script - `/` - One folder per build, self-contained: `index.html`, `img/`, `dl/` - `greenman/` - Green Man mask ## Conventions - Each build folder is self-contained and uses relative links, so it works at any path. - The index is a sister page to Kestrel's Hall (gamehall.kestrelsnest.social): the same dark ink / bone / gold tokens, the same serif stack, the same card and section structure. Keep them in step. - Every build page links back to the index with `` at its top and bottom (`.home` in `greenman/index.html`). - Downloads live in `/dl/`. Zip files there are part of the site, so `*.zip` is deliberately NOT in `.gitignore`. - `greenman/index.html` is generated from the mask kit's own source (not in this repo). Hand edits to it are lost when the kit is regenerated; change the source and re-copy, then re-add the two `.home` back links and their CSS. ## Adding a build 1. Create `/index.html` with its `img/` and `dl/`. 2. Add a card to the top of the list in the top-level `index.html`. 3. `./deploy -n`, then `./deploy`. ## Development ```bash python3 -m http.server 8000 ``` Then open `http://localhost:8000`. ## Deployment The `deploy` script uses rsync to push to YunoHost (a My Webapp static app, like pantry): ```bash ./deploy -n # dry run, changes nothing ./deploy # push ``` **Important deployment notes:** - `DIR` in `deploy` is `/var/www/my_webapp__3/www`. The script refuses to run if it is ever reset to the `my_webapp__N` placeholder. - rsync runs with `--delete`: anything on the server that is not in this folder is removed. Do not keep server-only files in the web root. - `HOST=social` is an SSH config alias, the same one pantry uses. ## OpenGraph Meta tags in the index `` point to `https://builds.kestrelsnest.social/og-image.jpg`. If the URL changes, update `og:image`, `og:url` and `twitter:image`.