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 — 45 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 45 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 $0.00110 $0.01167
Sonnet 5 $0.00044 $0.00467
Haiku 4.5 $0.00022 $0.00233

Measured 12d ago against content hash a822a1304e8b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, 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 12d 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. 12d 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.0011 per session on Opus 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

embedded-iot

Embedded systems firmware, microcontrollers (ESP32, STM32, Arduino, Raspberry Pi), RTOS (FreeRTOS, Zephyr), IoT protocols (MQTT, CoAP, BLE), bare-metal C/C++, and hardware peripheral interfaces (I2C, SPI, UART, GPIO). Use when developing firmware, working with microcontrollers, or building IoT devices.

travisjneuman/.claude · 80 tokens

amazon-alexa

Integracao completa com Amazon Alexa para criar skills de voz inteligentes, transformar Alexa em assistente com Claude como cerebro (projeto Auri) e integrar com AWS ecosystem (Lambda, DynamoDB, Polly, Transcribe, Lex, Smart Home).

pinkpixel-dev/skills-collection-1 · 53 tokens

spark-environment-setup

Set up a working ML training/inference environment on NVIDIA DGX Spark (GB10, aarch64, CUDA 13). Use when installing PyTorch/Unsloth/TRL/vLLM on DGX Spark, hitting libcudart or wheel-ABI errors on aarch64, or choosing between NGC containers and bare pip installs.

wshobson/agents · 76 tokens

spark-training-gotchas

Preflight and diagnose the ten known failure modes for ML training on NVIDIA DGX Spark. Use when a training run on DGX Spark fails to start, OOMs below the 128GB limit, slows down mid-run, or before any multi-hour training job on GB10.

wshobson/agents · 63 tokens

security-compliance

Guides security professionals in implementing defense-in-depth security architectures, achieving compliance with industry frameworks (SOC2, ISO27001, GDPR, HIPAA), conducting threat modeling and risk assessments, managing security operations and incident response, and embedding security throughout the SDLC.

sangrokjung/claude-forge · 56 tokens

stride-analysis-patterns

Apply STRIDE methodology to systematically identify threats. Use when analyzing system security, conducting threat modeling sessions, or creating security documentation.

sangrokjung/claude-forge · 30 tokens