Sync Claude Code skills and plugins across devices via GitHub.
- Push/Pull skills to/from a GitHub repo
- Push/Pull plugins — backup and restore installed plugins & marketplace list across devices
- Diff local vs remote to see what's changed
- Conflict detection with interactive resolution
- Self-update — update the plugin with one command
- Zero dependencies beyond
ghCLI (no build step, no runtime)
- GitHub CLI (
gh) installed and authenticated - A GitHub account
/plugin marketplace add JFan5/skills-sync
/plugin install skills-sync@skills-sync
claude --plugin-dir ./skills-sync/skills-sync:update
Then run /plugin install skills-sync@skills-sync and restart Claude Code.
/skills-sync:setup # Configure GitHub repo (creates if needed)
/skills-sync:push --all # Upload all local skills
On another machine:
/skills-sync:setup # Same repo name
/skills-sync:pull --all # Download all skills
/skills-sync:push-plugins # Backup installed plugins & marketplaces
On another machine:
/skills-sync:pull-plugins # Get marketplace add & plugin install commands
| Command | Description |
|---|---|
/skills-sync:setup [repo-name] |
Configure GitHub repo for syncing (default: claude-skills) |
/skills-sync:list [all|skills|plugins|local|remote] |
List skills and plugins with sync status |
/skills-sync:status |
Show config, auth, and sync status |
/skills-sync:diff [skill-name] |
Unified diff of local vs remote |
/skills-sync:push [skill-name|--all] |
Push skills to GitHub |
/skills-sync:pull [skill-name|--all] [--force] |
Pull skills from GitHub |
| Command | Description |
|---|---|
/skills-sync:push-plugins |
Backup installed plugins & marketplace list to GitHub |
/skills-sync:pull-plugins |
Restore plugins list and show install commands |
| Command | Description |
|---|---|
/skills-sync:update |
Update skills-sync plugin to latest version |
The plugin uses gh CLI to interact with the GitHub Contents API. Skills are stored as directories in a configurable GitHub repository. Plugin configurations (installed_plugins.json and known_marketplaces.json) are backed up to the same repo under plugins-config/.
Each command is a markdown file that instructs Claude to run the corresponding shell script.
Stored in ~/.claude/skills-sync.json:
{
"repo": "username/claude-skills",
"branch": "main",
"skills_dir": "skills"
}Tracked in ~/.claude/skills-sync-state.json to detect conflicts and show last sync times.
MIT