CLAUDE.md

CLAUDE.md

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

Overview

This is a Jekyll-based blog (blog.forret.com) that was migrated from WordPress. It uses the Beautiful Jekyll remote theme and includes a custom bash workflow script (jkl.sh) for managing posts and deployments.

Project Structure

Key Configuration

Jekyll Plugins

Development Workflow

Creating a New Post

Use the jkl.sh script to create new posts:

./jkl.sh new

This will:

  1. Prompt for publication date (defaults to today)
  2. Prompt for post title
  3. Generate a slug from the title
  4. Create image folder: wp-content/uploads/[YEAR]/[MONTH]/[slug].jpg
  5. Generate featured image using splashmark (with dark/grain effects)
  6. Create markdown file: _posts/[YEAR]/[DATE]-[slug].md
  7. Populate from template with metadata (title, date, image, slug)

Post Front Matter Structure

---
title: Post Title
layout: post
image: /wp-content/uploads/[YEAR]/[MONTH]/[slug].jpg
permalink: /[YEAR]/[DATE]/[slug]/
date: YYYY-MM-DD
categories:
    - category-name
tags:
    - tag-name
---

Local Development Server

./jkl.sh serve

This runs Jekyll in a Docker container:

Deployment

./jkl.sh deploy

This will:

  1. Regenerate category pages using jekyll_taxonomy -c generate category
  2. Regenerate tag pages using jekyll_taxonomy -c generate tag
  3. Stage all changes (posts, categories, tags, images, public assets, includes)
  4. Copy VERSION.md to _includes/version.html
  5. Run setver autopatch to increment version
  6. Commit and push changes

Required tools for deployment:

Other Commands

./jkl.sh check    # Check script configuration and required dependencies
./jkl.sh env      # Generate example .env file
./jkl.sh update   # Update jkl.sh to latest version via git pull

Important Notes

Bash Script (jkl.sh)

The jkl.sh script is based on bashew framework and includes:

Script Options