workled MCP Controller

Compétence workled

Qu'est-ce que workled MCP Controller ?

Cette compétence agit comme un contrôleur MCP (Model Context Protocol) pour un dispositif LED physique, permettant à un agent IA de refléter son état interne via des effets lumineux. Elle est utile pour offrir un retour visuel immédiat sur l'état de l'agent (réflexion, attente de saisie, inactif, erreur) et améliorer l'expérience utilisateur. La compétence prend en charge l'appel de commandes MCP pour définir la luminosité, choisir des effets de couleur (y compris des animations comme la respiration ou l'arc-en-ciel) et configurer des macros pour les gestes tactiles. Elle exige un protocole d'état obligatoire pour garantir la synchronisation entre l'état logique de l'agent et l'affichage LED. La documentation fournit une référence complète des outils MCP, une table de mappage des couleurs en HSV, un format de macro et des instructions de dépannage.

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Contrôleur MCP workled

Protocole d'État Obligatoire

Appelez set_agent_state via MCP à chaque transition d'état :

ÉtatQuand
thinkingPremier appel d'outil de chaque réponse ; l'utilisateur soumet un message
idleTour terminé ; session fermée
inputChaque fois que l'agent attend l'utilisateur — appel d'un outil d'entrée (question/ask/confirm), attente dans une modale côté client (hermes _confirm_destructive_slash, etc.), ou après avoir affiché une liste de choix en texte brut / question à options multiples et en attendant la sélection de l'utilisateur
errorUne erreur d'exécution s'est produite

Procédure par tour (exécuter chaque tour, dans l'ordre) :

  1. Début du tour / message utilisateur reçu → set_agent_state("thinking") — première action, avant tout autre appel d'outil.
  2. Avant d'afficher des options / choix / d'ouvrir une modale / de poser une question → set_agent_state("input").
  3. Fin du tour, travail terminé, aucune sortie en attente → set_agent_state("idle").
  4. Erreur d'exécution / échec d'un appel d'outil → set_agent_state("error").

Porte de Pré-réponse — vérifier AVANT d'émettre votre message visible final :

  • Ai-je appelé set_agent_state au moins une fois ce tour ?
  • L'état de la LED correspond-il à ce que je vais afficher (idle si terminé, input si je pose une question, thinking si je travaille encore) ?
  • Si la réponse à l'une des deux questions est NON, émettez l'appel set_agent_state correct d'abord, puis la réponse.

Référence des Outils MCP

OutilPropriétéDescriptionUtilisation
set_agent_statestate_name: stringDéfinit la LED pour refléter l'état de l'agent (thinking/idle/input/error)set_agent_state("thinking")
get_agent_state—Renvoie l'état actuel de la LED de l'agent : idle/thinking/input/error (chaîne vide si non défini)get_agent_state()
set_brightnessbrightness: integerLuminosité de la LED 0-255 ; 0 = éteintset_brightness(128)
get_brightness—Renvoie la luminosité actuelle de la LED 0-255 ;get_brightness()
set_effecteffect_name: string, effect_json: stringeffect_name ∈ led(effet manuel)/idle/thinking/input/error ; effect_json est une chaîne JSON {"type","hue","saturation","value","speed"}. La lumière doit d'abord être allumée (set_brightness > 0). Mappez les couleurs en langage naturel vers HSV (voir tableau ci-dessous).set_effect("led", '{"type":"breathe","hue":180,"speed":50}')
get_effecteffect_name: stringRécupère la configuration de effect_name au format JSONget_effect("thinking")
set_macromacro_name: string, macro_json: stringDéfinit la macro pour un geste tactile ; macro_name ∈ single_click/double_click/long_press_start ; macro_json est un tableau JSON de segments (voir Format de Macro) ; un macro_json vide réinitialiseset_macro("single_click", '[{"combo":"ctrl+c"}]')
get_macromacro_name: stringRenvoie la macro sous forme de chaîne de tableau JSON, ou une chaîne vide si non définie (les valeurs des mots de passe sont masquées)get_macro("single_click")

Mappage des couleurs en langage naturel vers set_effect

Utilisez type:"solid" sauf si l'utilisateur demande une animation. Mappez un nom de couleur vers HSV :

Descriptiontypehuesaturationvalue
blanc pursolid00255
blanc chaudsolid3080255
rougesolid0255255
orangesolid30255255
jaunesolid60255255
vertsolid120255255
cyan/bleu-vertsolid180255255
bleusolid240255255
violet/pourpresolid270255255
rosesolid330200255
mode tamisé/nocturnesolid308060
arc-en-ciel (animé)rainbow---

Règle empirique : hue 0-359 choisit la teinte, saturation 0-255 (0 = blanc/pastel, 255 = vif), value 0-255 luminosité. Les tons pastel/blanc utilisent une saturation faible ; les tons vifs utilisent 255.

Format de Macro

Référence complète des macros macro_format.md

Configuration & Dépannage

Si le périphérique ne répond pas, exécutez node <skill-dir>/index.js status et suivez l'hint JSON qu'il affiche. Référence complète d'installation / déploiement / dépannage : device_setup.md

Contribution

Skills associés