Jekyll Personal Blog Assistant
A specialized assistant for developing and maintaining a Jekyll-based personal blog featuring tech articles, travel stories, and recipe collections.
Overview
This skill helps you work with a Jekyll static site generator blog that includes:
Tech articles and tutorialsTravel blog posts with photo galleriesRecipe collection with custom layoutsGitHub Actions deploymentCustom JavaScript integrations (Giscus comments)Tech Stack
**Generator**: Jekyll static site generator**Build Commands**: - `bundle exec jekyll build` (build only)
- `bundle exec jekyll serve` (build + local server)
**Deployment**: GitHub Actions (`.github/workflows/pages.yml`)**Content Types**: Blog posts, recipes, pagesProject Structure
The site follows Jekyll conventions:
`_posts/` - Blog posts organized in date-prefixed folders with co-located images`_recipes/` - Recipe collection with custom layout`_layouts/` - Template files (default, page, post, recipe)`_includes/` - Reusable components (head, sidebar, post/recipe previews)`_assets/` - JavaScript files (Giscus comments integration)`public/` - Static assets (CSS using Lanyon theme, images, fonts)`_config.yml` - Jekyll configurationInstructions
1. Error Fixing Process
When encountering errors, follow this three-step process:
**Step 1**: Explain the error in simple terms
Describe what went wrong without technical jargonIdentify which part of the system is affected**Step 2**: Explain the solution in simple terms
Describe the approach to fix the issueExplain why this solution addresses the root cause**Step 3**: Show how to fix the error
Provide specific commands or code changesInclude exact file paths and line numbers when relevant2. Building the Site
**Local Development**:
```bash
Build only
bundle exec jekyll build
Build and serve locally (with live reload)
bundle exec jekyll serve
```
**Post-Build Validation**:
Run `./post_build_check_soft.sh` for warningsRun `./post_build_check_hard.sh` for strict validationUse `./check.sh` for pre-build checks3. Content Management
**Blog Posts**:
Create folder in `_posts/` with format: `YYYY-MM-DD-post-title/`Include markdown file: `YYYY-MM-DD-post-title.md`Co-locate images in same folder for easy referenceUse YAML frontmatter for metadata**Recipes**:
Create in `_recipes/` directoryUse `recipe.yml` layoutInclude images in subfolder when neededPreview with `recipe_preview.html` include**Pages**:
Create markdown files in root (e.g., `about.md`, `impressum.md`)Use appropriate layout in frontmatter4. Working with Layouts and Includes
**Available Layouts**:
`default.html` - Base layout with sidebar`page.html` - Standard pages`post.html` - Blog posts with date/author`recipe.html` - Recipe-specific formatting**Available Includes**:
`head.html` - HTML head section`sidebar.html` - Navigation sidebar`post_preview.html` - Post excerpt cards`recipe_preview.html` - Recipe cards5. Styling and Assets
The site uses the **Lanyon** theme with custom modifications:
`public/css/lanyon.css` - Main theme styles`public/css/poole.css` - Base styles`public/css/syntax.css` - Code highlighting6. Deployment
The site deploys via GitHub Actions:
Workflow file: `.github/workflows/pages.yml`Automatic deployment on push to main branchJekyll cache: `.jekyll-cache/` (gitignored)Build output: `_site/` (gitignored)7. Special Features
**Giscus Comments**:
JavaScript integration: `_assets/js/giscus-comments.js`Embedded in post layout**AI Chat Integration**:
React app in `ai-chat/` directoryStatic build included in Jekyll site**API Testing**:
Bruno API client configs in `bruno/github_discussion/`Best Practices
1. **Content Organization**: Keep images co-located with posts in dated folders
2. **Build Validation**: Always run check scripts before committing
3. **Git Ignore**: Never commit `_site/`, `.jekyll-cache/`, `node_modules/`, `.DS_Store`
4. **Image Optimization**: Compress images before adding to posts
5. **Markdown**: Use consistent formatting across posts
6. **Frontmatter**: Include all required metadata (title, date, layout, categories)
Common Tasks
**Create New Post**:
```bash
mkdir _posts/YYYY-MM-DD-title
touch _posts/YYYY-MM-DD-title/YYYY-MM-DD-title.md
```
**Add Recipe**:
```bash
touch _recipes/recipe-name.md
Add frontmatter with layout: recipe
```
**Test Locally**:
```bash
bundle exec jekyll serve
Visit http://localhost:4000
```
**Rebuild**:
```bash
./build.sh
```
Notes
This is a personal blog covering tech, travel, and recipesContent dates back to 2010 with posts in both English and GermanThe site has evolved from JBake to Jekyll (migration in 2015)Uses Google Custom Search integrationMobile-responsive design with sidebar navigation