CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
# Install dependencies (first time or after Gemfile changes)
bundle install
# Serve locally with live reload at http://localhost:4000
bundle exec jekyll serve --livereload
# Production build (output to _site/)
bundle exec jekyll build
# CI build (matches what GitHub Actions runs)
bundle exec appraisal jekyll build --future --config _config_ci.yml,_config.yml
# Create new content
./scripts/new_post.sh "Article Title"
./scripts/new_project.sh "Project Title"
./scripts/new_hackathon.sh "Hackathon Title"
# Generate English translation skeleton from a French file
python scripts/generate_en_translation.py _posts/YYYY-MM-DD-mon-article.md
Alternatively, source setup_aliases.sh to get jekyll_serve, new_article, new_project, new_hackathon shorthand aliases.
Architecture
Generator: Jekyll with the Beautiful Jekyll theme (v6.0.1). The theme is loaded as a gem, so most layout/include overrides live in _layouts/ and _includes/ locally.
Collections (defined in _config.yml):
_posts/— Blog articles, output at/:year-:month-:day-:title/_projects/— Project showcase, output at/projects/:path/_formation_ia/— AI training content, output at/formation-ia/:path/
Bilingual (FR/EN) system:
- Default language is French (
lang: frin_config.yml) - Each piece of content has a paired
-envariant withlang: en - FR and EN files share a
translation_keyfront matter field to link them - FR permalinks use
/articles/, EN permalinks use/en/articles/ - Navigation is duplicated in
_data/navigation.ymlunderfr:anden:keys scripts/generate_en_translation.pyauto-generates the EN skeleton (front matter + slug) from a FR source file
Front matter conventions:
# French post
lang: fr
translation_key: my-article # must match EN pair
permalink: /articles/my-article/
# English paired post
lang: en
translation_key: my-article
permalink: /en/articles/my-article/
AI chat widget: configured via mistral_api_url in _config.yml, proxied through a Cloudflare Worker. Widget markup lives in _includes/ai_chat_widget.html, JS in assets/js/.
CI/CD: .github/workflows/ci.yml — builds on Ubuntu with Ruby 3.3, uses appraisal for multi-version testing, uploads the _site/ artifact to GitHub Pages. The _config_ci.yml overlay sets the correct baseurl for the Pages environment.