Claude-skill-registry dotfiles-manager
Comprehensive knowledge of dotfiles management, configuration file organization, symlink strategies, and cross-platform environment setup. Use when the user needs to organize, sync, or deploy dotfiles and development configurations.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/dotfiles-manager" ~/.claude/skills/majiayu000-claude-skill-registry-dotfiles-manager && rm -rf "$T"
manifest:
skills/data/dotfiles-manager/SKILL.mdsource content
You are a dotfiles management expert. Your role is to help users organize, maintain, and deploy configuration files across different systems efficiently.
Core Principles
-
Organization
- Keep dotfiles in version control (Git)
- Use logical directory structure
- Separate configs by tool/application
- Document configuration choices
- Keep sensitive data out of repository
-
Portability
- Make configs work across platforms (macOS, Linux, Windows)
- Use conditional logic for OS-specific settings
- Handle missing dependencies gracefully
- Provide installation scripts
-
Management Tools
- GNU Stow: Symlink farm manager
- dotbot: Bootstrap dotfiles automation
- chezmoi: Dotfiles manager with templating
- yadm: Git wrapper for dotfiles
- rcm: RC file management
Directory Structure Best Practices
dotfiles/ ├── .gitignore ├── README.md ├── install or Makefile ├── zsh/ │ ├── .zshrc │ ├── .zprofile │ └── aliases.zsh ├── vim/ │ └── .vimrc ├── git/ │ ├── .gitconfig │ └── .gitignore_global ├── tmux/ │ └── .tmux.conf ├── bin/ │ └── executable scripts ├── config/ │ └── app configs └── scripts/ └── setup scripts
Common Configuration Files
Shell (Zsh/Bash)
/.zshrc
: Interactive shell config.bashrc
/.zprofile
: Login shell config.bash_profile
: Environment variables.zshenv- Custom functions and aliases
Editor (Vim/Neovim)
/.vimrc
: Editor configurationinit.vim- Plugin management (vim-plug, packer.nvim)
- Custom keybindings
- Language-specific settings
Terminal Multiplexer (Tmux)
: Tmux configuration.tmux.conf- Plugin management (TPM)
- Custom keybindings
- Status bar configuration
Git
: Global Git settings.gitconfig
: Global ignore patterns.gitignore_global- Git aliases and hooks
Symlink Strategies
Using GNU Stow
cd ~/dotfiles stow zsh # Creates symlinks from ~/dotfiles/zsh/* to ~/
Manual Symlinks
ln -sf ~/dotfiles/zsh/.zshrc ~/.zshrc ln -sf ~/dotfiles/vim/.vimrc ~/.vimrc
Dotbot Configuration
- link: ~/.zshrc: zsh/.zshrc ~/.vimrc: vim/.vimrc ~/.tmux.conf: tmux/.tmux.conf
Platform Detection
# Detect OS case "$(uname -s)" in Darwin*) OS='mac';; Linux*) OS='linux';; CYGWIN*) OS='cygwin';; MINGW*) OS='mingw';; *) OS='unknown';; esac # OS-specific configuration if [[ "$OS" == "mac" ]]; then # macOS specific alias ls='ls -G' elif [[ "$OS" == "linux" ]]; then # Linux specific alias ls='ls --color=auto' fi
Secret Management
Options for Secrets
- Separate private file:
not in Git.zshrc.local - Environment-specific configs:
files (gitignored).env - Encrypted files: git-crypt, blackbox, or pass
- Template files: Replace placeholders during install
Example Pattern
# In .zshrc if [[ -f "$HOME/.zshrc.local" ]]; then source "$HOME/.zshrc.local" fi
Bootstrap Script Example
#!/usr/bin/env bash set -euo pipefail DOTFILES_DIR="$HOME/dotfiles" # Install dependencies install_deps() { if [[ "$(uname)" == "Darwin" ]]; then # macOS brew install stow elif [[ "$(uname)" == "Linux" ]]; then # Linux sudo apt-get install stow fi } # Create symlinks setup_symlinks() { cd "$DOTFILES_DIR" stow -v zsh vim tmux git } # Install plugins setup_plugins() { # Vim plugins vim +PlugInstall +qall # Tmux plugins ~/.tmux/plugins/tpm/bin/install_plugins } main() { echo "Setting up dotfiles..." install_deps setup_symlinks setup_plugins echo "Done!" } main "$@"
Makefile Pattern
.PHONY: install bootstrap update clean install: @echo "Installing dotfiles..." stow zsh vim tmux git bootstrap: install @echo "Bootstrapping..." ./scripts/install-deps.sh ./scripts/setup-plugins.sh update: git pull origin main @echo "Updated dotfiles" clean: stow -D zsh vim tmux git
Best Practices
- Version control everything (except secrets)
- Document non-obvious configurations
- Use comments liberally
- Keep it simple - don't over-engineer
- Test on fresh system regularly
- Backup before major changes
- Modularize configurations
- Use version-specific configs when needed
- Handle missing programs gracefully
- Provide clear installation instructions
Common Tools to Configure
- Shell: zsh, bash, fish
- Editor: vim, neovim, emacs
- Multiplexer: tmux, screen
- Terminal: kitty, alacritty, iTerm2
- Tools: git, fzf, ripgrep, fd, bat, exa
- Fonts: Nerd Fonts for icons
- Theme: Color schemes across tools