This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal dotfiles for macOS — shell configs, editor settings, and package snapshots. It does not use symlinks; instead, update.sh manually copies files from the live system into the repo.
Prerequisites: brew, mise, pnpm must already be installed.
mise use node@22
pnpm installsh update.shThis copies current system configurations into dotfiles/ and packages/. Nothing installs from the repo back to the system — sync is one-directional (system → repo).
dotfiles/ # Config files copied from ~/ and app support dirs
packages/ # Snapshot lists of installed packages (brew, npm, uv)
update.sh # Sync script — source of truth for what gets captured
update.sh defines the scope of the repo. To add a new config file, add a cp line there.
packages/ are snapshot text files, not lockfiles. They reflect what's installed on the machine at sync time.
Husky runs gitleaks git -v --staged before every commit to prevent secrets from leaking out of .zshrc, .zprofile, or .gitconfig. If a commit is blocked, inspect the diff for API keys, tokens, or credentials before forcing through.
| File | Configures |
|---|---|
dotfiles/.zshrc |
Zsh shell, PATH, aliases, completions, Oh-my-zsh plugins |
dotfiles/.zprofile |
Brew init, mise shims, Kiro CLI |
dotfiles/.gitconfig |
Git settings; ~/Code/Internal/ uses a separate conditional config |
dotfiles/zed.settings.json |
Zed editor with AWS Bedrock / Claude AI via MCP servers |
dotfiles/ghostty |
Ghostty terminal emulator |
dotfiles/.starship.toml |
Starship prompt |
dotfiles/.vale.ini |
Vale writing linter (Google, proselint, write-good styles) |
dotfiles/docker.config.json |
Docker with Colima runtime and ECR credential helpers |