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-bluetooth-augmentgit 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-bluetooth-augment)<a href="https://agentmods.dev/skills/nolte/claude-home-assistant/ha-bluetooth-augment"><img src="https://agentmods.dev/badge/skills/nolte/claude-home-assistant/ha-bluetooth-augment/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-bluetooth-augment"><img src="https://agentmods.dev/badge/skills/nolte/claude-home-assistant/ha-bluetooth-augment.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.00204 | $0.02314 |
| Opus 5.5 | $0.00082 | $0.00926 |
| Sonnet 5.5 | $0.00041 | $0.00463 |
| Haiku 4.5 | $0.00020 | $0.00231 |
Grade A, and why
ha-bluetooth-augment 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 — 112 lines — stays where its author put it; the contents beside it link to each section on GitHub.
HA Bluetooth Augment
Spec: spec/claude/ha-bluetooth-augment/en.md (EN canonical) / spec/claude/ha-bluetooth-augment/de.md (DE translation).
Why this is a skill, not an agent
- Human-visible augmentation surface — the user describes how the device advertises and reads back the manifest matcher, the callback registration, the coordinator family, and the conformance report; a skill keeps this on the visible command surface, like the sibling augment skills (
ha-discovery-augment,ha-config-flow-augment,ha-coordinator-add). - Mid-flow interactivity — the passive-vs-connectable decision, the coordinator-family choice, and the network-discovery redirect are per-run dialogues the user approves before generation.
- Bounded, inline generation — the manifest matcher plus the callback registration and the coordinator wiring fit inline; no isolated agent context is needed.
- Counter-dimension considered: the draft→validate loop could be an agent, but the connectable decision and the trade-off advice belong in the user's working context; skill wins.
When this skill activates
Use this skill to add Bluetooth support — central BLE discovery plus advertisement-driven data fetching — to an existing integration, typically for a device that delivers its data over BLE advertisements (the passive default) or needs an occasional active connection.
When NOT to activate
- DHCP/SSDP/USB/HomeKit/Zeroconf network or bus discovery →
ha-discovery-augment/ha/discovery-mechanisms - the config-flow Bluetooth discovery step / generic config-flow auth steps →
ha-config-flow-augment/ha/config-flow-patterns - the generic polling-based
DataUpdateCoordinatorfor REST/cloud APIs →ha/coordinator-patterns - greenfield integration scaffolding →
ha-integration-scaffold - deploying/importing into a running HA instance → out of scope
Hard rules
- Read
spec/ha/bluetooth/en.mdfirst. Do not generate HA internals from memory. - Right mechanism, with delimitation. DHCP/SSDP/USB/HomeKit/Zeroconf →
ha-discovery-augment; the full config-flow discovery step →ha-config-flow-augment. Redirect rather than augmenting the wrong one. - Manifest matcher + dependency. The
bluetoothkey is a list of matcher dicts from the documented fields (service_uuid,local_name,manufacturer_id,service_data_uuid,connectable); addbluetooth_adapterstodependencieswhen the integration uses an adapter. - Passive is the default. Operate
connectable=Falsewhenever the device delivers data through advertisements only — that opts in to non-connectable controllers. Useconnectable=True(the field default) only where an outgoing connection is actually needed; set the flag per device for mixed devices. - Advertisement callbacks. Subscribe via
bluetooth.async_register_callback(hass, callback, matcher, mode)with aBluetoothCallbackMatcherand an explicitbluetooth.BluetoothScanningMode(ACTIVE/PASSIVE). The callback is@callback, synchronous, signature(service_info: BluetoothServiceInfoBleak, change: BluetoothChange) -> None. Bind the returned cancel callback viaentry.async_on_unload(...). - Lookups, never an own scanner. Get a
BLEDeviceviabluetooth.async_ble_device_from_address(hass, address, connectable)and handle theNonecase (no adapter in range); read latest info viabluetooth.async_last_service_info; checkbluetooth.async_scanner_count(hass, connectable=True)at setup when connecting. Never instantiate an ownBleakScanner. - Right coordinator family.
PassiveBluetoothProcessorCoordinatorfor sensors/binary sensors/events from advertisements;ActiveBluetoothProcessorCoordinatoron connection need; the DataUpdate variants for non-sensor entities; the genericDataUpdateCoordinatoronly on pure connection communication with no advertisements. Processor coordinators formatPassiveBluetoothDataUpdate(indexed byPassiveBluetoothEntityKey) and bindcoordinator.async_start()toentry.async_on_unload(...)only afterasync_forward_entry_setups. Active variants checkCoreState.runningand a reachable connectableBLEDeviceinneeds_poll_method. - Connection handling. For active connections use
bluetooth.async_get_scanner(hass), a freshBleakClientper connection, a timeout ≥ 10 s, andbleak-retry-connector; never hold a permanent connection when the data is in advertisements. - Name per
spec/ha/naming-conventions/en.mdand verify HA internals against the official docs (seespec/ha/upstream-docs-verification/en.md).
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 · 112 lines · 204 tokens per session scan A 668a88bffece
ha-bluetooth-augment is a skill published in the GitHub repository nolte/claude-home-assistant (1 stars, last pushed 1mo ago), licensed MIT. It adds 204 tokens to every session and 2,314 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
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.
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.
agent-embedded-developer
Specialist subagent: Embedded systems, firmware, RTOS, microcontrollers (STM32, ESP32, Arduino), IoT, and bare-metal C/C++ specialist. Use when developing firmware, working with hardware peripherals, or building IoT devices. Trigger phrases: embedded, firmware, RTOS, microcontroller, Arduino, ESP32, STM32, IoT…
c-bluetooth
Manage Bluetooth devices on macOS using the blucli (blu) CLI. List paired and available devices, connect to headphones/speakers/keyboards, and disconnect devices by name or MAC address.
actual-setup
Set up Actual Computer (actual.inc) inference in Hermes.
shiplog
Recap of everything shipped since the last run - cross-repo PRs, security fixes, star deltas, and X traction, synthesized into a digest article and a ready-to-post shiplog in your voice.