Personal configuration files, managed with symlinks.
.agents/ # Claude Code agent skills (gitignored; fetched by update.fish)
.config/
fish/ # Fish shell config + Fisher plugin list (fish_plugins)
gh/ # GitHub CLI config
neofetch/ # Neofetch config
yazi/ # Yazi file manager config
zed/settings.json # Zed editor settings
ghostty/ # Ghostty terminal config
.gitconfig # Git configuration
.gitignore_global # Global gitignore
Brewfile # Homebrew bundle
install.fish # New machine bootstrap
update.fish # Ongoing maintenance
doctor.fish # Diagnose and repair
Install Homebrew first, then:
git clone <repo-url> ~/.dotfiles
cd ~/.dotfiles
fish install.fishThis creates all symlinks, bootstraps Fisher, installs Fish plugins, applies the Tide prompt config, and runs brew bundle install to install all Homebrew packages. Existing paths that are not symlinks are left untouched (you'll be prompted to overwrite or skip).
fish update.fish # skills + fisher + brew (all)
fish update.fish --skills-only
fish update.fish --fisher-only
fish update.fish --brew-onlySkill updates require git and jq. The lock file (.agents/.skill-lock.json) tracks each skill's source repo and hash; it is updated in place as skills are refreshed.
If symlinks or plugins get out of sync:
fish doctor.fish # diagnose — reports issues without changing anything
fish doctor.fish --fix # repair — re-creates broken symlinks, reinstalls missing pluginsDoctor will not overwrite paths that exist but are not symlinks; those require manual resolution.