This is a personal dotfiles repository managing shell configs, git settings, and macOS preferences. It uses a role-based configuration system (personal/work) that adapts settings based on hostname or DOTPICKLES_ROLE.
See doc/architecture.md for how the systems fit together.
npm run lint # typecheck + format check (the test suite)
npm run format # format all files with Prettier
npm run typecheck # TypeScript type check onlyPre-commit hooks via lefthook: Prettier formats staged files, TypeScript checks .ts files.
There are no traditional unit tests. "Testing" means npm run lint + manual install verification.
This repo uses ADRs to document why architectural choices were made. Before making significant changes, check doc/adr/ for existing decisions.
bin/adr new "title" # create new ADR
bin/adr list # list all ADRsWhen making significant architectural changes, create a new ADR.
~/.gitconfig.local: Generated by gitconfig.sh~/.gitconfig.d/1password: Generated during git config setup~/.ssh/config: Managed by sshconfig.sh -- editssh/config.d/instead~/.ssh/config.d/colima: Generated by sshconfig.sh- Any symlinked files -- edit the source in
home/orconfig/instead
When editing files with Nerd Font glyphs (tmux config, starship prompt), do not insert glyphs directly -- they get corrupted. Use placeholder text and let the user paste the actual glyph, or define tmux user options:
set -g @_pill_left "" # user pastes actual glyph
set -g @_pill_right ""Common glyphs in this repo: (U+E0B6), (U+E0B4), (U+E0B0), (U+E0B2)
- doc/architecture.md -- role system, git config, symlinks, SSH, shell env
- doc/spotlight-exclusions.md -- Spotlight exclusion management
- claude/CLAUDE.md -- Claude Code settings and permissions
- ssh/CLAUDE.md -- SSH config fragments and per-host TERM overrides
- bin/CLAUDE.md -- custom binaries and spotlight scripts
- config/fish/CLAUDE.md -- fish shell config structure