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-binding-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-binding-add)<a href="https://agentmods.dev/skills/nolte/claude-home-assistant/ha-esphome-binding-add"><img src="https://agentmods.dev/badge/skills/nolte/claude-home-assistant/ha-esphome-binding-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-binding-add"><img src="https://agentmods.dev/badge/skills/nolte/claude-home-assistant/ha-esphome-binding-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.00193 | $0.02251 |
| Opus 5.5 | $0.00077 | $0.00900 |
| Sonnet 5.5 | $0.00039 | $0.00450 |
| Haiku 4.5 | $0.00019 | $0.00225 |
Grade A, and why
ha-esphome-binding-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.
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 Binding Add
Spec: spec/claude/ha-esphome-binding-add/en.md (EN canonical) / spec/claude/ha-esphome-binding-add/de.md (DE translation). Grounding spec: spec/ha/esphome-ha-driven-content/en.md; rendering of the resulting values is owned by spec/ha/esp32-s3-box-display/en.md.
Adds exactly one Home-Assistant-driven binding per invocation, and the mechanism choice is the substance of the run — not the YAML that follows from it.
Why this is a skill, not an agent
- Mid-flow approval is the contract (decisive): the mechanism decision (subscription vs. action vs. writable entity vs. return channel) is made with the operator against the spec's rule; picking wrong produces a device that polls what it should have been told, or an automation firing into a device with no receiver — and neither fails loudly.
- Quick, targeted change in the current context: one block in one device file or package, iterated in conversation.
- Counter-dimension considered: the six documentation pages this spans make the schema lookup self-contained (agent bias), but the boot-state and offline-behaviour decisions belong in the operator's context, not in a report; skill wins.
When this skill activates
The user wants Home Assistant to drive what an ESPHome device shows or does — "der ESPHome-Node soll den Strompreis anzeigen", "HA should be able to tell the box to show a message", "the button press should reach Home Assistant".
When NOT to activate
- how the value is drawn (pages, zones, fonts, redraw script) →
ha-esphome-display-author - the voice pipeline and satellite binding →
ha-esphome-voice-satellite-add - a locally measured sensor or a local component →
ha-esphome-config-augment - the automation, script, or template on the Home Assistant side →
ha-automation-solution - MQTT as an alternative transport → out of scope; the grounding spec assumes the native API
Hard rules
- Read
spec/ha/esphome-ha-driven-content/en.mdfirst, then the target device file and its packages. Do not generate a mechanism from memory. - Choose per value, not per device, using the spec's rule: continuously mirrored → subscription; one-shot instruction with arguments → callable action; person-set → writable entity; Home Assistant must learn something → return channel. State the choice and its reason in the report.
- Never emulate one mechanism with another. A periodically called action is not a subscription, and a rapidly changing subscribed value is not an action — both work briefly and fail under load or disconnection.
- Verify every key against the official ESPHome docs per
spec/ha/upstream-docs-verification— this axis spans at least six component pages (api,sensor/homeassistant,text_sensor/homeassistant,time/homeassistant,text/template, and the display components). - Subscriptions are push-based and
internal: trueby default on every import platform. Setinternalexplicitly for readability, give every subscribed value anid:, and useattribute:only on the read-only import platforms —numberandswitchhave no such key. - Actions carry typed
variables:and validate them, answering a bad call throughapi.respondwithsuccess: false. Name the Home-Assistant-side identifier asesphome.{node_name}_{action_name}in the report, and state that a device rename breaks every automation calling it. - A writable
text: {platform: template}respects its documented exclusions:optimistic,initial_value, andrestore_valueeach cannot be used withlambda. Do not carry these rules over to an unread template platform. - A device calling Home Assistant actions needs the integration's explicit opt-in. Name it as a trust decision the operator has to make, never as a formality.
- Define the two edge states, always. What the device shows or does before the first value has ever arrived, and what it does when the API connection drops (
on_client_connected/on_client_disconnected) — including the consequence ofapi.reboot_timeout(default 15 minutes). - Route anything visible through the single redraw entry point of the display spec; an
on_valuethat draws directly is a finding, not a shortcut. - One binding per run, one device file per run. No deploy; the run ends at the edited file plus 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.
- 1mo ago First seen · 105 lines · 193 tokens per session scan A 2a4ef5c29a1d
ha-esphome-binding-add is a skill published in the GitHub repository nolte/claude-home-assistant (1 stars, last pushed 1mo ago), licensed MIT. It adds 193 tokens to every session and 2,251 once invoked, about $0.0008 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.
Other skills, from other repositories
API Catalog
Reference guide for connecting popular APIs to Home Assistant via Node-RED, YAML, or custom integrations. Covers authentication, endpoints, and complete working examples for: energy APIs (Tibber, Nordpool), weather (SMHI, OpenWeatherMap, yr.no), transport (SL, Trafikverket, Resrobot), smart home clouds (Shelly, Tuya…
inference-serving-sglang
Fast structured generation and serving for LLMs with RadixAttention prefix caching. Use for JSON/regex outputs, constrained decoding, agentic workflows with tool calls, or when you need 5× faster inference than vLLM with prefix sharing. Powers 300,000+ GPUs at xAI, AMD, NVIDIA, and LinkedIn.
enterprise-integration-testing
Use when testing enterprise integrations across SAP, middleware, WMS, or backend systems, validating E2E enterprise flows, testing SAP-specific patterns (RFC, BAPI, IDoc, OData, Fiori), or enforcing cross-system quality gates.
api-testing-patterns
Comprehensive API testing patterns including contract testing, REST/GraphQL testing, and integration testing. Use when testing APIs or designing API test strategies.
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.
mqtt-development
Best practices and guidelines for MQTT messaging in IoT and real-time communication systems.