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 tonylofgren/aurora-smart-home --skill ha-integration-devgit clone --depth 1 https://github.com/tonylofgren/aurora-smart-homeWrote 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/tonylofgren/aurora-smart-home/ha-integration-dev)<a href="https://agentmods.dev/skills/tonylofgren/aurora-smart-home/ha-integration-dev"><img src="https://agentmods.dev/badge/skills/tonylofgren/aurora-smart-home/ha-integration-dev/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/tonylofgren/aurora-smart-home/ha-integration-dev"><img src="https://agentmods.dev/badge/skills/tonylofgren/aurora-smart-home/ha-integration-dev.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00055 | $0.04328 |
| Opus 5 | $0.00028 | $0.02164 |
| Sonnet 5 | $0.00011 | $0.00866 |
| Haiku 4.5 | $0.00006 | $0.00433 |
Grade A, and why
HA Integration Dev 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 9d 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 — 495 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Home Assistant Integration Development
Reference skill for developing Home Assistant custom integrations in Python.
Overview
Core principle: Home Assistant integrations run in the same Python process as Core with full filesystem access. Security, proper async patterns, and correct timestamp handling are non-negotiable.
Context: This skill requires understanding the integration type (polling vs push, cloud vs local) before generating code. The DataUpdateCoordinator pattern is mandatory for most integrations.
The Iron Law
TIMESTAMPS: dt_util.now() / dt_util.utcnow() - NEVER datetime.now()
ATTRIBUTES: JSON-SERIALIZABLE ONLY - NO DATACLASSES, NO DATETIME OBJECTS
ASYNC: aiohttp FOR HTTP - NEVER requests
STORAGE: entry.runtime_data - NEVER hass.data[DOMAIN]
The first three rules cause 90% of integration bugs. The fourth rule (runtime_data) is the modern pattern since HA 2024.4 - it provides type safety and cleaner lifecycle management.
The Process
User request
│
▼
Clarify: API type, auth, entities
│
▼
Ask: HACS preparation?
│
▼
Select template
│
▼
Read relevant references
│
▼
Generate integration code
│
▼
Run pre-completion checklist
│
├──if HACS=yes──▶ Generate HACS files ──▶ Deliver integration
│
└──if HACS=no───▶ Deliver integration
Common Pitfalls
Watch out for these Iron Law violations:
| Thought | Reality |
|---|---|
| "datetime.now() is fine" | WRONG. Use dt_util.now() for timezone-aware timestamps |
| "I'll store the dataclass in attributes" | WRONG. Convert to dict or extract primitive fields |
| "requests is simpler" | WRONG. Use aiohttp or async_get_clientsession |
| "I'll add unique_id later" | NO. Entities without unique_id can't be customized |
| "This API doesn't need rate limiting" | WRONG. Always implement backoff |
| "I'll skip the coordinator for simplicity" | NO. Coordinator centralizes error handling |
| "Logging the API key helps debugging" | NEVER log credentials |
| "I'll use hass.data[DOMAIN] for storage" | OUTDATED. Use entry.runtime_data (typed, HA 2024.4+) |
| "EntityDescription doesn't need frozen" | REQUIRED since HA 2025.1. Use frozen=True, kw_only=True |
| "Coordinator doesn't need config_entry" | REQUIRED. Pass config_entry=entry (deadline HA 2025.11) |
| "service: in YAML examples" | RENAMED. HA calls these "actions" since 2024.8 |
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- assets/templates/media-player-integration/__init__.py 1.1 KB runs code
- assets/templates/media-player-integration/config_flow.py 2.1 KB runs code
- assets/templates/media-player-integration/const.py 256 B runs code
- assets/templates/media-player-integration/coordinator.py 2.1 KB runs code
- assets/templates/media-player-integration/manifest.json 305 B
- assets/templates/media-player-integration/media_player.py 6.4 KB runs code
- assets/templates/media-player-integration/README.md 4.9 KB
- assets/templates/media-player-integration/strings.json 539 B
- assets/templates/webhook-integration/__init__.py 2.6 KB runs code
- assets/templates/webhook-integration/binary_sensor.py 3.4 KB runs code
- assets/templates/webhook-integration/config_flow.py 1.5 KB runs code
- assets/templates/webhook-integration/const.py 303 B runs code
- assets/templates/webhook-integration/manifest.json 330 B
- assets/templates/webhook-integration/README.md 1.3 KB
- assets/templates/webhook-integration/sensor.py 2.8 KB runs code
- assets/templates/webhook-integration/strings.json 627 B
- CHEATSHEET.md 11 KB
- INSTALLATION.md 3.8 KB
- PROMPT-IDEAS.md 11 KB
- README.md 3.2 KB
- references/advanced-patterns.md 16 KB
- references/api-integration.md 25 KB
- references/architecture.md 20 KB
- references/config-flow.md 31 KB
- references/conversation-agent.md 18 KB
- references/coordinator.md 16 KB
- references/debugging.md 9.3 KB
- references/device-registry.md 14 KB
- references/diagnostics.md 15 KB
- references/entities.md 34 KB
- references/entity-description.md 18 KB
- references/examples.md 19 KB
- references/multi-coordinator.md 18 KB
- references/publishing.md 8.9 KB
- references/repair-issues.md 11 KB
- references/security.md 26 KB
- references/services-events.md 20 KB
- references/subentries.md 12 KB
- references/testing.md 16 KB
- templates/basic-integration/__init__.py 968 B runs code
- templates/basic-integration/config_flow.py 1.3 KB runs code
- templates/basic-integration/const.py 95 B runs code
- templates/basic-integration/manifest.json 252 B
- templates/basic-integration/README.md 2.1 KB
- templates/basic-integration/sensor.py 904 B runs code
- templates/basic-integration/strings.json 529 B
- templates/bluetooth-integration/__init__.py 2.0 KB runs code
- templates/bluetooth-integration/config_flow.py 5.9 KB runs code
- templates/bluetooth-integration/const.py 696 B runs code
- templates/bluetooth-integration/coordinator.py 6.1 KB runs code
- templates/bluetooth-integration/manifest.json 429 B
- templates/bluetooth-integration/README.md 2.8 KB
- templates/bluetooth-integration/sensor.py 4.5 KB runs code
- templates/bluetooth-integration/strings.json 1012 B
- templates/conversation-agent/__init__.py 1.7 KB runs code
- templates/conversation-agent/config_flow.py 7.7 KB runs code
- templates/conversation-agent/const.py 1.0 KB runs code
- templates/conversation-agent/conversation_agent.py 12 KB runs code
- templates/conversation-agent/conversation.py 1.8 KB runs code
- templates/conversation-agent/manifest.json 383 B
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.
- 9d ago First seen · 495 lines · 55 tokens per session scan A 2c1ccc0e32fa
HA Integration Dev is a skill published in the GitHub repository tonylofgren/aurora-smart-home (104 stars, last pushed 4d ago), licensed MIT. It adds 55 tokens to every session and 4,328 once invoked, about $0.0003 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-30.
Other skills, from other repositories
cardputer-buddy
Iterate on the Cardputer-Adv MicroPython app bundle (Claude Buddy, Snake, Hello) after the device is already provisioned via m5-onboard. Use when the user wants to add a new app, push a single changed .py without re-flashing, watch device serial logs, or run a one-shot REPL command. Trigger on "add an app", "push to…
bat-story-eval
Compare MCP tool behavior between target and baseline versions using pre-built and custom stories with diff-based triage.
contrib-pr-review
Review a contribution PR for safety, quality, and readiness. Checks for security concerns, test coverage, size appropriateness, and intent alignment. Use when reviewing external contributions.
bat-adhoc
Run bot acceptance tests to validate MCP tools work correctly from a real AI agent's perspective. Use when testing PRs, detecting regressions, or verifying tool changes end-to-end with Claude/Gemini CLIs.
contributors-update
Find merged PR authors missing from README and update the contributors list after approval.
issue-to-pr-resolver
Implement a GitHub issue end-to-end — create a worktree branch, implement the feature with tests, create a draft PR, then iteratively resolve all CI failures and review comments until the PR is clean. Use when you need to fully implement a GitHub issue from start to merge-ready. Triggers on "implement issue", "resolve…