# Claude Code Instructions
## Local Development Server
This is a Jekyll site. To run a local test server **without polluting the repo**:
1. **Initialize rbenv** (required — the system Ruby is too old and doesn't have gems):
```
eval "$(rbenv init -)"
```
2. **Install gems into `vendor/bundle`** (already gitignored):
```
bundle config set --local path 'vendor/bundle'
bundle install
```
3. **Create a dev config overlay** (in `/tmp`, not in the repo) to force localhost URLs. Without this, the `github-pages` gem resolves `site.url` to the production domain and links redirect to prod:
```
cat > /tmp/_config_dev.yml << 'EOF'
url: "http://127.0.0.1:4000"
baseurl: ""
EOF
```
4. **Serve with build output redirected to a temp directory** so `_site/` in the repo is not touched:
```
TMPDIR=$(mktemp -d)
bundle exec jekyll serve --destination "$TMPDIR/_site" --livereload --host 127.0.0.1 --config _config.yml,/tmp/_config_dev.yml
```
This builds into `/tmp/...` instead of the repo's `_site/` directory, and the config overlay keeps all URLs pointing to localhost.
Key points:
- **Never run `bundle exec jekyll serve` without `--destination`** — it writes into `_site/` which is gitignored but still creates noise in `git status`.
- `vendor/`, `.bundle/`, `Gemfile.lock`, `_site/`, `.sass-cache/`, `.jekyll-cache/` are all in `.gitignore`.
- The project uses **rbenv** with Ruby 3.3.4 (set via `.ruby-version`).
- Do not install gems globally or with `sudo` — always use `vendor/bundle`.
## Project Structure
- Jekyll site for workingpaper.co
- Menu configuration lives in `_data/settings.yml` under `menu_settings.menu_items`
- Menu items can have nested `children` arrays for dropdown submenus
- SCSS uses `@include mq(tabletl)` for the desktop breakpoint (1024px)
- JS uses jQuery (available globally as `$`)
## Adding or Removing a Team Member
When adding or removing a team member, update **all** of the following:
1. **Bio page** – Create or remove `_pages/{firstname}-{lastname}.html` (hero section with title/role, portrait image from `/images/`, bio text, and "Contact {Name}" button)
2. **Menu** – Add or remove entry under `menu_settings.menu_items > Team > children` in `_data/settings.yml`
3. **Team page** – Add or remove entry in `_pages/team.md` (name as `h3` link with `→` arrow, job title as plain text, and booking button if applicable)
4. **Calendar booking page** – If the member should have a booking page, create or remove `_pages/calendar-{firstname}.md` and add a `` booking button on the team page. Also add or remove their entry on the **calendar directory page** (`_pages/calendar.md`), which lists all bookable team members.
5. **Photo** – Ensure portrait image exists at `/images/{firstname}-{lastname}.jpg` (or `.png`)