~/claude.md

CLAUDE.md

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

What this is

A personal blog (“Master the Disaster”, by Amit Netanel) hosted at abbabon.github.io via GitHub Pages. It is built on the Beautiful Jekyll theme (by Dean Attali) — the theme’s full source lives in this repo (it doubles as the theme gem, see beautiful-jekyll-theme.gemspec). Most files come from the upstream theme; day-to-day work is editing content and _config.yml, not theme internals.

Commands

./run_site.sh          # bundle exec jekyll serve — local dev server with live reload
bundle install         # install gem dependencies after touching the Gemfile/gemspec

Ruby setup (one-time, RVM-based) is in install_ruby.sh; the theme targets Ruby ~2.7. There is no test/lint suite — this is a static content site. Deployment is automatic: pushing to master triggers GitHub Pages to build and publish.

Content model

  • Published posts live in _posts/ named YYYY-MM-DD-title.md. Permalinks are /:year-:month-:day-:title/ (set in _config.yml). Each post starts with YAML front matter: layout: post, title, tags: [...], optional cover-img / share-img / share-img-twitter, comments: true. Markdown is GFM (kramdown + rouge highlighter).
  • Drafts in drafts/ are works-in-progress not yet published — move a file to _posts/ with a dated filename to publish it.
  • archive/ holds the theme’s original demo posts. They are not the author’s content; leave them unless explicitly asked.
  • Standalone pages (about.md, contact.md, assets.md, tags.html) use layout: page by default (set via defaults in _config.yml).
  • privacy/ contains privacy-policy pages for the author’s mobile apps (e.g. AraratFM, ocdisocdat). Each sets an explicit permalink and is unrelated to the blog itself — treat them as independent landing pages.
  • Images go in assets/img/ (post images under assets/img/posts/).

Theme structure (rarely edited)

  • _layouts/ — page templates; post.html, page.html, home.html extend base.html.
  • _includes/ — reusable HTML partials pulled into layouts.
  • _data/ui-text.yml — translatable UI strings.
  • _config.yml — site-wide settings: navbar links, social links, analytics, comments (Disqus), and the custom Dracula color palette (the author overrides many theme color variables here). Changes to _config.yml require restarting the Jekyll server to take effect.

GitHub authentication

This repo belongs to the Abbabon GitHub account. ALWAYS authenticate as Abbabon for every GitHub operation here — both gh commands (PRs, etc.) and plain git push/git fetch. The machine also has an amitnglaive account — do not use it here.

The remote is HTTPS (https://github.com/Abbabon/abbabon.github.io.git). Before any push or gh command, make Abbabon the active account, and route git’s HTTPS credentials through gh so plain git push uses the same account:

gh auth switch --user Abbabon   # make Abbabon the active gh account
gh auth setup-git               # make git use the active gh account for HTTPS (one-time per machine)

Note: the machine’s osxkeychain credential helper can otherwise serve a different cached token to git push regardless of the active gh account, so always verify with gh auth status (active account must be Abbabon) before pushing.

Conventions

  • The site is excluded from production for README.md, CHANGELOG.md, Gemfile, LICENSE, screenshot.png (see exclude: in _config.yml) — these are theme/repo docs, not site content.
  • Pagination is 5 posts per page (jekyll-paginate); a sitemap is generated by jekyll-sitemap.