Skip to main content

Running Multiple Claude Code Accounts? Here's How to Keep Them in Sync

· 6 min read
runkids
Creator of skillshare

You have a personal Claude Code subscription and a work one. Or maybe a client gave you access to their team account. Either way, you now have two (or three) separate Claude Code environments — and they're already drifting apart.

Here's how to set up multiple accounts properly, and how to stop manually copying skills, rules, and hooks between them.

Why Multiple Accounts?

A few common scenarios:

  • Personal + Work — your company pays for a team plan, but you also have your own subscription for side projects
  • Personal + Client — a client added you to their org, but you want to keep your own setup separate
  • Multiple orgs — you consult for several companies, each with their own Claude Code team

The problem is always the same: you've built up a collection of skills, rules, hooks, and agents in one account, and now you need them in the others too.

Step 1: Set Up Multiple Accounts

Claude Code stores everything in ~/.claude/ by default. To add a second account, create a separate directory and point Claude at it with CLAUDE_CONFIG_DIR.

# Create a new config directory for your work account
mkdir -p ~/.claude-work

Then add aliases to your ~/.zshrc (or ~/.bashrc):

# Personal account (default)
alias claude="claude"

# Work account
alias claude-work="CLAUDE_CONFIG_DIR=~/.claude-work claude"

Reload and log in:

source ~/.zshrc
claude-work # follow the login flow for your work account

That's it. claude uses your personal account, claude-work uses your work account. Each has its own API key, conversation history, and settings.

Need more accounts? Same pattern:

alias claude-client="CLAUDE_CONFIG_DIR=~/.claude-client claude"

Step 2: The Config Drift Problem

After a week, here's what happens:

~/.claude/
├── skills/ ← 12 skills (you just added 2 new ones)
├── rules/ ← 5 rule files
├── hooks/ ← 3 hooks
└── agents/ ← 2 agent definitions

~/.claude-work/
├── skills/ ← 10 skills (missing the 2 new ones)
├── rules/ ← 3 rule files (missing 2)
├── hooks/ ← 1 hook (you forgot to copy the other 2)
└── agents/ ← 0 (you never set these up here)

You wrote a great debugging skill last Tuesday — but only in your personal account. Your work account still doesn't have it. Your carefully tuned rules about commit message style? Only in one place.

You could cp -r files around, but:

  • You'll forget
  • You'll overwrite something
  • Files get out of sync silently
  • Some accounts need different skills than others

Step 3: Sync Skills Automatically

This is where skillshare comes in. Install it:

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/runkids/skillshare/main/install.sh | sh

# or via Homebrew
brew install skillshare

# Windows (PowerShell)
irm https://raw.githubusercontent.com/runkids/skillshare/main/install.ps1 | iex

Initialize and add your accounts as targets:

skillshare init

# Add each account's skill directory
skillshare target add claude ~/.claude/skills
skillshare target add claude-work ~/.claude-work/skills

Your config (~/.config/skillshare/config.yaml) now looks like:

targets:
claude:
skills:
path: ~/.claude/skills
claude-work:
skills:
path: ~/.claude-work/skills

Collect your existing skills into the source, then sync:

# Pull existing skills from your primary account into skillshare
skillshare collect claude

# Sync to all accounts
skillshare sync

Done. Both accounts now have the same skills.

Filtering: Different Skills for Different Accounts

Not every skill belongs everywhere. Your personal side-project-ideas skill probably shouldn't show up at work:

targets:
claude:
skills:
path: ~/.claude/skills
claude-work:
skills:
path: ~/.claude-work/skills
exclude:
- "personal-*"
claude-client:
skills:
path: ~/.claude-client/skills
include:
- "coding-*"
- "commit"

Step 4: Sync Rules, Hooks, and Agents

Skills are only part of the picture. You also want your rules (coding standards, locale preferences), hooks (auto-format on save, test runners), and agents synced across accounts.

skillshare's extras feature handles this — it syncs any directory, not just skills.

# Sync rules across accounts
skillshare extras init claude-rules \
--source ~/.claude/rules \
--target ~/.claude-work/rules

# Sync hooks
skillshare extras init claude-hooks \
--source ~/.claude/hooks \
--target ~/.claude-work/hooks

# Sync agents (use --flatten because Claude discovers agents at top level only)
skillshare extras init claude-agents \
--source ~/.claude/agents \
--target ~/.claude-work/agents \
--flatten

Or put it all in the config:

extras:
- name: claude-rules
source: ~/.claude/rules
targets:
- path: ~/.claude-work/rules
mode: merge
- path: ~/.claude-client/rules
mode: merge

- name: claude-hooks
source: ~/.claude/hooks
targets:
- path: ~/.claude-work/hooks
mode: merge

- name: claude-agents
source: ~/.claude/agents
targets:
- path: ~/.claude-work/agents
mode: merge
flatten: true

Why merge mode? It creates per-file symlinks from target to source, so account-specific files (like settings.json or settings.local.json) are left untouched. Your shared config syncs; your account-specific config stays separate.

Now sync everything:

skillshare sync --all   # skills + extras in one command

The Daily Workflow

Once set up, keeping accounts in sync takes three commands:

skillshare check        # any upstream skill updates?
skillshare update --all # pull latest versions
skillshare sync --all # push to all accounts

Write a new skill in your personal account → skillshare sync → it's everywhere.

Full Config Reference

Here's a complete three-account setup:

# ~/.config/skillshare/config.yaml
targets:
claude:
skills:
path: ~/.claude/skills
claude-work:
skills:
path: ~/.claude-work/skills
exclude:
- "personal-*"
claude-client:
skills:
path: ~/.claude-client/skills
include:
- "coding-*"
- "commit"

extras:
- name: claude-rules
source: ~/.claude/rules
targets:
- path: ~/.claude-work/rules
mode: merge
- path: ~/.claude-client/rules
mode: merge

- name: claude-hooks
source: ~/.claude/hooks
targets:
- path: ~/.claude-work/hooks
mode: merge

- name: claude-agents
source: ~/.claude/agents
targets:
- path: ~/.claude-work/agents
mode: merge
flatten: true

Bonus: Manage Everything from the Web UI

Prefer a visual interface over YAML? Over half of skillshare users manage their setup through the built-in web dashboard instead of editing config files by hand.

skillshare ui

This opens a dashboard at localhost:19420 where you can:

  • View and manage all skills, targets, and extras
  • Install new skills from GitHub with one click
  • Run sync, audit, and check operations visually
  • Edit target include/exclude filters without touching YAML

skillshare UI dashboard

Everything you can do in the CLI, you can do in the UI — including setting up the multi-account extras config described above.

Quick Tips

  • Pick one primary account as the source of truth. Edit skills, rules, and hooks there; sync to the rest.
  • Preview before syncingskillshare sync --all --dry-run shows what will change.
  • Flatten agents — Claude Code only discovers agents at the top level, so always use flatten: true for agent directories.
  • Backup firstskillshare backup snapshots your current state before changes.

Get Started

curl -fsSL https://raw.githubusercontent.com/runkids/skillshare/main/install.sh | sh
skillshare init