Use when reconciling chezmoi local-vs-remote drift, reviewing pending machine-state changes, or performing safe remote-first dotfiles sync across machines.
Scanned 9/20/2026
Install to Claude Code
npx -y skills add lev-os/agents --skill workflow-dotfiles-sync --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Workflow Dotfiles Sync?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lev-os-workflow-dotfiles-sync)More formats (shields.io, HTML) on the badges page.
---
name: workflow-dotfiles-sync
description: Use when reconciling chezmoi local-vs-remote drift, reviewing pending machine-state changes, or performing safe remote-first dotfiles sync across machines.
---
# Workflow: Dotfiles Sync
NEVER REBASE. ALWAYS MERGE.
## Terminology
| Term | Meaning | Path |
|------|---------|------|
| **local** | The actual dotfiles on this machine (chezmoi target) | `$HOME/.<file>` |
| **remote** | The chezmoi source repo, git-tracked and pushed | `$HOME/.local/share/chezmoi` |
Always use "local" and "remote" when presenting drift reports. Never use chezmoi's internal "source/target" terminology in user-facing output.
## Trigger
Run this workflow when you need to:
- reconcile local-vs-remote dotfile drift
- inspect pending chezmoi changes before apply
- promote intentional local changes back into remote
- perform a safe remote-first sync across machines
## Inputs
- Chezmoi remote repo at `$HOME/.local/share/chezmoi`
- Local state under `$HOME`
- `dotfiles` helper available on PATH
- Optional handoff context in `.lev/pm/handoffs/`
## Steps
1. Run `dotfiles status` and `dotfiles sync`.
2. Classify results into:
- remote-only change (exists in remote, not reflected locally)
- local-only intentional drift (local changed, remote is stale)
- same-area conflict (both changed)
- runtime noise (volatile files, timestamps, caches)
3. Resolve intent into remote first:
- remote-only wins automatically UNLESS the local removal was intentional (ask)
- local-only intentional drift gets promoted to remote via `chezmoi re-add`
- same-area conflicts must pause and escalate
4. If remote changed:
- review `git -C ~/.local/share/chezmoi status --short`
- commit
- fetch, then merge remote changes
- push
5. Only after remote is settled:
- run `chezmoi apply --force` on the chosen local set
6. Re-run `dotfiles sync` to verify the remaining drift is only expected runtime noise or clean.
## Team
| Role | Responsibility |
|------|---------------|
| dotfiles operator | Reads `dotfiles` planner output, classifies drift, and updates remote |
| git reconciler | Commits, pulls, pushes the chezmoi remote repo once intent is resolved |
| escalation agent | Opens AgentPing or human review when same-area conflicts exist |
## Outputs
- Updated chezmoi remote repo state
- Updated local home state after apply
- Dry-run report at `~/.local/state/lev/dotfiles-sync-plan.latest.txt`
- Optional handoff updates documenting decisions and escalation points
## Validation
- `dotfiles sync` completes without mutating state and produces a current report
- Any committed remote changes are pushed successfully
- `chezmoi apply --force` completes only after remote is reconciled
- Same-area conflicts are escalated, never auto-merged
- Final `dotfiles status` reflects either clean state or explicitly accepted runtime noise
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!