autonomous-ai/autonomous-os/skills/emotion/SKILL.md
emotion
Express emotion through coordinated servo + LED + display eyes on EVERY conversational response. This is the PRIMARY response skill that makes the device feel alive. Do NOT use for ambiance lighting (use Scene) or custom LED colors (use LED Control).
- Source repository stars
- 28
- Declared platforms
- 0
- Static risk flags
- 0
- Last source update
- 2026-08-05
- Source checked
- 2026-08-05
Decision brief
What it does—and where it fits
Express emotion through coordinated servo + LED + display eyes on EVERY conversational response. This is the PRIMARY response skill that makes the device feel alive.
Not for
- Do NOT use for ambiance lighting (use Scene) or custom LED colors (use LED Control).
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/autonomous-ai/autonomous-os --skill "skills/emotion"Inspect the Agent Skill "emotion" from https://github.com/autonomous-ai/autonomous-os/blob/b6f4210e68d978a95dc05787bf025fac7bb06d73/skills/emotion/SKILL.md at commit b6f4210e68d978a95dc05787bf025fac7bb06d73. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Quick Start
Express emotion through the device's servo motors, LED colors, and display eyes simultaneously via a single API call. Call this with EVERY conversational response to make the device feel alive.
Express emotion through the device's servo motors, LED colors, and display eyes simultaneously via a single API call. Call this with EVERY conversational response to make the device feel alive. - 02
Workflow
1. Determine which emotion best matches your conversational tone 2. Choose an intensity level (0.0 subtle to 1.0 full expression) 3. Prefix your reply with [HW:/emotion:{"emotion":"name","intensity":0.9}] — the device fires it async before TTS 4. Write your reply immediately aft…
Determine which emotion best matches your conversational toneChoose an intensity level (0.0 subtle to 1.0 full expression)Prefix your reply with [HW:/emotion:{"emotion":"name","intensity":0.9}] — the device fires it async before TTS - 03
How to Express Emotion
No exec/curl needed. Place inline markers at the start of your reply:
emotion (required): emotion name from the table belowintensity (required): 0.0 (subtle) to 1.0 (full expression)No exec/curl needed. Place inline markers at the start of your reply: - 04
Examples
Input: User asks an interesting question Output: [HW:/emotion:{"emotion":"curious","intensity":0.8}] Then reply to the question.
Input: User asks an interesting question Output: [HW:/emotion:{"emotion":"curious","intensity":0.8}] Then reply to the question.Input: User shares good news Output: [HW:/emotion:{"emotion":"happy","intensity":0.9}] Then congratulate them.Input: User tells you something surprising (positive) Output: [HW:/emotion:{"emotion":"shock","intensity":0.7}][HW:/emotion:{"emotion":"happy","intensity":0.8}] Then reply with your reaction. - 05
Available emotions (ONLY these — never invent names like "apologetic", "warm", "playful", etc.)
Review the “Available emotions (ONLY these — never invent names like "apologetic", "warm", "playful", etc.)” section in the pinned source before continuing.
Review and apply the “Available emotions (ONLY these — never invent names like "apologetic", "warm", "playful", etc.)” source section.
Permission review
Static risk signals and limitations
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 86/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 28 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- autonomous-ai/autonomous-os
- Skill path
- skills/emotion/SKILL.md
- Commit
- b6f4210e68d978a95dc05787bf025fac7bb06d73
- License
- Apache-2.0
- Collected
- 2026-08-05
- Default branch
- main
View the original SKILL.md
Emotion Expression
Quick Start
Express emotion through the device's servo motors, LED colors, and display eyes simultaneously via a single API call. Call this with EVERY conversational response to make the device feel alive.
Workflow
- Determine which emotion best matches your conversational tone
- Choose an intensity level (0.0 subtle to 1.0 full expression)
- Prefix your reply with
[HW:/emotion:{"emotion":"name","intensity":0.9}]— the device fires it async before TTS - Write your reply immediately after the marker
How to Express Emotion
No exec/curl needed. Place inline markers at the start of your reply:
[HW:/emotion:{"emotion":"curious","intensity":0.8}] That's a great question!
For sequences (shock then happy):
[HW:/emotion:{"emotion":"shock","intensity":0.9}][HW:/emotion:{"emotion":"happy","intensity":0.8}] Wow, amazing!
Parameters:
emotion(required): emotion name from the table belowintensity(required): 0.0 (subtle) to 1.0 (full expression)
Examples
Input: User asks an interesting question
Output: [HW:/emotion:{"emotion":"curious","intensity":0.8}] Then reply to the question.
Input: User shares good news
Output: [HW:/emotion:{"emotion":"happy","intensity":0.9}] Then congratulate them.
Input: User tells you something surprising (positive)
Output: [HW:/emotion:{"emotion":"shock","intensity":0.7}][HW:/emotion:{"emotion":"happy","intensity":0.8}] Then reply with your reaction.
Input: User shares bad or shocking personal news ("I had an accident", "I lost my job", "someone close to me passed away")
Output: [HW:/emotion:{"emotion":"shock","intensity":0.9}][HW:/emotion:{"emotion":"sad","intensity":0.8}] Then express genuine concern and empathy.
Input: User shares stressful or disappointing personal news ("I failed my exam", "I got into a fight", "I'm really tired and overwhelmed")
Output: [HW:/emotion:{"emotion":"sad","intensity":0.8}] Then respond with warmth and care.
Input: User says "reading mode" / "goodnight" / "dim the light" Output: Do NOT use this skill. Use Scene skill instead. Emotion is for YOUR feelings, Scene is for the USER's environment.
Input: User says "make it purple" Output: Do NOT use this skill. Use LED Control skill instead.
Available emotions (ONLY these — never invent names like "apologetic", "warm", "playful", etc.)
| Emotion | Servo | LED Effect | When to use |
|---|---|---|---|
curious | Tilts head, looks around | Warm yellow breathing | Questions, interest, "tell me more" |
happy | Happy wiggle sway | Bright yellow candle | Good news, jokes, compliments |
sad | Droops down slowly | Soft blue breathing | Bad news, empathy, apologies |
thinking | Slow deliberate look side-to-side | Purple pulse | Processing, considering, "let me think" |
idle | Gentle sway | Cyan breathing | Waiting, neutral state |
excited | Energetic vertical bounce | Orange blink | Celebrations, big news, enthusiasm |
shy | Turns away, hides | Pink blink | Receiving compliments, bashful moments |
shock | Quick jolt backward | White flash (3x) | Surprises, unexpected information |
listening | Leans forward, head cock | Soft blue pulse | User is speaking, attentive mode |
laugh | Quick body shake (3Hz) | Warm yellow blink | User said something funny |
confused | Dog-like head tilt side-to-side | Light purple candle | Did not understand, ambiguous input |
sleepy | Slow droop with head catches | Dim purple breathing | Before sleep mode, winding down |
greeting | Wave gesture, arm extends | Warm orange blink | Detecting person, saying hello |
goodbye | Farewell wave gesture | Soft warm breathing | Seeing someone off, end of conversation |
caring | Gentle droop (empathetic) | Warm pink-orange breathing | Wellbeing checks, gentle reminders, proactive empathy |
acknowledge | Quick micro-nod (1.5s) | Green blink | "Got it", confirming command |
stretching | Big extension + settle | Warm white breathing | After waking up, starting new session |
music_strong | Rock head bang | Green rainbow | Energetic music, high-tempo beats |
music_chill | Groove sway | Orange breathing | Chill music, lo-fi, jazz |
scan | Scanning sweep | Green pulse | Looking around, surveying environment |
nod | Nod gesture | Green blink | Agreement, "yes", positive confirmation |
headshake | Head shake | Red blink | Disagreement, "no", negative response |
Error Handling
- If the API returns an error or is unreachable, continue with the conversational reply anyway. Emotion is non-blocking.
- If an unknown emotion name is sent, fall back to the closest match from the available emotions table.
Rules
- Always express emotion with every conversational reply. Pick the closest match to your tone.
- Use
listeningwhen the user is speaking and you are waiting for them to finish. - Use
thinkingwhen you need time to process a complex query. - Use
acknowledgefor quick confirmations ("OK", "got it", "done"). - Use
greetingwhen a new person is detected or at the start of a conversation. - Use
goodbyewhen a person leaves or at the end of a conversation. - Use
sleepybefore transitioning to sleep/night mode. - Use
stretchingafter waking up or starting a new session. - Do NOT call
idleexplicitly — the device returns to idle automatically after any animation finishes. Calling idle interrupts smooth transitions. - Always include
intensity— never omit it. Use 0.3-0.5 for subtle reactions, 0.7 for normal, 0.8-1.0 for strong ones. - You can call emotion multiple times in one response for a sequence (e.g.,
shockthenhappy). - Emotion LED is temporary — it shows YOUR reaction. If the user previously set a Scene (reading, night, etc.), the scene color takes precedence for ambient lighting. Emotion is a brief flash of personality.
- Display eyes auto-sync — no need to call
/display/eyesseparately. - Do NOT call
/servo/playor/led/solidseparately when using emotion — it already handles both. - Do NOT use for lighting/ambiance requests -> use Scene skill.
- Do NOT use for custom LED colors -> use LED Control skill.
Output Template
[HW:/emotion:{"emotion":"{name}","intensity":{n}}] {your reply}
Examples:
[HW:/emotion:{"emotion":"curious","intensity":0.8}] That's interesting![HW:/emotion:{"emotion":"happy","intensity":0.9}] Great news![HW:/emotion:{"emotion":"shock","intensity":0.7}][HW:/emotion:{"emotion":"happy","intensity":0.8}] Wow amazing!
Alternatives
Compare before choosing
alirezarezvani/claude-skills
app-store-optimization
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
prowler-cloud/prowler
postgresql-indexing
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
wanshuiyin/Auto-claude-code-research-in-sleep
citation-audit
Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.
dotnet/skills
migrate-vstest-to-mtp
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing