`.
- Build takes ~33 seconds. Use `rm -rf _site` before rebuild if you suspect caching issues.
- Tag pages are auto-generated in `tag/` directory from individual `.md` files. After creating a new blog post, run `python tag_generator.py` to regenerate tag pages.
- Before suggesting new UI elements (social links, nav items, etc.), check if they already exist in `_includes/` partials and `_layouts/`.
- The user frequently edits files directly in their IDE between messages. Always re-read a file before editing it to pick up their changes.
- Avoid duplicating content across pages (e.g., Kaggle details live on Activities, not Projects). If content exists on one page, don't repeat it on another.
- Head metadata is emitted by three plugins — check before adding equivalents by hand: `jekyll-seo-tag` injects `` and OG/Twitter fallbacks via `{% seo title=false %}` in `_layouts/default.html`; `jekyll-feed` injects the RSS ``; `jekyll-sitemap` generates `/sitemap.xml`.
## Common commands
```bash
# Build and serve locally
pkill -f "jekyll serve" 2>/dev/null; sleep 2; bundle exec jekyll serve --no-watch
# Clean build (when Liquid caching suspected)
pkill -f "jekyll serve" 2>/dev/null; sleep 2; rm -rf _site; bundle exec jekyll serve --no-watch
```
## Writing style
- When writing or editing blog posts, invoke the `style-guide` skill (canonical file: `.claude/skills/style-guide/SKILL.md`). It covers voice, formatting, paper-review structure, book-review structure, and the AI-writing-tells blocklist.
## Workflow preferences
- When redesigning a page, create 2-3 versions at temporary URLs (e.g. `/about-v1`, `/about-v2`) for comparison, then combine the best elements and delete temp files.
- Use `.html` extension for pages with Liquid template code or heavy HTML.
- New card-based components use classes from `css/cards.css` (card-grid, card, card-scroll, tag-chip, badge-pill, section-header).