Managing Work Dotfiles
This skill manages work-specific dotfiles using a separate git bare repo, keeping them isolated from personal dotfiles.
Repository Info
-
Remote: git@ghe.spotify.net:thopper/dotfiles.git
-
Work tree: $HOME
-
Git directory: ~/.local/share/yadm-work/repo.git
-
Function: yadm-work (defined in ~/.config/fish/fish-work.fish )
Key Principle: Use yadm-work
The yadm-work function wraps git with the correct directories:
yadm-work status yadm-work add <file> yadm-work commit -m "message" yadm-work push
This is equivalent to:
git --git-dir="$HOME/.local/share/yadm-work/repo.git" --work-tree="$HOME" <command>
Initial Setup
If not yet initialized on a new machine:
Create the directory
mkdir -p ~/.local/share/yadm-work
Clone as bare repo
git clone --bare git@ghe.spotify.net:thopper/dotfiles.git ~/.local/share/yadm-work/repo.git
Checkout files to home directory
yadm-work checkout
Getting Current State
yadm-work status # Show modified/staged files yadm-work ls-files # List all tracked work files yadm-work diff # Show unstaged changes yadm-work remote -v # Verify remote is Spotify GHE
Core Operations
Pull from Remote
yadm-work pull
If merge conflicts occur:
-
Run yadm-work status to see conflicted files
-
Edit files to resolve conflicts
-
Stage resolved files: yadm-work add <file>
-
Complete the merge: yadm-work commit
Commit and Push Changes
yadm-work add <file> # Stage specific file yadm-work add -u # Stage all modified tracked files yadm-work commit -m "message" # Commit with message yadm-work push # Push to Spotify GHE
Modify Configuration Files
-
Find the relevant file: yadm-work ls-files | grep -i <pattern>
-
Read and understand the current config
-
Make the requested changes
-
Stage, commit, and push: yadm-work add <modified-file> yadm-work commit -m "Update <config> to <what was changed>" yadm-work push
Adding/Removing Files
Add a new file to tracking
yadm-work add <new-file> yadm-work commit -m "Add <file> to work dotfiles" yadm-work push
Important: When adding new files under ~/.claude/ , also update ~/.claude/README.md to document them:
After adding new .claude files, update the README
yadm-work add ~/.claude/README.md yadm-work commit -m "Update README with new <item>" yadm-work push
Stop tracking a file (without deleting it)
yadm-work rm --cached <file> yadm-work commit -m "Stop tracking <file>" yadm-work push
Avoiding Conflicts with Personal Dotfiles
Critical: Never track the same file in both personal (yadm ) and work (yadm-work ) repos.
Check before adding:
Check if file is in personal dotfiles
yadm ls-files | grep <filename>
Check if file is in work dotfiles
yadm-work ls-files | grep <filename>
Currently Tracked Files
~/.claude/README.md ~/.claude/skills/add-knowledge/ ~/.claude/skills/investigating-pagerduty-incidents/ ~/.claude/skills/managing-work-dotfiles/ ~/.claude/skills/monitor-deploy/
Useful Commands
yadm-work log --oneline -10 # Recent commits yadm-work show HEAD # Last commit details yadm-work stash # Stash changes temporarily yadm-work stash pop # Restore stashed changes