Cross-device sync for your Claude Code setup. A wizard skill that walks
you through creating a private GitHub repo that mirrors your
~/.claude/ configuration across machines — settings, custom skills,
plugin/MCP enablement — without ever committing your auth token.
Distributed as a Claude Code plugin via its own marketplace.
A single-skill Claude Code plugin. After you install it, ask Claude something like:
- "Sync my Claude Code setup to my laptop."
- "Get the same Claude config on a new machine."
- "Mirror my plugins and skills between PC and laptop."
The cross-device-sync skill activates and walks you through:
- Choosing scope — what gets synced (settings, custom skills, CLI inventory) and what stays per-device (auth tokens, sessions, memory, plans, runtime state).
- Creating a private repo — via
gh repo create --private. - Scaffolding the repo —
.gitignore,bootstrap,prereqs,push-from-machine, plus a per-MCP re-auth guide. - A security gate before first push —
git ls-filescheck for credentials,.env, OAuth, Python build artifacts. - The second-machine workflow —
prereqs→ login →bootstrap→ restart → re-authenticate connectors on first use.
The repo it creates is yours. This plugin doesn't host anything centrally and doesn't phone home.
/plugin marketplace add Fluory/claude-sync-kit
/plugin install claude-sync-kit
Then start a conversation and ask Claude to sync your setup.
Condensed transcript of what the wizard flow looks like in practice:
> sync my claude code setup to my laptop
● Using the cross-device-sync skill. First, three questions:
1. OS on this machine and on the laptop? (both Windows)
2. Where does your skill content live? (~/.agents/skills, junctioned)
3. Do you have the gh CLI authenticated? (yes)
● Inspecting ~/.claude ... 13 custom skills, 45 enabled plugins,
2 extra marketplaces. Credentials/sessions will NOT be synced.
● Creating private repo ...
$ gh repo create claude-setup --private
● Scaffolding: .gitignore, bootstrap.ps1, prereqs.ps1,
push-from-machine.ps1, connectors/README.md
● Copying live config into the repo ...
● Security gate before first push:
$ git ls-files | grep -iE 'credentials|\.env|token|oauth'
-> empty. Safe to push.
● Done. On the laptop: clone -> prereqs -> claude login -> bootstrap
| File / Folder | Synced? | Why |
|---|---|---|
~/.claude/settings.json |
YES | Master config with enabled plugins |
~/.agents/skills/ (or wherever your skill content lives) |
YES | The actual skill files |
Plugin contents (~/.claude/plugins/cache/) |
NO | Regenerates from marketplace on first start |
| MCP/connector list | YES (implicit) | Comes via enabled plugins in settings.json |
| MCP/connector auth tokens | NO | Each machine re-auths (security feature) |
.credentials.json |
NEVER | Your Claude auth token |
~/.claude.json |
NO | Runtime state, OAuth, growthbook |
projects/, sessions/, tasks/, todos/ |
NO | Per-device session state |
plans/, shell-snapshots/, cache/ |
NO | Local state |
The bundled .gitignore covers all of this.
A static template repo would force you into one structure. The wizard:
- Detects your OS on both machines (Windows-first; Mac/Linux templates best-effort).
- Picks up where your real skill content lives (junctions on Windows, symlinks on Unix often resolve to a separate skills directory).
- Generates only the scripts and gitignore entries you actually need.
- Runs the security gate as part of the flow, not as an opt-in.
You can also just lift the templates from
skills/cross-device-sync/templates/ and use them directly without
Claude in the loop.
- Memory sync.
claude-memper-project memory is intentionally out of scope. It's per-project, per-device, conflict-prone. - A public skill marketplace. This plugin helps you sync your own setup; it doesn't help you redistribute downloaded third-party skills.
- A backup tool. No history, no encryption. It's a configuration mirror, not a vault.
- Windows is the daily-driven path. The author runs it on Windows. The Unix templates are ShellCheck-clean and their bootstrap/push roundtrip runs as a functional CI test on Ubuntu and macOS on every push — but they don't see daily real-world use yet. Reports welcome.
- Connectors re-auth per machine. This is on purpose — your Stripe key on one laptop should not appear on another via a sync. If this annoys you, you're using the wrong tool.
- GitHub Secret Scanning will catch leaked Claude tokens even in
private repos and invalidate them. The
.gitignorematters even when the repo is private. The skill enforces a pre-push check.
MIT. See LICENSE.
@Fluory — Florian Hein.