switch
Move this conversation to another Claude account (the previous one, or one by name), or set up, add, remove, rename and list accounts.
SKILL.mdswitch/SKILL.md
GitHubPick the branch by the first word of $ARGUMENTS and run only its commands with the Bash tool, exactly as written, no text before the first one.
setup [name] (first-time setup; name is the account you're on, default main): two steps, never one.
Show the changes, then ask "Write these changes? (yes/no)" and stop until the user answers:
"${CLAUDE_SWITCH_PYTHON:-python3}" "${CLAUDE_SKILL_DIR}/scripts/claude_switch.py" $ARGUMENTS --dry-runIf it says Python was not found or
python3: command not found(on Windowspython3is often a Microsoft Store stub), run this instead, and usepythonin step 2 too:python "${CLAUDE_SKILL_DIR}/scripts/claude_switch.py" $ARGUMENTS --dry-runeverything is up to dateor a refusal (a bad name, a name or dir already taken) ends it here: show the output as is.Only on the user's explicit yes in their next message, run the same command with
--yesin place of--dry-run:"${CLAUDE_SWITCH_PYTHON:-python3}" "${CLAUDE_SKILL_DIR}/scripts/claude_switch.py" $ARGUMENTS --yesThen tell the user: open a new terminal and start Claude with
claude(orclaude-<name>);/switchworks in sessions started that way. Anything but yes: say nothing was changed and stop.
add <name> [--dir DIR]:
"${CLAUDE_SWITCH_PYTHON:-python3}" "${CLAUDE_SKILL_DIR}/scripts/claude_switch.py" $ARGUMENTS --session "${CLAUDE_SESSION_ID}"
Show its output as is. switching to '<name>' means the launcher ends this session and reopens it on the new account, which asks for a login; add nothing.
rename <old> <new>, list or theme <name> [theme]:
"${CLAUDE_SWITCH_PYTHON:-python3}" "${CLAUDE_SKILL_DIR}/scripts/claude_switch.py" $ARGUMENTS
Show its output as is.
remove <name> [--delete-dir]: two steps, never one.
Show the plan, then ask "Remove as above? (yes/no)" and stop until the user answers:
"${CLAUDE_SWITCH_PYTHON:-python3}" "${CLAUDE_SKILL_DIR}/scripts/claude_switch.py" $ARGUMENTS --dry-runA refusal (the account you're on, the last or first account, an overlapping dir) ends it here.
Only on the user's explicit yes in their next message:
"${CLAUDE_SWITCH_PYTHON:-python3}" "${CLAUDE_SKILL_DIR}/scripts/claude_switch.py" $ARGUMENTS --yesAnything but yes: say nothing was changed and stop.
Anything else (empty or an account name): run this and show its output as is.
"${CLAUDE_SWITCH_PYTHON:-python3}" "${CLAUDE_SKILL_DIR}/scripts/claude_switch.py" request $ARGUMENTS --session "${CLAUDE_SESSION_ID}"
- Ends with
switching to '<name>'→ the launcher ends this session and resumes it on that account. Add nothing. - Anything else (unknown name with the account list, already on that account, not started by the launcher with setup steps, python not found) → nothing was switched; show the output as is. Python not found means the session wasn't started by the launcher: suggest
/switch setup.