Personality Management
Manage multiple voice assistant personalities for claude-talk.
Storage
~/.claude-talk/personalities/<name>.md— saved personalities~/.claude-talk/personality.md— active personality (backward compat)~/.claude-talk/active-personality— name of active personality- Personality names are lowercase with hyphens (e.g.,
witty-jarvis)
Route by $ARGUMENTS
Parse the first word of $ARGUMENTS as the subcommand. The rest are arguments to that subcommand.
No arguments (or "list"): List Personalities
- Check if
~/.claude-talk/personalities/exists. If not, run the Migration step below first. - List all
.mdfiles in~/.claude-talk/personalities/. - Read
~/.claude-talk/active-personalityto get the active name. - Display a table:
| Personality | Style | Voice | Active |
|---|---|---|---|
| default | Witty & playful | Daniel | |
| pirate-claude | Casual & warm | Moira | ✓ |
Read the ## Conversational Style and ## Voice sections from each file to populate Style and Voice columns.
If no personalities exist, say: "No personalities found. Run /claude-talk:personality create to make one, or /claude-talk:install to set up from scratch."
"switch <name>": Switch Active Personality
- Check that
~/.claude-talk/personalities/<name>.mdexists. If not, list available personalities and abort. - Read the personality file.
- Extract the voice from the
## Voicesection (the line- Voice: <voice>). - Copy the personality file to
~/.claude-talk/personality.md. - Write the name to
~/.claude-talk/active-personality. - Update the
VOICE=line in~/.claude-talk/config.envwith the extracted voice. Quote voices with spaces (e.g.,VOICE="Daniel (Enhanced)"). - Confirm: "Switched to . Voice set to ."
- If a voice session is active (check
~/.claude-talk/stateforSESSION=active), update the voice on the running audio server and speak:source ~/.claude-talk/venvs/wlk/bin/activate claude-talk server set-voice "<voice>" claude-talk server speak "Switching to <name>. How do I sound?"
"create": Create New Personality
Walk the user through creating a personality using AskUserQuestion. Reuse the same interactive flow as the install skill (Questions 1-6).
Step 1: Voice
Check which Enhanced/Premium voices are installed (use Bash):
claude-talk voices --enhanced
Play voice previews and use AskUserQuestion with header "Voice" to let the user pick. Follow the same voice selection logic as install SKILL.md Question 1 (recommend Enhanced voices, play samples, etc.).
Step 2: Name
Play name options in the chosen voice and use AskUserQuestion with header "Name". Same options as install: Claude, Jarvis, Friday, Nova, or custom.
Step 3: Personality Style
Play style samples in the chosen voice and use AskUserQuestion with header "Style". Same options as install: Casual & warm, Professional & concise, Witty & playful, Calm & thoughtful.
Step 4: What should I call you?
Use AskUserQuestion with header "Your name". Same options as install: First name, Boss, Nothing specific.
Step 5: Response Length
Use AskUserQuestion with header "Verbosity". Same options as install: Short & punchy, Balanced, Thorough.
Step 6: Custom Instructions
Ask in plain text: "Any special instructions? For example: 'always start with a fun fact', 'be a bit sarcastic', 'speak like a ship captain', or just leave blank."
Step 7: Save
Generate a personality filename from the chosen name (lowercase, spaces to hyphens, e.g., "Pirate Claude" → pirate-claude).
If a personality with that name already exists, ask the user if they want to overwrite or pick a different name.
Write the personality file to ~/.claude-talk/personalities/<name>.md using the same format as install Part 5, but with an added ## Voice section after ## Identity:
## Voice
- Voice: <chosen voice>
Then ask: "Activate this personality now?"
If yes, run the same steps as the switch subcommand.
If no, confirm: "Saved . Switch to it anytime with /claude-talk:personality switch <name>."
"edit [name]": Edit a Personality
If no name given, use the active personality (from
~/.claude-talk/active-personality).Read
~/.claude-talk/personalities/<name>.md.Display current values: Name, Voice, Style, Verbosity, User address, Custom instructions.
Use AskUserQuestion with header "Edit" and options:
- Name - "Change the assistant's name"
- Voice - "Change the TTS voice"
- Style - "Change personality style"
- Verbosity - "Change response length"
Allow multiSelect so the user can change multiple fields at once.
For each selected field, use the same AskUserQuestion flows as the create subcommand.
Write the updated personality file.
If this is the active personality, also update
~/.claude-talk/personality.mdand~/.claude-talk/config.env(VOICE).Confirm changes.
"delete <name>": Delete a Personality
- Read
~/.claude-talk/active-personality. - If
<name>is the active personality, refuse: "Can't delete the active personality. Switch to a different one first with/claude-talk:personality switch <other>." - If
<name>is "default", warn: "Are you sure you want to delete the default personality?" and confirm. - Check that
~/.claude-talk/personalities/<name>.mdexists. If not, list available and abort. - Delete
~/.claude-talk/personalities/<name>.md. - Confirm: "Deleted ."
"export [name]": Export a Personality
- If no name given, use the active personality.
- Read
~/.claude-talk/personalities/<name>.md. - Print the full contents of the file.
"import": Import a Personality
Ask the user: "Paste the personality markdown below, or provide a file path:"
Wait for the user's response.
- If it looks like a file path (starts with
/or~or./), read the file. - Otherwise, treat the response as raw markdown content.
Extract the name from the ## Identity section (- Name: <name>).
Generate a filename (lowercase, hyphens).
If a personality with that name already exists, ask if they want to overwrite.
Write to ~/.claude-talk/personalities/<name>.md.
Ask if they want to activate it.
Migration
If ~/.claude-talk/personality.md exists but ~/.claude-talk/personalities/ does not:
- Create
~/.claude-talk/personalities/. - Read
~/.claude-talk/personality.md. - Extract the name from
## Identity→- Name: <name>. - Generate a filename from the name.
- Check if the personality file has a
## Voicesection. If not, read VOICE from~/.claude-talk/config.envand add a## Voicesection after## Identity:## Voice - Voice: <voice from config> - Write to
~/.claude-talk/personalities/<name>.md. - Write the name to
~/.claude-talk/active-personality. Find the plugin directory the same way as the install skill: check current working directory for the file, or readCLAUDE_TALK_DIRfrom config.env.
If no personality directory and no personality.md
Tell the user: "No personality configured yet. Run /claude-talk:install to set one up, or /claude-talk:personality create to create one."