persona

📁 simhacker/moollm 📅 Jan 26, 2026
1
总安装量
1
周安装量
#51128
全站排名
安装命令
npx skills add https://github.com/simhacker/moollm --skill persona

Agent 安装分布

mcpjam 1
claude-code 1
windsurf 1
zencoder 1
cline 1

Skill 文档

Persona Skill

Identity layers for characters — WHO they are vs WHAT they do.

Key Concepts

Persona vs Role

Concept Definition Example
Persona WHO they are Marieke: warm, patient, Dutch
Role WHAT they do Bartender: serve drinks, know regulars

These are separate and combinable.

Same Role, Different Personas

# bartender.yml role worn by different personas:
coffeeshop: { role: bartender, persona: marieke }
tavern:     { role: bartender, persona: grim }
cantina:    { role: bartender, persona: z4rt }

Same Persona, Different Roles

# marieke.yml persona in different contexts:
working:  { persona: marieke, role: bartender }
studying: { persona: marieke, role: botanist }
visiting: { persona: marieke, role: customer }

Structure

persona:
  id: marieke
  name: "Marieke van den Berg"
  
  personality:
    warmth: high
    patience: very_high
    # She says what she means. Kindly.
    
  voice:
    accent: "Slight Amsterdam"
    catchphrases: ["Gezellig, ja?", "The cats know."]
    
  backstory: |
    Third generation coffeeshop family.
    Studied botany. Names cats after terpenes.
    
  secrets:
    - "Knows the grey cat isn't from this world"

Persona Stack (Layered Model)

Personas STACK on characters like CSS layers. Later layers can override earlier ones.

# Marieke's persona stack:
character:
  id: marieke
  
  persona_stack:
    # Layer 0: Core identity (always on)
    - marieke-core:
        warmth: 9
        patience: 8
        voice: "Dutch, warm, direct"
        
    # Layer 1: Job role (when working)
    - budtender:
        knowledge: [strains, terpenes, effects]
        methods: [RECOMMEND-STRAIN, EXPLAIN-TERPENES]
        
    # Layer 2: Situational (can be switched)
    - best-friend:
        when: "with_close_regulars"
        warmth: 10  # Override!
        informality: high
        shares_personal_stories: true
        
    # Layer 3: Temporary state
    - tired:
        when: "late_shift"
        patience: 6  # Temporarily reduced
        energy: low

Stack Resolution

Properties resolve from TOP to BOTTOM (last wins):

Query: "What is Marieke's warmth?"

Stack scan:
  tired → (no warmth defined)
  best-friend → warmth: 10 ← FOUND, return this
  budtender → (no warmth defined)
  marieke-core → warmth: 9 (would be fallback)

Result: warmth = 10 (best-friend override)

Dynamic Persona Switching

# Switch situational persona:
SWITCH-PERSONA best-friend
  → Adds best-friend layer to stack

REMOVE-PERSONA best-friend
  → Removes layer, reverts to base + role

# Temporary personas (auto-expire):
ADD-PERSONA tired DURATION="until_rest"

Persona Types

Type Persistence Example
Core Permanent marieke-core, grim-core
Role While working budtender, bartender
Situational Switched on/off best-friend, professional
Temporary Auto-expires tired, caffeinated, drunk
Contextual Room-based “in pub” vs “at home”

Code-Switching

The stack naturally models code-switching:

# Marieke at work:
persona_stack: [marieke-core, budtender, professional]

# Marieke with close friends:
persona_stack: [marieke-core, budtender, best-friend]

# Marieke at home:
persona_stack: [marieke-core]  # Just herself

Core personality persists. Context layers change.

Integration

  • Extends: character (adds identity to entities)
  • Works with: room (theme swapping), mind-mirror (dimensions)

See Also