Add "lessons/patterns/sync-entire-plugin-directory-not-individual-files"
@@ -0,0 +1,52 @@
|
||||
# Sync ENTIRE Plugin Directory, Not Individual Files
|
||||
|
||||
## Date
|
||||
2026-02-02
|
||||
|
||||
## Summary
|
||||
|
||||
When syncing source changes to the installed marketplace, use `rsync` to sync the ENTIRE plugins directory. Do NOT cherry-pick individual files.
|
||||
|
||||
## What I Did Wrong
|
||||
|
||||
1. Made changes that touched agents, commands, skills, and other files
|
||||
2. Only synced agent files: `for f in plugins/*/agents/*.md; do cp "$f" ...`
|
||||
3. Installed marketplace was in INCONSISTENT STATE
|
||||
4. Plugin failed to load
|
||||
5. Wasted user's time debugging the wrong thing
|
||||
|
||||
## The Fix
|
||||
|
||||
```bash
|
||||
rsync -av --exclude='.git' --exclude='.venv' --exclude='node_modules' \
|
||||
plugins/ ~/.claude/plugins/marketplaces/leo-claude-mktplace/plugins/
|
||||
```
|
||||
|
||||
## Why This Matters
|
||||
|
||||
A commit often touches MULTIPLE file types:
|
||||
- Agent frontmatter
|
||||
- Command files
|
||||
- Skill files
|
||||
- Hook scripts
|
||||
- plugin.json
|
||||
|
||||
Cherry-picking only some files leaves the marketplace in a broken state where files reference things that don't exist or have mismatched versions.
|
||||
|
||||
## Rule
|
||||
|
||||
**ALWAYS use rsync to sync the entire plugins directory after ANY change.**
|
||||
|
||||
Never do:
|
||||
- `cp` of individual files
|
||||
- Selective syncing based on what you THINK changed
|
||||
|
||||
## Stupid Mistake Count
|
||||
|
||||
This is yet another instance of me assuming I know what changed instead of just syncing everything properly.
|
||||
|
||||
---
|
||||
**Tags:** sync, rsync, marketplace, plugin-updates, stupid-mistakes
|
||||
|
||||
---
|
||||
**Tags:** sync, rsync, marketplace, plugin-updates, stupid-mistakes
|
||||
Reference in New Issue
Block a user