Dotfiles Sync
Manage dotfiles using the bare git repo technique with the config alias. Always read README.
The config alias is defined as:
alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
Skills
Skills under ~/.claude/skills/ fall into three categories:
- Third-party skills — tracked in the
npx skillslockfile at~/.agents/.skill-lock.json(committed to dotfiles). Installed/updated vianpx skills addfrom the lockfile. Their skill folders themselves are not committed to the dotfiles repo. - Custom skills — written by the user, committed to the dotfiles repo. Before staging a new custom skill, ask the user to confirm they want it tracked.
- Computer-specific skills — left untracked, never committed.
Workflow
Step 1: Pull and Rebase
config pull --rebase
If this fails with conflicts:
- Show the user which files have conflicts
- Read the conflicted files and help resolve them
- After resolution, run
config add <file>for each resolved file - Continue with
config rebase --continueor drop the stash if needed
Step 2: Sync Lockfile Skills
Run after every pull to ensure every third-party skill listed in ~/.agents/.skill-lock.json is installed:
npx skills add
Step 3: Check Status
config status
Show the user:
- How many commits ahead/behind of origin
- Any modified files not yet staged
Step 4: Check for Untracked Files
Since showUntrackedFiles is disabled, manually check key directories for new files:
config ls-files --others --exclude-standard ~/.claude/skills/
Each untracked path looks like .claude/skills/<folder>/.... Compare <folder> against the keys in ~/.agents/.skill-lock.json:
- Match → skip (managed by lockfile, never commit).
- No match → custom or computer-specific. Ask the user whether to add it. Do not stage without confirmation.
Step 5: Show Diff
If there are unstaged changes:
config diff
Summarize what changed in each file concisely.
Step 6: Commit (if changes exist)
If there are changes to commit:
- Stage all modified tracked files:
config add -u - Draft a concise commit message based on the diff
- Commit with:
config commit -m "<commit message>"
Step 7: Push
If there are commits to push:
config push
Step 8: Summary
Report final status:
- Commits pushed (if any)
- Current sync state with origin