Agent skill

emotion-engine

Manage emotion detection, LED responses, and mood-based automations for Ezra. Use when working on emotional regulation features, smart home responses, or the Chaos Orb.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/productivity/emotion-engine

SKILL.md

Emotion Engine Skill

Emotion States

State Color Response
happy orange Energy quests, upbeat
calm blue Focus quests, peaceful
anxious purple Comfort, breathing exercises
frustrated red Break, encouragement
withdrawn purple Gentle engagement
peak gold Celebrate, challenge quests
distressed red Immediate support, alert parent
encouraged green Positive reinforcement

LED Color Mapping

python
colors = {
    'happy': 'orange',
    'calm': 'blue',
    'anxious': 'purple',
    'frustrated': 'red',
    'withdrawn': 'purple',
    'peak': 'gold',
    'distressed': 'red',
    'encouraged': 'green'
}

Response Rules

Immediate Responses

  1. Emotion change → LED color change (2 second transition)
  2. Peak performance → Rainbow celebration + TTS

Escalation Rules

  1. Negative emotion → Support lights + optional TTS
  2. Negative 30+ minutes → Alert parent via SMS
  3. Distressed → Immediate parent alert

Context Modifiers

  • Morning + negative → Extra encouragement
  • Bedtime + negative → Calming protocol (dim orange)
  • Home alone + low energy → Gentle engagement
  • With parent + frustrated → Let parent handle

Chaos Orb (Daily Modifier)

Calculates 0.8x to 1.2x multiplier for XP:

Base: 1.0 (40%)
Mood Factor: confidence + valence (30%)
Moon Phase: new=0.9, full=1.1 (20%)
Streak Bonus: 0% streak=0.8, 100%=1.2 (10%)
Random Nudge: ±0.05

Runs daily at 6 AM via cron.

Key Files

  • ~/repos/phoenix-forge-ecosystem/9_Documentation/emotion_engine_rules.yaml
  • ~/repos/phoenix-forge-ecosystem/2_SmartHome/scripts/chaos_orb.py

Home Assistant Entities

  • input_select.ezra_emotion
  • input_number.daily_quest_count
  • input_number.daily_xp_total
  • input_number.current_streak
  • light.ezra_room

Didn't find tool you were looking for?

Be as detailed as possible for better results