| name | dotfile-management |
| description | Manage Evan's dotfiles using the dots utility. Use this skill when working with anything in ~/.local/etc or ~/.config. |
Dotfile Management Skill
Manage Evan's dotfiles using the dots utility for organizing and installing configuration files.
Overview
Dotfiles are managed in /home/evan/.local/etc (this repository) using the dots utility. The workflow is:
- Edit configuration files in the appropriate group
- Run
dots install to install/update configs
- Test the changes
- Repeat until satisfied
- Commit with descriptive message
Repository Structure
/home/evan/.local/etc/
├── base/ # Core configs for all environments
├── common/ # Platform-specific (osx/linux) and development configs
└── machines/ # Machine-specific configurations
├── home/ # Home machine configs
├── work/ # Work machine configs
└── server/ # Server machine configs (current machine)
Active Configuration
Check current profile and groups:
~/.local/bin/dots config active
Current setup:
- Profile:
server
- Groups:
base + machines/server
Common Commands
View what will be installed
~/.local/bin/dots files
See differences before installing
~/.local/bin/dots diff
Install/update dotfiles
~/.local/bin/dots install
List available profiles
~/.local/bin/dots config profiles
Switch profile (rare)
~/.local/bin/dots config use <profile>
File Installation
- Default install path:
$HOME/.config (follows XDG Base Directory Standard)
- Files can have
.install scripts that run after installation
- Files can have
.override suffix to completely replace base files
- Files without
.override are appended/merged with base files
Workflow Guidelines
When editing configs:
-
Identify the right group:
base/ - Used across ALL machines (bash, vim, etc.)
common/development/ - Development tools
common/platform-osx/ - macOS-specific
machines/server/ - This server only
-
Edit the config file in the appropriate location
-
Install and test:
~/.local/bin/dots install
-
Repeat until satisfied
-
Commit with clear message:
git add <files>
git commit -m "<component>: <what changed>"
When asked to modify dotfiles:
- DO: Iterate with
dots install between changes to test
- DO: Use simple, descriptive commit messages
- DO: Edit files in the source groups, not in ~/.config directly
- DON'T: Commit until changes are tested and working
- DON'T: Change profiles/groups unless explicitly needed (rare)
Examples
Adding a bash alias
- Edit
base/bash/aliases or machines/server/bash/aliases
- Run
~/.local/bin/dots install
- Test:
source ~/.config/bash/aliases
- Commit:
git commit -m "bash: Add new alias for X"
Updating vim config
- Edit
base/vim/vimrc
- Run
~/.local/bin/dots install
- Test: Open vim and verify
- Commit:
git commit -m "vim: Add/update X configuration"
Server-specific config
- Edit or create file in
machines/server/
- Run
~/.local/bin/dots install
- Test the changes
- Commit:
git commit -m "<tool>: Server-specific X"
Important Notes
- The
dots binary is at ~/.local/bin/dots
- Configuration groups cascade (later groups extend/override earlier ones)
- Shebang lines are removed when files are merged/appended
- Installation scripts must be executable and have a shebang
- Always test with
dots install before committing