mcpField
H
ha-validate

ha-validate

github.com/laurigatesテスト・品質5962 回インストール1 日前に更新
リポジトリ

ha-validate について

ha-validate は、Home Assistant の YAML 設定ファイルと一般的な問題を確認するスキルです。構文エラーや未定義のシークレット、重複キーを見つけ、結果と修正案をまとめます。

主な機能

  1. 01YAML 構文チェック
  2. 02未定義シークレットの検出
  3. 03重複キーの検出
  4. 04Docker と HA OS での検証
  5. 05結果と修正案の提示

活用シーン

  1. 01configuration.yaml と自動化ファイルの確認
  2. 02secrets.yaml にないシークレット参照の調査
  3. 03scripts.yaml や scenes.yaml の重複キー確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill ha-validate

インストール後、Claude Code で/ha-validateを入力して読み込まれたか確認します。

詳細

/ha:validate

Home Assistant の設定ファイルを検証し、YAML 構文エラーやよくある問題を確認します。

このスキルを使用するタイミング

このスキルを使用する場合...代わりに ha-configuration を使用する場合...
configuration.yaml または automations.yaml の YAML 構文を確認するときインテグレーションを追加または変更するために configuration.yaml を編集するとき
secrets.yaml に対する未定義の !secret 参照を検出するときsecrets.yaml に新しいエントリーを追加するとき
scripts.yaml または scenes.yaml の重複キーを見つけるとき設定をパッケージに再編成するとき
Docker または HA OS 経由で hass --script check_config を実行するときテンプレートセンサーや recorder/logger の設定を作成するとき

コンテキスト

  • 設定パス:{{ path or '.' }}
  • YAML ファイル:!find . -name "*.yaml" -type f

検証手順

1. YAML 構文の検証

すべての YAML ファイルの構文が正しいか検証します。

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. よくある問題を確認

未定義のシークレットを確認:

# 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

重複キーを確認:

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 による完全な検証(利用可能な場合)

Home Assistant が Docker で実行されている場合:

docker exec homeassistant hass --script check_config 2>&1 | head -100 || echo "Docker validation not available"
4. Home Assistant OS による検証(利用可能な場合)
ha core check 2>&1 || echo "HA OS validation not available"

検証後

検証結果を報告します。

  • YAML 構文エラーがあれば、ファイル名と行番号を示します
  • 未定義のシークレット参照を一覧表示します
  • 重複キーを一覧表示します
  • よくある問題の修正方法を提案します

よくある修正方法

問題修正方法
found undefined alias不足しているエントリーを secrets.yaml に追加します
could not determine a constructorYAML のインデントを確認します
duplicate key重複キーを削除するか、名前を変更します
expected <block end>インデントの位置を修正します
mapping values are not allowedコロンの後にスペースを追加します

コメント