This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a personal dotfiles repository for configuring macOS/Linux with ZSH and Homebrew. It uses a symlink-based approach where files in symlinks/ ending with .symlink are linked to the home directory.
./setup # Full install: Homebrew, packages, symlinks, macOS configbrew bundle # Install all packages from Brewfile
brew bundle cleanup # Remove packages not in Brewfile./scripts/install-symlinks # Re-run symlink installation./scripts/configure-macos # Apply macOS defaults (Dock, keyboard, etc.)ZSH_PROF=1 zsh # Profile shell startup timebin/- Executable scripts added to$PATHsymlinks/.zshrc.symlink- Main ZSH configuration (env, aliases, completions, tool init)functions/- ZSH functions and completion definitionssymlinks/- Files with.symlinksuffix get linked to$HOME(suffix removed)plugins/- ZSH plugins (notablyzsh-deferfor lazy loading)scripts/- Setup and installation scripts
Files ending in .symlink anywhere under symlinks/ are symlinked to the equivalent path in $HOME:
symlinks/.zshrc.symlink→~/.zshrcsymlinks/.config/mise.symlink/→~/.config/mise/
.zshrcsets up Homebrew environment- Loads
zsh-deferplugin for deferred loading - Applies integrated shell and tool configuration from
.zshrc - Sources
~/.localrcif it exists (machine-specific overrides) - Defers slow plugins (autosuggestions, syntax highlighting) for faster startup
Brewfile- All packages, casks, and VS Code extensionssymlinks/.gitconfig.symlink- Git config with SSH signing via 1Passwordsymlinks/.zshrc.symlink- Consolidated ZSH configconfig/starship/config.toml- Prompt configurationsymlinks/.config/fish.symlink/config.fish- Consolidated Fish config
- New ZSH config: Edit
symlinks/.zshrc.symlink - New dotfile: Add to
symlinks/with.symlinksuffix, run./scripts/install-symlinks - New executable: Add to
bin/- automatically in$PATH - New ZSH function: Add to
functions/