重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
ha-validate by laurigates/claude-plugins
npx skills add https://github.com/laurigates/claude-plugins --skill ha-validate包含 Shell 命令
此技能包含可能执行系统命令的 shell 命令指令(!command``)。安装前请仔细审查。
验证 Home Assistant 配置文件中的 YAML 语法错误和常见问题。
{{ path or '.' }}find {{ path or '.' }} -name "*.yaml" -type f验证所有 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
检查未定义的密钥:
# 查找密钥引用
grep -rh "!secret [a-z_]*" {{ path or '.' }} --include="*.yaml" 2>/dev/null | \
sed 's/.*!secret //' | sort -u > /tmp/used_secrets.txt
# 检查 secrets.yaml 是否存在
if [ -f "{{ path or '.' }}/secrets.yaml" ]; then
echo "secrets.yaml found"
# 列出已定义的密钥
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
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
检查重复键:
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
如果 Home Assistant 在 Docker 中运行:
docker exec homeassistant hass --script check_config 2>&1 | head -100 || echo "Docker validation not available"
ha core check 2>&1 || echo "HA OS validation not available"
报告验证结果:
| 问题 | 修复方法 |
|---|---|
found undefined alias | 在 secrets.yaml 中添加缺失的条目 |
could not determine a constructor | 检查 YAML 缩进 |
duplicate key | 移除或重命名重复的键 |
expected <block end> | 修复缩进对齐 |
mapping values are not allowed | 在冒号后添加空格 |
每周安装次数
52
代码仓库
GitHub 星标数
19
首次出现
2026年2月9日
安全审计
安装于
opencode52
github-copilot52
codex52
amp52
cline52
kimi-cli52
Contains Shell Commands
This skill contains shell command directives (!command``) that may execute system commands. Review carefully before installing.
Validate Home Assistant configuration files for YAML syntax errors and common issues.
{{ path or '.' }}find {{ path or '.' }} -name "*.yaml" -type fValidate 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
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
If Home Assistant is running in Docker:
docker exec homeassistant hass --script check_config 2>&1 | head -100 || echo "Docker validation not available"
ha core check 2>&1 || echo "HA OS validation not available"
Report validation results:
| Issue | Fix |
|---|---|
found undefined alias | Add missing entry to secrets.yaml |
could not determine a constructor | Check YAML indentation |
duplicate key | Remove or rename duplicate key |
expected <block end> | Fix indentation alignment |
mapping values are not allowed | Add space after colon |
Weekly Installs
52
Repository
GitHub Stars
19
First Seen
Feb 9, 2026
Security Audits
Gen Agent Trust HubWarnSocketPassSnykPass
Installed on
opencode52
github-copilot52
codex52
amp52
cline52
kimi-cli52
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
50,200 周安装