assessment
Assessment: read-only inspection, codebase overview, value analysis, health checks, ADR…
Manage multiple Claude Code accounts: add, list, check, launch, and install shell aliases for 10+ isolated CLAUDE_CONFIG_DIR profiles.
$ npx -y skills add notque/vexjoy-agent --skill accounts --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/accountsContext preview
The summary Claude sees to decide when to auto-load this skill.
Manage multiple Claude Code accounts: add, list, check, launch, and install shell aliases for 10+ isolated CLAUDE_CONFIG_DIR profiles.
name: accounts
description: "Manage multiple Claude Code accounts: add, list, check, launch, and install shell aliases for 10+ isolated CLAUDE_CONFIG_DIR profiles."
version: 1.0.0
user-invocable: true
argument-hint: "[add <name>|list|check|launch <name>|link [<name>]|install-aliases|remove <name>]"
allowed-tools:
- Read
- Bash
- Edit
routing:
triggers:
- "multiple accounts"
- "multiple claude accounts"
- "CLAUDE_CONFIG_DIR"
- "claude account"
- "switch accounts"
- "account alias"
- "claude login"
- "c1 c2 aliases"
- "claude max account"
- "manage accounts"
- "add claude account"
pairs_with:
- deploy
category: meta
not_for: "API key rotation (use secrets management), Anthropic billing (use the web console)"Manages multiple Claude Code accounts using isolated `CLAUDE_CONFIG_DIR` directories. One directory per account keeps auth tokens, session history, and settings separate. Shell aliases let the user pick an account before Claude Code starts — no `/logout`/`/login` needed.
Script: `scripts/manage-accounts.py`. Registry: `~/.claude-accounts/accounts.json`.
| Task | Command | |------|---------| | Add an account | `python3 scripts/manage-accounts.py add <name>` | | Add with a named alias | `python3 scripts/manage-accounts.py add work --alias cwork` | | List all accounts | `python3 scripts/manage-accounts.py list` | | Validate all accounts | `python3 scripts/manage-accounts.py check` | | Launch an account | `python3 scripts/manage-accounts.py launch <name>` | | Share skills, agents, commands from `~/.claude` | `python3 scripts/manage-accounts.py link [<name>]` | | Install/update aliases | `python3 scripts/manage-accounts.py install-aliases` | | Preview alias changes | `python3 scripts/manage-accounts.py install-aliases --dry-run` | | Remove an account | `python3 scripts/manage-accounts.py remove <name>` |
python3 scripts/manage-accounts.py add work --alias cwork python3 scripts/manage-accounts.py add personal --alias cpersonal python3 scripts/manage-accounts.py add max1 --alias cm1 # … repeat for as many accounts as needed
Use named aliases (`cwork`, `cpersonal`) rather than sequential ones (`c1`, `c2`) — named aliases are self-documenting and you won't need `list` to remember which is which.
Each `add` creates `~/.claude-accounts/<name>/`, assigns the alias, installs aliases into your shell config, and links the account's `skills/`, `agents/`, and `commands/` to `~/.claude`.
`./install.sh` installs once into `~/.claude`. Every account dir holds symlinks to `~/.claude/skills`, `~/.claude/agents`, and `~/.claude/commands`, so each skill exists once and every account sees the same set. Run `link` (no name means all accounts) to repair an account made before this, or one where Claude Code created its own `skills/` dir. `link` moves non-conflicting content, such as `skills/synced/<account-id>/`, into `~/.claude` first. It stops and reports on a real conflict.
After `add`, the script prints a login command. Run it once per account:
CLAUDE_CONFIG_DIR=~/.claude-accounts/work claude # inside Claude Code: /login # exit, then repeat for each account
python3 scripts/manage-accounts.py list python3 scripts/manage-accounts.py check
`list` shows every account including the default `~/.claude` one. `check` validates that each registered account has credentials and shares the toolkit dirs.
Reload your shell once, then use aliases from any terminal:
cwork # opens Claude Code with the 'work' account cpersonal # opens Claude Code with the 'personal' account cwork --resume # resumes the last session for the 'work' account
**Fish** (`~/.config/fish/config.fish`):
function cwork
set -lx CLAUDE_CONFIG_DIR "~/.claude-accounts/work"
claude --dangerously-skip-permissions --system-prompt="." $argv
end**Bash/Zsh** (`~/.bashrc` / `~/.zshrc`):
alias cwork='CLAUDE_CONFIG_DIR="~/.claude-accounts/work" claude --dangerously-skip-permissions --system-prompt="."'
Every alias and `launch` pass `DEFAULT_CLAUDE_ARGS` from `scripts/manage-accounts.py` before your own arguments. Edit that tuple and re-run `install-aliases` to change them.
The managed block is idempotent — re-run `install-aliases` any time to sync after adding accounts. Use `--dry-run` to preview changes before writing:
python3 scripts/manage-accounts.py install-aliases --dry-run --shell fish
If you have exactly two accounts and prefer not to use the script:
# ~/.config/fish/config.fish
function cwork
set -lx CLAUDE_CONFIG_DIR "$HOME/.claude-accounts/work"
claude $argv
end
function cpersonal
set -lx CLAUDE_CONFIG_DIR "$HOME/.claude-accounts/personal"
claude $argv
endCreate dirs and log in manually:
mkdir -p ~/.claude-accounts/work ~/.claude-accounts/personal CLAUDE_CONFIG_DIR=~/.claude-accounts/work claude # /login CLAUDE_CONFIG_DIR=~/.claude-accounts/personal claude # /login
Essays and writing behind this toolkit live at vexjoy.com. VexJoy Agent connects plain-English requests to specialist agents, skills, and workflows. /do selects the knowledge and tools needed for your task.
Repo: notque/vexjoy-agent
Assessment: read-only inspection, codebase overview, value analysis, health checks, ADR…
Business operations: strategy, technology, growth, competitive intelligence, support,…