Agent skill
system-updates
This skill should be used when the user asks to "update my system", "run system updates", "update everything", "update brew yadm pass", or mentions running comprehensive system updates including Homebrew, yadm, and pass.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/system-updates
SKILL.md
You are an expert at managing system updates across multiple tools simultaneously. When invoked, you will coordinate updates for Homebrew, yadm dotfiles, and the pass password manager in a single operation.
Update Workflow
When the user requests system updates, execute the following operations in sequence:
1. Update yadm (Dotfiles)
Pull the latest dotfiles from the remote repository:
yadm pull
Expected behavior:
- If already up-to-date: Shows "Already up to date."
- If changes pulled: Shows files updated and any merge messages
- If conflicts: Report conflicts to user for manual resolution
2. Update pass (Password Store)
Pull the latest password store changes:
pass git pull
Expected behavior:
- If already up-to-date: Shows "Already up to date."
- If changes pulled: Shows Git pull output with updated refs
- If conflicts: Report conflicts to user for manual resolution
3. Update Homebrew
Update Homebrew itself and upgrade all installed packages:
brew update && brew upgrade
Expected behavior:
brew update: Updates Homebrew formulae and cask definitionsbrew upgrade: Upgrades all outdated packages- Shows list of packages being upgraded
- May take several minutes depending on outdated packages
Execution Strategy
Run all updates in sequence with proper error handling:
echo "==> Updating yadm dotfiles..."
yadm pull
echo "==> Updating pass password store..."
pass git pull
echo "==> Updating Homebrew..."
brew update && brew upgrade
Success Criteria
A successful update completes when:
- yadm pull completes without conflicts
- pass git pull completes without conflicts
- brew update refreshes formulae
- brew upgrade upgrades all outdated packages
Error Handling
yadm Conflicts
If yadm pull reports merge conflicts:
# Show conflicted files
yadm status
# User must resolve manually:
# 1. Edit conflicted files
# 2. yadm add <resolved-files>
# 3. yadm commit
pass Conflicts
If pass git pull reports merge conflicts:
# Navigate to password store
cd ~/.password-store
# Show conflicted files
git status
# User must resolve manually:
# 1. Edit conflicted files
# 2. git add <resolved-files>
# 3. git commit
# 4. pass git push
Homebrew Errors
If brew upgrade fails:
- Report specific package failures
- Suggest running
brew doctorfor diagnostics - May need to uninstall problematic packages
Post-Update Actions
After successful updates:
-
Verify yadm alternates (if you use OS-specific configs):
bashyadm alt -
Check for Brewfile changes (if Brewfile is tracked):
bashbrew bundle check --file=~/.zshrcd/conf.d/Brewfile -
Report summary to user:
- yadm: "Dotfiles up to date" or "Pulled X changes"
- pass: "Password store up to date" or "Pulled X changes"
- brew: "Upgraded X packages" or "All packages up to date"
Integration with yadm-utilities
If yadm operations become complex (conflicts, bootstrap needed, alternate management), invoke the yadm-utilities skill for detailed guidance.
Common Scenarios
Scenario 1: All Up to Date
==> Updating yadm dotfiles...
Already up to date.
==> Updating pass password store...
Already up to date.
==> Updating Homebrew...
Already up-to-date.
Response: "All systems up to date. No updates needed."
Scenario 2: Updates Available
==> Updating yadm dotfiles...
Updating abc123..def456
Fast-forward
.zshrcd/conf.d/new-tool.zsh | 10 ++++++++++
1 file changed, 10 insertions(+)
==> Updating pass password store...
remote: Counting objects: 5, done.
Updating abc123..def456
==> Updating Homebrew...
==> Upgrading 3 outdated packages:
kubectl 1.28.0 -> 1.29.0
helm 3.13.0 -> 3.13.1
k9s 0.27.0 -> 0.28.0
Response: "Updates completed successfully:
- yadm: Pulled 1 file change
- pass: Updated password store
- brew: Upgraded 3 packages (kubectl, helm, k9s)"
Scenario 3: Conflicts Detected
==> Updating yadm dotfiles...
error: Your local changes to the following files would be overwritten by merge:
.zshrcd/.zshrc
Please commit your changes or stash them before you merge.
Response: "Update stopped: yadm has uncommitted changes. Please run:
yadm status
yadm add .zshrcd/.zshrc
yadm commit -m "Your commit message"
Then retry the update."
Best Practices
- Run updates regularly: Weekly or bi-weekly to avoid large update batches
- Review changes: Check what was updated, especially for yadm dotfiles
- Test after updates: Ensure shell still works, tools function correctly
- Commit local changes first: Always commit yadm changes before pulling
- Backup before major updates: Especially for critical system tools
Quick Command Reference
| Command | Purpose |
|---|---|
yadm pull |
Update dotfiles from remote |
pass git pull |
Update password store |
brew update |
Update Homebrew formulae |
brew upgrade |
Upgrade outdated packages |
yadm status |
Check uncommitted dotfile changes |
brew outdated |
List packages with available updates |
Security Considerations
- yadm: Never commit secrets or API keys
- pass: Encrypted by design, safe to sync
- brew: Review cask updates for trusted sources
You should execute all three updates efficiently, handle errors gracefully, and provide clear feedback to the user about what was updated.
Didn't find tool you were looking for?