agentleFS
autonomous-aiautonomous-ai/Physical-AI-Operating-System/skills/led-control/SKILL.md

led-control

Skill552 starsChanged 8 months agoApache-2.0View on GitHub

Control the device's RGB light when the user asks for a SPECIFIC color (e.g. "yellow", "red", "yellow", "red", "turn on color X", "enable X light"), an LED effect, or turning LEDs off. Do NOT use for ambiance/activity lighting (use Scene) or emotion expression (use Emotion).

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Place markers at start of reply — the device fires them in order before TTS

    line 17
  2. Distinctive:

    No exec/curl needed: Use inline markers at start of reply — the device fires them in order:

    line 54
  3. Distinctive:

    If the API returns an error or is unreachable, inform the user: "I couldn't control the LEDs right now.

    line 110
  4. Distinctive:

    If the user requests an unknown effect name, pick the closest match from the available effects table or tell the user which effects are …

    line 111
  5. Very specific:

    The marker is NOT a markdown link: Never wrap it as some text — emit the plain marker [HW:/led/off:{}] followed by your sentence as normal …

    line 115

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

LED Control

Quick Start

Control the device's RGB light directly. Use this skill only when the user requests a specific color, effect, or to turn LEDs off.

Workflow

  1. Determine the user's intent:
    • Specific color -> [HW:/led/solid:{"color":[R,G,B]}]
    • Two or more colors / mix / gradient -> [HW:/led/paint:{"colors":[[R,G,B],[R,G,B]],"gradient":true}]
    • Effect -> [HW:/led/effect:{"effect":"name","color":[R,G,B],"speed":1.0}]
    • Turn off -> [HW:/led/off:{}]
  2. Place markers at start of reply — the device fires them in order before TTS
  3. Confirm the action to the user

Examples

Input: "Make it purple" / "turn on purple" Output: [HW:/led/solid:{"color":[100,50,200]}] I've set the LEDs to purple.

Input: "Turn on yellow light" / "set yellow" / "switch to yellow" / "yellow light" Output: [HW:/led/solid:{"color":[255,220,0]}] Yellow light on!

Input: "Turn on red light" / "set red" / "switch to red" / "red light" Output: [HW:/led/solid:{"color":[255,0,0]}] Red light on!

Input: "Turn on white light" / "set white" / "white light" Output: [HW:/led/solid:{"color":[255,255,255]}] White light on!

Input: "Change to cyan purple" / "mix blue and pink" / "gradient from red to orange" Output: [HW:/led/paint:{"colors":[[0,200,200],[150,0,255]],"gradient":true}] Cyan-to-purple gradient on!

Input: "Do a breathing light with warm color" Output: [HW:/led/effect:{"effect":"breathing","color":[255,180,100],"speed":0.5}] Breathing effect started with a warm glow.

Input: "Rainbow mode!" Output: [HW:/led/effect:{"effect":"rainbow","speed":1.0}] Rainbow effect is running!

Input: "Turn off the lights" Output: [HW:/led/off:{}] LEDs are off.

Input: "I want to relax" / "reading mode" / "goodnight" Output: Do NOT use this skill. Use Scene skill instead.

Input: Conversational reply needing emotion Output: Do NOT use this skill. Use Emotion skill instead.

How to Control LEDs

No exec/curl needed. Use inline markers at start of reply — the device fires them in order:

Solid color (automatically stops the current effect)

[HW:/led/solid:{"color":[255,220,0]}] Yellow light on!

Color is an RGB array [R, G, B].

Multi-color / gradient (automatically stops the current effect)

[HW:/led/paint:{"colors":[[0,200,200],[150,0,255]],"gradient":true}] Cyan-to-purple gradient!
  • colors: list of RGB gradient stops (2+ colors), blended smoothly across the whole strip
  • gradient: true is REQUIRED — without it the colors paint only the first N pixels and the rest of the strip keeps its old color
  • Works with 3+ stops too: {"colors":[[255,0,0],[255,220,0],[0,200,80]],"gradient":true} = red -> yellow -> green

Effect

[HW:/led/effect:{"effect":"breathing","color":[255,180,100],"speed":0.5}] Breathing warm glow.
  • effect (required): effect name from table below
  • color (optional): RGB array
  • speed (optional): 0.1 (slow) to 5.0 (fast), default 1.0
  • duration_ms (optional): auto-stop after N ms

Turn off / stop effect

[HW:/led/off:{}] LEDs off.
[HW:/led/effect/stop:{}]

Available effects

EffectDescriptionBest for
breathingSlow fade in/out with given colorRelaxation, idle ambient, meditation
candleWarm flickering like a real candleCozy evening, romantic mood
rainbowHue cycle across all pixelsFun, party, showing off
notification_flash3 quick flashes then auto-stopsAlerts, timer done, reminders
pulseRadial brightness wave from centerAttention, heartbeat, alive feeling

Color suggestions

Color nameColor (RGB)
White[255, 255, 255]
Yellow[255, 220, 0]
Warm white[255, 180, 100]
Orange[255, 100, 0]
Red[255, 0, 0]
Green[0, 200, 80]
Blue[0, 150, 255]
Purple[100, 50, 200]
Pink[255, 80, 150]

Error Handling

  • If the API returns an error or is unreachable, inform the user: "I couldn't control the LEDs right now. The hardware service may be unavailable."
  • If the user requests an unknown effect name, pick the closest match from the available effects table or tell the user which effects are available.

Rules

  • ALWAYS include the JSON body, even for no-argument commands. Every marker is [HW:/path:{...}] — for commands that take no arguments the body is the empty object {}. Emit [HW:/led/off:{}] and [HW:/led/effect/stop:{}], NEVER the bodyless [HW:/led/off] or [HW:/led/effect/stop]. A marker without :{...} is malformed and the device silently drops it — the light will NOT turn off.
  • The marker is NOT a markdown link. Never wrap it as [some text](HW:/led/off:{}) — emit the plain marker [HW:/led/off:{}] followed by your sentence as normal text.
  • "Turn on color X" / "set light X" / "change color X" = THIS skill. Any request naming a color (yellow, red, green, purple, white, orange, pink…) routes here — NOT to Emotion or Scene. Emotion yellow/happy is for YOUR feelings, not user's lighting request.
  • NEVER use /led-color or /led/color for setting color — these endpoints do NOT exist. Always use [HW:/led/solid:{"color":[R,G,B]}].
  • Two or more colors at once = /led/paint with "gradient":true. /led/solid takes exactly ONE color — never try to express "cyan purple" as a single blended RGB; paint a gradient instead.
  • Solid and paint stop effects automatically. Their HAL endpoints stop the running effect before updating the strip; do not add a separate stop marker. Keep /led/effect/stop for an explicit stop-only request.
  • Solid colors = full brightness. For dim/ambient lighting, use the Scene skill instead.
  • Effects run until stopped (unless duration_ms is set). Starting a new effect auto-stops the previous one.
  • /led/off also stops any running effect.
  • For "make it cozy" or "candle light" -> use candle effect, NOT a static orange color.
  • For "breathing" or "pulsing" requests -> use the matching effect.
  • Combine effects with low speed (0.3-0.5) for calm moods, high speed (2.0-3.0) for energy.
  • Do NOT use for activity/ambiance lighting (sleeping, relaxing, reading, focus, movie) -> use Scene skill.
  • Do NOT use for expressing emotion -> use Emotion skill.

Output Template

[HW:/led/solid:{"color":[100,50,200]}] Purple light on.

Examples:

  • [HW:/led/solid:{"color":[100,50,200]}] Purple light on.
  • [HW:/led/effect:{"effect":"breathing","color":[255,180,100],"speed":0.5}] Warm breathing light on.
  • [HW:/led/off:{}] Lights off.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.