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
- Emotion change → LED color change (2 second transition)
- Peak performance → Rainbow celebration + TTS
Escalation Rules
- Negative emotion → Support lights + optional TTS
- Negative 30+ minutes → Alert parent via SMS
- 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?