Context
Multi-account Batches 1–2c-lite shipped (#122–#126). This issue tracks onboarding/migration niceties for users who already had Claude Code setups (default account, or hand-rolled second accounts) before adopting CodeV multi-account. The manual paths all work today and are documented in README → Multi-Account → "Common scenarios"; this is about making them discoverable without CLI knowledge.
1. Detect & one-click register existing config dirs — P3, medium value
Scan $HOME for unregistered dirs containing .claude.json (e.g. ~/.claude-work, ~/.claude2), then show them in Settings → Accounts:
Detected: ~/.claude2 (user@example.com) → [Register as…] (name pre-filled from the dir suffix, editable)
- Never auto-register silently — registry creation stays explicit (zero-footprint principle), and the account name is the user's choice.
- Value: serves exactly the migrating hand-rolled-multi-account audience; removes the need to know
codev account add <name> --dir <folder>.
- Priority: P3 — the CLI
--dir path already covers it and the audience is modest. Natural companion to the Batch 3 add-account flow work (design doc §6.D share checkboxes) — same UI surface, consider doing them together.
2. First-class "name your existing default" flow — P3, low effort
codev account add <name> --dir ~/.claude already works today (registers the anchor itself; no auto-seeding, no extra account). Consider a UI affordance so it's discoverable, e.g. an empty-state secondary action: "Name my existing account…".
3. Warn when overriding a hand-rolled claude() wrapper — P4, niche
If the user's rc already defines a claude shell function, sourcing accounts.sh silently replaces it (the CodeV block is appended at the end of ~/.zshrc, so it wins). A source-time check could warn:
if [ -n "${ZSH_VERSION:-}" ] && (( ${+functions[claude]} )); then
echo "codev: replacing an existing claude() shell function with the accounts dispatcher" >&2
fi
Likelihood: low — hand-rollers usually name their helpers differently (claude2 etc.) precisely to keep bare claude working; same-name wrappers are the rare add-behavior-to-every-call crowd. Non-destructive when it happens (the dispatcher works; their custom behavior silently stops). Documented in the README scenarios table meanwhile.
Refs
🤖 On behalf of @grimmerk — generated with Claude Code
Context
Multi-account Batches 1–2c-lite shipped (#122–#126). This issue tracks onboarding/migration niceties for users who already had Claude Code setups (default account, or hand-rolled second accounts) before adopting CodeV multi-account. The manual paths all work today and are documented in README → Multi-Account → "Common scenarios"; this is about making them discoverable without CLI knowledge.
1. Detect & one-click register existing config dirs — P3, medium value
Scan
$HOMEfor unregistered dirs containing.claude.json(e.g.~/.claude-work,~/.claude2), then show them in Settings → Accounts:codev account add <name> --dir <folder>.--dirpath already covers it and the audience is modest. Natural companion to the Batch 3 add-account flow work (design doc §6.D share checkboxes) — same UI surface, consider doing them together.2. First-class "name your existing default" flow — P3, low effort
codev account add <name> --dir ~/.claudealready works today (registers the anchor itself; no auto-seeding, no extra account). Consider a UI affordance so it's discoverable, e.g. an empty-state secondary action: "Name my existing account…".3. Warn when overriding a hand-rolled
claude()wrapper — P4, nicheIf the user's rc already defines a
claudeshell function, sourcingaccounts.shsilently replaces it (the CodeV block is appended at the end of~/.zshrc, so it wins). A source-time check could warn:Likelihood: low — hand-rollers usually name their helpers differently (
claude2etc.) precisely to keep bareclaudeworking; same-name wrappers are the rare add-behavior-to-every-call crowd. Non-destructive when it happens (the dispatcher works; their custom behavior silently stops). Documented in the README scenarios table meanwhile.Refs
🤖 On behalf of @grimmerk — generated with Claude Code