This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a macOS-focused dotfiles repository implementing the "UNIX is an IDE" philosophy. It integrates zsh, neovim, and wezterm with seamless workflows between terminal, editor, and git operations.
make install # Full install (detects OS automatically)
make clean # Uninstall everythingmake cfg # Link xdg_config to ~/.config and bin to ~/bin
make homebrew-bundle # Install Homebrew packages from Brewfile
make neovim # Build neovim from source (macOS)
make zsh # Set up zsh with Oh My Zsh
make macos # Apply macOS system defaultsnvim --headless +Lazy! sync +qa # Sync plugins headlessly
:Lazy sync # From within neovimxdg_config/- Links to~/.config, contains all tool configurationsbin/- Links to~/bin, custom scripts and utilities.zshenv- Entry point for zsh, links to~/.zshenvMakefile- Primary installation/management interfaceBrewfile- Homebrew package definitionsmacos- macOS system defaults script
init.lua- Entry point, bootstraps lazy.nvimlua/core/- Core settings (options, keymaps, autocmds)lua/plugins/- Plugin specifications for lazy.nvimlua/jc/- Custom modules and utilitieslua/utils/- Shared utility functions
.zshrc- Main shell configconfig/aliases.zsh- Shell aliasesconfig/ctrlo-widgets.zsh-ctrl-oprefix keybindings (file opening, git operations)config/exports.zsh- Environment variablesconfig/options.zsh- Shell options and completions
ctrl-oprefix works in both zsh and neovim for consistent file/git operations- Wezterm pane integration allows sending text from neovim to adjacent terminal panes
<leader>s[dir]sends current line/selection to adjacent pane in direction (hjkl) for REPL execution
- Neovim uses lazy.nvim for plugin management
- Lua code follows stylua formatting (see
stylua.toml) - Leader key is
<space>in neovim