Dotfiles for macOS — zsh, neovim, tmux, git — maintained by
Dewey, a Claude Code agent that lives in the repo. It tracks
plugin health, keeps docs in sync with config, and runs parallel agent
workflows via tmux. No custom runtime — just CLAUDE.md, skills, and
project memory.
Warning: If you use my
dotfiles, you must modify this to your own purposes!.gitconfigcontains my name/email — simply cloning and running setup will make your commits under my identity.
bash setup.shIf you have an existing ~/.config/, it won't be overwritten — but none of the
dotfiles configs will be linked. Remove or merge your existing .config/ after
running setup.sh.
For SSH key management via Apple Keychain:
ssh-add --apple-use-keychain ~/.ssh/[your-private-key]| Path | What |
|---|---|
.zshrc, .zsh_plugins.txt |
Zsh config, antidote plugins |
.config/nvim/ |
NeoVim (docs) |
.config/ |
alacritty, starship, etc. |
.claude/ |
Claude Code settings & skills: audit, history-analyze, commands, doc-sync (docs) |
.tmux.conf |
tmux config |
.gitconfig |
Git config |
.Rprofile, .R/, .condarc |
R and conda config |
bootloaders/ |
Boot loader configs |
scripts/ |
Automation scripts (see below) |
setup.sh |
Bootstrap installer |
Sorts macOS screenshots into ~/Pictures/Screenshots/YYYY/MM-Mon/ subfolders
by parsing the date from the filename. Handles both old (Screen Shot ...) and
new (Screenshot ...) naming formats, plus screen recordings.
# Preview what would happen
sort-screenshots --dry-run
# Sort screenshots already in ~/Pictures/Screenshots (default)
sort-screenshots
# Sort from a different source directory
sort-screenshots ~/DesktopLaunches parallel Claude Code agents in tmux. One agent per directory, or
use --worktree mode to spin up git worktrees from a single repo.
# Three agents as tiled panes (default)
start-agents --worktree ~/my-repo 3
# Or separate windows
start-agents --windows ~/project-a ~/project-bSee docs/tmux.md for the full workflow.
Setup: macOS screenshots are redirected to ~/Pictures/Screenshots/:
defaults write com.apple.screencapture location ~/Pictures/Screenshots
killall SystemUIServerCron: runs nightly at midnight to sort new screenshots into subfolders:
0 0 * * * /Users/vsb/dotfiles/scripts/sort-screenshots >> /tmp/sort-screenshots.log 2>&1
Dewey is a Claude Code agent that maintains this repo. There's no custom
runtime — it's just Claude Code reading a CLAUDE.md file, discovering
skills in .claude/skills/, and using project memory for cross-session state.
dewey # interactive session
dewey "question" # one-shot answer| Skill | What it does |
|---|---|
/audit |
Tiered neovim plugin staleness checker (3/6/12-month cadence) |
/history-analyze [zsh|nvim|all] |
Analyze command history for missing aliases, repeated patterns, tool suggestions |
/commands [topic] |
Full keybinding & command reference (neovim, zsh, tmux, git, cargo, opam, uv) |
/doc-sync |
Diff config against docs and propose updates |
/notes [topic] |
Lab notebook for recording findings |
History analysis runs through a committed sanitizer script
(.claude/skills/history-analyze/sanitize-history.sh) — Claude never sees raw
history, only frequency tables with secrets stripped and arguments abstracted.
The whole thing is four pieces that any repo can replicate:
-
CLAUDE.md— persona, architecture map, and a compact command reference that's always in context. This is the only file Claude Code reads automatically. (ours) -
.claude/skills/— slash commands loaded on demand. Each is a markdown prompt file. Skills keep expensive lookups (full command reference, audit logic, history analysis) out of the base context window. -
Project memory — a directory Claude Code persists across sessions (
~/.claude/projects/.../memory/). Dewey stores audit dates, discovered commands, and session notes here. No database, just markdown files. -
Shell alias — a one-liner in
.zshrcthat pins Claude Code to the repo directory and adds a system prompt for the greeting.
The pattern scales: add a skill file, reference it from CLAUDE.md, done.
See docs/dewey.md for the full technical breakdown.
- Shell aliases & functions — quick reference for everything in
.zshrc - NeoVim config — plugins, LSP, keybindings, REPL, DAP
- Cron jobs — scheduled tasks, PATH gotchas, full crontab
- Claude Code settings — permissions, symlink strategy, per-project overrides
- Tailscale setup — mesh VPN and SSH between Macs
- Ergonomic desk setup — sit-stand desk heights and monitor positioning
- Tmux & agent workflow — session layout, keybindings, parallel agent launcher
- Dewey internals — how the agent works, security model, memory
Only tested on macOS.