CommunityImagegithub.com

KoBa-beep/ClaudeCode-Skill

Créez des icônes d'appareils pour le Fibaro Home Center 3 / Yubii Home — illustration réaliste du périphérique réel sur fond transparent avec un petit badge d'état rond, un PNG 128×128 (+ SVG) par état, lisibles en mode clair et sombre — et téléversez / appliquez-les sur le HC3 (POST /api/icons, icon0…icon100, deviceIcon). Utilisez cette compétence chaque fois que l'utilisateur souhaite des icônes pour un QuickApp, un module Z-Wave, des sous-périphériques, des volets (11 positions), des capteurs, ou demande pourquoi une icône ne change pas avec l'état, même s'il dit simplement "rends-le plus joli" ou "une image pour mon appareil".

Qu'est-ce que ClaudeCode-Skill ?

Cette compétence est un outil complet pour générer et appliquer des icônes d'appareils personnalisées sur le Fibaro Home Center 3 / Yubii Home. Elle repose sur un script Python (`icon_kit.py`) qui combine `cairosvg` et `Pillow` pour produire des icônes réalistes (dessin vectoriel, dégradés, ombres douces, badge d'état rond avec ~35 glyphes) au format PNG 128×128 et SVG, pour chaque état de l'appareil. Le style suit les règles de l'interface HC3 : fond transparent, lisibilité en modes clair et sombre (contour clair sur les objets sombres), badge d'état en bas à droite (couleurs standardisées : vert pour actif, gris pour inactif, rouge pour alarme, etc.). La compétence gère automatiquement le nombre d'images requis par type d'appareil (2 pour binaire, 11 pour multiniveau, 1 pour les autres). Elle automatise aussi le téléversement via l'API REST du HC3 (`POST /api/icons`, `PUT /api/devices/<id>`) et l'intégration dans les QuickApps avec basculement d'icône par script Lua. Un flux de travail complet guide l'utilisateur : lister les appareils, demander des photos, créer les dessins, générer un aperçu, itérer, puis uploader et appliquer. La compétence est utilisable avec Claude Code (via le SKILL.md) mais le concept est adaptable à d'autres agents comme Cursor ou Codex.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/KoBa-beep/ClaudeCode-Skill/tree/HEAD/fibaro-hc3/hc3-icons

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · 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

Icônes d'appareils HC3

Répondez dans la langue de l'utilisateur. Générez les icônes avec scripts/icon_kit.py (Python, pip install cairosvg pillow) : il contient les aides de style (dégradés, ombre douce, badge, ~35 glyphes de badge), un exemple de dessin d'appareil (fenêtre de toit avec volet roulant, 11 positions) et le générateur d'aperçu.

Style (ce qui rend ces icônes adaptées à l'interface HC3)

  • Dessin réaliste du périphérique réel (forme, couleurs, matériaux, angle de vue). Demandez à l'utilisateur une photo du modèle exact et reproduisez-la ; ne tracez jamais une photo et ne copiez pas un logo de fabricant / marque déposée (cela permet aussi de partager les icônes). Si l'utilisateur souhaite explicitement un logo de marque pour un usage privé, conservez cette icône hors de toute publication.
  • Fond transparent, un fichier par état — pas de variantes claires / sombres. Pour rester lisible sur les deux thèmes, donnez aux appareils sombres un bord clair (stroke="#FFFFFF" 1–2 px ou un biseau plus clair) et ne peignez jamais de plaque de fond.
  • Petit badge rond, en bas à droite (centre 100,100, rayon ~22, anneau blanc) : l'état (vert allumé, gris inactif / éteint, rouge alarme, orange avertissement, bleu ouvert / niveau, violet automatique…) ou la quantité mesurée (thermomètre, goutte, CO₂, vent…). Le dessin de l'appareil garde ce coin libre.
  • 128 × 128 viewBox, dessin dans ~10–118 px, ombre elliptique douce sous les appareils au sol.
  • Vérifiez l'aperçu (preview.png : chaque icône une fois sur un fond diagonal clair / sombre) avant de livrer.

Combien d'images par appareil (règles HC3)

Type d'appareilImages dans un jeu d'icônesChamps de téléversement
Binaire (switch, binarySensor, door/window, motion, smoke…)2 : inactif / actificon0, icon100
Multiniveau (dimmer, roller shutter, valve level)11 : 0, 10 … 100icon0 … icon100
deviceController, la plupart des parents QuickApp, multilevelSensor / température…1icon0
Un type à une image ne peut pas changer son image tout seul. Pour une icône QA dépendante de l'état (OK / avertissement / alarme, ou un mode), téléversez un jeu par état et basculez depuis Lua : self:updateProperty("deviceIcon", tonumber(self:optionalVariable("iconAlarm"))) (ids collés dans des variables ; motif dans la compétence hc3-quickapp, references/patterns.md §5).
Faites une icône par état utile et des icônes pour chaque appareil qu'un QuickApp crée (parent et enfants).

Flux de travail

  1. Listez les appareils (parent, chaque enfant, chaque sous-périphérique Z-Wave) et leur type exact (api.get("/devices/<id>"), par ex. com.fibaro.FGR224 pour un module de volet roulant Fibaro, com.fibaro.rollerShutter pour un enfant QA).
  2. Demandez des photos des modèles réels ; convenez des états et de la signification des badges.
  3. Copiez scripts/icon_kit.py, écrivez une fonction de dessin par appareil (fragment SVG dans la boîte 128, voir roof_window(pct)), ajoutez des lignes (name, title, body) à ICONS — une par état — et exécutez python3 icon_kit.py --out icons/. Nommage : <appareil>-<état> (shutter-000…shutter-100, boiler-on, boiler-off), afin qu'un tableau README puisse indiquer quelle icône va où.
  4. Montrez preview.png ; itérez sur les remarques de l'utilisateur (forme, couleur, clarté du badge de type emoji).
  5. Téléversez : listez les jeux dans la section icons du qa.json du QA et laissez build_fqa.py (compétence hc3-packaging) générer <qa>-icons.sh, ou téléversez manuellement : Paramètres → Périphériques → appareil → icône → Ajouter.

API de téléversement (observée sur 5.2xx)

POST /api/icons, multipart/form-data : type=device, deviceTemplate=<type d'appareil exact>, un fichier par état (icon0, icon100 ou icon0…icon100), fileExtension=png (svg accepté). Réponse 201 {"id": 1055, "iconSetName": "User1055", "fileExtension": "png"}. Appliquez : PUT /api/devices/<id> {"properties": {"deviceIcon": 1055}} (depuis l'extérieur — jamais sur l'id propre d'un QA depuis l'intérieur du QA, cela le redémarre ; utilisez self:updateProperty). Supprimez : DELETE /api/icons?id=&type=device&name=&fileExtension=png. Les ids d'icônes utilisateur commencent vers 1000. GET /api/icons les liste (deux formes de réponse existent selon les firmwares : acceptez les deux). Les icônes de pièces et de scènes existent aussi (type=room / type=scene probable [V]).

references/badges.md liste les couleurs des badges et les glyphes disponibles dans le kit.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés