Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
laurigates avatar

Ha Validate

  • 61 installs
  • 49 repo stars
  • Updated August 4, 2026
  • laurigates/claude-plugins

Helps with ai & agent building tasks.

About

ha-validate is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.

  • ha-validate
  • AI & Agent Building
  • AI-coding skill

Ha Validate by the numbers

  • 61 all-time installs (skills.sh)
  • Ranked #6,312 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/laurigates/claude-plugins --skill ha-validate

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs61
repo stars49
Last updatedAugust 4, 2026
Repositorylaurigates/claude-plugins

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

/ha:validate

Validate Home Assistant configuration files for YAML syntax errors and common issues.

When to Use This Skill

Use this skill when...Use ha-configuration instead when...
Checking YAML syntax in configuration.yaml or automations.yamlEditing configuration.yaml to add or change integrations
Detecting undefined !secret references against secrets.yamlAdding new entries to secrets.yaml
Finding duplicate keys in scripts.yaml or scenes.yamlReorganizing configuration into packages
Running hass --script check_config via Docker or HA OSAuthoring template sensors and recorder/logger config

Context

  • Config path: {{ path or '.' }}
  • YAML files: !find . -name "*.yaml" -type f

Validation Steps

1. YAML Syntax Validation

Validate all YAML files for proper syntax:

find {{ path or '.' }} -name "*.yaml" -type f -exec python3 -c "
import yaml
import sys
try:
    with open('{}', 'r') as f:
        yaml.safe_load(f)
    print('OK: {}')
except yaml.YAMLError as e:
    print('ERROR: {}')
    print(str(e)[:200])
    sys.exit(1)
" \; 2>&1 | head -50

2. Check for Common Issues

Check for undefined secrets:

# Find secret references
grep -rh "!secret [a-z_]*" {{ path or '.' }} --include="*.yaml" 2>/dev/null | \
  sed 's/.*!secret //' | sort -u > /tmp/used_secrets.txt

# Check if secrets.yaml exists
if [ -f "{{ path or '.' }}/secrets.yaml" ]; then
  echo "secrets.yaml found"
  # List defined secrets
  grep "^[a-z_]*:" {{ path or '.' }}/secrets.yaml | sed 's/:.*//' | sort -u > /tmp/defined_secrets.txt
  echo "Undefined secrets:"
  comm -23 /tmp/used_secrets.txt /tmp/defined_secrets.txt
else
  echo "WARNING: secrets.yaml not found"
fi

Check for duplicate keys:

python3 -c "
import yaml
import sys
from collections import Counter

class DuplicateKeyChecker(yaml.SafeLoader):
    def construct_mapping(self, node, deep=False):
        keys = [k.value for k, v in node.value if isinstance(k, yaml.ScalarNode)]
        duplicates = [k for k, count in Counter(keys).items() if count > 1]
        if duplicates:
            print(f'Duplicate keys in {node.start_mark}: {duplicates}')
        return super().construct_mapping(node, deep)

for f in ['configuration.yaml', 'automations.yaml', 'scripts.yaml', 'scenes.yaml']:
    path = '{{ path or '.' }}/' + f
    try:
        with open(path) as file:
            yaml.load(file, Loader=DuplicateKeyChecker)
            print(f'OK: {f}')
    except FileNotFoundError:
        pass
    except yaml.YAMLError as e:
        print(f'ERROR in {f}: {e}')
" 2>&1

3. Docker-based Full Validation (if available)

If Home Assistant is running in Docker:

docker exec homeassistant hass --script check_config 2>&1 | head -100 || echo "Docker validation not available"

4. Home Assistant OS Validation (if available)

ha core check 2>&1 || echo "HA OS validation not available"

Post-Validation

Report validation results:

  • List any YAML syntax errors with file and line numbers
  • List any undefined secret references
  • List any duplicate keys
  • Suggest fixes for common issues

Common Fixes

IssueFix
found undefined aliasAdd missing entry to secrets.yaml
could not determine a constructorCheck YAML indentation
duplicate keyRemove or rename duplicate key
expected <block end>Fix indentation alignment
mapping values are not allowedAdd space after colon

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.