Metadata-Version: 2.5
Name: claude-code-sync
Version: 0.1.0
Summary: Back up and restore your Claude Code configuration (skills, plugins, hooks, settings)
Project-URL: Repository, https://github.com/shawonashraf/claude-sync
Project-URL: Documentation, https://shawonashraf.github.io/claude-sync/
Author: Shawon Ashraf
License-Expression: MIT
License-File: LICENSE
Classifier: Environment :: Console
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Utilities
Requires-Python: >=3.13
Requires-Dist: questionary>=2
Requires-Dist: rich>=13
Description-Content-Type: text/markdown

# claude-sync

Back up and restore your Claude Code configuration — skills, hooks, agents,
keybindings, global CLAUDE.md, a redacted settings.json, and a plugin
manifest. Never your history, sessions, or projects.

## Quick start

Set up backups on the machine you already use:

    uvx claude-sync init

Reproduce your setup on a new machine (one command):

    uvx claude-sync restore https://github.com/you/claude-backup.git

## Commands

| Command | What it does |
|---|---|
| `claude-sync init [dest]` | Interactive setup: choose destination, git mode, auto-backup hook |
| `claude-sync backup` | One sync pass (no-op when nothing changed; commits in git mode) |
| `claude-sync restore [src]` | Restore from a directory or git URL; reinstalls plugins |
| `claude-sync status` | Destination, last backup, drift, pending conflicts |
| `claude-sync resolve` | Choose a version when two machines diverged |
| `claude-sync hook install\|uninstall` | Manage the SessionEnd auto-backup hook |

## What about secrets?

Env vars in `settings.json` whose names look sensitive (`*KEY*`, `*TOKEN*`,
`*SECRET*`, `*PASSWORD*`, `*CREDENTIAL*`) or whose values look like
credentials are replaced with `<redacted-by-claude-sync>` before anything
leaves your machine. `claude-sync status` lists what you need to re-supply
after a restore.

## Multi-machine use

Backups from several machines to one git repo can diverge. claude-sync never
merges on its own: it detects divergence, skips the automatic backup, and
`claude-sync resolve` lets you pick which version to keep. The losing
version stays in git history.
