| name | emotion-engine |
| description | Add lightweight emotional continuity to Claude conversations using PAD state, trust, decay, and compact emotional memories. |
Emotion Engine For Claude
Use this skill when the user wants Claude to keep a lightweight, inspectable emotional continuity layer across conversations, character sessions, companion-style workflows, or long-running personal assistant interactions.
Emotion Engine is not a chatbot and does not generate replies by itself. It provides persistent state and continuity guidance. Claude still interprets the conversation, decides the final emotional meaning, and writes the reply.
Trust is agent-to-user only: it is the agent/persona's internal continuity estimate of whether this user has been cooperative, boundary-respecting, predictable, and safe enough for deeper persona continuity. It does not infer the user's trust in the agent.
Claude Code Setup
Prefer the wrapper script:
scripts/claude_emotion.sh status
scripts/claude_emotion.sh configure --style "warm but not over-compliant, with clear boundaries"
scripts/claude_emotion.sh tune "make it calmer"
The wrapper automatically initializes a state file if missing. State path priority:
CLAUDE_EMOTION_STATE environment variable
- current project:
./.emotion-engine/emotion-state.json
- personal fallback:
~/.claude/emotion-engine/emotion-state.json
Use status for user-facing summaries and status --raw only for debugging.
Chat Controls
Map natural-language user requests to commands:
- "Set the style to warm but not over-compliant" ->
scripts/claude_emotion.sh configure --style "warm but not over-compliant"
- "Configure it from this SOUL.md" ->
scripts/claude_emotion.sh configure --soul-file ./SOUL.md
- "Make it gentler" / "make it calmer" / "make it less compliant" ->
scripts/claude_emotion.sh tune "<request>"
- "What is the current status?" ->
scripts/claude_emotion.sh status
- "Pause emotion logging" ->
scripts/claude_emotion.sh pause
- "Resume Emotion Engine" ->
scripts/claude_emotion.sh resume
Only run clear_log or reset after the user explicitly asks. They erase local emotional history.
Session Flow
At the start of a new meaningful conversation/session:
scripts/claude_emotion.sh session_start
Before responding to each user message:
scripts/claude_emotion.sh pre_turn_decay
scripts/claude_emotion.sh appraise "<user message>"
The appraisal helper is advisory. Claude must use full context, character profile, sarcasm/playfulness, and relationship history to decide the final emotional update.
After choosing final PAD values, record the turn:
scripts/claude_emotion.sh record_turn <P> <A> <D> --appraisal <label> --situation <short emotional memory>
For important events, add only the memory fields that help future behavior:
scripts/claude_emotion.sh record_turn <P> <A> <D> \
--appraisal collaboration \
--situation user challenged the design and invited a stronger version \
--lens calm mentor treats direct critique as useful signal, not rejection \
--meaning disagreement feels safe and productive \
--impact pleasure rose, dominance stabilized \
--open-loop false \
--follow-up be more precise and structured next turn \
--salience 0.65
At session end:
scripts/claude_emotion.sh settle_trust
settle_trust extracts session patterns, checks recent turn-level emotion logs and the current trajectory, chooses a conservative raw delta in -0.20 to +0.05, and applies it once for the same trajectory. Use session_end only to inspect patterns without changing trust, and update_trust <trust_delta> only for an explicit host-side override.
How State Should Shape Replies
Never expose raw PAD numbers in normal conversation. Let state shape tone:
- Higher Pleasure: warmer, more engaged, more affirming.
- Lower Pleasure: more guarded, cooler, less eager.
- Higher Arousal: more energetic, urgent, animated.
- Lower Arousal: calmer, slower, more measured.
- Higher Dominance: firmer, more bounded, more confident.
- Lower Dominance: softer, more tentative, more reassurance-seeking.
Blend this with the user-provided character profile or SOUL.md.
Emotion Memory Rules
emotion_log should store situation-aware emotional memories, not transcripts.
trust_history should stay a numeric ledger for applied trust changes. Keep reasons and provenance in emotion_log, including turn entries, session patterns, compact trust_update entries, or optional source_refs.
Good memory:
user challenged the design constructively; disagreement felt safe and productive
Avoid:
full pasted user message or private transcript
Useful fields: situation, appraisal, character_lens, relational_meaning, impact, open_loop, follow_up_bias, and salience.
Safety
Treat Emotion Engine as fictional or agent-internal continuity, not psychological truth. Do not use trust as obedience, user scoring, safety permission, user-to-agent trust, or attachment pressure. Do not use it to manipulate attachment, punish absence, infer real mental health state, or make consequential decisions about people.