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-02 — Settings.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 inpersonal/hooks/; the fully-portablesettings.jsonis snapshotted topersonal/claude-config/settings.json;relink.ps1installs-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.jsontier (introduced via/puppet) already covers project-scoped perms via git, so the personal snapshot is only for genuinely machine-level settings. Convention now documented inpersonal/CLAUDE.md→ Machine Setup → "Settings sync (hand-managed, by choice)". Residual chore (only if it ever applies): run the one-timegk ai hook uninstall claude-codeon any other machine where GitKraken is installed (new-machine-setupalso documents this). Archived 2026-06-09 — resolved; portability shipped and continuous-sync decided against (won't build); the residual gk-uninstall chore lives innew-machine-setup. First test prune of the /hygiene-check build. - 2026-06-07 — Refresh 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.mdand a.claude/skills/foo/SKILL.mdboth create/fooand honor the same frontmatter, so Yggdrasil'scommands/*.mdfiles are skills for frontmatter purposes (theirallowed-tools/disable-model-invocationare live, not inert); (2)disallowed-toolsgenuinely removes tools from the pool while active (unlikeallowed-tools, which only grants, never restricts) — for autonomous skills that must never call a tool (e.g.AskUserQuestionin a background loop).disallowed-toolsalready appears in the 2026-05-27 model-override bookmark's vocabulary list, but thecurrent-plan.mdDesign-decisions catalog — theallowed-toolsentry (~line 1039) and the design-vocabulary session-lesson (~line 1093) — predates both facts and still frames the vocabulary as justallowed-tools+disable-model-invocation. Refresh those entries to adddisallowed-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-09 — Make the bloat bands truly config-driven — purge hard-coded 10/15/20 references. The bands are already tunable in
.meta/ledger.yaml→config.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 liveconfig.bloatvalues, 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 atconfig.bloat.) Surfaced 2026-06-09 writing C4. Archived 2026-06-09 — done (Chunk-1 cleanup):commands/hygiene-check.mdnow surfaces the bands by name (heads_up/warn/firm) off liveconfig.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.yamlconfig/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-eventgk.exe ai hook runentries cause churn/overhead; disable withgk ai hook uninstall claude-code). Archived 2026-06-10 — pruned per Brad: betweennew-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 byrelink.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-28 —
new-machine-setupskill: paths and themklink-vs-New-ItemDeveloper Mode gotcha were corrected 2026-05-28, so it's accurate now, andrelink.ps1automates 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 inpersonal/hooks/, settings snapshotted topersonal/claude-config/,relink.ps1installs-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-03 — Keep 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 topersonal/CLAUDE.mdnext to Source fidelity (committed in the personal repo). The bookmark's exit is reached. - 2026-06-04 — Bookends & 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-checkinto one/hygiene-checkwith 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 homeworking/vs.meta/; cleanliness/pruning discipline) — shipped: it's nowworking/hygiene.md, surfaced by/good-morning, drained toarchive/hygiene.md. (3) Folder-layout review (superpowers' datedspecs/+plans/two-tier shape) — the-design.md/-plan.mdsuffix-pairing shipped; the org-scheme proper is tracked in the design-doc organization-scheme bookmark (2026-06-06). (4) Hooks guarding save//clear(PreCompactimminent-compaction alert + optionalSessionStart"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-04 — Disambiguate 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 intoAGENTS.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.mdgained the "Advisory subagents & design-review lenses" Conventions bullet,README.mdgained 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 threeworking/hygiene.mdruns drained toarchive/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-11 — Research the available
frontend-designskills out there. Frontend-design skills are reportedly among the most popular Claude/agent skills right now; survey what exists (Anthropic's ownfrontend-designskill + 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 thelearning-new-skillsresearch lane. Surfaced 2026-06-11 while planning Kingdom.md. Archived 2026-06-16 — researched via a scoped/learn-new-skillsrun (Brad's steer: frontend-design only, plus the UIs of comparable markdown apps — Obsidian/Sublime Text/online viewers). Findings written toC:/Projects/kingdom-md/working/2026-06-16-frontend-design-research.md(rides the kingdom-mdsession-2026-06-15worktree). Verdict: don't adopt a skill into Yggdrasil; instead borrow the Anthropic skill's four-question commitment + the named-aestheticDESIGN.mdidea as a project-level artifact for Kingdom.md Task 6. Exit reached. - 2026-06-10 — Roll 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-mdwith a validated MVP design + 7-task/planningplan; 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 owncurrent-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-04 — Phase 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.txtexcluding session-bookend git worktrees (.claude/worktrees/+.worktrees/) in all three repos — pre-empts the Windows git↔Seafile file-handle race during/save-progress'sgit worktree removecleanup, 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 — thenew-machine-setupskill (built entirely around Seafile linking), the personalCLAUDE.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/brainstormingsession 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.gitis a corruption anti-pattern; Obsidian Sync drops version control entirely). GitHub private remotes are now the foundation (promoted from the## Deferredsomeday). Full reasoning + migration scope inworking/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 againstworking/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; personalCLAUDE.mdMachine-Setup rewritten; claude-config + every Yggdrasil path reference repointed), and the three repos relocate to flatC:\Projects\(personal→claude-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 inworking/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 toarchive/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.mdis 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-09 — Push 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-personalwere pushed to private GitHub remotes (clanofartisans/*) during the host onboarding — they're the migration's backup foundation, no longer local-only.odin-codinremains intentionally absent from the host, so its push is moot until it's revived. Ripe to prune toarchive/at the next/hygiene-check. Archived 2026-06-19 — RESOLVED:yggdrasil+claude-personalwere pushed to private GitHub remotes (clanofartisans/*) during host onboarding — the migration backup foundation.odin-codinstays intentionally absent from the host, so its push is moot until revived. Drained from the plan## Deferredat/hygiene-check. - 2026-06-09 — Wrap the bookends'
git worktree removein prune-and-retry (Windows/Seafile file-handle race). Landing this build, the C2 merge disposition'sgit worktree removefailed on the first try with "Permission denied" — a transient Windows file-handle lock (Seafile scanning the tree);git worktree prune+ a retryRemove-Itemthen cleared it cleanly. Theseafile-ignore.txtmitigation (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-progressmerge disposition): the naive "remove → prune → remove again" sequence doesn't actually work. On the live rungit worktree removefailed "Permission denied" on the directory;git worktree prunethen deregistered the worktree before the forcedgit worktree remove --forceretry 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 manualrm -rfto clear. So the robust recipe is prune-then-filesystem-sweep, not prune-then-git-remove: attemptgit worktree remove; on the lock, rungit worktree prune(it deregisters); then directlyrm -rfthe orphaned empty directory rather than re-callinggit worktree remove; finish withgit branch -d. Git's bookkeeping ended clean both times (git worktree listcorrect, 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 removestill 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), andgit worktree removeran clean twice this session (the/save-progressmerge 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-19 — De-Windows the docs entirely: sweep
claude-personal/CLAUDE.mdand 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 Setupblock is Windows-premised throughout (mklink/ Developer-Mode symlinks, the Bash-vs-PowerShell shell-tools note,C:\Projectspaths, "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 docs —working/current-plan.mdstill documents Windows paths outside the now-updated Checkpoint/Status line (notably "State of Yggdrasil → Location and structure" — "Repo lives atC:\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'.gitattributessimplified to* text=auto eol=lf(git add --renormalizeconfirmed 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 acrossclaude-personal+yggdrasilrepointed; 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 onC:\Projects\…— was fixed at this/hygiene-check, closing (b). Drained frombookmarks.md.