Read README.md first. It is the user-facing source of truth; keep this file limited to agent-specific rules, hazards, and prior-session lessons.
- Personal macOS-only dotfiles/bootstrap repo for David Stosik; not a general provisioning framework.
- Keep
bootstrapsmall: only enough shell to get Homebrew, git, mise, Ruby, then run Ruby. - Prefer Ruby for installer logic.
- Current intended use is just
./bootstrapor the README curl-pipe equivalent. - Do not add commands/flags (
doctor,help,link,--dry-run,--verbose,--skip-brew-bundle,--non-interactive) unless explicitly requested. - Preserve user data. Do not delete or overwrite existing home files; the linker backs them up.
bootstrapis the curl-pipe shell entrypoint.dotfilesis the Ruby installer entrypoint.lib/dotfiles/app.rbapplies managed state.home_symlinks/mirrors files into$HOME.Brewfile.devis for development/test packages, not target-machine packages.
- In
bootstrap, keep the source guard beforeset -eu. find_checkout_rootmust not use the caller's current working directory as a fallback checkout root.- For
curl | bash,$0is usually not a local script file; that should fall through to clone/update. - Existing
~/.dotfilesupdates usegit fetch,git checkout, andgit reset --hard origin/<ref>. This can discard local changes; ask before changing the behavior. HOMEBREW_NO_AUTO_UPDATE=1was chosen deliberately.- Symlinks inside
home_symlinks/should be mirrored as symlinks. Do not reintroduce a specialhome_link_aliasesmapping. - Stale managed symlinks are reported but intentionally left in place.
fabioluciano/tmux-tokyo-nightis pinned to#v1.11.0; do not unpin casually.- Keep TPM initialization at the very bottom of
.tmux.conf; plugin installation belongs in Ruby, not.tmux.conf. - Global Node version comes from
home_symlinks/.config/mise/config.toml; avoid hardcoding it elsewhere. - npm-backed global tools should be installed through mise tool specs, not
npm install -g.
- Fast tests:
./bin/test - Slow clean-machine bootstrap smoke test:
./bin/tart-test - Tart SSH uses
expectwhenTART_SSH_PASSWORDis set. Keepssh -ttand keep the expect loop able to answer latersudoprompts. - Tart VMs are disk-constrained; low disk can make CLT install fail with misleading
xcode-selecterrors.
- Check
git status --shortbefore editing and before committing. - Do not delete, revert, or discard user changes unless explicitly asked.
- When asked to commit selected changes, leave unrelated working tree changes alone.
- Do not commit
SESSION.mdorRETROSPECTIVE.mdunless explicitly asked. PROJECT.md,AGENT_INTENT.md,SESSION.md, andRETROSPECTIVE.mdmay be stale or temporary unless David says otherwise.docs/nate-repo-intent.mdis about Nate Berkopec's external dotfiles repo; ignore it for this repo's intent unless asked.