CommunityProgramación y desarrollogithub.com

workled MCP Controller

Controlador del LED de estado para agentes MCP.

¿Qué es workled MCP Controller?

workled es una habilidad para el protocolo MCP (Model Context Protocol) que controla un LED físico para indicar el estado en tiempo real de un agente de IA. Es útil para desarrolladores y usuarios que desean visibilidad inmediata del modo del agente: pensando, inactivo, esperando entrada del usuario o en error. La habilidad define un protocolo de estado obligatorio que debe ejecutarse en cada turno de conversación y proporciona herramientas MCP como `set_agent_state`, `set_brightness` y `set_effect` para configurar el LED. Soporta personalización de colores mediante HSV, efectos animados (como respiración o arcoíris) y macros para gestos táctiles (clic simple, doble clic, pulsación larga). El proyecto está alojado en GitHub y ofrece enlaces para contribución y reporte de incidencias.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add git-hub-cloud/workled

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace workled MCP Controller?

Protocolo de Estado Obligatorio

Llama a set_agent_state vía MCP en cada transición de estado:

EstadoCuándo
thinkingPrimera llamada de herramienta de cada respuesta; el usuario envía un mensaje
idleTurno finalizado; sesión terminada
inputCualquier momento en que el agente esté esperando al usuario — llamando a una herramienta de entrada (question/ask/confirm), dentro de un modal del lado del cliente (hermes _confirm_destructive_slash, etc.), o después de renderizar una lista de opciones en texto plano / pregunta de opción múltiple y esperando la selección del usuario
errorOcurrió un error en tiempo de ejecución

Procedimiento por turno (ejecutar cada turno, en orden):

  1. Turno iniciando / mensaje del usuario recibido → set_agent_state("thinking") — primera acción, antes de cualquier otra llamada de herramienta.
  2. Antes de renderizar opciones / elecciones / abrir cualquier modal / hacer una pregunta → set_agent_state("input").
  3. Fin del turno, trabajo completado, sin salida pendiente → set_agent_state("idle").
  4. Error en tiempo de ejecución / llamada de herramienta fallida → set_agent_state("error").

Verificación Pre-Respuesta — comprueba ANTES de emitir tu mensaje visible final:

  • ¿Llamé a set_agent_state al menos una vez en este turno?
  • ¿El estado del LED coincide con lo que voy a mostrar (idle si terminé, input si estoy preguntando, thinking si aún estoy trabajando)?
  • Si alguna es NO, emite la llamada correcta de set_agent_state primero, luego la respuesta.

Referencia de Herramientas MCP

HerramientaPropiedadDescripciónUso
set_agent_statestate_name: stringEstablece el LED para reflejar el estado del agente (thinking/idle/input/error)set_agent_state("thinking")
get_agent_state—Devuelve el estado actual del LED del agente: idle/thinking/input/error (cadena vacía si no está establecido)get_agent_state()
set_brightnessbrightness: integerBrillo del LED 0-255; 0 = apagadoset_brightness(128)
get_brightness—Devuelve el brillo actual del LED (0-255)get_brightness()
set_effecteffect_name: string, effect_json: stringeffect_name ∈ led(efecto manual)/idle/thinking/input/error; effect_json es una cadena JSON {"type","hue","saturation","value","speed"}. La luz debe estar encendida primero (set_brightness > 0). Mapea colores en lenguaje natural a HSV (ver tabla a continuación).set_effect("led", '{"type":"breathe","hue":180,"speed":50}')
get_effecteffect_name: stringObtiene la configuración de effect_name como JSONget_effect("thinking")
set_macromacro_name: string, macro_json: stringEstablece la macro para un gesto del panel táctil; macro_name ∈ single_click/double_click/long_press_start; macro_json es un arreglo JSON de segmentos (ver Formato de Macro); macro_json vacío lo reiniciaset_macro("single_click", '[{"combo":"ctrl+c"}]')
get_macromacro_name: stringDevuelve la macro como una cadena de arreglo JSON, o cadena vacía si no está establecida (los valores de contraseña se ocultan)get_macro("single_click")

Mapeo de colores en lenguaje natural a set_effect

Usa type:"solid" a menos que el usuario solicite una animación. Mapea un nombre de color a HSV:

Descripcióntypehuesaturationvalue
blanco purosolid00255
blanco cálidosolid3080255
rojosolid0255255
naranjasolid30255255
amarillosolid60255255
verdesolid120255255
cian/verde azuladosolid180255255
azulsolid240255255
púrpura/violetasolid270255255
rosasolid330200255
tenue/modo nocturnosolid308060
arcoíris (animado)rainbow---

Regla general: hue 0-359 selecciona el tono, saturation 0-255 (0 = blanco/pastel, 255 = vívido), value 0-255 brillo. Los tonos pastel/blanco usan saturación baja; los tonos vívidos usan 255.

Formato de Macro

Referencia completa de macros: macro_format.md

Configuración y Solución de Problemas

Si el dispositivo no responde, ejecuta node <skill-dir>/index.js status y sigue la pista hint JSON que imprime. Referencia completa de instalación/implementación/solución de problemas: device_setup.md

Contribuciones

Skills relacionados