You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full reference for all plugin components. For a quick overview, see README.md.
Components
Component
Count
Claude skills
15
Codex wrapper skills
15
Claude agents
6
Hook configs
2
Skills
Skills are the core of the plugin. 14 are user-invocable (you can ask for them directly), 1 is infrastructure (preloaded by agents).
Claude Code reads the canonical skills in root skills/. Codex installs plugins/home-assistant-assistant/, where compatibility wrappers live in the package skills/ directory. Those wrappers read codex/references/skill-adapter.md and then point to packaged canonical workflow content in canonical-skills/*/README.md. The source wrapper files remain in root codex-skills/ for maintenance, but the marketplace does not install the repository root as the Codex plugin.
Setup & Deployment (3)
Skill
Description
Tools
ha-onboard
First-time setup wizard — walks through hass-cli install, token creation, environment variables, HA connection, and git-based deployment config
Deploy config changes to HA via git commit + push + reload, or rollback to a previous commit. Confirmation gate before every side-effectful step
Read, Write, Bash, AskUserQuestion, Glob
ha-validate
Validate configuration files with progressive tiers — YAML syntax, HA schema, entity existence, service validation. Outputs evidence tables showing what ran vs. skipped
Read, Bash, Glob, Grep, AskUserQuestion
ha-validate is also agent-preloadable — agents like ha-config-validator load it automatically.
Config Generation (3)
Skill
Description
Tools
ha-automations
Create automations from natural language descriptions. Classifies intent (inactivity vs. delay), resolves entities, checks capabilities, generates HA 2024+ trigger/condition/action YAML
Audit naming patterns across entities, suggest conventions, and generate rename plans. Plans are saved to .claude/naming-plan.yaml
Read, Write, Bash, Glob, Grep, AskUserQuestion
ha-apply-naming
Execute a naming plan — rename entities via hass-cli and update all YAML references. Dry-run by default. No model invocation (disable-model-invocation: true) — executes the plan mechanically
Agents are subagents launched via the Task tool for deeper analysis. They run in their own context and return results.
These agents/*.md files are the Claude Code agent surface. Codex wrapper skills do the work locally unless the user explicitly asks for subagents or parallel agent work.
Hooks fire automatically in response to plugin events.
Event
Type
What it does
SessionStart
async command
Runs session-check.sh on every new session. Checks for HASS_TOKEN, HASS_SERVER, configuration.yaml, and settings file. Detects Python command and writes breadcrumb files (.claude/ha-python.txt, .claude/ha-plugin-root.txt). Timeout: 10s
PostToolUse (Edit|Write)
sync command
After any file edit or write, reminds about ha-deploy for validation and deployment. Timeout: 5s
The Codex hook surface lives in codex/hooks.json and runs Python hooks (codex/session_check.py, codex/env_guard.py) so Windows users do not need bash on PATH. SessionStart writes the same gitignored breadcrumb files for shared helper discovery and adds Codex invocation wording such as $ha-validate and $ha-deploy.
Plugin References
Shared reference documents used across skills and agents:
File
Description
references/safety-invariants.md
The 8 safety invariants enforced across all components
references/settings-schema.md
Schema for .claude/settings.local.json
references/hass-cli.md
hass-cli command reference
templates/templates.md
Reference templates for generated configurations
Safety Invariants
Every skill, agent, and hook enforces these rules (canonical wording in references/safety-invariants.md):
No unsupported attributes — checks supported_features/supported_color_modes before emitting device attributes
No semantic substitution — distinguishes "after no motion" (inactivity) from "wait 5 minutes" (delay)
AST editing only — no brittle string replacement; uses precise context-aware edits
No secrets printed — never echoes tokens or API keys
Never deploy unless explicitly requested — all side-effectful actions require explicit confirmation
Evidence tables — all validation output shows what ran vs. what was skipped
Minimal edits only — make only the specific changes requested; do not reorganize adjacent content
Verify after config edits — offer deploy/reload after YAML changes; validate entity IDs exist before use