CLAUDE.md — Agent Onboarding

What this repo is

Personal blog for Esteban Sancho at estebansancho.com. Static Jekyll site hosted on GitHub Pages. Essays on software leadership, engineering organizations, and organizational behavior.

Stack

Key files

File Purpose
_config.yml Site config, theme, plugins, defaults
_config_dev.yml Local dev overrides (worker_url)
_data/navigation.yml Top nav links
_includes/head/custom.html Injected into every page <head> — favicons + AMA widget assets
_pages/ Static pages (about, posts, tags, ama)
_posts/ Published essays (layout: single)
_layouts/ama.html Local layout override for /ama page
assets/js/ama-widget.js AMA chat widget (self-contained IIFE)
assets/css/ama-widget.css AMA widget styles (dirt skin palette)
ama-worker/ Cloudflare Worker — Anthropic API proxy for the AMA widget

Local development

Requirements: Ruby 3.4, Bundler, Node.js 20+

# Install Ruby deps (first time only)
bundle install

# Start Jekyll (slow first run — downloads remote theme)
bundle exec jekyll serve --config _config.yml,_config_dev.yml
# Site at http://localhost:4000

# Start AMA API server (separate terminal)
cd ama-worker
cp .dev.vars.example .dev.vars   # add ANTHROPIC_API_KEY
node dev-server.js
# API at http://localhost:8787

_config_dev.yml overrides worker_url to point at localhost:8787 instead of the production Cloudflare Worker.

AMA widget

The AMA chat widget (assets/js/ama-widget.js) is a self-contained IIFE with no dependencies. It has two modes:

The widget reads the worker URL from the data-worker-url attribute on its own <script> tag, which is set by Jekyll via https://ama-worker.esteban-sancho.workers.dev/chat in _includes/head/custom.html.

AMA Worker (ama-worker/)

Cloudflare Worker that proxies requests to the Anthropic API. Keeps the API key server-side.

Deploy: cd ama-worker && npx wrangler deploy (requires Cloudflare account + KV namespace configured in wrangler.toml)

Content pipeline

Draft articles live in _pipeline/articles/. Published posts go in _posts/ as YYYY-MM-DD-slug.md with layout: single.

After publishing a new post, update ama-worker/src/system-prompt.js with a summary of the new essay, then redeploy the worker.

Style conventions