🚀 Sync your AI skills across Claude Code and OpenClaw
pip install git+https://github.com/verycafe/skillsync.gitskillsync initYou'll be prompted to enter:
- GitHub Personal Access Token (with
repopermission) - Target repository (e.g.,
yourname/my-skills) - Sync interval (default: 5 minutes)
Note: This will install and automatically run
skillsync init
curl -fsSL https://raw.githubusercontent.com/verycafe/skillsync/main/install.sh | bashskillsync --versionpip install --upgrade git+https://github.com/verycafe/skillsync.gitWhat's New? Check the CHANGELOG or Releases
✅ Auto-detect Claude Code and OpenClaw skills ✅ Bidirectional sync (PUSH + PULL) ✅ Multi-machine sync support ✅ Version control and conflict detection ✅ Custom directory support ✅ Manual push/pull ✅ Remote/local version comparison ✅ Cross-platform (macOS/Linux/Windows)
skillsync initskillsync scanskillsync status# Push to remote
skillsync push
# Pull from remote
skillsync pull
# Bidirectional sync
skillsync sync# Compare all skills
skillsync diff
# Compare specific skill
skillsync diff claude-code/my-skill# Add custom directory
skillsync add-dir /path/to/custom/skills
# List all directories
skillsync list-dirs
# Remove directory
skillsync remove-dir /path/to/custom/skills# Start daemon
skillsync start
# Stop daemon
skillsync stop
# View logs
skillsync logsFirst run skillsync init will guide you through:
- GitHub Token (requires
repopermission)- Create at: https://github.com/settings/tokens/new
- Target Repository (e.g.,
yourname/my-skills) - Sync Interval (default: 5 minutes)
Config file location: ~/.skillsync/config.json
skillsync init # Initialize configuration
skillsync scan # Scan local skills
skillsync status # Check sync status
skillsync push # Push to remote
skillsync pull # Pull from remote
skillsync sync # Bidirectional sync
skillsync diff # Version comparison
skillsync start # Start background sync
skillsync stop # Stop background sync
skillsync logs # View logs
skillsync add-dir <path> # Add custom directory
skillsync list-dirs # List all directories
skillsync remove-dir <path> # Remove directory
skillsync uninstall # Uninstall SkillSyncskillsync start # Start background sync skillsync stop # Stop background sync skillsync logs # View logs skillsync add-dir # Add custom directory skillsync list-dirs # List all directories skillsync remove-dir # Remove directory
## How It Works
### Auto-Detect Directories
**Claude Code:**
- `~/.claude/skills/` (global)
- `.claude/skills/` (project-level)
- `~/.claude/commands/` (legacy)
**OpenClaw:**
- `~/.openclaw/workspace/skills/`
- Extra directories from config
**Custom:**
- Directories added via `skillsync add-dir`
### Sync Flow
Local Skills → Detect Changes → Push to GitHub ↑ ↓ └────── Pull Remote Updates ←──┘
### Background Daemon
After starting, automatically every 5 minutes (configurable):
1. Pull remote updates
2. Push local changes
3. Log activities
## Use Cases
### Case 1: Personal Multi-Machine Sync
```bash
# Machine A (work)
skillsync init
skillsync sync
skillsync start
# Machine B (home)
skillsync init # Use same GitHub repo
skillsync pull
skillsync start
# Now both machines stay in sync automatically
# Team Member A
skillsync init --repo team/shared-skills
skillsync sync
# Team Member B
skillsync init --repo team/shared-skills
skillsync pull# Check which skills have changes
skillsync diff
# Example output:
# claude-code/commit ✓ Synced
# claude-code/pr-review ↑ Local newer
# openclaw/api-docs ↓ Remote newer~/.skillsync/
├── config.json # Configuration
├── metadata.json # Metadata
├── daemon.pid # Daemon PID
├── daemon.state # Daemon state
└── sync.log # Sync logs
{
"github": {
"token": "ghp_xxxxxxxxxxxx",
"repo": "yourname/my-skills"
},
"sync_interval": 5,
"custom_dirs": [
"/path/to/custom/skills"
]
}After syncing, your GitHub repo will look like:
my-skills/
├── README.md
├── claude-code/
│ ├── commit/
│ │ └── SKILL.md
│ ├── pr-review/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ └── review.py
│ └── deploy/
│ └── SKILL.md
└── openclaw/
├── api-docs/
│ └── SKILL.md
└── test-helper/
└── SKILL.md
# Check scan results
skillsync scan
# Add custom directory
skillsync add-dir /path/to/your/skills# Re-initialize
skillsync init
# Check token permissions (needs repo access)# Stop and restart
skillsync stop
skillsync start
# Check logs
skillsync logsskillsync uninstallThis will:
- Stop the background daemon (if running)
- Ask if you want to delete configuration files
- Uninstall the skillsync package
# Stop daemon
skillsync stop
# Uninstall package
pip uninstall skillsync
# Optional: Remove configuration
rm -rf ~/.skillsync| Item | Status After Uninstall | Notes |
|---|---|---|
| GitHub Remote Repository | ✅ Preserved | All synced skills remain safe |
| Local Skills Files | ✅ Preserved | ~/.claude/skills/ untouched |
| SkillSync Configuration | ❌ Deleted | ~/.skillsync/ (optional) |
| SkillSync Program | ❌ Deleted | pip package removed |
Key Points:
- Your data is safe (local + GitHub backup)
- You can reinstall anytime and reconnect to the same repository
- Even after uninstall, you can access your skills on GitHub
- Multiple machines can share the same GitHub repository
To Restore After Reinstall:
# Reinstall
pip install git+https://github.com/verycafe/skillsync.git
# Reconnect to your repository
skillsync init # Use same token and repo
# Pull your skills back
skillsync pull# Clone repository
git clone https://github.com/verycafe/skillsync.git
cd skillsync
# Install dependencies
pip install -e .
# Run tests
python test_cli.py scanskillsync/
├── skillsync/
│ ├── cli.py # CLI interface
│ ├── scanner.py # Scanner
│ ├── syncer.py # Syncer
│ ├── daemon.py # Daemon
│ └── cloud/
│ └── github.py # GitHub integration
├── install.sh # macOS/Linux installer
├── install.ps1 # Windows installer
└── README.md # Documentation
- Language: Python 3.8+
- CLI Framework: Click
- Terminal UI: Rich
- File Watching: Watchdog
- GitHub API: PyGithub
- Config: YAML/JSON
Issues and Pull Requests are welcome!
MIT License - see LICENSE
Thank you for using SkillSync!
If you find it useful, please give it a star ⭐