# Session Log — 2026-03-12 ## Summary Created the claude-foundations repo on Gitea (skynet org), built a best-practices folder with 11 topic files extracted from cluster-bootstrap and custom-claude-skills, then designed and implemented a three-tier knowledge distillation pipeline (/log, /reflect-logs, /distill-best-practices). ## Decisions - Decision: Separate `/reflect-logs` from existing `/reflect` — Rationale: different purpose (continuous vs milestone), different cadence, avoids overcomplicating the existing skill - Decision: Use MD5 hashes for reflection state, git SHAs for distill state — Rationale: log files may not be committed when reflected; distill explicitly works across committed repos - Decision: Timestamp-based session IDs (HHMMSS) — Rationale: human-readable, naturally sorted, no external dependencies - Decision: Pruning happens in `/log` not `/reflect-logs` — Rationale: runs most frequently, keeps log dir clean as side effect of the most common operation - Decision: `/distill-best-practices` is interactive (proposals before changes) — Rationale: cross-project conventions need human judgment ## Gotchas Discovered - **[skills]** Symptom: install.sh failed with exit 1 on broken symlink — Fix: old reflect symlink pointed to pre-move path (`~/dev/claude/custom-claude-skills/` instead of `~/dev/claude/projects/custom-claude-skills/`). `readlink -f` on a broken symlink returns empty string, causing comparison failure under `set -e`. Fixed by removing stale symlink and re-running. - **[skills]** Symptom: skills created mid-session not available as slash commands — Fix: skills are discovered at session start, not dynamically. New skills require a new session to become available. ## Key Context - Best practices files are in claude-foundations/best-practices/ with INDEX.md as the card catalog - Settings for the pipeline live in claude-foundations/settings.yaml - State files: `.reflection-state.json` (per-project), `best-practices/.distill-state.json` (in claude-foundations) - SSH key for ai_enablement is password-protected — needs ssh-agent loaded before git push ## Process Notes - The plan mode workflow worked well for this — explored existing patterns, designed the architecture, got approval, then executed cleanly - Creating all 11 best-practices files in parallel (single Write batch) was efficient