Ccsync banner
onsails onsails

Ccsync

Development community

Description

Sync Claude-Code agents/skills/commands between ~/.claude and your project (both ways)

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

ccsync

Sync your Claude Code agents, skills, and commands between global and project configurations.

Keep your Claude Code setup consistent across projects while maintaining project-specific customizations.

ccsync

📦 Installation

Using Cargo

cargo install ccsync

Using curl (Linux/macOS)

curl https://i.jpillora.com/onsails/ccsync@ccsync-v0.1.8! | bash

Using Nix/NixOS

**Note:** Nix package is pending review ([PR #456721](https://github.com/NixOS/nixpkgs/pull/456721))

# Once merged, install with:
nix profile install nixpkgs#ccsync

# Or use in a shell:
nix shell nixpkgs#ccsync

🚀 Quick Start

# Sync your global Claude settings to current project
ccsync to-local

# Sync project settings back to global
ccsync to-global

The tool will prompt you for each file. Press a single key:

  • y - Yes, sync this file
  • n - No, skip this file
  • a - Yes to all remaining
  • s - Skip all remaining
  • d - Show me the changes first
  • q - Quit

Skip Prompts

# Auto-approve everything (useful for scripts)
ccsync to-local --yes-all

# Preview what would change (no actual changes)
ccsync to-local --dry-run

📝 Common Tasks

Sync Specific Types

# Sync only agents
ccsync to-local --type=agents

# Sync only skills
ccsync to-local --type=skills

# Sync multiple types
ccsync to-local --type=agents --type=skills

Handling Conflicts

When the same file exists in both locations with different content:

# Stop and ask (default)
ccsync to-local

# Always overwrite with source
ccsync to-local --conflict=overwrite

# Skip files that have conflicts
ccsync to-local --conflict=skip

# Keep whichever file is newer
ccsync to-local --conflict=newer

💡 How It Works

By default, `ccsync` asks you to approve each file before syncing: