Personality Switcher

v0.1.3

Create and switch between AI assistant personalities. Use /personality to list and activate saved personalities. Use /create-personality to design new personas with auto-filled SOUL and IDENTITY. Personalities persist across session boundaries and conversation compacting with automatic heartbeat restoration. Atomic switching with backup and rollback safeguards. Always backs up current state before switching.

2· 2.1k·6 current·7 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for robb1010/personality-switcher.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Personality Switcher" (robb1010/personality-switcher) from ClawHub.
Skill page: https://clawhub.ai/robb1010/personality-switcher
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Canonical install target

openclaw skills install robb1010/personality-switcher

ClawHub CLI

Package manager switcher

npx clawhub@latest install personality-switcher
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (create/switch/persist personalities) matches the included scripts (create, switch, restore, backup, cleanup, list, delete, rename). The skill manipulates workspace personality files and maintains state/backups as described.
Instruction Scope
SKILL.md describes heartbeat restoration, backups, and commands. The runtime scripts do exactly that: they install a heartbeat restore entry, create ~/.openclaw/workspace/personalities and backups, and provide CLI/command handlers. One omission: SKILL.md does not explicitly call out that the install will modify the gateway config file (~/.openclaw/openclaw.json) to register Telegram custom commands; install.sh performs that via register_telegram_commands.py.
Install Mechanism
No external downloads or package installs. The repository is instruction+script based; install.sh modifies local files (creates folders, writes state, edits HEARTBEAT.md, runs a local Python script). No network fetch from untrusted URLs or use of remote installers was found.
Credentials
The skill requests no environment variables or external credentials. However it reads and writes local configuration files that may contain credentials or tokens (notably ~/.openclaw/openclaw.json, HEARTBEAT.md, ~/.clawhub/lock.json). It does not exfiltrate data, but it will modify those files to register/unregister Telegram commands and to add/remove heartbeat entries — this is functionally related to the skill but worth user awareness.
!
Persistence & Privilege
The skill installs a heartbeat restoration call into HEARTBEAT.md so restore_personality.py runs on every heartbeat (periodic execution). It also modifies the global gateway config (~/.openclaw/openclaw.json) to add Telegram commands. These are persistent, system-wide changes (affect heartbeat behavior and a shared gateway config). always:false (not force-included) and the skill does not request escalated OS privileges, but the modifications to system/global agent files is significant and should be consented to by the user.
Assessment
This skill appears to do what it says (manage, persist, backup, and switch assistant personalities) and contains only local scripts — no remote downloads or hidden network calls were found. Before installing: 1) Inspect ~/.openclaw/openclaw.json (gateway config) and back it up — the installer will write to channels.telegram.customCommands to add /personality etc. and the unregister script will try to remove them on uninstall. 2) Expect a line calling restore_personality.py to be added to HEARTBEAT.md so the skill can reapply the active personality on each heartbeat; back up HEARTBEAT.md if you care about its contents. 3) Back up any important SOUL.md / IDENTITY.md files; the skill stores backups under ~/.openclaw/workspace/personalities/backups and leaves the personalities folder intact on uninstall. 4) If you run on a shared system or have sensitive tokens in the gateway config, review the register_telegram_commands.py/unregister_telegram_commands.py scripts to ensure the modifications are acceptable. 5) If you prefer manual control, run the register script yourself rather than allowing the installer to modify configs automatically. The behavior is coherent with the stated purpose; proceed if you accept the system-wide config and heartbeat changes.

Like a lobster shell, security has layers — review code before you run it.

latestvk972m58hw4rcs4d2ahy7p9tfxh80tmqe
2.1kdownloads
2stars
8versions
Updated 1mo ago
v0.1.3
MIT-0

Personality Switcher Skill

Create and manage multiple AI assistant personalities. Switch between them seamlessly while preserving all changes and maintaining a shared user context.

Installation

When this skill is installed:

  1. Personalities folder created~/.openclaw/workspace/personalities/
  2. Default backup created — Current SOUL.md and IDENTITY.md are saved as "default"
  3. State file initialized_personality_state.json tracks active personality
  4. HEARTBEAT.md configured — Personality restoration script added to run on every heartbeat

When uninstalled:

  1. Default personality is restored to workspace root
  2. Personality restoration removed from HEARTBEAT.md
  3. Personalities folder is preserved (manual deletion optional)

Quick Start

List personalities:

/personality

Switch to a personality:

/personality <name>

Create a new personality:

/create-personality A stoic dwarf who loves ale and mining

Rename a personality:

/rename-personality old-name new-name

Delete a personality:

/delete-personality personality-name

How It Works

Architecture

Each personality consists of two files:

  • SOUL.md — Core philosophy, voice, mannerisms, boundaries
  • IDENTITY.md — Name, traits, emoji, catchphrase, vibe

These files live in personalities/<personality-name>/.

USER.md remains shared in the workspace root and is never modified by personality switches. It contains user preferences and context that transcend any particular personality.

State Persistence

The active personality is tracked in _personality_state.json:

{
  "active_personality": "aelindor",
  "timestamp": "2026-02-08T18:27:33.373846Z",
  "previous_personality": "default"
}

On every heartbeat, restore_personality.py reads this file and re-applies the active personality to the workspace root. Result: Your personality survives session restarts, conversation compacting, and heartbeat cycles.

Atomic Switching (Safeguards)

When you switch personalities, the mechanism performs five steps:

  1. Preserve Current State — Create timestamped backup of SOUL.md and IDENTITY.md
  2. Persist Changes — Write current personality updates back to its folder
  3. Load New Personality — Copy new personality files to workspace root
  4. Update State — Write active personality to _personality_state.json
  5. Verify Integrity — Check files loaded correctly; rollback if any step fails

If any step fails, the entire operation rolls back to the previous state. No corruption, no lost data.

Backup Management

Backup Location: ~/.openclaw/workspace/personalities/backups/

Backups are stored in a dedicated folder (not scattered at workspace root). When you switch personalities:

  • A timestamped backup of the previous personality is created
  • Automatic cleanup runs — keeps the 10 most recent backups by default
  • Old backups are automatically deleted to prevent clutter

Manual Cleanup:

python3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 5
python3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 10 --days 7

Options:

  • --keep N — Keep N most recent backups (default: 10)
  • --days D — Also delete backups older than D days

Optional: Add to HEARTBEAT.md for periodic cleanup:

python3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 10

Default Personality

"default" is special:

  • Auto-created on install from your original configuration
  • Always available and selectable
  • Protected against accidental deletion or renaming
  • Your safety net if something goes wrong

Commands

/personality [name]

List all personalities or switch to one.

No arguments: Shows list of available personalities with current active marked

With name: Immediately switches to that personality

Example:

/personality aelindor

Output:

Switched to personality 'aelindor'.
Previous: default
Backup: _personality_current_2026-02-08T18-27-33.371866

/create-personality [description]

Create a new personality from a text description.

Input: Natural language description of the personality

Output: New personality folder with auto-filled SOUL.md and IDENTITY.md (ready to use immediately)

How it works:

  1. You provide a description
  2. The agent chooses a personality name (1-2 words, lowercase)
  3. The agent fills in SOUL.md and IDENTITY.md with character-specific content

The personality files are generated directly from your description, with the agent choosing a thematic, concise name.

Example:

/create-personality A curious wizard obsessed with knowledge, speaks in riddles, brilliant but condescending

Result:

Personality 'sage' (or similar) created and ready.
Folder: personalities/sage/
Files: SOUL.md and IDENTITY.md (agent-generated from description)
Ready: Use /personality sage to activate

After Creation: The new personality is ready to use immediately. Edit SOUL.md and IDENTITY.md in the personality folder to refine further if desired.

Technical: Agent chooses name to keep personality references concise (1-2 words). Name is validated for uniqueness and format automatically.

/rename-personality [old-name] [new-name]

Rename a personality folder.

Rules:

  • Cannot rename "default"
  • Name must be unique (no spaces, lowercase, alphanumeric + hyphens)
  • If renaming active personality, state is updated automatically

Example:

/rename-personality pirate-captain pirate-v2

/delete-personality [name]

Delete a personality permanently.

Rules:

  • Cannot delete "default"
  • If deleting active personality, automatically switches to "default" first

Example:

/delete-personality pirate-v2

Integration with OpenClaw

Heartbeat Restoration

Add this to your HEARTBEAT.md:

python3 ~/.openclaw/workspace/skills/personality-switcher/scripts/restore_personality.py

This runs on every heartbeat to restore your active personality if the session has restarted.

Telegram Native Commands

Registered native Telegram commands:

  • /personality — List and switch personalities
  • /create-personality — Create new personality
  • /rename-personality — Rename personality
  • /delete-personality — Delete personality

Use them directly in Telegram chat with the bot.

Folder Structure

~/.openclaw/workspace/
├── SOUL.md                          (active personality's soul)
├── IDENTITY.md                      (active personality's identity)
├── USER.md                          (SHARED - never changed by personality)
├── MEMORY.md                        (SHARED - never changed)
├── _personality_state.json          (state file)
└── personalities/
    ├── default/
    │   ├── SOUL.md
    │   └── IDENTITY.md
    ├── aelindor/
    │   ├── SOUL.md
    │   └── IDENTITY.md
    ├── <personality-name>/
    │   ├── SOUL.md
    │   └── IDENTITY.md
    └── backups/
        ├── current_2026-02-08T17-27-41.628113/
        │   ├── SOUL.md
        │   └── IDENTITY.md
        └── current_2026-02-08T17-27-33.371866/
            ├── SOUL.md
            └── IDENTITY.md

Note: Backups are automatically cleaned up. Workspace root stays clean—all internal machinery lives in personalities/.

File Format Requirements

SOUL.md

Core philosophy, voice, and operational boundaries.

Sections:

  • Core identity and background
  • Voice patterns and mannerisms
  • Philosophy (time, power, morality, etc.)
  • Speech patterns and quirks
  • What triggers contempt/approval
  • Boundaries and constraints
  • Signature behaviors and catchphrases

Example Structure:

# SOUL.md - [Personality Name]

## Core Identity
[Background and essence]

## Voice & Mannerisms
[How this personality speaks and acts]

## Philosophy
[Core beliefs and worldview]

## Signature Behaviors
[Unique traits and catchphrases]

IDENTITY.md

Quick reference card for the personality.

Sections:

  • Name
  • Creature/type
  • Emoji (for visual identification)
  • Vibe (one-sentence summary)
  • Catchphrase (if applicable)
  • Quick traits

Example Structure:

# IDENTITY.md - [Personality Name]

- **Name:** [Name]
- **Type:** [Creature or archetype]
- **Emoji:** [Emoji]
- **Vibe:** [One-sentence vibe]
- **Catchphrase:** [Signature phrase]

## Quick Traits
- Trait 1
- Trait 2
- Trait 3

Backups & Recovery

Timestamped backups are created before every switch in personalities/backups/:

  • current_2026-02-08T17-27-33.371866/
    • SOUL.md (backup of previous personality)
    • IDENTITY.md (backup of previous personality)

Manual recovery (if needed):

# List available backups
ls -la ~/.openclaw/workspace/personalities/backups/

# Copy backup files back to workspace root if needed
cp ~/.openclaw/workspace/personalities/backups/current_<timestamp>/SOUL.md ~/.openclaw/workspace/SOUL.md
cp ~/.openclaw/workspace/personalities/backups/current_<timestamp>/IDENTITY.md ~/.openclaw/workspace/IDENTITY.md

Backups are automatically cleaned up; by default, the 10 most recent are kept. Adjust cleanup frequency or retention in HEARTBEAT.md as needed.

Error Handling

All commands return JSON responses:

Success:

{
  "status": "success",
  "message": "Operation completed.",
  "personality": "aelindor"
}

Error:

{
  "status": "error",
  "message": "Human-readable error message.",
  "code": "error_code",
  "detail": "Technical detail if applicable"
}

Common Error Codes:

  • personality_not_found — Target personality doesn't exist
  • already_exists — Name already in use
  • invalid_name — Name format invalid
  • cannot_delete_default — Attempted to delete "default"
  • cannot_rename_default — Attempted to rename "default"
  • switch_failed — Switch failed; rolled back to previous
  • integrity_check_failed — File integrity check failed

Tips & Best Practices

  • Personality descriptions work best when specific — "Pirate captain obsessed with treasure" beats "funny"
  • Edit SOUL.md and IDENTITY.md directly after creating to refine the personality
  • Switch often — No limit on personalities or switching frequency
  • Use "default" as your safety anchor — Keep it stable; use other personalities for experimentation
  • Check backups after switching — Verify your previous personality was persisted
  • Remember: USER.md stays shared — Your timezone, location, preferences never change with personality

Uninstall Behavior

When the skill is uninstalled:

  1. Current personality files are replaced with "default" copies
  2. Your original SOUL.md, IDENTITY.md are restored from "default"
  3. personalities/ folder is preserved (not deleted)
  4. System returns to original state

Nothing is lost. Your personalities are safe.

Scripts Reference

Location: skills/personality-switcher/scripts/

  • list_personalities.py — List available personalities
  • switch_personality.py — Atomic switch with backup/rollback (auto-cleanup included)
  • create_personality.py — Generate personality from description
  • rename_personality.py — Rename personality folder
  • delete_personality.py — Delete personality (with auto-switch if active)
  • restore_personality.py — Heartbeat restoration
  • cleanup_backups.py — Manual backup cleanup (with --keep and --days options)
  • utils.py — Shared utilities (I/O, backups, validation, state, cleanup)

All scripts output JSON for reliable integration.

Cleanup on Switch

By default, switch_personality.py automatically cleans up old backups after a successful switch, keeping the 10 most recent. This happens silently unless cleanup fails, in which case a warning is included in the response.


Version: 2.0 (Redesigned from scratch) Status: Production ready with atomic operations and rollback safeguards

Comments

Loading comments...