name: chezmoi-dotfiles description: Manage dotfiles using chezmoi. Use when creating, modifying, or deploying dotfiles, shell functions, or configuration files in this repository.
Chezmoi Dotfiles Management
This skill helps manage dotfiles using chezmoi in this repository.
Repository Location
All dotfiles are managed in ~/.local/share/chezmoi which is a git repository synced to GitHub at https://github.com/craigtkhill/dotfiles.git.
Critical Workflow
When creating or modifying dotfiles, you MUST follow this exact order:
-
Navigate to chezmoi source directory
cd ~/.local/share/chezmoi -
Create or edit files using chezmoi naming conventions
- Use
dot_prefix for dotfiles (e.g.,dot_gitconfig→~/.gitconfig) - Preserve directory structure (e.g.,
dot_config/fish/functions/→~/.config/fish/functions/) - You can edit directly in
~/.local/share/chezmoior usechezmoi edit <target-path>
- Use
-
Apply changes to home directory
chezmoi apply # or for specific file: chezmoi apply ~/.config/fish/functions/myfile.fish -
Commit and push to GitHub
cd ~/.local/share/chezmoi git add . git commit -m "your message" git push origin main -
Verify it's managed
chezmoi managed | grep myfile
Common Commands
chezmoi status- Show what has changedchezmoi diff- Show detailed differenceschezmoi managed- List all managed fileschezmoi apply- Apply changes from dotfiles to home directorychezmoi apply --force- Force apply, overriding conflictschezmoi add <file>- Add a file to chezmoi trackingchezmoi re-add <file>- Re-add a tracked file
Fish Shell Specifics
Fish automatically loads functions from ~/.config/fish/functions/. Each function must be in its own file named functionname.fish.
After adding new fish functions:
- Copy to
~/.config/fish/functions/ - Functions are immediately available (fish auto-loads them)
- No need to source or reload
Adding Existing Files to Chezmoi
If you want to add an existing file from your home directory to chezmoi:
chezmoi add ~/.config/fish/functions/myfile.fish
This will copy the file to ~/.local/share/chezmoi with proper naming and make it managed.
Common Mistakes
❌ DON'T: Edit files directly in ~/.config/fish/ without updating chezmoi
- Changes will be lost when chezmoi applies source files
❌ DON'T: Forget to commit and push changes to GitHub
- Your dotfiles won't be backed up or available on other machines
✅ DO: Edit in ~/.local/share/chezmoi → Apply → Commit → Push