CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Overview
Personal website / CV for Maksym Cheremnov, built with Jekyll and served at https://mcheremnov.github.io/. Default and deploy branch is gh-pages. No tests, no linter, no JS build step.
Commands
bundle install # Gemfile.lock is gitignored, so versions resolve fresh
bundle exec jekyll serve # local dev server with rebuild on change
bundle exec jekyll build # output to ./_site
Deploy: pushing to gh-pages triggers .github/workflows/jekyll.yml (Ruby 3.3, bundle exec jekyll build with JEKYLL_ENV=production, then GitHub Pages deploy).
Architecture
- Theme gem does most of the work.
theme: cvless(gemcvless ~> 2.4) supplies the layouts (home,cv,page,post), most includes (footer.html,postlist.html,pagination.html,particles-404.html,svg/*.svg) and assets (styles.min.css,darkmode.js,particles.min.js, etc.) that are referenced but not present in this repo. Files in local_layouts/,_includes/,assets/override the gem’s files of the same path. Usebundle info cvless --pathto inspect the theme source before overriding anything. - Site data lives in
_config.yml: author, contact info, social links (profile.*). Translatable strings (name, taglines, address, footer) live in_data/i18n/<lang>.yml. - Bilingual content (en/uk), client-side. One URL per page; every language is rendered into the HTML and CSS shows only the one matching
<html lang>. Languages are listed ini18n_languagesin_config.yml(first is the default).- Short strings:
<span data-lang="en"></span><span data-lang="uk"></span>reads_data/i18n/<lang>.yml. Add a key to every language file. - Page bodies:
index.mdandcv.mdhold one<div data-lang="<lang>" markdown="1">block per language. When editing content, update every block. - The inline script in
_includes/head.htmlpicks the language before first paint (?lang=param, thenlocalStorage, thennavigator.language).assets/js/i18n.jshandles thedata-set-langbuttons from_includes/language-selector.html. - Local
_includes/header.htmland_includes/footer.htmloverride the theme to uset.html. Old/index.ua/and/cv.ua/URLs redirect viaredirect_from.
- Short strings:
- Ruby version.
github-pages ~> 232needs Ruby >= 3.0 and < 4.0 (CI uses 3.3). macOS system Ruby 2.6 and Homebrew Ruby 4.x both failbundle install. _layouts/default.htmlis the local root layout. It conditionally loads particles.js effects andassets/js/main.jsonly whenpage.titleis"Home"or"404", so these page titles are load-bearing.- Posts in
_posts/are theme sample content, listed viaposts.mdwithjekyll-paginate-v2. Both are currently hidden throughexcludein_config.yml. domains/subdomains.jsonis a subdomain registration record (CNAME tomcheremnov.github.io), not used by the Jekyll build.assets/files/cv.pdfis the downloadable CV linked fromindex*.mdandcv*.md; keep it in sync with the CV page content.