Claude Code Instructions for bbum.github.io

Claude Code Instructions for bbum.github.io

Commit Messages

Keep commit messages simple - just bullet points of what changed:

- Added new post about topic
- Fixed typo in about page
- Updated stylesheet

No “Generated by Claude” footers, no co-author lines, no emoji, no fluff.

Dates

ALWAYS check the current date before creating posts. Do NOT assume the year is 2024. Use:

date +%Y-%m-%d

Prefer mdfind over find or grep for file discovery:

mdfind -onlyin . 'kMDItemFSName == "*.md"'
mdfind -onlyin . 'kMDItemTextContent == "*search term*"'

Site Structure

_layouts/       # default.html, post.html, tag.html
_includes/      # header.html, footer.html
_posts/         # YYYY-MM-DD-title.md
_data/comments/ # comment_id.yml files
assets/css/     # style.scss
tags/           # Individual tag pages (tags/photography/index.html)
toc/            # Table of contents page

Jekyll (ALWAYS use Makefile)

NEVER run Jekyll commands directly. Use the Makefile:

make serve    # Start dev server with --watch and --livereload
make build    # One-time build
make stop     # Kill running Jekyll server

Before previewing, ensure Jekyll is running with make serve. If preview isn’t updating, check that Jekyll is running with watch mode (the Makefile handles this).

Posts

Photo Workflow (Flickr + Photos Integration)

When adding photos from the Photos library to blog posts:

1. Find and Export from Photos

mcp__conduit__photos action=search_text query="photo name"
mcp__conduit__photos action=export id=PHOTO_ID outputPath=/tmp/photo.jpg format=jpeg quality=high

Export automatically normalizes EXIF orientation (bakes rotation into pixels).

2. Upload to Flickr

mcp__bbflickr__flickr action=upload filePath=/tmp/photo.jpg title="Title" tags="blog" visibility=public

Only use blog tag. NO descriptive tags (3d-printing, TPU, etc.) on either Flickr or Photos.

mcp__bbflickr__bridge action=link flickrID=FLICKR_ID photosID=PHOTOS_ID
mcp__conduit__photos action=set_keywords id=PHOTOS_ID keywords="flickr:FLICKR_ID, blog" append=true

Bridge writes machine tag to Flickr. You must ALSO add flickr:FLICKR_ID keyword to Photos. Photos keywords should ONLY be: flickr:ID and blog (if for blog). NO descriptive tags.

4. Get embed info from Flickr

mcp__bbflickr__flickr action=agent id=FLICKR_ID

Returns YAML with title, flickr_url, tags, and sizes array.

5. Embed in Post (DO NOT use Flickr JS embed)

Use the figure class template, NOT <a data-flickr-embed>:

<div class="figure right">
<img src="https://live.staticflickr.com/65535/PHOTO_ID_SECRET_n.jpg" width="200" height="267" alt="Alt text">
<div class="caption"><a href="https://www.flickr.com/photos/bbum/PHOTO_ID/">Caption</a></div>
</div>

Photo Tagging Requirements

Post Front Matter

---
layout: post
title: "Post Title"
date: YYYY-MM-DD
tags: [tag1, tag2]
comment_id: xYz123
---

Tags

When adding a new tag:

  1. Create tags/newtagname/index.html:
    ---
    layout: tag
    tag: newtagname
    title: "newtagname"
    ---
    

Comments (Email-based)

Comments are collected via email to blog@bbum.net.

Subject Line Format

Processing Comments

When user says to process comments from _incoming_comments/:

  1. Parse each .eml file:
    • Extract IDs from Subject: line: [postID] or [postID:parentCommentID]
    • Extract sender name (not email) from From:
    • Extract date from Date: header
    • Extract body (plain text preferred)
  2. Generate a new 4-char comment ID for this comment

  3. Add to _data/comments/POST_ID.yml: ```yaml
    • id: a3Bx from: “Sender Name” date: 2025-12-22 body: | Comment text here.
  1. Delete processed .eml files
  2. Rebuild site

Comment Data Fields

Comment Data Location

When asked to add a link to the site (e.g., to Laser Resources), visit the URL first to determine:

Don’t ask the user for this info if it can be determined from the site itself.

Constraints