CLI Commands
Complete reference for all vsync commands with examples and options.
Command Overview
vsync <command> [options]Available commands:
| Command | Description |
|---|---|
init | Initialize configuration |
sync | Synchronize configurations |
plan | Preview sync plan without executing |
status | Check sync status |
list | List configurations |
clean | Remove items from targets |
import | Import from another project |
Global options:
--help, -h- Show help--version, -v- Show version
init
Initialize vsync configuration for project or user level.
Usage
vsync init [options]Options
--user- Create user-level config (~/.vsync.json)
Interactive Prompts
- Tool Detection: Automatically detects existing tool directories
- Tool Selection: Choose which tools to manage
- Source Selection: Pick your source of truth
- Sync Items: Select what to sync (Skills, MCP, Agents, Commands)
Example
$ vsync init
π Welcome to vsync!
β Detecting existing tools...
β Detected: claude-code, cursor
? Which AI coding tools do you use?
β claude-code (detected)
β cursor (detected)
β― opencode
β― codex
? Which tool is your source of truth?
β― claude-code
? What do you want to sync?
β Skills
β MCP
β Configuration created
β Cache directory created
β Manifest initialized
β
Setup complete! Run vsync sync to start syncingWhat Gets Created
.vsync.json- Configuration file.vsync-cache/- Cache directory.vsync-cache/manifest.json- Sync tracking manifest
sync
Synchronize configurations from source to target tools.
Usage
vsync sync [options]Options
--dry-run- Preview changes without applying them--prune- Enable prune mode (delete items not in source)--user- Sync user-level configs-y, --yes- Skip confirmation prompt
Sync Modes
Safe Mode (Default)
Only creates and updatesβnever deletes.
vsync syncOutput Example:
π Reading source (claude-code)...
β Found 3 skills
β Found 2 MCP servers
π Analyzing differences...
π Sync Plan (Safe Mode)
cursor:
CREATE:
β’ skill/deploy-prod
UPDATE:
β’ skill/git-release
β’ mcp/github
SKIP:
β’ skill/api-conventions (unchanged)
? Proceed with sync? (Y/n) y
β Sync completed in 1.2sPrune Mode
Strict mirroringβdeletes items not in source.
vsync sync --pruneWarning: Items in targets but not in source will be deleted!
Examples
# Preview changes
vsync sync --dry-run
# Sync with strict mirroring
vsync sync --prune
# Sync user-level configs
vsync sync --user
# Skip confirmation (useful for automation)
vsync sync -yFirst-Time Symlink Prompt
On the first sync, vsync will ask about symlink usage for Skills:
? How would you like to sync Skills?
β― Use symlinks (recommended - instant updates, saves space)
Copy files (traditional - independent copies)This preference is saved in config and wonβt be asked again.
plan
Preview the sync plan without executing any changes.
Usage
vsync plan [options]Options
--user- Show plan for user-level configs
Example
$ vsync plan
π Reading source (claude-code)...
β Found 3 skills
β Found 2 MCP servers
π Analyzing differences...
π Sync Plan (Safe Mode)
cursor:
CREATE:
β’ skill/deploy-prod
Reason: New in source
Hash: sha256:abc123...
UPDATE:
β’ skill/git-release
Reason: Source hash changed
Old: sha256:old111...
New: sha256:new222...
SKIP:
β’ skill/api-conventions
Reason: Hash unchanged
Run `vsync sync` to apply this planstatus
Check the current sync status and configuration.
Usage
vsync status [options]Options
--user- Check user-level status
Example
$ vsync status
Configuration Status (Project)
ββββββββββββββββββββββββββββββββββββββββββββββββ
Source Tool: claude-code
Target Tools: cursor, opencode
Last Sync: 2026-01-24 10:30:00 (2 hours ago)
Configuration: .vsync.json
Manifest: .vsync-cache/manifest.json
Synced Items:
Skills: 3 items
MCP Servers: 2 items
Tool Status:
β claude-code (source)
β cursor (synced, up-to-date)
β opencode (synced, up-to-date)
Health:
β All targets up-to-date
β No pending changes
Run `vsync plan` to see sync planlist
List all synced configurations from the source tool.
Usage
vsync list [type] [options]Arguments
type- Configuration type:skills,mcp,agents, orcommands(optional)
Options
--user- List user-level configs
Examples
# List all configs
vsync list
# List only skills
vsync list skills
# List user-level MCP servers
vsync list mcp --userOutput Example
$ vsync list skills
Skills (3 items) - Source: claude-code
ββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ¬βββββββββββββββ¬βββββββββββββ
β Name β Description β Synced To β Hash β
ββββββββββββββββββββΌβββββββββββββββββββββββββββββββββΌβββββββββββββββΌβββββββββββββ€
β git-release β Create releases and changelogs β cursor, openβ¦β abc123... β
β api-conventions β API design patterns β cursor, openβ¦β def456... β
β deploy-prod β Deploy to production β cursor, openβ¦β ghi789... β
ββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ΄βββββββββββββββ΄βββββββββββββclean
Remove configurations from target tools (and optionally from source).
Usage
vsync clean [item] [options]Arguments
item- Item to remove in formattype/name(e.g.,skill/old-skill)
Options
--user- Clean user-level configs--from-source- Also delete from source tool (dangerous!)-y, --yes- Skip confirmation (not applicable with--from-source)
Modes
Remove from Targets Only (Safe)
Default behaviorβsource unchanged.
vsync clean skill/old-skillOutput:
β οΈ This will remove from target tools only (source unchanged)
Will remove from:
β’ cursor (.cursor/skills/old-skill/)
β’ opencode (.opencode/skills/old-skill/)
Source (claude-code) will NOT be affected.
? Confirm removal from targets? (y/N) y
β Cleanup completedDelete from Source and All Targets (Dangerous!)
Warning: This is destructive and cannot be undone!
vsync clean skill/old-skill --from-sourceOutput:
β οΈβ οΈβ οΈ DANGER ZONE β οΈβ οΈβ οΈ
This will delete from the SOURCE tool (claude-code) AND all targets.
This action CANNOT be undone.
Will delete from:
β’ claude-code (.claude/skills/old-skill/) β SOURCE
β’ cursor (.cursor/skills/old-skill/)
β’ opencode (.opencode/skills/old-skill/)
? Type the name to confirm: old-skill
? Are you absolutely sure? (yes/no) yes
ποΈ Deletion completedInteractive Mode
Run without arguments for interactive selection:
$ vsync clean
? What type do you want to clean?
β― Skills
MCP Servers
? Select items to remove from targets:
β― git-release
β― api-conventions
β old-skill
Selected items (1):
β’ skill/old-skill
β οΈ This will remove from target tools only (source unchanged)
? Confirm removal from targets? (y/N) yimport
Import configurations from another project.
Usage
vsync import <path> [options]Arguments
path- Path to project directory to import from
Options
--user- Import to user-level
Example
$ vsync import ../other-project
Scanning ../other-project...
? This directory uses:
β― Claude Code (.claude/ found)
Cursor (.cursor/ found)
? Import from which tool?
β― Claude Code
Reading claude-code configuration...
β Found 5 skills
β Found 3 MCP servers
? What do you want to import? (default: all selected)
β Skills (5 items)
β’ git-release
β’ api-conventions
β’ deploy-prod
β’ test-generator
β’ code-reviewer
β MCP Servers (3 items)
β’ sqlite
β’ github
β’ postgres
? How to handle conflicts?
β― Skip (keep existing)
Overwrite (replace existing)
Rename (add suffix)
Processing:
β Skills: 5 imported (0 skipped)
β MCP: 3 imported (1 skipped: sqlite already exists)
β Import completed
? Sync to target tools now? (Y/n) yCommon Workflows
Daily Sync After Updates
# 1. Edit configs in source tool
vim ~/.claude/skills/my-skill/SKILL.md
# 2. Sync to targets
vsync syncPreview Before Applying
# 1. Check what would change
vsync plan
# 2. If satisfied, apply
vsync syncClean Up Old Configs
# Safe cleanup (targets only)
vsync clean skill/old-skill
# Strict mirror mode
vsync sync --pruneImport from Another Project
vsync import ../other-projectAutomation with βyes
# In CI/CD pipelines
vsync sync --yesExit Codes
0- Success1- Error occurred
Getting Help
# General help
vsync --help
# Command-specific help
vsync sync --helpNext Steps
- Learn about Advanced Features
- Check the FAQ for troubleshooting
- Explore Configuration options