This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal dotfiles repository for macOS, managed by chezmoi. Owner: Bill de hÓra (dehora). Manages shell, git, editor, and terminal configuration deployed to ~.
chezmoi apply # Apply dotfiles to home directory
chezmoi diff # Preview changes before applying
chezmoi add <file> # Add a new dotfile to the repo
chezmoi edit <file> # Edit a managed file
chezmoi init # Re-initialize (re-prompts template variables)
chezmoi data # Show current template variable valuesdot_prefix: deployed as dotfile (dot_zshrc→~/.zshrc)private_dot_prefix: deployed with mode 0600 (private_dot_emacs.tmpl→~/.emacs).tmplsuffix: processed as Go template before deploymentdot_config/maps to~/.config/.chezmoiignore: prevents files (README.md, LICENSE) from being deployed to~
Templates use Go template syntax with chezmoi functions. Variables are defined in .chezmoi.toml.tmpl:
promptStringOnce— for stable values that rarely change (prompts once duringchezmoi init, then cached). Use for identity/credentials:git_email,git_name,git_signingkey,emacs_name,emacs_emailpromptString— for optional/changeable values that should re-prompt on everychezmoi init. Use for preferences/settings:roborev_default_agent,roborev_design_agent, etc.default "value"— provides a fallback when a variable is empty. Use in both the prompt assignment (default "codex" (promptString ...)) and in template output (default "codex" .varname | quote)
Access variables in templates as {{ .git_email }} (top-level data keys).
| Source file | Target | Templated | Notes |
|---|---|---|---|
dot_zshrc |
~/.zshrc |
No | Zsh with oh-my-zsh, Powerlevel10k, fnm/nvm/pyenv/sdkman/rtx/uv/cargo |
dot_zprofile |
~/.zprofile |
No | Zsh login shell profile |
dot_p10k.zsh |
~/.p10k.zsh |
No | Powerlevel10k prompt configuration |
dot_gitconfig.tmpl |
~/.gitconfig |
Yes | GPG signing, user identity from template vars |
dot_config/git/ignore |
~/.config/git/ignore |
No | Global gitignore |
private_dot_emacs.tmpl |
~/.emacs |
Yes | org-mode, org-journal, Dracula theme, Irish keyboard hash key fix |
dot_config/ghostty/config |
~/.config/ghostty/config |
No | Ghostty terminal settings |
private_dot_gnupg/gpg-agent.conf |
~/.gnupg/gpg-agent.conf |
No | 24h passphrase cache TTL |
private_dot_gnupg/common.conf |
~/.gnupg/common.conf |
No | Enables keyboxd backend |
dot_claude/CLAUDE.md |
~/.claude/CLAUDE.md |
No | Global Claude Code guidance |
private_dot_roborev/config.toml.tmpl |
~/.roborev/config.toml |
Yes | RoboRev code review tool, Anthropic API key from template vars |
Use present tense verbs in commit messages (e.g., "Adds emacs", "Ignores license", "Renames gitconfig template").
GPG signing is enabled. Before asking Claude to commit, unlock the GPG agent by running any signing operation (e.g., echo "test" | gpg --clearsign). The agent caches the passphrase for 24 hours (~/.gnupg/gpg-agent.conf).
- Non-templated files (
dot_zshrc): edit directly, standard shell syntax - Templated files (
.tmpl): use Go template syntax{{ .varname }}for variable interpolation; test withchezmoi diffbeforechezmoi apply - Private files (
private_dot_): will be deployed with restricted permissions; keep secrets in chezmoi template variables, not hardcoded