Claude Code — Project Guidelines

Commit messages

All commits must follow Conventional Commits.

<type>[optional scope]: <description>

[optional body]

[optional footer]

Allowed types:

Type Use for
feat New feature
fix Bug fix
docs Documentation only
style Formatting, whitespace (no logic change)
refactor Code change that is neither feat nor fix
perf Performance improvement
test Adding or updating tests
build Build system or external dependencies
ci CI/CD configuration
chore Maintenance tasks
revert Reverts a previous commit

Examples

feat(chat): add streaming token output
fix(nav): correct mobile menu z-index
docs: add local dev setup to CLAUDE.md
chore: update jekyll-paginate gem

Git hooks setup

Activate the local commit-msg hook after cloning (one-time):

git config core.hooksPath .githooks

This enforces the Conventional Commits format locally before every commit. A GitHub Actions workflow (.github/workflows/conventional-commits.yml) runs the same check on every pull request.

Local dev server

See /install and /serve slash commands under .claude/commands/.


Repository summary

What this repo is: Jekyll personal portfolio/blog for Pedro Borges Torres, hosted on GitHub Pages at https://pedrohbtp.github.io. Based on Beautiful Jekyll with heavy customisation.

Key files & directories

Path Purpose
_config.yml Site metadata, theme colours, plugins, social links, analytics
Gemfile Ruby deps: github-pages v232, jekyll-paginate
Dockerfile / docker-compose.yml Containerised local dev (Jekyll 4.2.0)
index.html Homepage — hero, skills, projects, media, CTAs
chat.html In-browser AI chat demo (Transformers.js)
snake-rl.html Snake RL game demo (TensorFlow.js)
language-model.html PyTorch serverless ML inference demo
aboutme.md About page
tags.html Blog tag index
_posts/ Blog posts (only one post currently: 2015-01-04)
_layouts/ base, default, home, page, post, minimal
_includes/ Fragments: nav, header, footer, analytics (GA UA-130023632-1, GTM), disqus, social-share
_data/SocialNetworks.yml Social platform definitions used by footer/nav
css/main.css Primary custom stylesheet (~1 400 lines)
js/main.js Dark-mode toggle + smooth scroll (~194 lines)
js/snake.js Snake game logic
snake-rl/ TF.js model files + game sprites/audio
.githooks/commit-msg Enforces Conventional Commits locally
.claude/commands/ /install and /serve slash commands

Tech stack at a glance

  • Jekyll with github-pages gem (served on GitHub Pages)
  • Bootstrap 3 + custom CSS (dark-mode capable, Google Fonts: Inter, DM Sans)
  • jQuery 1.11.2 (legacy)
  • Transformers.js / TensorFlow.js for in-browser ML demos
  • kramdown (GFM) + rouge for Markdown/code highlighting
  • Plugins: jekyll-paginate (5 posts/page), jekyll-sitemap
  • No GitHub Actions CI (.github/ directory does not exist)

Important config values

Setting Value
Timezone America/Vancouver
Permalink /:year-:month-:day-:title/
Navbar / footer colour #1D2B3A
Google Analytics UA-130023632-1
Build destination (local) /home/user/jekyll_site (outside repo)