Archive — Bookmarks

Append-only, out-of-context record of retired bookmark items. Never pruned, reviewed, or nagged. Entries are dated prose bullets, each the original + **Archived YYYY-MM-DD** — reason.

  • 2026-06-02Settings.json portability — DONE; continuous-sync RESOLVED 2026-06-08 (decided: won't build). The portability work shipped: GitKraken's per-event hooks disabled via gk ai hook uninstall claude-code; bell.ps1 + the WebFetch guard live in personal/hooks/; the fully-portable settings.json is snapshotted to personal/claude-config/settings.json; relink.ps1 installs-if-absent and warns on GitKraken re-registration. Continuous repo↔live sync — decided NOT to build (2026-06-08): personal-layer settings change rarely enough that hand re-snapshotting after an intentional change is less machinery than it's worth; the project-committed .claude/settings.json tier (introduced via /puppet) already covers project-scoped perms via git, so the personal snapshot is only for genuinely machine-level settings. Convention now documented in personal/CLAUDE.md → Machine Setup → "Settings sync (hand-managed, by choice)". Residual chore (only if it ever applies): run the one-time gk ai hook uninstall claude-code on any other machine where GitKraken is installed (new-machine-setup also documents this). Archived 2026-06-09 — resolved; portability shipped and continuous-sync decided against (won't build); the residual gk-uninstall chore lives in new-machine-setup. First test prune of the /hygiene-check build.
  • 2026-06-07Refresh the catalog's per-skill "design vocabulary" for two platform changes. Confirmed from canonical Claude Code docs (code.claude.com/docs/en/slash-commands) while resolving the puppet-permissions question: (1) custom commands are now merged into skills — a .claude/commands/foo.md and a .claude/skills/foo/SKILL.md both create /foo and honor the same frontmatter, so Yggdrasil's commands/*.md files are skills for frontmatter purposes (their allowed-tools / disable-model-invocation are live, not inert); (2) disallowed-tools genuinely removes tools from the pool while active (unlike allowed-tools, which only grants, never restricts) — for autonomous skills that must never call a tool (e.g. AskUserQuestion in a background loop). disallowed-tools already appears in the 2026-05-27 model-override bookmark's vocabulary list, but the current-plan.md Design-decisions catalog — the allowed-tools entry (~line 1039) and the design-vocabulary session-lesson (~line 1093) — predates both facts and still frames the vocabulary as just allowed-tools + disable-model-invocation. Refresh those entries to add disallowed-tools (+ user-invocable) and the commands==skills merge. Low urgency. Surfaced 2026-06-07 resolving puppet permissions. Archived 2026-06-09 — done (Chunk-1 cleanup): the catalog's skill-authoring-conventions entry and the design-vocabulary session-lesson now carry the full four-flag vocabulary (disallowed-tools + user-invocable) and the commands==skills merge.
  • 2026-06-09Make the bloat bands truly config-driven — purge hard-coded 10/15/20 references. The bands are already tunable in .meta/ledger.yamlconfig.bloat (heads_up: 10, warn: 15, firm: 20, seeded A3), but several places still restate the literal numbers in prose rather than reading them from config: commands/hygiene-check.md's bookmark-prune step (<10 / 10+ / 15+ / 20+) and the list-hygiene design doc. When tackled: have the command surface the bands by name (heads_up / warn / firm) off the live config.bloat values, and scrub the hard-coded numbers from the durable docs so changing a threshold never leaves a stale number in prose. (C4's new AGENTS.md hygiene entry already avoids hard-coding them — it points at config.bloat.) Surfaced 2026-06-09 writing C4. Archived 2026-06-09 — done (Chunk-1 cleanup): commands/hygiene-check.md now surfaces the bands by name (heads_up/warn/firm) off live config.bloat, no literals left. The dated list-hygiene design doc was intentionally left as a historical snapshot (not scrubbed — revising a dated record), per Brad's call.
  • 2026-05-27 — Schema evolution for .meta/ YAML files based on usage patterns over time. Archived 2026-06-09 — superseded: the accumulating-list-hygiene design + the .meta/ledger.yaml config/stamps schema now cover how .meta/ YAML evolves, so the standalone instinct is obsolete. Deleted per Brad.
  • 2026-05-27 — Markdown companion files alongside .meta/ YAML when prose tracking earns its place. Pattern: structured data in YAML, narrative in Markdown. Archived 2026-06-09 — superseded: the list-hygiene design already realizes this split (markdown lists/plans beside .meta/ledger.yaml); kept as principle, no separate action. Deleted per Brad.
  • 2026-05-27 — Build a general-purpose self-check command that audits the personal layer, Yggdrasil layer, and summarizes which Yggdrasil-based workflows are available. Quick health-and-orientation snapshot. Among its checks: flag if GitKraken's Claude Code hooks have re-registered in ~/.claude/settings.json (per-event gk.exe ai hook run entries cause churn/overhead; disable with gk ai hook uninstall claude-code). Archived 2026-06-10 — pruned per Brad: between new-machine-setup, relink.ps1 (which already flags GitKraken hook re-registration), and /good-morning (orientation/health snapshot on entry), the substance is covered; too little unique residue left to warrant a standalone command.
  • 2026-05-27 — Re-tune the Stop-hook quality gate prompt if it produces false positives. Calibration matters; trained-to-ignore is a failure mode. Update 2026-05-28: fixed one false-positive class — the gate was flagging questions Claude posed to the user as incomplete work, which deadlocked the turn; prompt now only flags questions the user asked that Claude left unanswered, and treats handing back to the user as a complete end-of-turn state. The fix lives in the repo snapshot (personal/claude-config/settings.json), installed by relink.ps1. Archived 2026-06-10 — pruned per Brad: the one concrete false-positive class was fixed 2026-05-28 and ~2 weeks of heavy use surfaced no new misfires; the residual "keep watching" is a self-announcing instinct that needs no bookmark to hold its place.
  • 2026-05-28new-machine-setup skill: paths and the mklink-vs-New-Item Developer Mode gotcha were corrected 2026-05-28, so it's accurate now, and relink.ps1 automates the linking idempotently. The fuller consolidation rework remained for Phase 9; the settings.json/hooks sync sub-item was substantially handled (bell.ps1 + WebFetch guard in personal/hooks/, settings snapshotted to personal/claude-config/, relink.ps1 installs-if-absent + flags GitKraken). What was left was the broader new-machine-story polish once the layout settles. Archived 2026-06-10 — pruned per Brad: the skill works fine enough and he's stayed on a single machine, so the consolidation solves a problem he doesn't have; the eventual host-relocation move (Windows→Ubuntu) would rewrite the new-machine story wholesale anyway, so any polish now would be premature. Resolved sub-items already shipped.
  • 2026-06-03Keep placeholder labels like "Option A/B" out of recorded notes. When recording decisions in durable docs (current-plan.md, bookmarks, AGENTS, README, etc.), describe the actual decision substantively — never as a bare "Option A" / "Option B" / "the second one." Those are meaningless once the conversation that defined them is gone (a partial-context trap; kin to the source-fidelity concern). Candidate to promote into a doc-writing convention. Archived 2026-06-10 — promoted per Brad: now a standing personal-layer convention, "Substance over placeholder labels," added to personal/CLAUDE.md next to Source fidelity (committed in the personal repo). The bookmark's exit is reached.
  • 2026-06-04Bookends & doc-hygiene refactor (cluster — revisit together). A 4-part cluster of related tweaks to the session bookends (/save-progress, /good-morning), the sweep, and /consistency-check. Archived 2026-06-10 — cluster resolved/redistributed per Brad: (1) Command structure (extract /sweep; then superseded 2026-06-05 by merging /sweep + /consistency-check into one /hygiene-check with the AskUserQuestion gates moved there) — shipped in the list-hygiene/bookends build (the 7-step /hygiene-check, merged 2026-06-09). (2) Scratchpad plumbing (good-morning must surface the scratchpad; its home working/ vs .meta/; cleanliness/pruning discipline) — shipped: it's now working/hygiene.md, surfaced by /good-morning, drained to archive/hygiene.md. (3) Folder-layout review (superpowers' dated specs/+plans/ two-tier shape) — the -design.md/-plan.md suffix-pairing shipped; the org-scheme proper is tracked in the design-doc organization-scheme bookmark (2026-06-06). (4) Hooks guarding save//clear (PreCompact imminent-compaction alert + optional SessionStart "read the plan") — still open and homeless, so extracted to its own standalone 2026-06-04 bookmark 2026-06-10 rather than dying buried in a resolved cluster.
  • 2026-06-04Disambiguate the word "commit" (git op vs. the personal-CLAUDE.md "commit convention"). Candidate rule: bare "commit" = the git operation; write "the commit convention" when meaning the convention; lean on the domain words pin (the checkpoint write) and disposition (merge-back/keep/discard) in worktree mechanics so an ambiguous bare "commit" rarely appears; home it as an AGENTS.md house-style line. Archived 2026-06-10 — already resolved per Brad: the proposed rule shipped (at some earlier session, unmarked) as the "commit" house-style line in AGENTS.md (~L95–98), a near-verbatim match — bare "commit" = git op, "the commit convention" for the convention, pin/disposition as the domain words. Exit reached; no new work.
  • 2026-06-08 [priority]AGENTS.md + README.md methodology docs pass + steal-review/prune of the drift scratchpad (working/hygiene.md). The advisory-subagent + review-lens methodology was deferred in the 2026-06-04 consistency-check (items #5/#6) "until the planning skill ships" — it shipped 2026-06-08. Half one: encode it into AGENTS.md (Conventions) + README.md (philosophy) to match shipped reality. Half two: walk the drift scratchpad end-to-end for anything worth stealing into the planning skill or docs, and prune the resolved runs. Archived 2026-06-12 — both halves complete this session: (1) AGENTS.md gained the "Advisory subagents & design-review lenses" Conventions bullet, README.md gained the "Parallel, never autonomous" note (Designer and executor), and the concurrent-sessions cluster cross-ref was refreshed (drift run 2026-06-04 #5/#6/#7 closed); (2) the steal-review surfaced nothing new beyond half one, and all three working/hygiene.md runs drained to archive/hygiene.md — the scratchpad is now empty. The 2026-06-06 puppet posture/settings deferral was left riding on the puppet design-review bookmark (already recorded in the archive). Exit reached.
  • 2026-06-11Research the available frontend-design skills out there. Frontend-design skills are reportedly among the most popular Claude/agent skills right now; survey what exists (Anthropic's own frontend-design skill + community ones), what each does, and whether one's worth adopting into the toolkit or pulling into a project build. Immediate motivation: Kingdom.md's Task 6 — the "beautiful baseline" Blade/Tailwind views (working/mvp-plan.md); a strong frontend-design skill could raise that bar. But the interest is general — any project with a UI. Non-blocking for the Kingdom.md MVP (Task 6 ships on the Tailwind Typography baseline regardless); if researched first, it can inform Task 6. Fits the learning-new-skills research lane. Surfaced 2026-06-11 while planning Kingdom.md. Archived 2026-06-16 — researched via a scoped /learn-new-skills run (Brad's steer: frontend-design only, plus the UIs of comparable markdown apps — Obsidian/Sublime Text/online viewers). Findings written to C:/Projects/kingdom-md/working/2026-06-16-frontend-design-research.md (rides the kingdom-md session-2026-06-15 worktree). Verdict: don't adopt a skill into Yggdrasil; instead borrow the Anthropic skill's four-question commitment + the named-aesthetic DESIGN.md idea as a project-level artifact for Kingdom.md Task 6. Exit reached.
  • 2026-06-10Roll my own self-hosted markdown hosting/viewer — a Perlite-like app in Laravel + OAuth + RBAC (became Kingdom.md). Its own repo at C:/Projects/kingdom-md with a validated MVP design + 7-task /planning plan; the human-facing read-only window into the markdown corpus, Brad's own build (dogfooding) instead of an off-the-shelf viewer. Surveyed Perlite / Quartz / LaRecipe / HydePHP / BookStack; decision axes were live-render vs SSG, graph/backlinks, and auth-at-edge vs native in-app (Socialite + RBAC — the reason to build). Archived 2026-06-17 — drained per Brad at /hygiene-check. Kingdom.md is now self-tracking in its own repo (its own current-plan.md + mvp-plan.md); Tasks 1–6 of the MVP are built (Task 6 Blade views this session), Task 7 next. The Yggdrasil bookmark is superseded by the in-repo plan.
  • 2026-06-04Phase Seafile out as the central sync mechanism; make that intent clear across the relevant docs. Seafile is a convenience-era backup that GitHub will replace once the three repos get private remotes (the Phase 4 push) — likely before Brad ever works consistently from a second machine, so the cross-machine sync scenarios may never actually arrive. Treat Seafile as deprecated-in-waiting. Mitigation already applied (2026-06-04): added C:\Seafile\Claude\seafile-ignore.txt excluding session-bookend git worktrees (.claude/worktrees/ + .worktrees/) in all three repos — pre-empts the Windows git↔Seafile file-handle race during /save-progress's git worktree remove cleanup, and stops syncing throwaway checkouts. (Ignore-pattern syntax is best-effort gitignore-style; verify against Seafile docs if a worktree ever shows up in sync.) To do when phasing out / when it next becomes relevant: make the deprecation explicit in the docs that currently treat Seafile as load-bearing — the new-machine-setup skill (built entirely around Seafile linking), the personal CLAUDE.md ("Machine Setup" + "Seafile sync" sections), and any Yggdrasil notes that lean on it. Don't rewrite them now (per Brad: bookmark, don't fold into the plan) — but the eventual GitHub cutover should carry a "and update every doc that assumes Seafile" step. Update 2026-06-10 — converged into a concrete architecture (design doc). A /brainstorming session settled the phase-out into a real shape: relocate the whole Claude environment onto a dedicated always-on Ubuntu host + Remote Control + GitHub private remotes, explicitly rejecting both Dropbox and Obsidian Sync (a file-syncer over a live .git is a corruption anti-pattern; Obsidian Sync drops version control entirely). GitHub private remotes are now the foundation (promoted from the ## Deferred someday). Full reasoning + migration scope in working/host-relocation-design.md. The "update every doc that assumes Seafile" to-do still stands and grows — the Windows→Ubuntu move also converts the PowerShell hooks → Bash and junctions → symlinks. Resume from the design doc → quick Understanding-Lock re-confirm → /planning. Update 2026-06-18 — done (the scrub/relocation half). Seafile is uninstalled; this session ran /brainstorming/planning → execution against working/seafile-retirement-design.md / -plan.md. The "update every doc that assumes Seafile" to-do is complete (new-machine-setup rewritten to the portable model; personal CLAUDE.md Machine-Setup rewritten; claude-config + every Yggdrasil path reference repointed), and the three repos relocate to flat C:\Projects\ (personalclaude-personal) via a handoff script + self-check. What remains of this bookmark is the cloud relocation only — the always-on host + Remote Control + Windows→Linux conversion — which lives in working/host-relocation-design.md, gated behind Kingdom.md. GitHub private remotes are the near-term backup follow-up (the plan's ## Deferred). Once the relocation self-check passes, drain this bookmark to archive/ with only the cloud thread carried forward to the host-relocation design. Archived 2026-06-19 — the cloud-relocation thread this bookmark carried forward is now COMPLETE: migrated to the always-on Ubuntu DigitalOcean droplet, reached via SSH, both repos on private GitHub remotes (clanofartisans/*); working/host-relocation-design.md is marked executed. The remaining Windows→Linux doc sweep is independently tracked (the 2026-06-18→19 de-Windows bookmark). The self-set exit condition (drain once the relocation self-check passes, carrying only the cloud thread forward) is met.
  • 2026-06-09Push all three repos (personal, yggdrasil, odin-codin) to private GitHub remotes. They're local-only (no remotes). Deferred because adding GitHub to the mix just seems like a headache right now — Brad's been working from a single machine ~99% of the time, so portability hasn't actually been an issue yet. Local-first + Seafile sync covers the day-to-day. Revival trigger (soft): when single-machine stops being the reality — going multi-machine often enough that portability actually bites — or whenever there's appetite to just set it up. Update 2026-06-19 — RESOLVED for the two live repos. yggdrasil + claude-personal were pushed to private GitHub remotes (clanofartisans/*) during the host onboarding — they're the migration's backup foundation, no longer local-only. odin-codin remains intentionally absent from the host, so its push is moot until it's revived. Ripe to prune to archive/ at the next /hygiene-check. Archived 2026-06-19 — RESOLVED: yggdrasil + claude-personal were pushed to private GitHub remotes (clanofartisans/*) during host onboarding — the migration backup foundation. odin-codin stays intentionally absent from the host, so its push is moot until revived. Drained from the plan ## Deferred at /hygiene-check.
  • 2026-06-09Wrap the bookends' git worktree remove in prune-and-retry (Windows/Seafile file-handle race). Landing this build, the C2 merge disposition's git worktree remove failed on the first try with "Permission denied" — a transient Windows file-handle lock (Seafile scanning the tree); git worktree prune + a retry Remove-Item then cleared it cleanly. The seafile-ignore.txt mitigation (see the Seafile-phase-out bookmark) doesn't fully prevent it. The automated bookends run this exact removal — /save-progress's merge/discard disposition and /good-morning's stale-empty nuke — so they should retry on the transient lock (prune, then re-attempt removal, perhaps with a short backoff) instead of failing and orphaning a .worktrees/session-* directory. Surfaced 2026-06-09 dogfooding the C2 merge disposition by hand. Update 2026-06-09 (hit again, messier — live /save-progress merge disposition): the naive "remove → prune → remove again" sequence doesn't actually work. On the live run git worktree remove failed "Permission denied" on the directory; git worktree prune then deregistered the worktree before the forced git worktree remove --force retry could run (retry errored "is not a working tree"); and prune still left an empty directory husk (git had deleted all files — 0 left — but couldn't remove the folder shell) that needed a manual rm -rf to clear. So the robust recipe is prune-then-filesystem-sweep, not prune-then-git-remove: attempt git worktree remove; on the lock, run git worktree prune (it deregisters); then directly rm -rf the orphaned empty directory rather than re-calling git worktree remove; finish with git branch -d. Git's bookkeeping ended clean both times (git worktree list correct, branch deleted) — the only residue is the on-disk empty husk, so the retry logic must target the filesystem, not git. A short backoff before the sweep may also let the Seafile/Windows handle release on its own. Update 2026-06-18: Seafile is now uninstalled, so the file-handle race this bookmark pins on Seafile scanning the tree may no longer occur — watch whether the bookends' git worktree remove still hits the transient "Permission denied" lock; if it's gone with Seafile, the prune-then-filesystem-sweep workaround can likely be pruned. Archived 2026-06-19 — superseded entirely by the Windows→Linux migration: the file-handle race was a Windows+Seafile artifact (both now gone), and git worktree remove ran clean twice this session (the /save-progress merge disposition + this de-Windows session setup) — no Permission-denied lock, no directory husk. No Linux residue to carry forward; the prune-then-filesystem-sweep workaround is unneeded.
  • 2026-06-18 → 2026-06-19De-Windows the docs entirely: sweep claude-personal/CLAUDE.md and the Yggdrasil working docs to the Linux reality. Brad's call (2026-06-19): get rid of Windows entirely — the always-on Linux host is now home for good, no Windows future — so this is no longer just a path swap; the whole Windows premise comes out. In scope: (a) claude-personal/CLAUDE.md — the ## Machine Setup block is Windows-premised throughout (mklink / Developer-Mode symlinks, the Bash-vs-PowerShell shell-tools note, C:\Projects paths, "All machines are Windows for now"); rewrite for the Linux host (/var/projects, ln -sfn, bash). This is the core preferences file, so it deserves its own section-by-section collaborative walk, not a hasty pass. (b) Yggdrasil working docsworking/current-plan.md still documents Windows paths outside the now-updated Checkpoint/Status line (notably "State of Yggdrasil → Location and structure" — "Repo lives at C:\Projects\yggdrasil\" — and the Links section's junction/mklink notes); repoint to /var/projects. Already done as a first slice (2026-06-19): the CLAUDE.md line-endings sections were rewritten to the LF-everywhere Linux policy and both repos' .gitattributes simplified to * text=auto eol=lf (git add --renormalize confirmed the tree was already all-LF). Surfaced 2026-06-18 during the Linux-host-onboarding /save-progress; scope broadened 2026-06-19. Archived 2026-06-19 — RESOLVED: the de-Windows sweep completed 2026-06-19 (every live convention/operational doc across claude-personal + yggdrasil repointed; CLAUDE.md walked section-by-section; two dead Windows hook scripts archived). Scope item (a) and most of (b) landed that session; the last residual — current-plan.md's File-locations reference still on C:\Projects\… — was fixed at this /hygiene-check, closing (b). Drained from bookmarks.md.