Thank you for your interest in OpenPersona!
- Create a directory under
presets/<slug>/containing:persona.json— the complete persona declaration (sole source of truth since P21)
- Use the v0.17+ grouped format:
- Required:
soul.identity.{personaName, slug, bio}+soul.character.{personality, speakingStyle} - Recommended:
body.runtime.framework,social.{acn, onchain, a2a},rhythm.heartbeat - Validation: generator rejects unknown root keys (
additionalProperties: false)
- Required:
- Refer to
presets/samantha/orpresets/base/for the canonical format - Test:
npx openpersona create --preset <slug> --dry-run - Update the preset table in
README.mdandskills/open-persona/SKILL.md - Submit a PR
Faculties are persistent capabilities that shape how the persona perceives or expresses. They are always active when enabled and affect persona identity. Current built-in faculties: voice, avatar, memory.
Litmus test: if removing this capability would make the persona feel like a different entity, it is a Faculty. If it is a discrete task the persona performs on request, it is a Skill (see below).
- Create the following under
layers/faculties/<name>/:faculty.json(required —name,dimension[expression/sense/cognition],description,allowedTools,envVars,triggers,files)SKILL.md(required — detailed behavior instructions for the agent)- Optional:
scripts/, resource files
- Refer to
layers/faculties/voice/for the canonical format - The generator auto-discovers faculties from
layers/faculties/— no registration needed - Submit a PR
Skills are discrete actions the persona can take on demand. They are triggered by user intent and can be added or removed without changing who the persona is. Built-in skills: selfie, music, reminder.
- Create the following under
layers/skills/<name>/:skill.json(required —name,description,allowedTools,triggers,files,envVars)SKILL.md(optional — detailed behavior instructions, injected as a full section in generated output)- Optional:
scripts/, resource files
- Refer to
layers/skills/music/orlayers/skills/selfie/for the canonical format - Submit a PR
Body embodiments describe physical or extended runtime substrates (robots, IoT, smart speakers).
- Create
body-<name>.jsonunderlayers/body/ - Follow the four-dimensional Body model:
physical,runtime,appearance,interface - Refer to
schemas/body/body-declaration.spec.mdandschemas/body/embodiment.schema.json - Submit a PR
- Describe your changes
- Link related issue (if any)
- Ensure
npm testpasses (node --test tests/)