Community画像github.com

KoBa-beep/ClaudeCode-Skill

Fibaro Home Center 3 / Yubii Home 用のデバイスアイコンを作成します。実際のデバイスをリアルに描写し、状態を示す小さな丸いバッジを付けた、透明背景のPNG(128×128)とSVGを状態ごとに生成し、HC3にアップロード・適用します。

ClaudeCode-Skill とは?

このスキルは、Fibaro Home Center 3 (HC3) / Yubii Home スマートホームコントローラー向けのカスタムデバイスアイコンを生成・アップロードするためのものです。ユーザーが「アイコンが状態に応じて変わらない」と感じたり、「デバイスをもっと見栄え良くしてほしい」と依頼した場合に特に有用です。このスキルは、Pythonスクリプト (`scripts/icon_kit.py`) を使用し、SVGの描画とPNGへの変換を自動化します。アイコンは、実際のデバイスの形状、色、素材をリアルに再現し、透明背景で各状態ごとに1ファイル生成されます。右下には小さな丸いバッジが配置され、状態(オン/オフ、アラーム、警告など)や計測値(温度、CO₂など)を直感的に表示します。HC3のUIテーマ(ライト/ダーク)の両方で視認性を確保するため、暗いデバイスには明るいエッジを付与します。生成されたアイコンは、HC3のREST API(`POST /api/icons`)を介してアップロードされ、デバイスプロパティ(`deviceIcon`)に適用されます。このスキルは、Claude Code、Cursor、CodexなどのAIエージェント向けに設計されており、ユーザーの指示に基づいてアイコンセットの設計、生成、デプロイをエンドツーエンドで支援します。

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

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

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

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

ドキュメント

HC3 デバイスアイコン

ユーザーの言語で回答してください。scripts/icon_kit.py (Python, pip install cairosvg pillow) を使用してアイコンを生成します。このスクリプトには、スタイルヘルパー(グラデーション、ソフトシャドウ、バッジ、約35種類のバッジグリフ)、デバイス描画の例(11ポジションの屋根窓+ローラーブラインド)、およびプレビュー生成機能が含まれています。

スタイル (これらのアイコンがHC3のUIに適合する理由)

  • 実際のデバイスのリアルな描画 (形状、色、素材、視野角)。ユーザーに実機の写真を求め、それを再現してください。写真をトレースしたり、メーカーのロゴ/商標をコピーしたりしないでください(アイコンを共有可能に保つためにも重要です)。ユーザーがプライベート利用で明示的にブランドロゴを希望する場合は、そのアイコンを公開物から除外してください。
  • 透明背景、状態ごとに1ファイル — ライト/ダークのバリエーションは不要。両方のテーマで視認性を保つため、暗いデバイスには明るいエッジ (stroke="#FFFFFF" 1~2px または明るいベベル) を付け、背景プレートは決して描画しないでください。
  • 小さな丸いバッジ、右下 (中心 100,100、半径約22、白いリング): 状態 (緑:オン、グレー:アイドル/オフ、赤:アラーム、オレンジ:警告、青:開/レベル、紫:自動…) または測定値 (温度計、水滴、CO₂、風…)。デバイスの描画はこの角を空けておきます。
  • 128 × 128 viewBox、描画範囲は約10~118px、床置きデバイスの下には柔らかな楕円形の影。
  • 納品前にプレビュー (preview.png: 各アイコンをライト/ダークの対角線上の背景に1回ずつ配置) を確認してください。

デバイスごとの画像数 (HC3のルール)

デバイスタイプ1つのアイコンセット内の画像数アップロードフィールド
バイナリ (スイッチ、binarySensor、ドア/窓、モーション、煙…)2: アイドル / アクティブicon0, icon100
マルチレベル (調光器、ローラーブラインド、バルブレベル)11: 0, 10 … 100icon0 … icon100
deviceController、ほとんどのQuickApp親、multilevelSensor / 温度…1icon0
1画像タイプのデバイスは、自動で画像を変更できません。状態依存のQAアイコン (OK/警告/アラーム、またはモード) の場合は、状態ごとに1セットをアップロードし、Luaから切り替えます: self:updateProperty("deviceIcon", tonumber(self:optionalVariable("iconAlarm"))) (IDを変数に貼り付け; パターンは hc3-quickapp スキルの references/patterns.md §5 を参照)。
有用な状態ごとに1つのアイコンを、そしてQuickAppが作成するすべてのデバイス (親と子) に対してアイコンを作成してください。

ワークフロー

  1. デバイス (親、各子、各Z-Waveサブデバイス) とその正確な type をリストアップします (api.get("/devices/<id>")、例: com.fibaro.FGR224 (Fibaroローラーブラインドモジュール)、com.fibaro.rollerShutter (QAの子))。
  2. 実機の写真をユーザーに求め、状態とバッジの意味について合意します。
  3. scripts/icon_kit.py をコピーし、デバイスごとに1つの描画関数 (128ボックス内のSVGフラグメント、roof_window(pct) を参照) を作成し、ICONS に (name, title, body) の行を状態ごとに追加して、python3 icon_kit.py --out icons/ を実行します。命名: <device>-<state> (shutter-000…shutter-100, boiler-on, boiler-off)。これにより、READMEテーブルでどのアイコンがどこに該当するかを示せます。
  4. preview.png を表示し、ユーザーの指摘 (形状、色、絵文字のようなバッジの明瞭さ) に基づいて繰り返し修正します。
  5. アップロード: セットをQAの qa.json の icons セクションにリストし、build_fqa.py (スキル hc3-packaging) で <qa>-icons.sh を生成するか、手動でアップロードします: 設定 → デバイス → 該当デバイス → アイコン → 追加。

アップロードAPI (5.2xxで観測)

POST /api/icons、multipart/form-data: type=device、deviceTemplate=<正確なデバイスタイプ>、状態ごとに1ファイル (icon0、icon100、または icon0…icon100)、fileExtension=png (svgも可)。応答 201 {"id": 1055, "iconSetName": "User1055", "fileExtension": "png"}。適用: PUT /api/devices/<id> {"properties": {"deviceIcon": 1055}} (外部から — QA内部から自身のIDに対しては決して行わないでください。再起動します。代わりに self:updateProperty を使用してください)。削除: DELETE /api/icons?id=&type=device&name=&fileExtension=png。ユーザーアイコンIDは1000付近から始まります。GET /api/icons で一覧表示されます (ファームウェアによって2つの応答形式が存在します。両方に対応してください)。 部屋とシーンのアイコンも存在します (type=room / type=scene の可能性大 [V])。

references/badges.md には、キットで利用可能なバッジの色とグリフがリストされています。

Individual skills in this repo

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

関連スキル