CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
# Install dependencies
bundle install
# Local dev server with live reload at http://localhost:4000
bundle exec jekyll serve --livereload
# Production build (outputs to ./build)
bundle exec jekyll build
# Clean build artifacts
bundle exec jekyll clean
# Local CMS admin UI at http://localhost:4000/admin
# (available automatically when serving locally via jekyll-admin gem)
Architecture
This is a Jekyll 4.x static blog based on the devlopr-jekyll theme, hosted at https://www.co3dex.com. It is a pure static site — no backend, no database.
Key directories
_posts/— blog posts as Markdown, namedYYYY-MM-DD-slug.md_layouts/— page templates (post.html,home.html,page.html, etc.)_includes/— reusable HTML partials injected into layouts_authors/— author profile pages (one file per author, e.g.hogjonny.md)categories/— one Markdown file per category (see below)_data/— YAML data files consumed by layouts/includesassets/— images, CSS, JS, bower components_sass/— Sass stylesheetsbuild/— Jekyll output directory (gitignored)
Post front matter
---
layout: post
title: "Post Title"
summary: "Short summary"
author: hogjonny
date: "YYYY-MM-DD 00:00:00 -0600"
category: <category-slug>
thumbnail: /assets/img/posts/YYYY-MM-DD-slug.png
keywords: comma,separated,keywords
permalink: /blog/slug/
usemathjax: false
---
Post date (REQUIRED — must not be in the future)
Jekyll silently skips posts whose date: is in the future — no error, the post simply won’t appear after build. Always set date: to today or earlier before publishing.
Category pages (REQUIRED for every new category)
Jekyll does not auto-generate category pages — _config.yml has jekyll-archives disabled. Every unique category: value in any post must have a matching file in categories/ or clicking the category link returns a 404.
Check for missing categories before publishing:
grep -h "^category:" _posts/*.md | sort -u
ls categories/
Create categories/<slug>.md for any missing category:
---
layout: page
title: <Display Name>
permalink: /blog/categories/<slug>/
---
<h5> Posts by Category : CLAUDE.md </h5>
<div class="card">
</div>
The site.categories.<slug> tag must exactly match the category: slug used in posts. The permalink must match the pattern in _includes/blog_post_article.html: /blog/categories/.
Currently defined categories
| Slug | File |
|---|---|
info | categories/info.md |
life | categories/life.md |
python | categories/python.md |
techart | categories/techart.md |
Update this table when adding a new category.
How layouts and includes connect
_layouts/post.html— wraps all blog posts; includesblog_post_article.html,blog_sidebar.html,blog_post_comments.html_includes/blog_post_article.html— renders post content, category links, share buttons_includes/blog_sidebar.html— sidebar with recent posts, categories, author info_includes/head.html— SEO tags viajekyll-seo-tag; readsthumbnail,keywords, anddescriptionfrom post front matter_layouts/home.html— paginated blog index (usesjekyll-paginate, 4 posts/page)
Authors
Author pages live in _authors/<slug>.md and are rendered via _layouts/author.html. Posts reference authors by the author: field matching the author’s filename slug.
Deployment
The DEPLOY_STRATEGY file controls CI/CD target (none, gh-pages, or firebase). The site currently builds to ./build/. Docker Compose files exist for containerized dev/prod if needed.