CommunityBildgithub.com

KoBa-beep/ClaudeCode-Skill

Erstellen, Ändern, Überprüfen und Debuggen von Treibern für die NEEO-Fernbedienung über die Meta-Engine (jac459/meta) – JSON-Gerätedateien mit Schaltflächen, Beschriftungen, Schiebereglern, Schaltern, Bildern, Verzeichnissen, Listenern, Erkennung und Registrierung – sowie deren Begleitdienste (Node-RED-Flows über MQTT, kleine lokale REST-Brücken). Verwenden Sie dies immer dann, wenn der Benutzer NEEO, das NEEO Brain, meta / metaCore / metadriver, eine NEEO-Treiber- oder Gerätedatei erwähnt oder ein Gerät (TV, AV-Receiver, Media-Player, Beleuchtung …) über eine NEEO-Fernbedienung steuern möchte oder Meta-, Mosquitto- oder Brain-Protokolle oder einen Brain-JSON-Dump zur Diagnose teilt.

Was ist ClaudeCode-Skill?

Dieses Skill befähigt einen KI-Agenten, Treiber für die NEEO-Fernbedienung unter Verwendung der Meta-Engine (`jac459/meta`) zu erstellen, zu ändern, zu überprüfen und zu debuggen. Meta ist eine Node.js-Engine, die JSON-Gerätedateien aus einem bestimmten Ordner liest und diese automatisch als NEEO SDK-Treiber registriert. Der Entwickler beschreibt das Gerät vollständig in JSON – ohne JavaScript schreiben zu müssen (bis auf kleine `DYNAMIK`-Ausdrücke). Der Skill enthält detaillierte Referenzen zur Treiberstruktur, Logik und Befehlen, Listenern und Zuständen, Geräteerkennung sowie zu Begleitdiensten wie Node-RED und MQTT-Brücken. Er ist nützlich, um eine Vielzahl von Geräten wie Fernseher, AV-Receiver, Media-Player oder Beleuchtung über die NEEO-Fernbedienung zu steuern, und unterstützt dabei Fehlerbehebung anhand von Protokollen der Meta-Engine, von Mosquitto oder des NEEO Brains.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/KoBa-beep/ClaudeCode-Skill/tree/HEAD/neeo-meta/neeo-meta-driver

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

NEEO-Treiber mit meta

meta (jac459/meta) ist eine Node.js-Engine, die JSON-Gerätedateien aus ihrem active/-Ordner liest und jede einzelne in einen NEEO SDK-Treiber umwandelt, der beim lokalen NEEO Brain registriert wird. Sie beschreiben das Gerät in JSON; Sie schreiben kein JavaScript (außer kleinen DYNAMIK-Ausdrücken).

Sprache: Schreiben Sie den Benutzer in dessen Sprache. JSON-Schlüssel, Engine-Schlüsselwörter, Schaltflächennamen und Log-Zeichenfolgen bleiben exakt wie hier dokumentiert (Englisch).

Umfang: Nur das NEEO SDK vor der Übernahme, das lokale Brain und meta sind relevant. Ignorieren Sie Control4-Material und die NEEO-Cloud (abgeschaltet).

Grundregeln (niemals überspringen)

  1. Erfinden Sie niemals einen JSON-Schlüssel oder Befehlstyp. Wenn ein Feature nicht in den Referenzen enthalten ist, sagen Sie dies und bieten Sie eine Alternative an: einen Begleitdienst (Node-RED + MQTT oder eine kleine lokale REST-Brücke, siehe references/companion-services.md), einen cli-Befehl oder eine versteckte Schaltflächenkette.
  2. Reines JSON: keine Kommentare, keine nachgestellten Kommas, doppelte Anführungszeichen. Validieren Sie mit python3 -m json.tool datei.json und python3 scripts/check_driver.py datei.json.
  3. Befehlstypen unterscheiden zwischen Groß- und Kleinschreibung: http-get, http-rest, http-post, http-get-soap, static, cli, repl, webSocket, socketIO, jsontcp, mqtt, wol, mDNS, android.
  4. Erhöhen Sie version, sobald eine sichtbare Komponente hinzugefügt wird. Der Brain fügt nur Komponenten hinzu; das Umbenennen oder Entfernen einer Komponente erfordert das Löschen und erneute Hinzufügen des Geräts in der NEEO-App (Rezepte und Verknüpfungen müssen neu erstellt werden). Selbst eine Erhöhung reicht bei einem installierten Gerät manchmal nicht aus: Überprüfen Sie das Brain (references/debugging.md).
  5. Namen (Schlüssel) von Beschriftungen, Schaltern, Schiebereglern, Bildern und Sensoren: nur Buchstaben und Ziffern. Ein Leerzeichen oder Sonderzeichen unterbricht den Sensor-Link ("sensor": null im Brain) und die Fernbedienung stürzt beim Synchronisieren ab, sobald die Komponente als Verknüpfung verwendet wird. Der angezeigte label-Text ist frei. Schaltflächennamen dürfen Leerzeichen enthalten, vermeiden Sie jedoch + und Akzente (DISNEY PLUS, Label Disney+).
  6. Schreiben Sie niemals "" in eine Variable, die an eine Beschriftung gebunden ist: Wenn bei meta v1.2.0 eine Beschriftung von einem Text zurück zu "" wechselt, stoppt meta. Schreiben Sie " " (oder einen lesbaren Fallback). Initialisieren Sie Beschriftungsvariablen aus Gewohnheit ebenfalls mit " ".
  7. Bereinigen Sie jeden externen Text, bevor er eine Beschriftung erreicht: " -> ', \ -> /, Steuerzeichen -> Leerzeichen, $ -> $ (vollbreit). Führen Sie dies im Treiber und an der Quelle durch.
  8. Listener starten einmal pro Sitzung, durch den ListenerOn-Guard + versteckter __LISTEN-Schaltfläche, die mit jedem sichtbaren Steuerelement verdrahtet ist. Verlassen Sie sich niemals allein auf POWER ON, und rufen Sie niemals __CLEANUP bei einem mqtt-Listener auf (references/listeners-and-state.md).
  9. Ereignisse vor Abfragen (webSocket, socketIO, mqtt). Bei Abfragen gilt pooltime >= 3000.
  10. $Result ist immer ein String, "undefined" bei Fehlschlag: Schützen Sie jeden JSON.parse. Eine Schaltfläche erhält einen Skalar (ok); ein Verzeichnis-Aktions-Feeder erhält ["ok"].
  11. Variablennamen: Verwenden Sie niemals einen Namen, der ein Präfix eines anderen ist; $Var an Buchstaben geklebt wird als andere Variable gelesen.
  12. Sicherheit: DYNAMIK und cli führen Code auf dem Meta-Host aus. Keine Geheimnisse fest codiert in einem Treiber, der weitergegeben werden soll; meta darf nicht als root/admin ausgeführt werden.
  13. Irreversible Änderungen benötigen Zustimmung: Das Hinzufügen sichtbarer Komponenten (z. B. DIGIT 0-9) kann nicht ohne Neuinstallation des Geräts rückgängig gemacht werden. Fragen Sie zuerst.
  14. Getrennte Liefergegenstände: Ein Meta-Treiber ist ein JSON-Objekt (beginnt mit {, niemals -flow in seinem Namen, wird in active/ abgelegt); ein Node-RED-Flow ist eine JSON-Liste (beginnt mit [, immer *-flow.json genannt, in Node-RED importiert).
  15. In template sind dynamicname und dynamicid obligatorisch; dynamicid muss stabil sein (MAC-Adresse oder Hardware-ID anstelle einer DHCP-IP).

Arbeitsablauf

  1. Sammeln Sie, was Sie benötigen (stellen Sie höchstens 3 gezielte Fragen auf einmal): exaktes Gerätemodell; dessen Steuerungsprotokoll oder API (HTTP/REST, WebSocket, Raw-TCP, MQTT, nur IR, Android TV ...); feste IP oder nicht und eine stabile ID (MAC); was gesteuert werden muss und welcher Zustand angezeigt werden muss; Meta-Version und wo Meta läuft (Pi mit pm2, Docker ...); ob ein MQTT-Broker und Node-RED verfügbar sind. Suchen Sie nach der offiziellen API-Dokumentation des Geräts, falls vorhanden.
  2. Wählen Sie den NEEO-Typ (references/driver-anatomy.md, Abschnitt Typen und erkannte Schaltflächen) und das Erkennungsmuster (references/discovery.md): statisches Einzelgerät, benutzereingegebene IP, mDNS oder Hub.
  3. Beginnen Sie mit einem Skelett in assets/: skeleton-static.json (ein Gerät, feste Adresse) oder skeleton-register-ip.json (der Benutzer gibt die IP ein). Verwenden Sie bewährte Muster aus references/patterns.md.
  4. Entscheiden Sie, wo die Logik lebt. Einfaches HTTP- oder WebSocket-Gerät: alles im Treiber. Binäres oder zustandsbehaftetes Protokoll (Raw-TCP, dauerhafte Sitzungen, Pairing, bursty State): Platzieren Sie einen Begleitdienst dazwischen mit schnellen HTTP-Befehlen und per MQTT-Nachricht (references/companion-services.md).
  5. Überprüfen Sie vor der Auslieferung:
    • python3 -m json.tool treiber.json dann python3 scripts/check_driver.py treiber.json (Namen, leere Label-Werte, Typen, Version, Guard, Abfrage ...);
    • node scripts/simulate_guard.js treiber.json wenn der Treiber Listener hat (zählt __INITIALISE / __CLEANUP über Sitzungen);
    • Bewerten Sie knifflige DYNAMIK-Ausdrücke in Node mit den tatsächlichen Substitutionsregeln (references/logic-and-commands.md);
    • Lesen Sie erneut references/pitfalls.md.
  6. Liefern Sie aus in dieser Reihenfolge: Zusammenfassung (Gerät, Protokoll, NEEO-Typ, Erkennungsmuster, abgedeckt / nicht abgedeckt); die vollständige validierte JSON-Datei mit einem expliziten Dateinamen; Bereitstellungsschritte (Kopieren nach active/, Neustart von meta, Gerät in der NEEO-App hinzufügen, Rezept-Sichtbarkeit und Verknüpfungen erstellen); Testplan (zu testende Schaltflächen, erwartetes Ergebnis, zu suchende Log-Zeilen); nicht am echten Gerät verifizierte Annahmen; nächste Iteration. Bei Multi-Datei-Projekten (Treiber + Flow + Dienst): Reihenfolge der Vorgänge, ein Versionsmarker in jedem Liefergegenstand und wie überprüft werden kann, welche Version installiert ist. Sagen Sie immer, was nicht am echten Gerät getestet wurde.

Referenzkarte (lesen Sie nur, was die Aufgabe benötigt)

DateiLesen, wenn ...
references/meta-engine.mdArchitektur, Installation, Ordner, Neustart, Log-Level, von meta bereitgestellte MQTT-Themen, Docker/NAS-Hosting, bekannte Meta-v1.2.0-Fehler
references/driver-anatomy.mdTop-Level-Schlüssel, NEEO-Gerätetypen und erkannte Schaltflächennamen, Variablen, $-Substitution, DYNAMIK, UI-Komponenten
references/logic-and-commands.mdevalwrite, evaldo, evalnext, spezielle Schaltflächen, jeder Befehlstyp, queryresult / JSONPath
references/listeners-and-state.mdListener, der ListenerOn-Guard, MQTT-Listener-Verhalten, bursty State-Quellen, Instanz-Neuerstellungen
references/discovery.mddiscover, register, template, initcommandset, mDNS, IP-Eingabe, Hubs, Pairing
references/directories.mdListen, Feeder, item*-Felder, Aktionen, mehrstufige Navigation
references/patterns.mdBewährte Rezepte: Lautstärke, Stromversorgung, Statusleiste, Persistenz, Ketten, Schleifen, Fallback-Pfad, App-Launcher, Artwork-Bild
references/pitfalls.mdObligatorisches erneutes Lesen vor der Auslieferung
references/debugging.mdLesen von Meta-, Mosquitto- und Brain-Daten, Log-Signaturen, Isolieren eines Links, Sandbox-Tests
references/companion-services.mdNode-RED- und MQTT-Brücken, lokale REST-Brücken, Apple TV / pyatv-Lektionen
references/community-drivers.mdReferenztreiber zum Nachahmen, SDK <-> Meta-Zuordnung, Quellen

Evidenz-Tags, die in den Referenzen verwendet werden

[code v1.2.0] im Meta-Quellcode gelesen (Branch Release); [observed] in echten Treibern oder echten Installationen gesehen; [to verify] noch nicht getestete Schlussfolgerung. Wenn ein Verhalten wichtig ist und nicht getaggt wurde, überprüfen Sie den Meta-Code (git clone --depth 1 --branch Release https://github.com/jac459/meta) anstatt zu raten und geben Sie an, was Sie getan haben.

Individual skills in this repo

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

Verwandte Skills