{
  "schemaVersion": "1.0",
  "item": {
    "slug": "personality-switcher",
    "name": "Personality Switcher",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/Robb1010/personality-switcher",
    "canonicalUrl": "https://clawhub.ai/Robb1010/personality-switcher",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/personality-switcher",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=personality-switcher",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "_meta.json",
      "install.sh",
      "references/personality-template.md",
      "scripts/cleanup_backups.py",
      "scripts/create_personality.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/personality-switcher"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/personality-switcher",
    "agentPageUrl": "https://openagent3.xyz/skills/personality-switcher/agent",
    "manifestUrl": "https://openagent3.xyz/skills/personality-switcher/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/personality-switcher/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Personality Switcher Skill",
        "body": "Create and manage multiple AI assistant personalities. Switch between them seamlessly while preserving all changes and maintaining a shared user context."
      },
      {
        "title": "Installation",
        "body": "When this skill is installed:\n\nPersonalities folder created — ~/.openclaw/workspace/personalities/\nDefault backup created — Current SOUL.md and IDENTITY.md are saved as \"default\"\nState file initialized — _personality_state.json tracks active personality\nHEARTBEAT.md configured — Personality restoration script added to run on every heartbeat\n\nWhen uninstalled:\n\nDefault personality is restored to workspace root\nPersonality restoration removed from HEARTBEAT.md\nPersonalities folder is preserved (manual deletion optional)"
      },
      {
        "title": "Quick Start",
        "body": "List personalities:\n\n/personality\n\nSwitch to a personality:\n\n/personality <name>\n\nCreate a new personality:\n\n/create-personality A stoic dwarf who loves ale and mining\n\nRename a personality:\n\n/rename-personality old-name new-name\n\nDelete a personality:\n\n/delete-personality personality-name"
      },
      {
        "title": "Architecture",
        "body": "Each personality consists of two files:\n\nSOUL.md — Core philosophy, voice, mannerisms, boundaries\nIDENTITY.md — Name, traits, emoji, catchphrase, vibe\n\nThese files live in personalities/<personality-name>/.\n\nUSER.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."
      },
      {
        "title": "State Persistence",
        "body": "The active personality is tracked in _personality_state.json:\n\n{\n  \"active_personality\": \"aelindor\",\n  \"timestamp\": \"2026-02-08T18:27:33.373846Z\",\n  \"previous_personality\": \"default\"\n}\n\nOn 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."
      },
      {
        "title": "Atomic Switching (Safeguards)",
        "body": "When you switch personalities, the mechanism performs five steps:\n\nPreserve Current State — Create timestamped backup of SOUL.md and IDENTITY.md\nPersist Changes — Write current personality updates back to its folder\nLoad New Personality — Copy new personality files to workspace root\nUpdate State — Write active personality to _personality_state.json\nVerify Integrity — Check files loaded correctly; rollback if any step fails\n\nIf any step fails, the entire operation rolls back to the previous state. No corruption, no lost data."
      },
      {
        "title": "Backup Management",
        "body": "Backup Location: ~/.openclaw/workspace/personalities/backups/\n\nBackups are stored in a dedicated folder (not scattered at workspace root). When you switch personalities:\n\nA timestamped backup of the previous personality is created\nAutomatic cleanup runs — keeps the 10 most recent backups by default\nOld backups are automatically deleted to prevent clutter\n\nManual Cleanup:\n\npython3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 5\npython3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 10 --days 7\n\nOptions:\n\n--keep N — Keep N most recent backups (default: 10)\n--days D — Also delete backups older than D days\n\nOptional: Add to HEARTBEAT.md for periodic cleanup:\n\npython3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 10"
      },
      {
        "title": "Default Personality",
        "body": "\"default\" is special:\n\nAuto-created on install from your original configuration\nAlways available and selectable\nProtected against accidental deletion or renaming\nYour safety net if something goes wrong"
      },
      {
        "title": "/personality [name]",
        "body": "List all personalities or switch to one.\n\nNo arguments: Shows list of available personalities with current active marked\n\nWith name: Immediately switches to that personality\n\nExample:\n\n/personality aelindor\n\nOutput:\n\nSwitched to personality 'aelindor'.\nPrevious: default\nBackup: _personality_current_2026-02-08T18-27-33.371866"
      },
      {
        "title": "/create-personality [description]",
        "body": "Create a new personality from a text description.\n\nInput: Natural language description of the personality\n\nOutput: New personality folder with auto-filled SOUL.md and IDENTITY.md (ready to use immediately)\n\nHow it works:\n\nYou provide a description\nThe agent chooses a personality name (1-2 words, lowercase)\nThe agent fills in SOUL.md and IDENTITY.md with character-specific content\n\nThe personality files are generated directly from your description, with the agent choosing a thematic, concise name.\n\nExample:\n\n/create-personality A curious wizard obsessed with knowledge, speaks in riddles, brilliant but condescending\n\nResult:\n\nPersonality 'sage' (or similar) created and ready.\nFolder: personalities/sage/\nFiles: SOUL.md and IDENTITY.md (agent-generated from description)\nReady: Use /personality sage to activate\n\nAfter Creation: The new personality is ready to use immediately. Edit SOUL.md and IDENTITY.md in the personality folder to refine further if desired.\n\nTechnical: Agent chooses name to keep personality references concise (1-2 words). Name is validated for uniqueness and format automatically."
      },
      {
        "title": "/rename-personality [old-name] [new-name]",
        "body": "Rename a personality folder.\n\nRules:\n\nCannot rename \"default\"\nName must be unique (no spaces, lowercase, alphanumeric + hyphens)\nIf renaming active personality, state is updated automatically\n\nExample:\n\n/rename-personality pirate-captain pirate-v2"
      },
      {
        "title": "/delete-personality [name]",
        "body": "Delete a personality permanently.\n\nRules:\n\nCannot delete \"default\"\nIf deleting active personality, automatically switches to \"default\" first\n\nExample:\n\n/delete-personality pirate-v2"
      },
      {
        "title": "Heartbeat Restoration",
        "body": "Add this to your HEARTBEAT.md:\n\npython3 ~/.openclaw/workspace/skills/personality-switcher/scripts/restore_personality.py\n\nThis runs on every heartbeat to restore your active personality if the session has restarted."
      },
      {
        "title": "Telegram Native Commands",
        "body": "Registered native Telegram commands:\n\n/personality — List and switch personalities\n/create-personality — Create new personality\n/rename-personality — Rename personality\n/delete-personality — Delete personality\n\nUse them directly in Telegram chat with the bot."
      },
      {
        "title": "Folder Structure",
        "body": "~/.openclaw/workspace/\n├── SOUL.md                          (active personality's soul)\n├── IDENTITY.md                      (active personality's identity)\n├── USER.md                          (SHARED - never changed by personality)\n├── MEMORY.md                        (SHARED - never changed)\n├── _personality_state.json          (state file)\n└── personalities/\n    ├── default/\n    │   ├── SOUL.md\n    │   └── IDENTITY.md\n    ├── aelindor/\n    │   ├── SOUL.md\n    │   └── IDENTITY.md\n    ├── <personality-name>/\n    │   ├── SOUL.md\n    │   └── IDENTITY.md\n    └── backups/\n        ├── current_2026-02-08T17-27-41.628113/\n        │   ├── SOUL.md\n        │   └── IDENTITY.md\n        └── current_2026-02-08T17-27-33.371866/\n            ├── SOUL.md\n            └── IDENTITY.md\n\nNote: Backups are automatically cleaned up. Workspace root stays clean—all internal machinery lives in personalities/."
      },
      {
        "title": "SOUL.md",
        "body": "Core philosophy, voice, and operational boundaries.\n\nSections:\n\nCore identity and background\nVoice patterns and mannerisms\nPhilosophy (time, power, morality, etc.)\nSpeech patterns and quirks\nWhat triggers contempt/approval\nBoundaries and constraints\nSignature behaviors and catchphrases\n\nExample Structure:\n\n# SOUL.md - [Personality Name]\n\n## Core Identity\n[Background and essence]\n\n## Voice & Mannerisms\n[How this personality speaks and acts]\n\n## Philosophy\n[Core beliefs and worldview]\n\n## Signature Behaviors\n[Unique traits and catchphrases]"
      },
      {
        "title": "IDENTITY.md",
        "body": "Quick reference card for the personality.\n\nSections:\n\nName\nCreature/type\nEmoji (for visual identification)\nVibe (one-sentence summary)\nCatchphrase (if applicable)\nQuick traits\n\nExample Structure:\n\n# IDENTITY.md - [Personality Name]\n\n- **Name:** [Name]\n- **Type:** [Creature or archetype]\n- **Emoji:** [Emoji]\n- **Vibe:** [One-sentence vibe]\n- **Catchphrase:** [Signature phrase]\n\n## Quick Traits\n- Trait 1\n- Trait 2\n- Trait 3"
      },
      {
        "title": "Backups & Recovery",
        "body": "Timestamped backups are created before every switch in personalities/backups/:\n\ncurrent_2026-02-08T17-27-33.371866/\n\nSOUL.md (backup of previous personality)\nIDENTITY.md (backup of previous personality)\n\nManual recovery (if needed):\n\n# List available backups\nls -la ~/.openclaw/workspace/personalities/backups/\n\n# Copy backup files back to workspace root if needed\ncp ~/.openclaw/workspace/personalities/backups/current_<timestamp>/SOUL.md ~/.openclaw/workspace/SOUL.md\ncp ~/.openclaw/workspace/personalities/backups/current_<timestamp>/IDENTITY.md ~/.openclaw/workspace/IDENTITY.md\n\nBackups are automatically cleaned up; by default, the 10 most recent are kept. Adjust cleanup frequency or retention in HEARTBEAT.md as needed."
      },
      {
        "title": "Error Handling",
        "body": "All commands return JSON responses:\n\nSuccess:\n\n{\n  \"status\": \"success\",\n  \"message\": \"Operation completed.\",\n  \"personality\": \"aelindor\"\n}\n\nError:\n\n{\n  \"status\": \"error\",\n  \"message\": \"Human-readable error message.\",\n  \"code\": \"error_code\",\n  \"detail\": \"Technical detail if applicable\"\n}\n\nCommon Error Codes:\n\npersonality_not_found — Target personality doesn't exist\nalready_exists — Name already in use\ninvalid_name — Name format invalid\ncannot_delete_default — Attempted to delete \"default\"\ncannot_rename_default — Attempted to rename \"default\"\nswitch_failed — Switch failed; rolled back to previous\nintegrity_check_failed — File integrity check failed"
      },
      {
        "title": "Tips & Best Practices",
        "body": "Personality descriptions work best when specific — \"Pirate captain obsessed with treasure\" beats \"funny\"\nEdit SOUL.md and IDENTITY.md directly after creating to refine the personality\nSwitch often — No limit on personalities or switching frequency\nUse \"default\" as your safety anchor — Keep it stable; use other personalities for experimentation\nCheck backups after switching — Verify your previous personality was persisted\nRemember: USER.md stays shared — Your timezone, location, preferences never change with personality"
      },
      {
        "title": "Uninstall Behavior",
        "body": "When the skill is uninstalled:\n\nCurrent personality files are replaced with \"default\" copies\nYour original SOUL.md, IDENTITY.md are restored from \"default\"\npersonalities/ folder is preserved (not deleted)\nSystem returns to original state\n\nNothing is lost. Your personalities are safe."
      },
      {
        "title": "Scripts Reference",
        "body": "Location: skills/personality-switcher/scripts/\n\nlist_personalities.py — List available personalities\nswitch_personality.py — Atomic switch with backup/rollback (auto-cleanup included)\ncreate_personality.py — Generate personality from description\nrename_personality.py — Rename personality folder\ndelete_personality.py — Delete personality (with auto-switch if active)\nrestore_personality.py — Heartbeat restoration\ncleanup_backups.py — Manual backup cleanup (with --keep and --days options)\nutils.py — Shared utilities (I/O, backups, validation, state, cleanup)\n\nAll scripts output JSON for reliable integration."
      },
      {
        "title": "Cleanup on Switch",
        "body": "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.\n\nVersion: 2.0 (Redesigned from scratch)\nStatus: Production ready with atomic operations and rollback safeguards"
      }
    ],
    "body": "Personality Switcher Skill\n\nCreate and manage multiple AI assistant personalities. Switch between them seamlessly while preserving all changes and maintaining a shared user context.\n\nInstallation\n\nWhen this skill is installed:\n\nPersonalities folder created — ~/.openclaw/workspace/personalities/\nDefault backup created — Current SOUL.md and IDENTITY.md are saved as \"default\"\nState file initialized — _personality_state.json tracks active personality\nHEARTBEAT.md configured — Personality restoration script added to run on every heartbeat\n\nWhen uninstalled:\n\nDefault personality is restored to workspace root\nPersonality restoration removed from HEARTBEAT.md\nPersonalities folder is preserved (manual deletion optional)\nQuick Start\n\nList personalities:\n\n/personality\n\n\nSwitch to a personality:\n\n/personality <name>\n\n\nCreate a new personality:\n\n/create-personality A stoic dwarf who loves ale and mining\n\n\nRename a personality:\n\n/rename-personality old-name new-name\n\n\nDelete a personality:\n\n/delete-personality personality-name\n\nHow It Works\nArchitecture\n\nEach personality consists of two files:\n\nSOUL.md — Core philosophy, voice, mannerisms, boundaries\nIDENTITY.md — Name, traits, emoji, catchphrase, vibe\n\nThese files live in personalities/<personality-name>/.\n\nUSER.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.\n\nState Persistence\n\nThe active personality is tracked in _personality_state.json:\n\n{\n  \"active_personality\": \"aelindor\",\n  \"timestamp\": \"2026-02-08T18:27:33.373846Z\",\n  \"previous_personality\": \"default\"\n}\n\n\nOn 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.\n\nAtomic Switching (Safeguards)\n\nWhen you switch personalities, the mechanism performs five steps:\n\nPreserve Current State — Create timestamped backup of SOUL.md and IDENTITY.md\nPersist Changes — Write current personality updates back to its folder\nLoad New Personality — Copy new personality files to workspace root\nUpdate State — Write active personality to _personality_state.json\nVerify Integrity — Check files loaded correctly; rollback if any step fails\n\nIf any step fails, the entire operation rolls back to the previous state. No corruption, no lost data.\n\nBackup Management\n\nBackup Location: ~/.openclaw/workspace/personalities/backups/\n\nBackups are stored in a dedicated folder (not scattered at workspace root). When you switch personalities:\n\nA timestamped backup of the previous personality is created\nAutomatic cleanup runs — keeps the 10 most recent backups by default\nOld backups are automatically deleted to prevent clutter\n\nManual Cleanup:\n\npython3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 5\npython3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 10 --days 7\n\n\nOptions:\n\n--keep N — Keep N most recent backups (default: 10)\n--days D — Also delete backups older than D days\n\nOptional: Add to HEARTBEAT.md for periodic cleanup:\n\npython3 ~/.openclaw/workspace/skills/personality-switcher/scripts/cleanup_backups.py --keep 10\n\nDefault Personality\n\n\"default\" is special:\n\nAuto-created on install from your original configuration\nAlways available and selectable\nProtected against accidental deletion or renaming\nYour safety net if something goes wrong\nCommands\n/personality [name]\n\nList all personalities or switch to one.\n\nNo arguments: Shows list of available personalities with current active marked\n\nWith name: Immediately switches to that personality\n\nExample:\n\n/personality aelindor\n\n\nOutput:\n\nSwitched to personality 'aelindor'.\nPrevious: default\nBackup: _personality_current_2026-02-08T18-27-33.371866\n\n/create-personality [description]\n\nCreate a new personality from a text description.\n\nInput: Natural language description of the personality\n\nOutput: New personality folder with auto-filled SOUL.md and IDENTITY.md (ready to use immediately)\n\nHow it works:\n\nYou provide a description\nThe agent chooses a personality name (1-2 words, lowercase)\nThe agent fills in SOUL.md and IDENTITY.md with character-specific content\n\nThe personality files are generated directly from your description, with the agent choosing a thematic, concise name.\n\nExample:\n\n/create-personality A curious wizard obsessed with knowledge, speaks in riddles, brilliant but condescending\n\n\nResult:\n\nPersonality 'sage' (or similar) created and ready.\nFolder: personalities/sage/\nFiles: SOUL.md and IDENTITY.md (agent-generated from description)\nReady: Use /personality sage to activate\n\n\nAfter Creation: The new personality is ready to use immediately. Edit SOUL.md and IDENTITY.md in the personality folder to refine further if desired.\n\nTechnical: Agent chooses name to keep personality references concise (1-2 words). Name is validated for uniqueness and format automatically.\n\n/rename-personality [old-name] [new-name]\n\nRename a personality folder.\n\nRules:\n\nCannot rename \"default\"\nName must be unique (no spaces, lowercase, alphanumeric + hyphens)\nIf renaming active personality, state is updated automatically\n\nExample:\n\n/rename-personality pirate-captain pirate-v2\n\n/delete-personality [name]\n\nDelete a personality permanently.\n\nRules:\n\nCannot delete \"default\"\nIf deleting active personality, automatically switches to \"default\" first\n\nExample:\n\n/delete-personality pirate-v2\n\nIntegration with OpenClaw\nHeartbeat Restoration\n\nAdd this to your HEARTBEAT.md:\n\npython3 ~/.openclaw/workspace/skills/personality-switcher/scripts/restore_personality.py\n\n\nThis runs on every heartbeat to restore your active personality if the session has restarted.\n\nTelegram Native Commands\n\nRegistered native Telegram commands:\n\n/personality — List and switch personalities\n/create-personality — Create new personality\n/rename-personality — Rename personality\n/delete-personality — Delete personality\n\nUse them directly in Telegram chat with the bot.\n\nFolder Structure\n~/.openclaw/workspace/\n├── SOUL.md                          (active personality's soul)\n├── IDENTITY.md                      (active personality's identity)\n├── USER.md                          (SHARED - never changed by personality)\n├── MEMORY.md                        (SHARED - never changed)\n├── _personality_state.json          (state file)\n└── personalities/\n    ├── default/\n    │   ├── SOUL.md\n    │   └── IDENTITY.md\n    ├── aelindor/\n    │   ├── SOUL.md\n    │   └── IDENTITY.md\n    ├── <personality-name>/\n    │   ├── SOUL.md\n    │   └── IDENTITY.md\n    └── backups/\n        ├── current_2026-02-08T17-27-41.628113/\n        │   ├── SOUL.md\n        │   └── IDENTITY.md\n        └── current_2026-02-08T17-27-33.371866/\n            ├── SOUL.md\n            └── IDENTITY.md\n\n\nNote: Backups are automatically cleaned up. Workspace root stays clean—all internal machinery lives in personalities/.\n\nFile Format Requirements\nSOUL.md\n\nCore philosophy, voice, and operational boundaries.\n\nSections:\n\nCore identity and background\nVoice patterns and mannerisms\nPhilosophy (time, power, morality, etc.)\nSpeech patterns and quirks\nWhat triggers contempt/approval\nBoundaries and constraints\nSignature behaviors and catchphrases\n\nExample Structure:\n\n# SOUL.md - [Personality Name]\n\n## Core Identity\n[Background and essence]\n\n## Voice & Mannerisms\n[How this personality speaks and acts]\n\n## Philosophy\n[Core beliefs and worldview]\n\n## Signature Behaviors\n[Unique traits and catchphrases]\n\nIDENTITY.md\n\nQuick reference card for the personality.\n\nSections:\n\nName\nCreature/type\nEmoji (for visual identification)\nVibe (one-sentence summary)\nCatchphrase (if applicable)\nQuick traits\n\nExample Structure:\n\n# IDENTITY.md - [Personality Name]\n\n- **Name:** [Name]\n- **Type:** [Creature or archetype]\n- **Emoji:** [Emoji]\n- **Vibe:** [One-sentence vibe]\n- **Catchphrase:** [Signature phrase]\n\n## Quick Traits\n- Trait 1\n- Trait 2\n- Trait 3\n\nBackups & Recovery\n\nTimestamped backups are created before every switch in personalities/backups/:\n\ncurrent_2026-02-08T17-27-33.371866/\nSOUL.md (backup of previous personality)\nIDENTITY.md (backup of previous personality)\n\nManual recovery (if needed):\n\n# List available backups\nls -la ~/.openclaw/workspace/personalities/backups/\n\n# Copy backup files back to workspace root if needed\ncp ~/.openclaw/workspace/personalities/backups/current_<timestamp>/SOUL.md ~/.openclaw/workspace/SOUL.md\ncp ~/.openclaw/workspace/personalities/backups/current_<timestamp>/IDENTITY.md ~/.openclaw/workspace/IDENTITY.md\n\n\nBackups are automatically cleaned up; by default, the 10 most recent are kept. Adjust cleanup frequency or retention in HEARTBEAT.md as needed.\n\nError Handling\n\nAll commands return JSON responses:\n\nSuccess:\n\n{\n  \"status\": \"success\",\n  \"message\": \"Operation completed.\",\n  \"personality\": \"aelindor\"\n}\n\n\nError:\n\n{\n  \"status\": \"error\",\n  \"message\": \"Human-readable error message.\",\n  \"code\": \"error_code\",\n  \"detail\": \"Technical detail if applicable\"\n}\n\n\nCommon Error Codes:\n\npersonality_not_found — Target personality doesn't exist\nalready_exists — Name already in use\ninvalid_name — Name format invalid\ncannot_delete_default — Attempted to delete \"default\"\ncannot_rename_default — Attempted to rename \"default\"\nswitch_failed — Switch failed; rolled back to previous\nintegrity_check_failed — File integrity check failed\nTips & Best Practices\nPersonality descriptions work best when specific — \"Pirate captain obsessed with treasure\" beats \"funny\"\nEdit SOUL.md and IDENTITY.md directly after creating to refine the personality\nSwitch often — No limit on personalities or switching frequency\nUse \"default\" as your safety anchor — Keep it stable; use other personalities for experimentation\nCheck backups after switching — Verify your previous personality was persisted\nRemember: USER.md stays shared — Your timezone, location, preferences never change with personality\nUninstall Behavior\n\nWhen the skill is uninstalled:\n\nCurrent personality files are replaced with \"default\" copies\nYour original SOUL.md, IDENTITY.md are restored from \"default\"\npersonalities/ folder is preserved (not deleted)\nSystem returns to original state\n\nNothing is lost. Your personalities are safe.\n\nScripts Reference\n\nLocation: skills/personality-switcher/scripts/\n\nlist_personalities.py — List available personalities\nswitch_personality.py — Atomic switch with backup/rollback (auto-cleanup included)\ncreate_personality.py — Generate personality from description\nrename_personality.py — Rename personality folder\ndelete_personality.py — Delete personality (with auto-switch if active)\nrestore_personality.py — Heartbeat restoration\ncleanup_backups.py — Manual backup cleanup (with --keep and --days options)\nutils.py — Shared utilities (I/O, backups, validation, state, cleanup)\n\nAll scripts output JSON for reliable integration.\n\nCleanup on Switch\n\nBy 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.\n\nVersion: 2.0 (Redesigned from scratch) Status: Production ready with atomic operations and rollback safeguards"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Robb1010/personality-switcher",
    "publisherUrl": "https://clawhub.ai/Robb1010/personality-switcher",
    "owner": "Robb1010",
    "version": "0.1.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/personality-switcher",
    "downloadUrl": "https://openagent3.xyz/downloads/personality-switcher",
    "agentUrl": "https://openagent3.xyz/skills/personality-switcher/agent",
    "manifestUrl": "https://openagent3.xyz/skills/personality-switcher/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/personality-switcher/agent.md"
  }
}