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:
[{: .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}
Navigation
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, permalinkassets/img/— all post images, namespaced by post slug_data/menus.yml— site navigationGemfile— Jekyll + github-pages gem (pins Jekyll to 3.10.0)