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.
npx skills add nolte/claude-home-assistant --skill ha-esphome-voice-satellite-addgit clone --depth 1 https://github.com/nolte/claude-home-assistantWrote 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.
[](https://agentmods.dev/skills/nolte/claude-home-assistant/ha-esphome-voice-satellite-add)<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.
<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>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.
| Model | Per session | Once 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 |
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.
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
- Read both grounding specs first, plus the device file and its packages. Never generate pins, codecs, or component keys from memory.
- 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.
- Bind the codec pair the board actually carries. An
es7210/es8311pair on a board fitted withes7243e/es8156addresses ICs that do not exist there. Declare the converters as external, and keep the deliberate 16 kHz capture / 48 kHz playback asymmetry. - State
bits_per_sample: 16bitexplicitly on the microphone rather than relying on the 32-bit platform default — a silent mismatch produces noise, not an error — and setadc_type: external. - 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. 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.- Prefer on-device wake word (
micro_wake_word:with the pipeline started fromon_wake_word_detected), and where the placement is offered at runtime, switch betweenmicro_wake_word.startandvoice_assistant.start_continuousrather than deciding it at compile time. - A discoverable mute is mandatory. A voice device without one is a privacy defect, not a missing convenience; wire it to
microphone.mute/microphone.unmuteand reflect the muted state. - 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 pluscaptive_portal:recovery path intact. - Never duplicate the pipeline's own text-to-speech with a manual
tts.speakfor the same response; that produces doubled or overlapping audio. - Tune gain once in the chain. Either the audio ADC's
mic_gainor the pipeline'sauto_gain/volume_multiplier— not both, and record which was chosen and why. - 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_satelliteentity 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. - One device per run. No deploy. The run ends at the edited file, the Home-Assistant checklist, and the validation report.
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.
- 12d ago First seen · 105 lines · 220 tokens per session scan A a822a1304e8b
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.
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.
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).
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.
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.
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.
stride-analysis-patterns
Apply STRIDE methodology to systematically identify threats. Use when analyzing system security, conducting threat modeling sessions, or creating security documentation.