CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
# Install dependencies
bundle install
npm install
# Development server with live reload
npm run dev
# or: bundle exec jekyll serve --livereload --port 4000
# Include draft posts
bundle exec jekyll serve --livereload --drafts --port 4000
# Production build
npm run build:prod
# Lint JavaScript
npm run lint
npm run lint -- --fix
# Jekyll diagnostics
bundle exec jekyll doctor
The site is served at http://localhost:4000.
Architecture
This is a Jekyll static site based on the Beautiful Jekyll theme (v5.0.0), deployed to GitHub Pages at majidnisar.com. It is a personal website and blog for Majid Nisar covering software engineering, AI integration, and cybersecurity.
Layout hierarchy
_layouts/base.html ← Root HTML shell; loads all CSS/JS, nav, footer
└── _layouts/post.html ← Blog post wrapper (content + tags + comments + pagination)
└── _layouts/page.html ← Static page wrapper
└── _layouts/home.html ← Homepage with paginated post list
└── _layouts/minimal.html ← Bare layout (no nav/footer)
base.html defines the common JS/CSS assets in its YAML front matter (common-css, common-js, common-ext-css, common-ext-js). Every layout inherits these.
Key files
_config.yml— All site-wide settings: title, navbar links, colors, analytics (GA4G-3WBJ12R9ED), comments (Disqusmajidnisar143), pagination (5 posts/page), permalink format (/:year/:month/:day/:title)index.html— Homepage; useslayout: pagewith custom hero sections and a paginated post list viajekyll-paginateaboutme.html— About page; injectsskills.htmlandnewsletter.htmlviaafter-content_posts/— Blog posts; must followYYYY-MM-DD-title.mdnaming convention
Custom additions on top of Beautiful Jekyll
These files were added beyond the base theme:
| File | Purpose |
|---|---|
assets/css/modern-design.css |
Custom design overrides (loaded in base.html) |
assets/js/modern-features.js |
Dark mode toggle, reading progress bar, search overlay, TOC sidebar |
_includes/theme-toggle.html |
Dark/light mode button (fixed, top-right) |
_includes/reading-progress.html |
Progress bar at top of page |
_includes/search-overlay.html |
Full-screen search overlay (keyboard: Ctrl/Cmd+K) |
_includes/toc-sidebar.html |
Sticky TOC, desktop only (≥1200px) |
_includes/newsletter.html |
Newsletter subscription form |
_includes/skills.html |
Skills card grid |
assets/css/aboutme.css |
About page–specific styles |
scripts/sync-linkedin.js |
LinkedIn content sync script (npm run sync:linkedin) |
Post front matter
Required for all posts:
---
layout: post # default; set in _config.yml
title: "..."
tags: [tag1, tag2]
---
Optional useful params: subtitle, cover-img, thumbnail-img, readtime: true, comments: false, social-share: false, gh-repo, gh-badge.
CI
.github/workflows/ci.yml runs jekyll build --future inside jekyll/builder:3.8 Docker container on every push and PR. There are no automated tests beyond the build itself.
Plugins
jekyll-paginate— Post pagination (5 per page, homepage only)jekyll-sitemap— Auto-generates/sitemap.xml