magnusoverli/opencode/home-assistant-dashboard-ui
Claude Code and agent skill by magnusoverli/opencode
- community
- ext:[{"type":"plugin","description":"Custom plugin integration"}]
Checking that the SKILL.md file is still in the repository.
Build or change Home Assistant dashboards — Lovelace views, cards, layouts, themes, badges, custom cards and card-mod — and verify the result visually with a screenshot. Covers choosing between hab dashboard commands and YAML mode, the standard card set, conditional and template cards, and the screenshot verification loop. Load this for any Lovelace, dashboard, view, card, or theme request.
Install
npx vskill@latest install magnusoverli/opencode/home-assistant-dashboard-uiSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Dashboards and UI
Which mechanism this installation uses
Find out before proposing anything — the two are not interchangeable.
- Storage mode (default): dashboards live in
.storage/, which is
off-limits to direct editing. Use `hab dashboard`: hab dashboard list, hab dashboard get <url_path>, hab dashboard create, hab dashboard view create. This is the primary path for most installations.
- YAML mode:
lovelace:inconfiguration.yamlnames a dashboard file.
Then it is ordinary YAML — the configuration skill's style guide and write_config_safe apply.
hab dashboard list tells you which dashboards exist and how they are managed. hab dashboard get <url_path> --json gives you the current structure to modify; read it before writing, exactly as with any config file.
Use hab_run(args=["schema","dashboard","patch"]) for the exact compact contract. Prefer `dashboard patch` for field-level edits to existing objects:
- Read the dashboard and select an exact JSON Pointer, such as
/views/0/cards/0
or /views/0/sections/1/cards/2; re-check indices rather than guessing names.
- Preview with
--target <pointer> --data <object> --planand reviewchanges,
change_count, diff_complete and base_revision. Unlike generic static plans, this preview reads the live config and returns a real diff.
- After approval, apply the same patch with the exact
base_revisionas--if-match.
Objects merge deeply; explicitly supplied arrays replace. --set '/name="Kitchen"' uses JSON values and --remove /icon removes an object field. Null remains a value.
- Inspect
status,saved,verified; on failure inspecterror.details.result.
verified confirms stored JSON, noop makes no save, and saved: null is uncertain. Do not retry writes automatically. Conflicts require fresh inspection and diff review.
Preview does not establish write permission or server acceptance. HA has no atomic conditional save: an edit between the final freshness check and save can be overwritten. Read-back proves stored JSON at observation time, not rendering, references or resources. YAML dashboards may reject saves; patches do not expand generated strategy layouts.
Use existing view/section/card/badge commands for creation/deletion or deliberate replacement. Their update --data/--file replaces the selected object; preserve existing options. Generic --plan may be static rather than a current-state diff. Large result artifacts contain a CLI envelope: inspect success, then extract the configuration from data before saving. Verify with a read-back and rendering.
Building a view
Start from what the home actually has: get_home_context for the area and its entities, or get_areas when laying out an area-per-view dashboard. Do not invent entity IDs — every card you write should reference an entity you have confirmed exists.
Standard cards worth knowing: entities, tile, button, light, thermostat, media-control, weather-forecast, history-graph, statistics-graph, gauge, picture-elements, map, markdown, todo-list, area, and the layout cards grid, vertical-stack, horizontal-stack, sections.
- `conditional` shows a card only while a condition holds — the usual way to
hide something that is irrelevant most of the time.
- `custom:` cards require an installed and registered resource. Check HA's
dashboard Resources UI and existing rendered cards before relying on one; a file in www/ alone does not prove registration. The pinned hab has no dashboard resources command. Marketplace commands require HA 2026.11+.
- card-mod styling is a custom-card feature too, and equally dependent on
the resource being present.
Views take title, path, icon, type (sections, panel, masonry, sidebar), badges, and cards. Sections view type is the current default for new dashboards and behaves differently from masonry — check which one the existing dashboard uses before adding cards to it.
Follow the YAML style guide when writing dashboard YAML: block sequences, double-quoted strings, unquoted entity IDs, target: for actions.
Verifying visually
screenshot_url renders a page in a headless browser so you can see what the user will see. It requires the Screenshot tool option and a long-lived access token in the add-on configuration; if it is not available, say so rather than claiming a change looks right.
The loop:
- Make the change (with approval).
screenshot_urlthe dashboard path — for example
http://homeassistant.local:8123/lovelace/kitchen, or the url_path from hab dashboard list.
- Look at it. Check the things that break silently: cards that render as an
error box, entities showing Unavailable, a layout that wraps badly, a title that got dropped.
- Report what you see, with the screenshot, and fix or ask.
Screenshot the page after a change, not just before — an unverified dashboard edit is the change most likely to look fine in YAML and wrong on screen. Mention that mobile and desktop widths differ if the layout is width-sensitive.
Themes
Themes live in themes/ and are referenced by frontend: in configuration.yaml. Adding one needs a restart or a frontend.reload_themes call; changing an existing theme file needs the reload. Theme variables are frontend CSS variables — verify with a screenshot, since a typo in a variable name fails silently rather than erroring.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingha_opencode/rootfs/opt/ha-mcp-server/skills/home-assistant-dashboard-ui/SKILL.md
Popularity
- Repository stars
- 438
- Repository forks
- 36
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Extension points
pluginCustom plugin integration
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/magnusoverli/opencode/home-assistant-dashboard-ui)