Files
builds/CLAUDE.md
T
Eric WagonerandClaude Fable 5.2 2505d7435c Add share previews for the index and the Green Man page
Index gets a front-page card as og.png. The Green Man page gets a
description, canonical link and Open Graph tags with its own image.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrX9qMoNihcWLX3xoJhabw
2026-11-10 18:06:36 -05:00

3.0 KiB

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 <a class="build"> card per build, newest first; the newest also has class first (full-width card).
  • og.png - OpenGraph image for the index, 1200 x 630
  • deploy - Rsync deployment script
  • <build>/ - 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 <a href="../"> at its top and bottom (.home in greenman/index.html).
  • Downloads live in <build>/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, their CSS and the <link rel="icon" href="../favicon.svg"> line and the description, canonical and Open Graph tags in its head.
  • Share previews: og.png at the root is a 1200x630 screenshot of the top of the index, so retake it when the index's first card changes. Each build has its own og-image.jpg (1200x630) in its folder and its own description and Open Graph tags.

Adding a build

  1. Create <name>/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

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):

./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 <head> point to https://builds.kestrelsnest.social/og.png, and each build page points to its own og-image.jpg. If the URL changes, update og:image, og:url and canonical on every page.