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 larsboes/Axon --skill ha-dashgengit clone --depth 1 https://github.com/larsboes/AxonWrote 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/larsboes/axon/ha-dashgen)<a href="https://agentmods.dev/skills/larsboes/axon/ha-dashgen"><img src="https://agentmods.dev/badge/skills/larsboes/axon/ha-dashgen/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/larsboes/axon/ha-dashgen"><img src="https://agentmods.dev/badge/skills/larsboes/axon/ha-dashgen.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.00125 | $0.00955 |
| Opus 5 | $0.00063 | $0.00477 |
| Sonnet 5 | $0.00025 | $0.00191 |
| Haiku 4.5 | $0.00013 | $0.00096 |
Grade A, and why
ha-dashgen 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 8d 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 — 65 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ha-dashgen
Dashboards as code. A TypeScript model of the house goes in, three deployed dashboards come
out, and check refuses to let a dashboard reference an entity that does not exist or quietly
lose a control the previous one had.
Commands
scripts/ha-dashgen build # model -> JSON in <overlay>/config/home-assistant/dashboards/
scripts/ha-dashgen check # build + validate against the LIVE instance (exit 1 on a problem)
scripts/ha-dashgen ensure # create any dashboard that does not exist yet
scripts/ha-dashgen deploy # build, back up each dashboard, then push
Needs AXON_HOME_ROOT (or AXON_OVERLAY_ROOT) and, for anything touching the instance, an
unlocked BW_SESSION — it shells out to ha-cli and ha-dashboard, which own the credentials.
What check actually checks
- Every entity reference exists on the running instance, including IDs inside Jinja.
- No control appears on two peer views. The
startview is exempt: it is a shortcut surface, so a favourite tile pointing at a light that also lives in Räume is intended. - Nothing was silently dropped. It diffs against
dashboards/baseline-<date>/and fails on any entity the old dashboard had that the new one lacks, unlessmodel.tslists it indeliberatelyDroppedwith a reason. A stale entry — declared dropped but back on a view — also fails.
Run check before deploy. deploy always backs up to dashboards/pre-deploy/ first;
lovelace/config/save overwrites in one shot with no undo.
Gotchas
Each of these was found the expensive way against HA 2026.6.3 with a probe dashboard, and the first four blank the entire view, not just the offending card, with nothing in the browser console:
condition: templatein aconditionalcard renders "Konfigurationsfehler".- A template in section
visibilityhides the section even when it is{{ 1 == 1 }}. Put the logic in abinary_sensorand usecondition: state, which works. custom:mushroom-template-card: a staticsecondaryrenders, a templated one comes out empty, and inside aconditionalthe card takes the view with it.mushroom-chips-cardis fine. Prefer a nativetilewhose entity is a klartext sensor.- A
weatherentity as a view badge, and abinary_sensorbadge. View-level badges are not used at all for this reason; heading badges are fine. picture-glancewithcamera_imageandpicture-entityon a camera both render nothing here, atcamera_viewliveorauto. Cameras are plain tiles that open the live stream on tap.column_spangreater than the view'smax_columnscollapses the grid to a blank page.- A dashboard
url_pathmust contain a hyphen. HA rejectszuhause, acceptsmein-zuhause. notify:platforms are not reloadable. A new notify group needs a full restart, notautomation.reload.
What ships with it
4 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.
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.
- 8d ago First seen · 65 lines · 125 tokens per session scan A 5f49ff5e3d42
ha-dashgen is a skill published in the GitHub repository larsboes/Axon (1 stars, last pushed today), licensed MIT. It adds 125 tokens to every session and 955 once invoked, about $0.0006 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
usecase-smart-home-brain
Coordinate smart-home actions across existing integrations with clear dry-run and safety confirmation.
ryu-local-model
Search, download, and serve a local GGUF model on a Ryu node via Core's models and engines REST surface. Covers catalog search and device-fit, installing a specific quantization, activating a model, and listing engines (the engine is derived from the model format). Use when a user wants to get a local model running on…
beryl-it-tech
🛠️ Device, system, and network diagnosis.
it-work-reviewer
🔍 Evidence audit for device repair claims.
gx3-existing-project-audit
Analyze an existing Mitsubishi GX Works3 .gx3 project with gx3-cli when the user asks what a ladder does, why a device turns on, or whether a project has risks.
eight-sleep
Unofficial Eight Sleep pod data for AI agents. Writes stay fail-closed. Prefer MCP tools if connected; otherwise the package CLI. Use when the user wants Eight Sleep data or actions through an agent.