mckinnon.dev — Claude Context

mckinnon.dev — Claude Context

Personal Jekyll blog hosted on GitHub Pages. Topics: Home Automation, AI, FinTech, Finance.

Local Development

bundle install          # first time only
bundle exec jekyll serve

Site runs at http://localhost:4000. Add --livereload for auto-refresh.

Creating Posts

Posts live in _posts/. Two structures are used:

  • Simple: _posts/YYYY-MM-DD-slug.md
  • With assets: _posts/YYYY-MM-DD-slug/YYYY-MM-DD-slug.md

Permalink is /:title/ which uses the filename slug — a post named 2026-04-07-n8n-youtube.md builds to /n8n-youtube/.

Front Matter Template

---
layout: post
title: "Post Title Here"
date: YYYY-MM-DD HH:MM:SS -0500
modified: YYYY-MM-DD HH:MM:SS -0500
description: "One sentence shown in previews and meta tags."
tags: [homelab, ai]
---

layout, title, date, and description are required. modified should match date on creation. tags are optional but recommended — they appear on the /tags/ page.

Tags

Tags are free-form lowercase strings. Current tags in use: meta. Use short descriptive terms like homelab, ai, automation, finance, n8n. Add multiple: tags: [homelab, n8n, automation].

Images

Always put images in assets/img/post-slug/ and reference them with absolute paths.

Use the thumbnail pattern — image wrapped in a link to itself so clicking opens the full size:

[![Alt text](/assets/img/post-slug/my-image.png){: .thumbnail}](/assets/img/post-slug/my-image.png)

The .thumbnail class constrains images to 480px wide, centers them, and adds a subtle border. It is defined in assets/css/style.scss.

Use descriptive kebab-case filenames (parse-flow.png, not image-1.png).

The jekyll-postfiles gem is installed but does not run when using the github-pages gem locally — co-located images in _posts/ will not be copied to the build output. The assets/img/ approach is the established convention.

Drafts

Drafts live in _drafts/ without a date in the filename:

  • Simple: _drafts/my-post-slug.md
  • With assets: _drafts/my-post-slug/my-post-slug.md

Preview drafts locally with:

bundle exec jekyll serve --drafts

When ready to publish, move the file to _posts/ and add the date prefix (YYYY-MM-DD-slug.md).

Callout Block

Use .callout for CTAs and highlighted notes (e.g. end-of-post contact prompts). Styled with a blue left border, muted background, works in light and dark mode.

Some highlighted text or call to action here.
{: .callout}

Site nav is defined in _data/menus.yml. To add a link:

- title: about
  url: /about/
  external: false

Set external: true for links to other sites. Currently only home is enabled — archive and about are commented out.

Pages

Static pages live in pages/. Create pages/my-page.md with:

---
layout: page
title: Page Title
permalink: /my-page/
---

Then add it to _data/menus.yml to show in nav.

Branching & PRs

Branch naming: post/slug (e.g. post/n8n-youtube). PRs target main.

Key Files

  • _config.yml — site config, plugins, permalink
  • assets/img/ — all post images, namespaced by post slug
  • _data/menus.yml — site navigation
  • Gemfile — Jekyll + github-pages gem (pins Jekyll to 3.10.0)