Community画像github.com

KoBa-beep/ClaudeCode-Skill

NEEOリモコン用ドライバを、メタエンジン(jac459/meta)を通じて作成、修正、レビュー、デバッグします。JSONデバイスファイル(ボタン、ラベル、スライダー、スイッチ、画像、ディレクトリ、リスナー、ディスカバリー、登録)と、それに付随するサービス(MQTT経由のNode-REDフロー、小規模なローカルRESTブリッジ)を扱います。ユーザーがNEEO、NEEO Brain、meta/metaCore/metadriver、NEEOドライバまたはデバイスファイルについて言及したとき、NEEOリモコンからデバイス(TV、AVレシーバー、メディアプレーヤー、照明など)を制御したいとき、またはmeta、Mosquitto、BrainのログやBrain JSONダンプを診断のために共有したときに使用します。

ClaudeCode-Skill とは?

このスキルは、NEEOリモコン向けのドライバをメタエンジン(jac459/meta)を用いて効率的に作成・管理するための包括的なガイドです。ユーザーがNEEO関連のトピック(NEEO Brain、metaCore、ドライバファイル、ログ診断など)について言及した際に自動的に起動し、JSONベースのデバイスファイルの作成、修正、デバッグを支援します。主にClaude CodeやCursorなどのAIエージェント開発環境で動作し、純粋なJSON設定によりJavaScriptコードを書くことなくドライバを定義できる点が特徴です。このスキルは、HTTP、WebSocket、MQTTなど様々なプロトコルに対応し、デバイスのディスカバリー、状態リスナー、Node-REDとの連携など高度な機能を提供します。さらに、`references/` ディレクトリに体系化されたドキュメント群を参照することで、初心者から上級者まで一貫した品質のドライバ開発が可能です。

対応✓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 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

NEEOドライバとmeta(メタ)

meta(jac459/meta)は、active/フォルダからJSON デバイスファイルを読み込み、それぞれをローカルのNEEO Brainに登録されるNEEO SDKドライバに変換するNode.jsエンジンです。デバイスをJSONで記述するだけで、JavaScriptを書く必要はありません(小さなDYNAMIK式を除く)。

言語: ドキュメントは日本語で記述されていますが、JSONキー、エンジンキーワード、ボタン名、ログ文字列はここに記載された英語のまま正確に使用してください。

スコープ: 買収前のNEEO SDK、ローカルのBrain、metaのみを対象とします。Control4関連のマテリアルやNEEOクラウド(シャットダウン済み)は無視してください。

基本ルール(必読)

  1. JSONキーやコマンドタイプを勝手に作らないでください。 リファレンスにない機能が必要な場合は、その旨を伝え、代替案(references/companion-services.md にあるNode-RED + MQTT、小規模なローカルRESTブリッジ、cliコマンド、隠しボタンチェーン)を提案してください。
  2. 純粋なJSON: コメント、末尾のカンマは禁止。ダブルクォートを使用。python3 -m json.tool file.json と python3 scripts/check_driver.py file.json で検証してください。
  3. コマンドタイプは大文字小文字を区別します: http-get、http-rest、http-post、http-get-soap、static、cli、repl、webSocket、socketIO、jsontcp、mqtt、wol、mDNS、android。
  4. versionは 表示コンポーネントを追加するたびに更新してください。Brainはコンポーネントを追加するだけです。名前の変更や削除には、NEEOアプリでデバイスを削除して再追加する必要があります(レシピとショートカットも再作成)。インストール済みデバイスではバージョンアップだけでは不十分な場合があります。Brainを確認してください(references/debugging.md)。
  5. ラベル、スイッチ、スライダー、イメージ、センサーの名前(キー)は英数字のみ 使用可能です。スペースや記号があるとセンサーリンクが壊れ(Brainで"sensor": null)、そのコンポーネントをショートカットに使うとリモートが同期時にクラッシュします。表示されるlabelテキストは自由です。ボタン名にはスペースを含められますが、+やアクセント記号は避けてください(DISNEY PLUS、ラベルDisney+)。
  6. ラベルにバインドされた変数に""を書き込まないでください: meta v1.2.0では、ラベルがテキストから""に戻るとmetaが停止します。代わりに" "(または読みやすいフォールバック)を書き込んでください。ラベル変数も初期値は" "にしておく習慣をつけてください。
  7. ラベルに渡すすべての外部テキストをサニタイズしてください: "→'、\→/、制御文字→スペース、$→$(全角)。ドライバ内およびソース側で行ってください。
  8. リスナーはセッションごとに一度だけ起動します。ListenerOnガードと、すべての可視コントロールに配線された隠し__LISTENボタンを通じて制御してください。POWER ONだけに頼ったり、mqttリスナーで__CLEANUPを呼び出したりしないでください(references/listeners-and-state.md)。
  9. ポーリングよりもイベントを優先(webSocket、socketIO、mqtt)。ポーリングする場合はpooltimeは3000以上に設定してください。
  10. $Resultは常に文字列で、失敗時は"undefined"になります。JSON.parseの前には必ずガードを入れてください。ボタンはスカラー(ok)、ディレクトリアクションのフィーダーは["ok"]を返します。
  11. 変数名: 別の変数の接頭辞になる名前は使用しないでください。$Varに文字が続くと別の変数として解釈されます。
  12. セキュリティ: DYNAMIKとcliはメタホスト上でコードを実行します。共有するドライバに秘密情報をハードコードしないでください。metaをroot/adminで実行しないでください。
  13. 元に戻せない変更には同意が必要: 可視コンポーネントの追加(例:DIGIT 0-9)はデバイスを再インストールしないと元に戻せません。事前に確認してください。
  14. 成果物の区別: metaドライバはJSONオブジェクト({で始まり、名前に-flowを含まず、active/に配置)。Node-REDフローはJSONリスト([で始まり、常に*-flow.jsonという名前で、Node-REDにインポート)。
  15. templateでは、dynamicnameとdynamicidは必須。dynamicidは安定していること(DHCPのIPではなくMACアドレスやハードウェアID)。

ワークフロー

  1. 必要な情報を収集(一度に最大3つの質問): 正確なデバイスモデル;その制御プロトコルまたはAPI(HTTP/REST、WebSocket、raw TCP、MQTT、IRのみ、Android TV...);固定IPかどうかと安定したID(MAC);制御するものと表示する状態;metaのバージョンと実行環境(Pi with pm2、Docker...);MQTTブローカーとNode-REDが利用可能かどうか。公式APIドキュメントがあればそれを探してください。
  2. NEEOタイプ(references/driver-anatomy.md、セクション「types and recognized buttons」)とディスカバリーパターン(references/discovery.md)を選択:静的単一デバイス、ユーザー入力IP、mDNS、またはハブ。
  3. assets/のスケルトンから開始: skeleton-static.json(固定アドレスの1デバイス)またはskeleton-register-ip.json(ユーザーがIPを入力)。references/patterns.mdから実績のあるパターンを再利用。
  4. ロジックの配置場所を決定: シンプルなHTTPまたはWebSocketデバイス:すべてドライバ内。バイナリまたはステートフルなプロトコル(raw TCP、永続セッション、ペアリング、バースティな状態):間にコンパニオンサービスを置き、高速なHTTPコマンドと、保持されたMQTTメッセージとしてプッシュされる状態を使用(references/companion-services.md)。
  5. 納品前にチェック:
    • python3 -m json.tool driver.json その後 python3 scripts/check_driver.py driver.json(名前、空のラベル値、タイプ、バージョン、ガード、ポーリング...)
    • リスナーがあるドライバでは node scripts/simulate_guard.js driver.json(セッションをまたいだ__INITIALISE / __CLEANUPのカウント)
    • 複雑なDYNAMIK式はNodeで実際の置換ルールを使って評価(references/logic-and-commands.md)
    • references/pitfalls.mdを再読。
  6. 次の順序で成果物を納品: サマリー(デバイス、プロトコル、NEEOタイプ、ディスカバリーパターン、対応/非対応項目);検証済みの完全なJSONファイルと明示的なファイル名;デプロイ手順(active/へコピー、meta再起動、NEEOアプリでデバイス追加、レシピの可視性とショートカット作成);テスト計画(試すボタン、期待される結果、確認するログ行);実機で検証していない仮定;次のイテレーション。複数ファイルのプロジェクト(ドライバ+フロー+サービス):操作順序、各成果物のバージョンマーカーとインストールされているバージョンの確認方法。常に実機でテストされていないことを明記。

リファレンスマップ(タスクに必要なものだけ読む)

ファイル読むタイミング
references/meta-engine.mdアーキテクチャ、インストール、フォルダ、再起動、ログレベル、metaが公開するMQTTトピック、Docker/NASホスティング、既知のmeta v1.2.0のバグ
references/driver-anatomy.mdトップレベルキー、NEEOデバイスタイプと認識されるボタン名、変数、$置換、DYNAMIK、UIコンポーネント
references/logic-and-commands.mdevalwrite、evaldo、evalnext、特殊ボタン、すべてのコマンドタイプ、queryresult / JSONPath
references/listeners-and-state.mdリスナー、ListenerOnガード、MQTTリスナーの動作、バースティな状態ソース、インスタンス再構築
references/discovery.mddiscover、register、template、initcommandset、mDNS、IPエントリー、ハブ、ペアリング
references/directories.mdリスト、フィーダー、item*フィールド、アクション、多階層ナビゲーション
references/patterns.md実績のあるレシピ:音量、電源、ステータスバー、永続性、チェーン、ループ、フォールバックパス、アプリランチャー、アートワーク画像
references/pitfalls.md納品前に必ず再読
references/debugging.mdmeta、Mosquitto、Brainデータの読み方、ログシグネチャ、リンクの切り分け、サンドボックステスト
references/companion-services.mdNode-REDとMQTTブリッジ、ローカルRESTブリッジ、Apple TV / pyatvの教訓
references/community-drivers.md参考にするべきドライバ、SDK <-> metaマッピング、ソース

リファレンスで使用される証拠タグ

[code v1.2.0] metaのソースコード(ブランチRelease)で確認済み;[observed] 実際のドライバや実インストールで確認済み;[to verify] 未検証の推測。タグがなく、動作が重要な場合は、推測せずにmetaのコードを確認してください(git clone --depth 1 --branch Release https://github.com/jac459/meta)。どの方法を使用したかも併せて記載してください。

Individual skills in this repo

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

関連スキル