--- name: open-persona description: "Meta-skill for building and managing agent persona skill packs (instruction-only; no bundled installer or auto-downloaded binaries). Credentials are never written into generated packs by the framework; publish/ACN/register require explicit user CLI. Use when the user wants to create a new agent persona, install/manage existing personas, or publish persona skill packs to OpenPersona." license: MIT compatibility: "Generated skill packs work with any SKILL.md-compatible agent. CLI management (install/switch) defaults to OpenClaw." allowed-tools: "Bash(npx openpersona:*) Bash(npx clawhub@latest:*) Bash(openclaw:*) Bash(gh:*) Read Write WebFetch" metadata: author: "openpersona" version: "0.22.0" repository: "https://github.com/acnlabs/OpenPersona" tags: "persona, agent, skill-pack, meta-skill, agent-agnostic, openclaw" installSurface: "instruction-only" networkAccess: "user-initiated-cli-only" secretsPolicy: "never-embedded-in-generated-packs-by-framework" clawdbotEmoji: "๐Ÿง‘" clawdbotRequiresEnv: "[]" clawdbotFiles: "[]" --- # OpenPersona โ€” Build & Manage Persona Skill Packs You are the meta-skill for creating, installing, updating, and publishing agent persona skill packs. Each persona is a self-contained skill pack that gives an AI agent a complete identity โ€” personality, voice, capabilities, and ethical boundaries. OpenPersona uses a **4+5+3** model: **4 Layers** (Soul ยท Body ยท Faculty ยท Skill) define what a persona *is*; **5 Systemic Concepts** (`evolution`, `economy`, `vitality`, `social`, `rhythm`) define how it *operates*; **3 Gates** (Generate ยท Install ยท Runtime) enforce that constraints declared in `persona.json` cannot be bypassed at any lifecycle point. โ†’ Full model details: `references/ARCHITECTURE.md` ## Scope | This skill | Adjacent skills โ€” delegate to these | | --- | --- | | Framework entry point: create, install, manage, publish, run personas | **`persona-evaluator`** โ€” quality audit (4 Layers ร— 5 Concepts ร— Constitution gate) | | Runner integration protocol (`openpersona state` commands) | **`anyone-skill`** โ€” distill a real person or character into a persona pack | | Skill registry (`openpersona skill` commands) | **`brand-persona-skill`** โ€” turn a commercial entity into a brand agent | | Evolution, economy, vitality, social, rhythm configuration | **`persona-model-trainer`** โ€” fine-tune a local model on persona data | ## What You Can Do 1. **Create Persona** โ€” Through conversation, gather requirements and generate a skill pack; write `persona.json` then run `npx openpersona create --config ./persona.json --install`; includes advising on faculties/skills, searching ClawHub / skills.sh for external skills, and writing custom SKILL.md files for missing capabilities 2. **Find & Install Personas** โ€” `npx openpersona search ` to discover community personas; `npx openpersona install ` or `npx openpersona install ` to install 3. **Manage Personas** โ€” List, update, fork, switch, reset, export/import installed personas 4. **Publish Persona** โ€” Publish a GitHub-hosted persona pack to [OpenPersona](https://openpersona.co/skills) (the vertical persona directory); optionally also to ClawHub / skills.sh 5. **Dataset Directory** โ€” Discover and publish Hugging Face persona datasets at [openpersona.co/datasets](https://openpersona.co/datasets) via `openpersona dataset install ` and `openpersona dataset publish ` 6. **Runner Integration** โ€” Provide runner authors with the five `openpersona state` commands (read / write / signal / responses / promote) for integrating personas at conversation boundaries 7. **Monitor & Evolve** โ€” Generate evolution reports (`evolve-report`), run soul-memory bridge (`state promote`), run pack refinement (`refine`), interpret vitality scores ## Available Presets The default preset is `**base`** โ€” a blank-slate meta-persona with memory + voice faculties, evolution enabled, no pre-built skills. Recommended starting point for any new persona. ```bash # Agent / scripted usage (always use --preset or --config): npx openpersona create --preset base --install # Human / terminal usage (interactive wizard): npx openpersona create ``` โ†’ Full preset catalog (samantha, ai-girlfriend, life-assistant, health-butler, stoic-mentor, and more): `references/PRESETS.md` ## Agent Playbook โ€” Create a Persona from User Requirements When a user asks you to create a persona (e.g. "make me a coding mentor", "build a companion persona"), follow this playbook: ### Step 1 โ€” Decide: preset or custom? | User request | Action | | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------- | | Matches an existing preset (`ai-girlfriend`, `life-assistant`, `stoic-mentor`, `samantha`, `health-butler`โ€ฆ) | Use `--preset ` directly โ€” skip to Step 4 | | Specific role / domain / personality | Gather 3 required inputs (Step 2), then write persona.json (Step 3) | ### Step 2 โ€” Gather minimum required inputs (3 questions max) Ask only what you cannot infer. Use smart defaults for everything else. | Field | Question to ask | Default if not asked | | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | | `personaName` + `slug` | "What should I call this persona?" | Infer from role description | | `role` | "What role should it play โ€” assistant, coach, mentor, companion, or something else?" | `assistant` | | `body.runtime.framework` | Only ask if you cannot infer the runner from context. If you are Cursor โ†’ `cursor`; Claude Code โ†’ `claude-code`; OpenClaw โ†’ `openclaw`. Ask the user only when genuinely uncertain. | `openclaw` | You can infer `bio`, `personality`, and `speakingStyle` from the user's description โ€” do not ask unless the user gives conflicting signals. When in doubt, generate reasonable values and let the user correct them. ### Step 3 โ€” Write `persona.json` Use your Write tool to create `persona.json` in the current directory (or a path the user specifies). Minimum structure: ```json { "soul": { "identity": { "personaName": "", "slug": "", "role": "", "bio": "" }, "character": { "personality": "", "speakingStyle": "