One tool to rule them all: Sync, Centralize, and Share AI Agent configurations and skills.
agent-sync solves the fragmentation of the AI agent ecosystem by providing a unified workflow for your CLI tools.
- Unified Skills Hub: Stop duplicating skills across different agents. Centralize everything in
~/.agents/skills/and let every agent (Claude, Gemini, Opencode, etc.) use them. - Private Backup & Sync: Keep your agent configurations and custom skills safely backed up in a private GitHub repository. Seamlessly sync your entire environment between multiple machines.
- Share with the World: Effortlessly publish your best custom skills to a public repository, allowing the community to benefit from your specialized agent tools.
- Extension Support: Automatically detects and backs up skills from agent extensions (e.g., Opencode Superpowers, Cursor extensions) with their symlink structures preserved.
| Agent | Config Files | Skills Path | Method |
|---|---|---|---|
| claude-code | settings.json |
~/.claude/commands/ |
Copy |
| gemini-cli | settings.json |
~/.gemini/tools/ |
Copy |
| opencode | opencode.json |
~/.config/opencode/skills/ |
Config |
| pi.dev | settings.json, models.json |
~/.pi/agent/skills/ |
Native |
| qwen-code | settings.json |
~/.qwen/skills/ |
Copy |
| Agent | Config Files | Skills Path | Method |
|---|---|---|---|
| cline | state.json |
~/.cline/skills/ |
Copy |
| cursor | settings.json |
~/.cursor/skills/ |
Native |
| roocode | custom_modes.yaml |
~/.roo/skills/, ~/.agents/skills/ |
Native |
| windsurf | config.json |
~/.codeium/windsurf/skills/ |
Copy |
pipx install git+https://github.com/renatocaliari/agent-sync.gitagent-sync setup # Interactive wizard
agent-sync push # Backup to GitHubagent-sync link <your-private-repo-url>
agent-sync pullUse these standard names for consistency:
| Purpose | Repository Name | Example |
|---|---|---|
| CLI Tool | agent-sync |
renatocaliari/agent-sync |
| Private Configs | agent-sync-private-configs |
renatocaliari/agent-sync-private-configs |
| Public Skills | agent-sync-public-skills |
renatocaliari/agent-sync-public-skills |
Why these names?
- ✅ Consistent - All start with
agent-sync- - ✅ Clear - "private" and "public" make purpose obvious
- ✅ Discoverable - Easy to find via GitHub search
- ✅ Standard - Follows common naming patterns
Example Setup:
# Initialize private configs (first machine)
agent-sync init --name agent-sync-private-configs --private
# Link on additional machines
agent-sync link https://github.com/YOUR_USERNAME/agent-sync-private-configs.git
# Publish skills to public repo
agent-sync skills publish --repo YOUR_USERNAME/agent-sync-public-skillsagent-sync uses a categorized help structure. Run agent-sync --help to see all options.
push- Backup local changes to GitHub[-m, --skills-only, --configs-only]pull- Download and apply changes from GitHub[--force]status- Check sync state
agents- List supported agents and their sync methodenable/disable- Toggle sync for specific agentsskills list- List all centralized skillsskills diff- Show differences between local and remote skillsskills reconcile- Resolve local vs remote divergencesskills centralize- Move skills from agents to global hubskills delete- Delete skills from hub and agents (interactive)skills publish- Share selected skills to a public repo
update- Interactive CLI self-updateconfig edit- Manual configuration override
agent-sync supports agent extensions that create subdirectories with skills (e.g., Opencode Superpowers, Cursor extensions).
Example structure:
~/.config/opencode/
├── superpowers/
│ └── skills/ # Extension skills
└── skills/
└── superpowers → symlink → ../superpowers/skills/
Supported:
- Extension subdirectories (e.g.,
~/.config/opencode/superpowers/skills/) - Internal symlinks (preserved)
- External symlinks (removed)
- Multiple extensions simultaneously
- Skills with special characters (
__,-)
How it works:
push- Detects extensions, backs up skills + symlinks, creates.agent-sync-manifest.jsonpull- Reads manifest, restores extension skills and symlinks to original locations
See full documentation: Extension Support
I welcome contributions to keep this project growing and stable. You don't need to be a Python expert to help.
- Add New Agents: Support for new AI CLIs is data-driven. Just add a few lines to src/agent_sync/agent_registry.yaml.
- Bug Fixes & UX: Found a clunky TUI flow or a bug? Open a PR!
- Improve Docs: Help me make these guides clearer.
If you are an AI model (LLM) contributing to this project, please read AGENTS.md for versioning and architectural mandates.
Inspired by opencode-synced, expanded to support multiple agent CLIs and other powerful features.
MIT License - see LICENSE for details.