This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal dotfiles managed by chezmoi. Targets macOS (darwin) only. The source of truth lives in home/ and gets applied to ~ via chezmoi.
chezmoi apply # Apply all changes to home directory
chezmoi diff # Preview what would change
chezmoi add ~/.<file> # Add a new dotfile to source control
chezmoi edit ~/.<file> # Edit a managed file (opens source copy)
chezmoi cd # cd into this source directory
chezmoi data # Show template data (email, name, OS, etc.)All managed files live under home/. Chezmoi uses naming conventions to control behavior:
dot_prefix → maps to.(e.g.,dot_zshrc→~/.zshrc).tmplsuffix → Go template, rendered with chezmoi dataexecutable_prefix → file gets chmod +x on applyhome/.chezmoidata/packages.yaml→ Package lists (brew/cask for macOS)home/.chezmoiscripts/→ Run scripts triggered by chezmoi (install packages, set macOS defaults, change shell)home/.chezmoitemplates/→ Reusable template fragments (sharedask_user/command_existshelpers)home/.chezmoi.toml.tmpl→ Prompts for gitemailandnameonchezmoi inithome/.chezmoiexternal.toml→ External dependencies (currently: tmux plugin manager)home/.chezmoiignore→ Files excluded from apply (neovim plugin dirs, repo metadata)
| Target path | Source file | Notes |
|---|---|---|
~/.zshrc |
dot_zshrc |
Zinit plugin manager, starship prompt, fzf, zoxide |
~/.gitconfig |
dot_gitconfig.tmpl |
Template — uses {{ .email }} and {{ .name }} |
~/.config/nvim/ |
dot_config/nvim/ |
LazyVim-based neovim config (lazy.nvim plugin manager) |
~/.config/ghostty/ |
dot_config/ghostty/ |
Terminal emulator config with catppuccin themes |
~/.tmux.conf |
dot_tmux.conf |
TPM pulled via .chezmoiexternal.toml |
~/.aerospace.toml |
dot_aerospace.toml |
macOS tiling window manager |
~/.config/sketchybar/ |
dot_config/sketchybar/ |
macOS menu bar replacement |
~/.config/zsh/ |
dot_config/zsh/ |
Shell aliases, env vars, keybinds (sourced by .zshrc) |
Scripts and templates use {{ if eq .chezmoi.os "darwin" }} guards. When editing .tmpl files, preserve these conditionals.
Add to home/.chezmoidata/packages.yaml under the appropriate section (darwin.brews, darwin.casks). The run_onchange_*-install-packages.sh.tmpl scripts will auto-install on next chezmoi apply.
cz=chezmoi, vim=nvim, lgit=lazygit, ls=eza, cat=bat, gs/ga/gd/gc/gp for common git operations.