ha-esphome-voice-satellite-add

ha-esphome-voice-satellite-add is a skill for Claude Code from nolte/claude-home-assistant. It costs 220 tokens per session (2,333 once invoked), scanned A, original, MIT.

A guided procedure for configuring one ESPHome device as a voice satellite for Home Assistant. ESPHome is a system for defining smart-device firmware in YAML, while Home Assistant is software for controlling smart-home devices.

In plain words
What is it for?
It is for creating the device-side audio and voice-assistant configuration, including the correct microphone, speaker, audio rates, amplifier control, and wake-word arrangement.
Why use it?
It helps match the device's actual audio hardware and generation, and makes clear which settings belong on the device versus in Home Assistant.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the claude-home-assistant plugin — 64 skills, 11 agents shipped together

Good fit It is for creating the device-side audio and voice-assistant configuration, including the correct microphone, speaker, audio rates, amplifier control, and wake-word arrangement.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/nolte/claude-home-assistant/ha-esphome-voice-satellite-add
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add nolte/claude-home-assistant --skill ha-esphome-voice-satellite-add
Clone the repo
git clone --depth 1 https://github.com/nolte/claude-home-assistant

Made for: Claude Code.

Or install claude-home-assistant, the plugin that ships this one along with the rest of its 64 skills, 11 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for ha-esphome-voice-satellite-add

README.md
[![agentmods](https://agentmods.dev/badge/skills/nolte/claude-home-assistant/ha-esphome-voice-satellite-add/github.svg)](https://agentmods.dev/skills/nolte/claude-home-assistant/ha-esphome-voice-satellite-add)
Your own site
<a href="https://agentmods.dev/skills/nolte/claude-home-assistant/ha-esphome-voice-satellite-add"><img src="https://agentmods.dev/badge/skills/nolte/claude-home-assistant/ha-esphome-voice-satellite-add/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for ha-esphome-voice-satellite-add

Your own site · 80×15
<a href="https://agentmods.dev/skills/nolte/claude-home-assistant/ha-esphome-voice-satellite-add"><img src="https://agentmods.dev/badge/skills/nolte/claude-home-assistant/ha-esphome-voice-satellite-add.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 220 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,333 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00220 $0.02333
Opus 5.5 $0.00088 $0.00933
Sonnet 5.5 $0.00044 $0.00467
Haiku 4.5 $0.00022 $0.00233

Measured 1mo ago against content hash a822a1304e8b, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

ha-esphome-voice-satellite-add scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/ha-esphome-voice-satellite-add/SKILL.md · 105 lines

How it starts

The opening of the file, as written. The whole thing — 105 lines — stays where its author put it; the contents beside it link to each section on GitHub.

HA ESPHome Voice Satellite Add

Spec: spec/claude/ha-esphome-voice-satellite-add/en.md (EN canonical) / spec/claude/ha-esphome-voice-satellite-add/de.md (DE translation). Grounding specs: spec/ha/esp32-s3-box/en.md §Audio binding / §Voice-assistant binding (device side) and spec/ha/assist-pipeline/en.md (Home Assistant side).

Binds the voice path of one device per invocation, and states plainly which half of the result lives in Home Assistant rather than in the YAML.

Why this is a skill, not an agent

  • Mid-flow approval is the contract (decisive): the board generation, the wake-word placement, and the engine consequences are decisions with hardware and privacy weight — a wrong codec pair addresses ICs that are not on the board, and server-side wake word means satellites stream continuously.
  • Two-sided result: the device YAML is written here, the pipeline is configured by the operator in Home Assistant; that handover is a conversation, not a report.
  • Counter-dimension considered: the pin and codec lookup per generation is mechanical (agent bias), but it is inseparable from the "which generation is actually in hand" question the operator answers; skill wins.

When this skill activates

The user wants an ESPHome device to hear and speak — "mach die Box zum Assist-Satelliten", "add wake word to this device", "wire the microphone and speaker".

When NOT to activate

  • what the screen shows during a pipeline run → ha-esphome-display-author
  • a Home-Assistant-driven value or command unrelated to voice → ha-esphome-binding-add
  • a sensor, bus, or component → ha-esphome-config-augment
  • custom sentences, intent_script, or automations reacting to the satellite → ha-automation-solution
  • installing or hosting the speech engines (Wyoming services, Supervisor apps) → the operator's Home Assistant host

Hard rules

  1. Read both grounding specs first, plus the device file and its packages. Never generate pins, codecs, or component keys from memory.
  2. Determine the board generation before writing anything, and record it in the config. The backlight ⇄ LRCLK swap between generations produces a device that boots and logs normally while showing nothing or staying silent.
  3. Bind the codec pair the board actually carries. An es7210 / es8311 pair on a board fitted with es7243e / es8156 addresses ICs that do not exist there. Declare the converters as external, and keep the deliberate 16 kHz capture / 48 kHz playback asymmetry.
  4. State bits_per_sample: 16bit explicitly on the microphone rather than relying on the 32-bit platform default — a silent mismatch produces noise, not an error — and set adc_type: external.
  5. Expose the power amplifier as a GPIO switch with restore_mode: RESTORE_DEFAULT_ON. With it disabled the pipeline runs and logs normally while the speaker stays silent.
  6. voice_assistant: binds a microphone and a response path. The schema enforces neither — every key is optional — so a device that binds nothing validates cleanly and does nothing. This is a portfolio rule the skill applies.
  7. Prefer on-device wake word (micro_wake_word: with the pipeline started from on_wake_word_detected), and where the placement is offered at runtime, switch between micro_wake_word.start and voice_assistant.start_continuous rather than deciding it at compile time.
  8. A discoverable mute is mandatory. A voice device without one is a privacy defect, not a missing convenience; wire it to microphone.mute / microphone.unmute and reflect the muted state.
  9. Handle the disconnected cases explicitly — dedicated no-Wi-Fi and no-Home-Assistant states, wake-word processing stopped when the API client disconnects — and keep the ap: fallback plus captive_portal: recovery path intact.
  10. Never duplicate the pipeline's own text-to-speech with a manual tts.speak for the same response; that produces doubled or overlapping audio.
  11. Tune gain once in the chain. Either the audio ADC's mic_gain or the pipeline's auto_gain / volume_multiplier — not both, and record which was chosen and why.
  12. Report the Home-Assistant-side steps rather than pretending they are done: one pipeline per language with an explicit per-satellite assignment, the engine choice against documented host capacity (a speech-to-text engine that does not support naming a timer strips that feature), the assist_satellite entity binding with any deprecated voice binary sensors migrated, minimal entity exposure as a security boundary, and the debugging order — sentence parser, then pipeline debug, then time-boxed debug recording that is deleted afterwards.
  13. One device per run. No deploy. The run ends at the edited file, the Home-Assistant checklist, and the validation report.

Read the full file on GitHub · 105 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 105 lines · 220 tokens per session scan A a822a1304e8b

Subscribe to this mod's changes

ha-esphome-voice-satellite-add is a skill published in the GitHub repository nolte/claude-home-assistant (1 stars, last pushed 1mo ago), licensed MIT. It adds 220 tokens to every session and 2,333 once invoked, about $0.0009 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

esphome

Use when flashing or automating ESP32/ESP8266 firmware with ESPHome 2026.10 — YAML configuration with esphome/esp32/api/ota/wifi blocks, esphome run/compile/logs/upload CLI, OTA updates, native API encryption, substitutions and packages; also for 'Component not found', OTA upload failures, boot loops after flashing…

znlgis/opengis-skills · 94 tokens

technical-troubleshooting

Provide setup, troubleshooting, and maintenance guidance. Use when the user reports a device that won't power on, connectivity issues, setup questions, overheating, or maintenance concerns.

strands-agents/samples · 38 tokens

aurora

Aurora Smart Home orchestrator — routing layer for all smart home skills. Use this skill when the user asks ANY smart home question and you need to decide which skill to invoke, or when a task spans multiple skills (e.g., "build a sensor that shows on a dashboard and triggers automations"). Invoke aurora FIRST before…

tonylofgren/aurora-smart-home · 133 tokens

ESPHome

ESPHome device configuration, firmware, and IoT product development. Covers ESP32, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-P4, ESP8266, RP2040, RP2350, nRF52, LibreTiny, Shelly, Sonoff, Tuya, BLE proxy, Matter firmware, Thread, Zigbee, GPIO, sensor YAML, LVGL displays, LED strips, voice assistant hardware…

tonylofgren/aurora-smart-home · 192 tokens

HA Integration Dev

Home Assistant custom integration development in Python. Covers customcomponents, DataUpdateCoordinator, configflow, OAuth2, conversation agent, HACS publishing, device registry, entity platforms, services, repair issues, diagnostics, Bluetooth integrations, and multi-coordinator patterns.

tonylofgren/aurora-smart-home · 55 tokens

Node-RED

Node-RED visual automation flows for Home Assistant. Covers visual automation, flow JSON, trigger-state, api-call-service, function nodes, context storage, timer patterns, error handling, and node-red-contrib-home-assistant-websocket nodes. Use when user mentions "Node-RED", "flow", "visual automation", or…

tonylofgren/aurora-smart-home · 76 tokens