CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a personal portfolio and game development website built with Jekyll using the Beautiful Jekyll theme. The site showcases table-top and indie games including “Last cupful” (a water-fight playground game), “Insider Fruit Trading” (a board game about trading), and “Sirtet” (a tetris-variant game). It’s hosted on GitHub Pages at tripleli.com.
Development Commands
Local Development
# Install dependencies
bundle install
# Run local development server (serves at http://localhost:4000)
bundle exec jekyll serve
# Build the site (outputs to _site/)
bundle exec jekyll build
# Serve with live reload
bundle exec jekyll serve --livereload
Deployment
The site automatically deploys to GitHub Pages when changes are pushed to the main branch. No manual deployment is needed.
Architecture
Jekyll Theme Structure
This site uses the Beautiful Jekyll theme (v6.0.1) as a gem-based theme:
- Theme files are loaded from the
beautiful-jekyll-themegem - Local customizations override theme defaults
- Primary configuration in
_config.yml
Key Directories
_layouts/- Custom page layouts (base, default, home, minimal, page, post)_includes/- Reusable HTML components (header, footer, nav, comments, analytics, etc.)_posts/- Blog posts using Jekyll’s naming convention:YYYY-MM-DD-title.mdassets/- Static assets (CSS, JavaScript, images, Rive animations)_site/- Generated static site (excluded from git)
Content Pages
Game project pages at the root:
cup.md- Last cupful gamefruittrading.md- Insider Fruit Trading gamesirtet.md- Sirtet gameaboutme.md- About pagenewsletter.md- Newsletter signupplaytest.md- Playtest information
Each uses Jekyll front matter with layout: page and includes redirect mappings for alternative URLs.
Configuration (_config.yml)
Site identity and branding:
- Title: “Triple Li”
- Author: Randall Li
- Custom navigation with nested menu items
- Social links: email, GitHub, Patreon, LinkedIn, Discord
- Google Analytics: gtag “G-6PB8REBYBS”
Theme settings:
- Timezone: America/Toronto
- Pagination: 5 posts per page
- Markdown: kramdown with GFM input
- Permalinks:
/:year-:month-:day-:title/
Page Front Matter
All markdown pages require YAML front matter with --- delimiters:
---
layout: page # or 'post' for blog posts
title: Page Title
subtitle: Optional subtitle
redirect_from:
- /alternative-url
- /another-url
---
Blog posts automatically use layout: post with comments and social sharing enabled by default.
Content Management
Adding Blog Posts
Create files in _posts/ with naming format: YYYY-MM-DD-title.md
Required front matter:
---
layout: post
title: "Post Title"
subtitle: "Optional subtitle"
tags: [tag1, tag2]
---
Adding New Pages
Create .md files at the root or in subdirectories. All pages need front matter even if minimal:
---
---
URL Redirects
Use jekyll-redirect-from plugin in front matter:
redirect_from:
- /old-url
- /alternative-url
Important Notes
- Never commit _site/: Generated files excluded via .gitignore
- Testing before commit: Always run
bundle exec jekyll buildto catch errors - Theme updates: Beautiful Jekyll is gem-based, update with
bundle update beautiful-jekyll-theme - Mobile-first: Theme is designed for responsive display
- YAML front matter required: All content pages must have front matter delimiters even if empty