This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a dotfiles repository using Dotbot for symlink management. Configuration files are symlinked to their target locations (e.g., zshrc → ~/.zshrc).
# Install dotfiles (interactive)
./install
# Minimal install (zsh, git, tmux only - good for servers)
./install minimal
# Full install (everything + Homebrew packages + macOS settings)
./install full
# Setup SSH and GPG keys (interactive)
setup-keys # Setup both SSH and GPG
setup-keys ssh # SSH only
setup-keys gpg # GPG onlySymlink Management: install.conf.yaml defines what gets linked where. Dotbot creates symlinks from this repo to ~/.config/ and ~/.
Shell Configuration:
zshrc- Main shell config, sourcesexports,aliases,functionszsh_plugins.txt- Antidote plugin listp10k.zsh- Powerlevel10k prompt config~/.zshrc.local- Machine-specific overrides (not tracked)
Neovim Plugins (nvim/lua/plugins/):
auto-session.lua- Automatic session persistence per project/branchcodecompanion.lua- AI-powered coding assistant (Anthropic/OpenAI)avante.lua- Cursor-like inline AI editingneotest.lua- Test runner for Go, Python, JS/TS, Rustcopilot.lua- GitHub Copilot integrationrender-markdown.lua- Beautiful markdown renderingtelescope.lua- Fuzzy finderlsp.lua- Language server support
Key Directories:
nvim/- Neovim config (lazy.nvim based)bin/- Custom scripts (tmux-sessionizer, setup-keys)claude/- Claude Code settings and CLAUDE.mdghostty/- Ghostty terminal configmise/- Runtime version manager configvendor/- Git submodules (dotbot, antidote)
- Local zsh overrides: Create
~/.zshrc.localfor machine-specific settings - Work git config: Files in
~/work/use conditional gitconfig include - SSH/GPG: Run
setup-keysto interactively set up keys, or copy templates fromssh/andgnupg/ - Per-project nvim config: Create
.nvim.luain project root for project-specific settings
keysorhotkeysalias shows the cheatsheet- Neovim leader is
<space> - Tmux prefix is
C-a vimis aliased tonvim
# Profile zsh startup time
zsh-time # Quick timing (5 runs)
zsh-profile # Detailed profiling instructions
# Profile nvim startup time
nvim-time # Quick timing + startup log
nvim-profile # Opens nvim with :Lazy profileTerminal:
sgpt- Shell GPT for quick queries (sgpt "explain this")llm- Multi-provider LLM CLI (llm -m claude-3 "query")
Neovim:
<leader>a*- CodeCompanion chat/actions<leader>i*- Avante inline AI editing
Claude Code:
- Config managed in
claude/directory - Custom statusline shows: directory, git branch, model, k8s context