This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal dotfiles managed with RCM (thoughtbot's dotfile manager). Files are organized into tag-* directories that RCM symlinks into $HOME as dotfiles.
- Full install:
./install— installs Homebrew, Brewfile packages, links dotfiles, sets up asdf plugins - Link dotfiles:
rcup -d .(usesrcrcfor config — excludes, tags, undotted dirs) - Unlink dotfiles:
rcdn - Add a new dotfile:
mkrc <file>(with-t <tag>for tag-specific) - List linked dotfiles:
lsrc - Reload shell:
qqorreload!
GitHub Actions runs on push/PR (.github/workflows/dotfiles.yml):
- luacheck — lints Lua files (Neovim config)
- StyLua — checks Lua formatting (
stylua --check .)
When editing Neovim Lua files, ensure they pass both luacheck and StyLua formatting.
- Never use absolute paths in config files. Use
$HOMEor~instead.
Each tag-* directory maps to an RCM tag (configured in rcrc via TAGS). Files inside are symlinked to $HOME with the tag prefix stripped:
tag-shell/zshrc→~/.zshrctag-editor/config/nvim/init.lua→~/.config/nvim/init.luatag-shell/gitconfig→~/.gitconfig
Active tags: shell editor terminal
rcrc also defines EXCLUDES (files that should not be symlinked, like Brewfiles and install scripts) and UNDOTTED (dirs symlinked without a leading dot, e.g., Library).
Split across three Brewfiles:
Brewfile— taps and CLI formulaeBrewfile.casks— GUI applicationsBrewfile.mas— Mac App Store apps
Consolidates zsh, git, asdf, and tmux configs:
zshenv— environment variables, Homebrew shell env, PATH setupzshrc— zsh plugins (sourced from Homebrew), shell options, Starship prompt, sesh/tmux integrationaliases— shell aliases (eza, bat, trash, etc.)bin/— custom scripts added to PATHgitconfig— uses delta as pager, 1Password SSH signing for commits, conditional includes for work/personal profiles based on directory (~/Work/,~/Github/,~/Gitlab/)gitignore— global gitignoreasdfrc,tool-versions,default-*— asdf version manager config and default packagesconfig/tmux/tmux.conf— tmux configuration
Consolidates Neovim, Zed, and IdeaVim configs:
config/nvim/— LazyVim-based Neovim config. Plugin specs inlua/plugins/, extras inlua/plugins/extras/, config files (keymaps, options, autocmds) inlua/config/config/zed/— Zed editor settings and keybindingsideavimrc— IdeaVim (JetBrains) config
Terminal emulator configs:
config/ghostty/config— Ghostty terminal configconfig/wezterm/wezterm.lua— WezTerm terminal configconfig/starship.toml— Starship prompt theme