Claude-skill-registry ha-dashboard
Configure Home Assistant Lovelace dashboards, cards, views, and themes. Use when working with dashboard YAML, card configuration, view layouts, custom cards, or frontend theming.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ha-dashboard" ~/.claude/skills/majiayu000-claude-skill-registry-ha-dashboard && rm -rf "$T"
skills/data/ha-dashboard/SKILL.mdHome Assistant Dashboard Skill
Configure Lovelace dashboards, cards, views, and themes for Home Assistant.
Before You Start
This skill prevents 5 common errors and saves ~40% tokens.
| Metric | Without Skill | With Skill |
|---|---|---|
| Setup Time | 30+ min | 10 min |
| Common Errors | 5 | 0 |
| Token Usage | ~8000 | ~4800 |
Known Issues This Skill Prevents
- YAML indentation errors (must use 2 spaces, never tabs)
- Invalid entity ID format (must be
)domain.entity_name - Missing required card properties (e.g.,
for button cards)entity - Incorrect view type configuration
- Theme variables with wrong syntax
Quick Start
Step 1: Enable YAML Mode (Optional)
# configuration.yaml lovelace: mode: yaml
Why this matters: YAML mode gives full control over dashboard configuration and enables version control.
Step 2: Create Basic Dashboard Structure
# ui-lovelace.yaml or dashboards.yaml title: My Home views: - title: Home path: home cards: - type: markdown content: Welcome to your dashboard!
Why this matters: This minimal structure validates your YAML setup before adding complexity.
Step 3: Add Cards to Views
views: - title: Living Room path: living-room cards: - type: entities title: Lights entities: - light.living_room - light.kitchen - type: weather-forecast entity: weather.home forecast_type: daily
Why this matters: Cards are the building blocks of dashboards - start with simple cards before complex ones.
Critical Rules
Always Do
- Use 2-space indentation consistently
- Use entity ID format:
(e.g.,domain.entity_name
)light.living_room - Validate YAML before reloading (use an online YAML validator)
- Define
for interactive cardstap_action - Test on mobile devices
Never Do
- Use tabs for indentation
- Hardcode entity names that might change
- Create views with 20+ cards (split into multiple views)
- Forget
on weather-forecast cards (required since 2023)forecast_type - Mix UI-managed and YAML-managed dashboards without understanding the mode
Common Mistakes
Wrong:
type: button entity:light.living_room tap_action: action: toggle
Correct:
type: button entity: light.living_room tap_action: action: toggle
Why: Missing space after colon and incorrect indentation are the most common YAML errors.
Known Issues Prevention
| Issue | Root Cause | Solution |
|---|---|---|
| "Unknown card type" | Missing custom card resource | Add to |
| Cards not updating | Browser cache | Hard refresh (Ctrl+Shift+R) |
| Theme not applying | Wrong variable name | Check theme variable spelling |
| Blank dashboard | YAML syntax error | Validate YAML, check logs |
| Entity unavailable | Wrong entity ID | Check entity in Developer Tools > States |
Configuration Reference
Dashboard Configuration (configuration.yaml)
lovelace: mode: yaml # or 'storage' for UI mode resources: - url: /local/card.js # Custom card resources type: module dashboards: lovelace-custom: mode: yaml title: Custom icon: mdi:view-dashboard show_in_sidebar: true filename: custom-dashboard.yaml
Key settings:
:mode
for manual control,yaml
for UI editingstorage
: Load custom cards/CSS (only in YAML mode)resources
: Define additional dashboardsdashboards
View Configuration
views: - title: View Name # Tab title path: view-path # URL path (/lovelace/view-path) icon: mdi:home # Tab icon (optional) type: masonry # masonry, panel, sections, sidebar theme: dark-mode # Apply specific theme subview: false # Hide from navigation cards: [] # Card list
Common Patterns
Horizontal Stack of Buttons
type: horizontal-stack cards: - type: button entity: light.living_room name: Living tap_action: action: toggle - type: button entity: light.bedroom name: Bedroom tap_action: action: toggle
Conditional Card Display
type: conditional conditions: - condition: state entity: binary_sensor.home_occupied state: "on" card: type: entities title: Home Controls entities: - light.living_room - climate.thermostat
Bundled Resources
References
Located in
references/:
- All built-in card types with YAML examplescard-reference.md
- View layout comparison and selection guideview-types.md
- CSS variables for themingtheme-variables.md
- Conditional visibility, stacks, entity rowscommon-patterns.md
Note: For deep dives on specific topics, see the reference files above.
Assets
Located in
assets/:
- Starter dashboard configurationdashboard-template.yaml
- Copy-paste card examplescard-snippets.yaml
Copy these templates as starting points for your implementation.
Context7 Documentation
For current documentation, use these Context7 library IDs:
| Library ID | Purpose |
|---|---|
| User docs - dashboards, cards, views, themes |
| Developer docs - custom card development |
| HACS frontend cards |
Official Documentation
Troubleshooting
Dashboard Shows Blank
Symptoms: Dashboard loads but shows nothing or error.
Solution:
# Check Home Assistant logs ha core logs | grep -i lovelace # Validate YAML online or locally python -c "import yaml; yaml.safe_load(open('ui-lovelace.yaml'))"
Custom Card Not Loading
Symptoms: "Custom element doesn't exist" error.
Solution:
# Ensure resource is loaded lovelace: resources: - url: /local/my-card.js type: module # or 'js' for non-module # Check file exists at /config/www/my-card.js
Setup Checklist
Before using this skill, verify:
- Home Assistant is running (2023.1+)
- You have access to configuration files (File Editor or VS Code add-on)
- You know your entity IDs (check Developer Tools > States)
- You've decided on YAML vs UI mode for dashboard management