workled MCP Controller

Habilidade para controlar o LED de um dispositivo WorkLED através do protocolo MCP, refletindo estados do agente de IA.

O que é workled MCP Controller?

O workled MCP Controller é uma skill que permite que agentes de IA (como Claude Code, Cursor, Codex) controlem diretamente um dispositivo WorkLED via ferramentas MCP. O principal objetivo é sincronizar o estado do LED com o ciclo de vida de uma interação do agente: pensando (thinking), ocioso (idle), aguardando entrada do usuário (input) ou erro (error). A skill impõe um protocolo obrigatório de transição de estados a cada turno de resposta, garantindo que a luz sempre reflita o que o agente está fazendo. Além disso, oferece ferramentas para ajustar brilho, efeitos animados (como respiração ou arco-íris) com mapeamento de cores em HSV, e configurar macros para gestos no touch pad do dispositivo. Isso é particularmente útil para dar feedback visual imediato ao usuário durante interações longas ou complexas com agentes de IA, melhorando a experiência do usuário.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add git-hub-cloud/workled

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que workled MCP Controller faz?

Protocolo de Estado Obrigatório

Chame set_agent_state via MCP em toda transição de estado:

EstadoQuando
thinkingPrimeira chamada de ferramenta de cada resposta; usuário envia uma mensagem
idleTurno finalizado; sessão encerrada
inputQualquer momento em que o agente esteja esperando o usuário — chamando uma ferramenta de entrada (question/ask/confirm), dentro de um modal do lado do cliente (hermes _confirm_destructive_slash, etc.), ou após renderizar uma lista de opções em texto simples / pergunta de múltipla escolha e aguardar a escolha do usuário
errorOcorreu um erro em tempo de execução

Procedimento por turno (execute todo turno, em ordem):

  1. Turno iniciando / mensagem do usuário recebida → set_agent_state("thinking") — primeira ação, antes de qualquer outra chamada de ferramenta.
  2. Antes de renderizar opções / escolhas / abrir qualquer modal / fazer uma pergunta → set_agent_state("input").
  3. Fim do turno, trabalho concluído, sem saída pendente → set_agent_state("idle").
  4. Erro em tempo de execução / falha de chamada de ferramenta → set_agent_state("error").

Verificação Pré-Resposta — verifique ANTES de emitir sua mensagem visível final:

  • Eu chamei set_agent_state pelo menos uma vez neste turno?
  • O estado do LED corresponde ao que estou prestes a mostrar (idle se concluído, input se perguntando, thinking se ainda trabalhando)?
  • Se qualquer resposta for NÃO, emita a chamada correta de set_agent_state primeiro, depois a resposta.

Referência de Ferramentas MCP

FerramentaPropriedadeDescriçãoUso
set_agent_statestate_name: stringDefine o LED para refletir o estado do agente (thinking/idle/input/error)set_agent_state("thinking")
get_agent_state—Retorna o estado atual do LED do agente: idle/thinking/input/error (string vazia se não definido)get_agent_state()
set_brightnessbrightness: integerBrilho do LED 0-255; 0 = desligadoset_brightness(128)
get_brightness—Retorna o brilho atual do LED 0-255;get_brightness()
set_effecteffect_name: string, effect_json: stringeffect_name ∈ led(efeito manual)/idle/thinking/input/error; effect_json é uma string JSON {"type","hue","saturation","value","speed"}. A luz deve estar ligada primeiro (set_brightness > 0). Mapeie cores em linguagem natural para HSV (veja tabela abaixo).set_effect("led", '{"type":"breathe","hue":180,"speed":50}')
get_effecteffect_name: stringObtém a configuração de effect_name como JSONget_effect("thinking")
set_macromacro_name: string, macro_json: stringDefine a macro para um gesto no touch pad; macro_name ∈ single_click/double_click/long_press_start; macro_json é um array JSON de segmentos (veja Formato de Macro); macro_json vazio redefineset_macro("single_click", '[{"combo":"ctrl+c"}]')
get_macromacro_name: stringRetorna a macro como uma string de array JSON, ou string vazia se não definida (valores de senha mascarados)get_macro("single_click")

Mapeamento de cores em linguagem natural para set_effect

Use type:"solid" a menos que o usuário peça uma animação. Mapeie um nome de cor para HSV:

Descriçãotypehuesaturationvalue
branco purosolid00255
branco quentesolid3080255
vermelhosolid0255255
laranjasolid30255255
amarelosolid60255255
verdesolid120255255
ciano/azul-petróleosolid180255255
azulsolid240255255
roxo/violetasolid270255255
rosasolid330200255
modo escuro/noturnosolid308060
arco-íris (animado)rainbow---

Regra geral: hue 0-359 escolhe a tonalidade, saturation 0-255 (0 = branco/pastel, 255 = vívido), value 0-255 brilho. Tons pastel/branco usam saturação baixa; tons vívidos usam 255.

Formato de Macro

Referência completa de macros macro_format.md

Configuração e Solução de Problemas

Se o dispositivo não estiver respondendo, execute node <skill-dir>/index.js status e siga a hint (dica) JSON que for impressa. Referência completa de instalação / implantação / solução de problemas: device_setup.md

Contribuindo

Habilidades Relacionadas