{"id":49845374,"url":"https://github.com/tonylofgren/aurora-smart-home","last_synced_at":"2026-06-13T09:00:33.314Z","repository":{"id":331031270,"uuid":"1124950784","full_name":"tonylofgren/aurora-smart-home","owner":"tonylofgren","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-12T21:30:38.000Z","size":8189,"stargazers_count":86,"open_issues_count":1,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-06-12T22:23:15.900Z","etag":null,"topics":["claude-code","claude-skill","esphome","hacs","home-assistant","home-automation","iot","node-red","smart-home"],"latest_commit_sha":null,"homepage":"https://instagram.com/roligaprojekt","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonylofgren.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-29T22:44:41.000Z","updated_at":"2026-06-12T21:30:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"4a004104-6c6e-4e54-adaa-256a9ae11dd9","html_url":"https://github.com/tonylofgren/aurora-smart-home","commit_stats":null,"previous_names":["tonylofgren/supercharge-smart-home-claude-skills"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/tonylofgren/aurora-smart-home","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonylofgren%2Faurora-smart-home","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonylofgren%2Faurora-smart-home/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonylofgren%2Faurora-smart-home/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonylofgren%2Faurora-smart-home/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonylofgren","download_url":"https://codeload.github.com/tonylofgren/aurora-smart-home/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonylofgren%2Faurora-smart-home/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34278153,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-skill","esphome","hacs","home-assistant","home-automation","iot","node-red","smart-home"],"created_at":"2026-05-14T10:02:34.300Z","updated_at":"2026-06-13T09:00:33.306Z","avatar_url":"https://github.com/tonylofgren.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/banner.jpg\" alt=\"Aurora Smart Home - Claude Skills\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n# Aurora Smart Home\n\nA Claude Code plugin for building smart home projects with verified reference data.\nAurora routes your request to a specialist, validates every pin, entity, and address\nagainst schema-checked profiles, and refuses to ship code that does not pass.\n\n[![Claude Code](https://img.shields.io/badge/Claude_Code-Skills-7c3aed.svg)](https://docs.anthropic.com/en/docs/claude-code)\n[![Home Assistant](https://img.shields.io/badge/Home_Assistant-2024.x--2026.x-41BDF5.svg)](https://www.home-assistant.io/)\n[![ESPHome](https://img.shields.io/badge/ESPHome-2026.5.0-000000.svg)](https://esphome.io/)\n[![Version](https://img.shields.io/badge/Version-v1.13.0-success.svg)](CHANGELOG.md)\n[![Validated](https://img.shields.io/badge/Validated-against_datasheets-success.svg)](aurora/references/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Support Nabu Casa](https://img.shields.io/badge/Support_HA-Nabu_Casa-3b8cd3.svg)](https://www.nabucasa.com)\n\n---\n\n\u003e ⚠️ **Use at your own risk.** Aurora generates code and recommendations for\n\u003e educational purposes. Smart home projects involve mains electricity, batteries,\n\u003e and devices that control locks, water, heating, and gas. AI-generated configs\n\u003e can be plausible but wrong. The maintainers, contributors, and Anthropic accept\n\u003e no liability for property damage, personal injury, data loss, or any other harm.\n\u003e See [DISCLAIMER.md](DISCLAIMER.md) for full terms.\n\n---\n\n## What's new: stronger delivery and protocol checks (v1.13.0, June 2026)\n\nThree additive upgrades that make Aurora's output more trustworthy.\n\n- **Conformance levels in the delivery check:** `check-delivery.py` now reports whether a project reaches minimal, standard, or strict, and you can gate at the level you want. The language check is now definitive (every doc in a project must share one language) instead of a heuristic, and there is a drop-in CI workflow template so you can gate your own project repos.\n- **A worked DEEP-mode demo:** a complete CO2 project shows three specialists (firmware, automation, dashboard) building through one shared snapshot, with a replay test that proves the hand-off protocol end to end.\n- **An eval regression gate:** the routing and delivery eval scores are pinned to a golden baseline, so a future change cannot quietly weaken how Aurora routes requests or what it delivers.\n\n## What's new: recipe library (v1.12.0, June 2026)\n\nAurora can now start you from a curated recipe instead of a blank page.\n\n- **12 ready-made starting points:** CO2 monitor, motion light, weather station, fridge/freezer monitor, room presence, home/away routine, energy dashboard, notification hub, vacation mode, greenhouse, smart thermostat, and a button scene controller.\n- **Describe a goal, get suggestions:** say something broad like \"I want to do something about air quality\" and Aurora offers the closest recipes, always with \"start from scratch\" as an option.\n- **Pick one and Aurora builds it:** the full project folder is generated from the recipe (hardware with verified part numbers where applicable, automation pattern, and dashboard), then you customise the handful of parameters that matter (thresholds, rooms, schedules).\n- **Across the board:** recipes span sensor builds and pure Home Assistant automations that need no new hardware, and each links the full worked example when one exists.\n\n## What's new: verified part numbers + validated netlists (v1.11.0, June 2026)\n\nThe fab-ready pipeline from v1.10.0 is now complete and verified end to end.\n\n- **Real JLCPCB part numbers:** 9 of 10 sensor profiles carry LCSC numbers verified live against the JLCPCB parts catalog, and a monthly sync keeps their library status current. Hardware projects get orderable BOMs instead of placeholders.\n- **Machine-validated netlists:** every custom-PCB delivery now runs `validate_schematic.py`, which catches shorts (one pin in two nets), undeclared components, duplicate nets, and missing ground before anything reaches a fab. The OpenSCAD enclosure template is render-verified to produce a printable, manifold STL.\n- **Current ESPHome syntax:** all ESPHome examples and references use the actions terminology (`api: actions:`, `homeassistant.action`) that ESPHome adopted in line with Home Assistant. Old configs keep working; new output follows the current docs.\n- **Smarter multi-agent builds:** the debugging, QA, review, and documentation specialists now coordinate through the shared project snapshot, so a debugging pass mid-project sees the real board, pins, and entity IDs instead of guessing from conversation history.\n\n## What's new: fab-ready hardware delivery (v1.10.0, June 2026)\n\nHardware projects can now go from idea to a PCB order without leaving Aurora.\n\n- **Machine-readable manufacturing exports:** custom-PCB and production projects ship `hardware/schematic.json` (a netlist you can tick off while redrawing in KiCad) and `hardware/BOM.csv` in the exact column format JLCPCB assembly expects. Part numbers are never invented; `TBD` marks parts still waiting for sourcing.\n- **Printable enclosures:** a parametric OpenSCAD template generates a two-part box with PCB standoffs, ventilation slots, cable opening, and an optional sensor window, sized from your board dimensions.\n- **Safer and smarter orchestration:** projects involving batteries, mains power, actuators, water, or outdoor mounting now always start with a hazard analysis before any firmware is generated, and requests that span several specialists are routed with clear tiebreaker rules.\n\n## What's new: modern syntax everywhere + 4 new references (v1.9.3, June 2026)\n\nEvery YAML example in the entire plugin now uses current Home Assistant syntax.\n\n- **Modern syntax everywhere:** all references, starter templates, dashboards, and the 27 complete examples now use `triggers:`, `conditions:`, `actions:`, `action:` calls, and `perform-action` dashboard taps. The migration guide documents the 2024.8 and 2024.10 renames with before/after examples, so older configs are easy to bring forward.\n- **Four new reference files:** ESPHome `packages:` for modular fleet configs (20-line device files), reusable Jinja2 macros via `custom_templates/`, HA labels and categories for organizing large installs, and Node-RED Dashboard 2.0 for building web panels.\n- **Deeper troubleshooting:** automation debugging with traces (opening them, common findings, a \"my automation did not run\" flowchart) and git-based Node-RED Projects for versioning flows.\n\n## What's new: HA reference refresh (v1.9.2, May 2026)\n\nThe Home Assistant YAML skill's reference library has been brought up to date against the official HA documentation snapshot from 2026-05-30.\n\n- **Dashboard actions** — the `actions.md` reference now covers all seven Lovelace tap/hold/double-tap action types (`more-info`, `toggle`, `perform-action`, `navigate`, `url`, `assist`, `none`) including confirmation dialogs. Also added: response variables for capturing return data from calendar, weather, and other actions that produce structured output.\n- **Device-specific conditions and triggers** — `conditions.md` gained a Device-Specific Conditions section covering alarm, climate, timer, calendar (`calendar.is_event_active`), and more, plus a selection guide. `triggers-advanced.md` gained a Device Trigger Inventory spanning 18+ device domains and a dedicated Calendar Trigger section.\n- **Modern syntax throughout** — deprecated `service:`, `platform:`, and singular automation keys (`trigger:`, `condition:`, `action:`) replaced with `action:`, `trigger: state`, `triggers:`, `conditions:`, `actions:` across all four core reference files. The skill now also lists all 50 reference files in its Quick Reference table.\n\n## What's new: ESPHome 2026.5.0 (May 2026)\n\nAurora now targets ESPHome 2026.5.0. Twelve user-visible changes landed in this\nrelease at once - some of them (battery life, Bluetooth proxy stability, the\naudio stack) take effect the moment you reflash, no YAML changes required. Others\nunlock things that were not possible before: synchronized whole-house audio from\nESP32s, Zigbee built into core for the C6 and H2, and a `radio_frequency` entity\ntype that finally treats RF transceivers as first-class devices in Home Assistant.\n\n- **Multi-room synchronized audio via the new Sendspin stack.** One device runs\n  the hub, every other device runs a per-room player, and they stay in lock-step\n  on the LAN. The decoder work in this release is tuned so a non-PSRAM ESP32 can\n  actually keep up with 2-channel Opus, which previously required an S3 with\n  PSRAM. Each room has its own `delay_compensation` to align with whatever\n  amp/DAC chain you wire up.\n- **Zigbee on ESP32-H2 and C6, no external component required.** A Xiao C6 or\n  H2 module can now be flashed straight into a battery-powered Zigbee end device\n  or router; both ZHA and zigbee2mqtt pick it up over standard clusters without\n  custom converters. New `on_join` automation trigger and `power_source` field\n  for advertising battery vs mains.\n- **`radio_frequency` is now a first-class HA entity type.** The entity itself\n  has no knowledge of which RF chip is wired underneath, so a CC1101, RFM69,\n  SX127x, or custom external all work through the same YAML triggers. Pair with\n  the new `ir_rf_proxy` platform if you want HA to know your frequency range.\n- **Battery devices noticeably last longer.** The runtime now actually runs\n  components at the cadence you ask for, and the watchdog feeding cost on\n  ESP-IDF has finally been retuned (the original 3 ms throttle was set for a\n  2019 codepath that cost ~100 ns per feed; the IDF port pushed that to 10 µs\n  per feed without anyone noticing). A reference Thread device measured 2.0 mA\n  dropping to 1.1 mA. New `esp32: watchdog_timeout:` knob lets you trade\n  responsiveness for sleep time, 5 to 60 seconds.\n- **Bluetooth proxy reliability fix.** The `status=133` GATT failures that have\n  hit Yale and August lock owners for years are gone. The proxy now holds BT\n  priority during active connections instead of releasing it after the\n  handshake.\n- **ESPHome Device Builder is in public beta.** A separate web dashboard with a\n  visual component editor alongside Monaco YAML, a firmware job queue, labels,\n  areas, device cloning, out-of-sync badges, cross-config YAML search, a YAML\n  diff view, and a Ctrl-K command palette. Available via the \"ESPHome (beta)\"\n  Home Assistant add-on; the classic dashboard is still default.\n- **Native ESP-IDF toolchain alongside PlatformIO.** `esp32: toolchain: esp-idf`\n  switches the build system to `idf.py`. ESP-IDF v6.0.1 readiness work landed in\n  the same release.\n- **40 kB more internal RAM on PSRAM boards** via `esp32_ble: use_psram: true`,\n  which moves the Bluedroid stack into SPIRAM.\n- **SPDIF speaker output** through any GPIO using the new `mode: spdif` setting\n  on `i2s_audio`. Drive an optical TOSLINK module or a 75-ohm coax line directly\n  from the ESP, no external DAC.\n- **ESP32-P4 USB high-speed transfers** via `usb_host: max_packet_size: 512`.\n  Previously P4 USB was stuck on 64-byte full-speed packets.\n- **Locks gained OPENING and OPEN states** for motorized smart locks where HA\n  needs to distinguish \"bolt disengaged\" from \"door is hanging open\". Existing\n  LOCKED/UNLOCKED-only locks are unaffected.\n- **`modbus_server` is its own component now.** If you used `modbus_controller`\n  in server mode, move the keys to a top-level `modbus_server:` block:\n  `server_registers:` becomes `registers:`, `server_courtesy_response:` becomes\n  `courtesy_response:`. Worth about 60% flash savings on the way out.\n\nFull details, breaking changes, and copy-paste recipes: [`esphome/references/release-2026-5.md`](./esphome/references/release-2026-5.md).\n\n---\n\n## What is Aurora\n\nAurora is a community plugin for [Claude Code](https://claude.com/claude-code).\nYou install it once. After that, every smart home request you make (\"build a\ntemperature sensor on ESP32\", \"automate my lights at sunset\", \"publish this\nintegration to HACS\") is handed to a specialist agent that consults\nmachine-readable board and component profiles before generating code.\n\nIf the GPIO you asked for is reserved by USB, Aurora says so. If two I2C sensors\ncollide on address 0x76, Aurora says so. If an automation references an entity\nthe firmware never creates, Aurora says so. The reference data is the source of\ntruth, not the model's training memory.\n\nNo runtime dependencies. The plugin is markdown and JSON. Claude reads it.\nPython and pytest are only used by maintainers to keep the reference data\ncorrect.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow the pieces fit together\u003c/strong\u003e (plugin, command, skill, agent, validator)\u003c/summary\u003e\n\n| Term       | Means                                                                                 |\n|------------|---------------------------------------------------------------------------------------|\n| Plugin     | `aurora@aurora-smart-home`. The single thing you install.                             |\n| Command    | `/aurora:aurora`. Opens the orchestrator. The fastest entry point.                    |\n| Skill      | A topic module (`esphome`, `home-assistant`, etc.) that activates on keywords.        |\n| Agent      | A named specialist (Volt, Sage, Ada, etc.) the orchestrator hands work to.            |\n| Validator  | A reference spec the specialist must run before generating code.                      |\n| Snapshot   | `aurora-project.json`. Shared state when more than one agent is involved in a task.   |\n\n\u003c/details\u003e\n\n\u003e Already comfortable with Claude Code skills? Skip to\n\u003e [How Aurora works](#how-aurora-works),\n\u003e [Validation and safety](#validation-and-safety),\n\u003e or [Included skills](#included-skills).\n\n---\n\n## Quick start\n\nYou need Claude Code installed first. Get it at\n[claude.com/claude-code](https://claude.com/claude-code).\n\nInside Claude Code:\n\n```\n/plugin marketplace add tonylofgren/aurora-smart-home\n/plugin install aurora@aurora-smart-home\n```\n\nRestart Claude Code, then run:\n\n```\n/aurora:aurora\n```\n\nAurora opens, asks what you want to build, and routes the request to the right\nspecialist. That is it.\n\n---\n\n## Try your first prompt\n\nAfter `/aurora:aurora` opens, paste any of these:\n\n| You say                                                | Aurora does                                                                                  |\n|--------------------------------------------------------|----------------------------------------------------------------------------------------------|\n| `I want a temperature sensor with OLED on ESP32`       | Routes to Volt. Picks a board, validates the pins, returns ESPHome YAML and a wiring diagram.|\n| `Lights on at sunset, off at midnight`                 | Routes to Sage. Returns a Home Assistant automation in modern syntax.                        |\n| `Motion lights: sensor on ESP32, automation in HA`     | Plans Volt then Sage. Writes the entity IDs once, both agents use them.                      |\n| `Python integration for the Acme cloud API, HACS ready`| Routes to Ada. Walks you through architecture and config flow.                               |\n| `Review this YAML for me`                              | Volt or Sage reads your config, runs validators, reports findings anchored to line numbers.  |\n\n---\n\n## What Aurora helps you do\n\n- **Generate ESPHome firmware** that compiles, on a board that actually exists,\n  with pins that are not reserved by USB or PSRAM.\n- **Write Home Assistant automations and dashboards** that reference entities\n  the firmware side actually creates.\n- **Build Python custom integrations** that pass HACS validation and do not\n  ship `datetime.now()` inside an async coroutine.\n- **Review configs you already have.** Paste existing YAML and Aurora flags\n  every issue with line-number anchored fixes.\n- **Connect external APIs** (Tibber, SMHI, OpenWeatherMap, Spotify, and others)\n  using verified patterns.\n\n---\n\n## Who this is for\n\nAurora fits three kinds of work:\n\n- **First sensor, first automation, first time touching ESP32.** Aurora\n  picks parts that exist, pins that work, and a board that has not been\n  end-of-lifed. You get one working build and the reasoning behind it.\n  After that, you can do the next one without asking.\n- **Existing install, dozens of automations, allergic to surprises.**\n  Paste your YAML. Aurora checks it against your HA version and every\n  entity in your setup, reports each issue with a line number and a\n  paste-ready fix, and does not rewrite your file.\n- **Building something to ship to other people.** Volt knows the\n  difference between a board that survives a botched OTA and one that\n  needs a recovery jig. Ada knows what HACS reviewers will catch before\n  you submit.\n\n---\n\n## How Aurora works\n\n### Activate Aurora — two ways\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  Inline (one turn):                                         │\n│    /aurora:aurora build a CO2 monitor on ESP32-S3           │\n│                                                             │\n│  Two-step (separate turns):                                 │\n│    1) /aurora:aurora                                        │\n│       → Aurora shows its banner and asks the opening        │\n│         question.                                           │\n│    2) build a CO2 monitor on ESP32-S3                       │\n└─────────────────────────────────────────────────────────────┘\n```\n\nBoth paths end up in the same routing flow. Re-running `/aurora:aurora`\nlater in the same conversation skips the banner and just acknowledges\nthat Aurora is already loaded — no version check, no re-greeting.\n\n### Routing\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  Aurora (orchestrator)                                      │\n│    Parses intent, picks the right specialist(s),            │\n│    recommends a Claude model tier, opens a shared snapshot  │\n│    if more than one specialist is involved.                 │\n└─────────────────────────────────────────────────────────────┘\n                          │\n                          ▼\n┌─────────────────────────────────────────────────────────────┐\n│  Specialist (Volt for firmware in this case)                │\n│    Loads the board profile (aurora/references/boards/).     │\n│    Loads the component profile (aurora/references/          │\n│       components/).                                         │\n│    Calls validators: pin, conflict, i2c-address, voltage,   │\n│       ota-safety, version, entity-id, secrets.              │\n│    If a validator fails, refuses to generate. Shows a fix.  │\n│    If validators pass, returns YAML + wiring + calibration. │\n└─────────────────────────────────────────────────────────────┘\n```\n\nWhen the project spans firmware plus automations plus a dashboard, the agents\nshare a **project snapshot** written to your workspace as `aurora-project.json`.\nSingle-agent (QUICK mode) tasks skip the snapshot so there is no overhead for\nsmall jobs. Multi-agent (DEEP mode) tasks use it like this:\n\n```\nYou: \"Motion sensor on ESP32, automation in HA, with a dashboard tile\"\n\nVolt creates:    binary_sensor.living_room_motion\nSage uses:       binary_sensor.living_room_motion as trigger\nIris places:     binary_sensor.living_room_motion on the room view\n\nIf Sage references an entity Volt did not produce, or if Iris cannot find\nthe entity on the dashboard, Aurora raises a conflict instead of generating\nbroken YAML. Conflicts surface to you, not silently to the next agent.\n```\n\n---\n\n## What gets delivered\n\nAurora does not paste code into chat and call it done. Every project produces a folder on disk with the working files plus a `README.md` you can hand to someone else.\n\n### Hardware projects (Volt)\n\n```\nbedroom-co2/\n├── README.md                ← project manual\n├── bedroom-co2.yaml         ← ESPHome firmware\n└── secrets.yaml.example     ← WiFi + API key template\n```\n\nThe project README carries: what it does, BOM with estimated unit prices and a dated total, wiring with connection table and ASCII diagram, installation steps from flash to verified entities in Home Assistant, calibration procedures for the specific sensors used, troubleshooting for the three most likely failure points, and recovery instructions for when OTA goes wrong.\n\nFor custom PCB or production runs the folder grows with `SCHEMATIC.md`, `PCB-NOTES.md`, and (for production) `MANUFACTURING.md`, `COST-ANALYSIS.md`, `CERTIFICATION.md`, `TEST-JIG.md`. Aurora produces text specifications, not KiCad binaries.\n\n### Software projects (Sage, Ada, River, Iris)\n\nFor automations (Sage), custom integrations (Ada), Node-RED flows (River), and dashboards (Iris), the project folder includes the working YAML / Python / JSON plus a `README.md` with agent-specific installation steps, troubleshooting, and recovery.\n\nCustom integrations (Ada) include the full `custom_components/\u003cid\u003e/` structure with `manifest.json`, `strings.json`, translations, and a HACS-ready repo layout (`hacs.json`, `LICENSE`, `.github/workflows/validate.yaml`) when requested.\n\n### What you do not get\n\nAurora does not produce KiCad files, gerbers, or PNG wiring images. Schematics ship as text with ASCII block diagrams that a human or PCB designer can rebuild in their preferred tool.\n\nThe contract is enforced by Iron Law 8 in Volt's soul and Iron Law 3 in the four software-only specialists. Each agent verifies that every required file exists on disk before declaring delivery complete.\n\n---\n\n## Validation and safety\n\nAurora ships **12 validators** that specialist agents must run before\nreturning code, plus three supporting specs (a shared output format, a\nretroactive review protocol, and a board-selector helper). All files live\nin [`aurora/references/validators/`](./aurora/references/validators/).\n\n**Validators (block code generation on failure):**\n\n| Validator                       | Catches                                                                                              |\n|---------------------------------|------------------------------------------------------------------------------------------------------|\n| `pin-validator`                 | GPIO that does not exist on this board, reserved pins (USB, flash, PSRAM), strapping pins.           |\n| `conflict-validator`            | Two devices on the same GPIO, two pull-up sensors fighting.                                          |\n| `i2c-address-validator`         | BME280 + BMP280 collision at 0x76, reserved address ranges.                                          |\n| `voltage-level-validator`       | 5V sensor on a 3.3V board, missing level shifter, wrong shifter type.                                |\n| `ota-safety-validator`          | YAML that would leave the board unrecoverable (e.g. disabling WiFi on a board without USB recovery). |\n| `version-validator`             | References to features your ESPHome or HA version does not support.                                  |\n| `entity-id-validator`           | Automation that references an entity no integration produces.                                        |\n| `secrets-validator`             | API keys, OAuth tokens, or webhook URLs pasted as literals.                                          |\n| `async-correctness-validator`   | `datetime.now()`, `requests`, `time.sleep` in HA async code.                                         |\n| `llm-config-validator`          | Conversation agent pointed at the wrong provider, prompt template over the token budget.             |\n| `node-red-syntax-validator`     | Legacy node type names that silently fail to deploy on Node-RED 4.x.                                 |\n| `unknown-component-validator`   | A community component Aurora has not seen. Asks for source URL, version, docs. Refuses if you cannot answer. |\n\n**Supporting specs:**\n\n| Spec                            | Role                                                                                                 |\n|---------------------------------|------------------------------------------------------------------------------------------------------|\n| `_tiered-errors`                | Shared output format used by every validator above.                                                  |\n| `retroactive-yaml-review`       | Protocol agents follow when you paste existing YAML and ask for review.                              |\n| `board-selector`                | Helper that picks a board for your project requirements.                                             |\n\nEvery validator emits the same four-tier output:\n\n```\n❌ Problem (short):\nGPIO 19 cannot be used on ESP32-S3 DevKit C-1 while USB CDC is enabled.\n\n📚 Explanation (medium):\nThe ESP32-S3 routes USB D+/D- to GPIO 19/20. With usb_cdc: enabled,\nthese pins are reserved and any assignment to them collides with USB.\n\n🔧 Fix (concrete):\nMove the sensor to GPIO 8 (SDA) and GPIO 9 (SCL), the board's default\nI2C pins.\n\n💡 Deeper (optional):\nYou can set usb_cdc: false to free GPIO 19/20, but you lose USB serial\nconsole (only OTA-over-WiFi remains for log inspection).\n```\n\nWhen this block fires, **the agent stops.** No YAML is written until the\nproblem is resolved or you explicitly tell the agent to override. The fix line\nis concrete enough that you usually paste two lines into your config and rerun.\n\n**When validators pass,** you get a complete result: the YAML, a wiring\ndiagram, the calibration procedure for the sensors involved, and a\ntroubleshooting section. Not half-finished code that compiles but fails to\nboot.\n\n**Safety scope.** Smart home work touches mains electricity, batteries, locks,\nwater, and heating. Aurora validates configuration against verified reference\ndata, but it does not replace your judgement, your electrician, or your fuse\nbox. See [DISCLAIMER.md](DISCLAIMER.md) for the full statement.\n\n---\n\n## Included skills\n\nAurora is one plugin (`aurora@aurora-smart-home`). Inside it sits the\n`/aurora:aurora` orchestrator command plus six topic skills. The orchestrator\nroutes requests across skills and across agents. The topic skills also\nactivate automatically when you mention relevant keywords, so you can skip\nthe orchestrator on quick tasks.\n\n| Skill                  | Activates on                                                  |\n|------------------------|---------------------------------------------------------------|\n| `esphome`              | \"ESPHome\", \"ESP32\", \"ESP8266\", board names                    |\n| `home-assistant`       | \"automation\", \"blueprint\", \"automations.yaml\"                 |\n| `ha-integration-dev`   | \"custom integration\", \"HACS\", \"custom_components\"             |\n| `node-red`             | \"Node-RED\", \"flow\", \"function node\"                           |\n| `api-catalog`          | Specific service names (Tibber, SMHI, OpenAI, etc.)           |\n| `ha-dashboard-design`  | \"dashboard look\", \"card-mod\", \"Lovelace theme\"                |\n\n## Meet the Aurora team\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eShow all 21 agents\u003c/strong\u003e\u003c/summary\u003e\n\nAurora runs like a small smart home agency. 1 orchestrator + 20 named specialists across 7 departments. Each specialist has a defined domain, a soul (`aurora/souls/`), and a voice. Agents are not owned by a single skill, they are routed in by the orchestrator wherever their domain fits.\n\n🏠 **Aurora** | Founder and orchestrator. *\"Your home should work for you, locally, privately, without asking permission.\"*\n\n**Hardware department**\n\n- ⚡ **Volt** | ESP32/ESP8266/Shelly firmware + IR proxy. *\"Board first, then we build.\"*\n- 📡 **Nano** | Matter, Thread, BLE, embedded protocols. *\"Matter over Thread is the right call here. Let me explain why.\"*\n- 🎙️ **Echo** | Voice, audio, wake word, Assist pipeline. *\"Let's make sure your voice pipeline is solid end to end.\"*\n- 🔋 **Watt** | Power budget, battery sizing, solar dimensioning. *\"Before we spec the battery, what is the duty cycle?\"*\n\n**Home Assistant department**\n\n- 🧙 **Sage** | YAML automations, blueprints, scripts, helpers. *\"Automation, blueprint, or script? Each one has a different shape.\"*\n- ❤️ **Ada** | Python custom integrations, coordinators, config flows. *\"This will fail in production. You need `dt_util.now()`.\"*\n- 🤖 **Mira** | LLM, AI, conversation agents. *\"Are we responding to commands, or inferring intent?\"*\n- 🌊 **River** | Node-RED visual automation flows. *\"Map the flow first: trigger, condition, action.\"*\n- 🦄 **Iris** | Dashboard visual design. *\"Imagine walking into the room. What do you want to know at a glance?\"*\n\n**Field intelligence**\n\n- 🏪 **Atlas** | External API patterns, OAuth, community integrations. *\"Someone has already solved this. Let me show you how the community does it.\"*\n\n**Quality desk**\n\n- 🐛 **Glitch** | Cross-skill debugging. *\"Paste the full log. Not the part you think matters, all of it.\"*\n- ✅ **Probe** | QA, testing, validation. *\"Looks right, but let us test the edge cases first.\"*\n- 🏡 **Vera** | WAF + hardware safety review. *\"What happens when the motion sensor misses? Can someone turn the light on manually?\"*\n- 🔬 **Lens** | Code review, security audit. *\"Three things need fixing here. Not suggestions, these will cause incidents.\"*\n- 📖 **Manual** | Installation guides, troubleshooting docs. *\"The firmware is done. Now let us make sure someone else can install it.\"*\n\n**Research library**\n\n- 🔭 **Scout** | Research, investigation. *\"Give me a moment, I have seen this discussed somewhere.\"*\n- 📚 **Lore** | Documentation writing. *\"The setup section assumes the user already has HACS installed.\"*\n\n**Operations**\n\n- 🔧 **Forge** | Deploy, Docker, server, backups. *\"Before we update, do you have a full backup from today?\"*\n- 🌐 **Grid** | Network, UniFi, firewall, VLAN. *\"That device is probably on the wrong VLAN.\"*\n\n**Design studio**\n\n- 🎨 **Canvas** | Graphic design, UI beyond dashboards. *\"The layout works but it has seven things asking for attention at once.\"*\n\n\u003c/details\u003e\n\n---\n\n## Examples\n\nComplete, working projects live in [`examples/`](./examples/):\n\n| Example                                                                | What it builds                                                |\n|------------------------------------------------------------------------|---------------------------------------------------------------|\n| [complete-smart-room](./examples/complete-smart-room/)                 | Full room with sensors, voice control, automations.           |\n| [smart-greenhouse](./examples/smart-greenhouse/)                       | Automated irrigation, climate monitoring, grow lights.        |\n| [smart-garage](./examples/smart-garage/)                               | Garage door control, car detection, safety features.          |\n| [energy-monitor](./examples/energy-monitor/)                           | CT clamp power monitoring, cost tracking, alerts.             |\n\nFor how the skills connect across a multi-step project, see\n[SKILL-INTEGRATION.md](./SKILL-INTEGRATION.md).\n\n---\n\n## Updating\n\nClaude Code does not auto-update plugins by default. Aurora ships new boards,\nsensors, and validators regularly.\n\n```\n# Inside Claude Code (refreshes every installed plugin)\n/reload-plugins\n\n# From your terminal (targets aurora only)\nclaude plugin update aurora@aurora-smart-home\n```\n\nThen restart Claude Code so the new files load.\n\n**Enable auto-update once and forget:**\n\n1. Run `/plugin` to open the plugin manager.\n2. Open the **Marketplaces** tab.\n3. Pick `aurora-smart-home`.\n4. Choose **Enable auto-update**.\n\nNote: the slash command `/plugin update \u003cname\u003e` does not accept arguments.\nUse `/reload-plugins` or the CLI form above.\n\n---\n\n## Troubleshooting\n\n| Symptom                              | First thing to check                                                  |\n|--------------------------------------|-----------------------------------------------------------------------|\n| `/aurora:aurora` not found           | Restart Claude Code after install. Then `/reload-plugins`.            |\n| Validator never fires                | Confirm your request triggers a specialist (say \"ESPHome\", \"automation\"). |\n| Aurora invents a community component | It should not. If it does, that is a bug. Open an issue.              |\n| Plugin feels out of date             | `claude plugin update aurora@aurora-smart-home`, then `/reload-plugins`. |\n\nFull guide: [TROUBLESHOOTING.md](./TROUBLESHOOTING.md).\n\n---\n\n## Changelog\n\nVersion history lives in [CHANGELOG.md](./CHANGELOG.md).\n\n**What's new in v1.9.1:** Path-resolution fix. `/aurora:aurora` no longer reports \"the aurora directory doesn't exist in the project\" when invoked from a working directory that isn't an Aurora-structured repo. The slash command at `commands/aurora.md` now explicitly tells Claude that `aurora/SKILL.md` lives in the plugin install directory, not the user's project. A new Path Conventions section at the top of `aurora/SKILL.md` clarifies the same rule for every reference Aurora makes to its own files. Latent regression since 2026-01-03 when the aurora plugin structure was first introduced; affected 15 releases (v1.0.0 through v1.9.0). If you ever saw such an error and gave up, this is fixed.\n\n**What's new in v1.9.0:** Aurora now targets ESPHome 2026.5.0 with a complete release reference, working examples for every new feature (Sendspin multi-room audio, Zigbee on ESP32-C6/H2, `radio_frequency` entity, BLE coex fix for Yale/August locks, soft-brick OTA recovery), and the first vendored external component (`panasonic_ac` from DomiStyle, MIT-licensed, ships locally so builds work offline). The examples library expanded from 4 to 27 working projects covering battery sensors, leak detection, LED strips, smart plugs, soil moisture, voice assistant, solar inverter monitoring, EV charger control, pool chemistry, smart blinds, fingerprint unlocking, e-paper weather stations, LVGL touchscreen panels, and more. Skill orchestrator polish: cross-skill handoffs table in `home-assistant`, Process flowchart added to `node-red`, reactivation boundary documented.\n\n**What's new in v1.8.1:** Custom PCB builds are now first-class. Tell Volt \"bare chip\", \"custom board\", or \"module\" and it routes to a new Mode C: picks the right Espressif module (ESP32-S3-WROOM-2, C3-MINI-1, or C6-MINI-1 for Thread/Matter), explains what a bare module demands (external LDO, no onboard USB-UART), and always walks you through the prototype-first workflow before you commit to a PCB layout. Board recommendation engine fixed: commercial devices (Shelly, Sonoff) no longer appear as fresh-build suggestions. LilyGO T-Display S3 default I2C pins now warn about the silent UART0 conflict.\n\n**What's new in v1.8.0:** Hardware safety analysis — dangerous projects (battery, mains relay, outdoor, \u003e5V) now trigger Vera's review before Volt starts and produce `hardware/HAZARD-ANALYSIS.md`. PCB files move from `esphome/` to `hardware/`. Four HA integration patterns documented in `aurora/references/ha-integration/`. Self-validating delivery via `aurora/scripts/check-delivery.py` — every specialist must pass the script before declaring done.\n\nThe roadmap lives in [ROADMAP.md](./ROADMAP.md).\n\n---\n\n## Contributing\n\nIssues and pull requests welcome. Start with [CONTRIBUTING.md](./CONTRIBUTING.md)\nfor the contribution workflow. Adding boards or components goes through\n[aurora/references/](./aurora/references/) and must pass the pytest suite\n(`pytest aurora/tests/`).\n\n---\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n\n---\n\n## Credits\n\nAurora's agent personas are inspired by the people building the Open Home.\n\n| Agent              | Inspired by                                                                       |\n|--------------------|-----------------------------------------------------------------------------------|\n| **Aurora**         | Otto Privacyhaus, believes your home should work without asking the cloud.        |\n| **Ada** + **Lens** | Hendrik Nomerge, your PR is not ready, he knows, he will tell you.                |\n| **Atlas**          | Lars Hacsworth, built the store everyone uses to share their builds.              |\n| **Iris** + **Lore**| Penelope Crowwhisperer, tamer of crows, bridge between humans and their homes.    |\n| **Mira**           | François Backlogeau, has opinions about roadmaps, very French ones.               |\n\n---\n\n## Get started in 30 seconds\n\n```\n/plugin marketplace add tonylofgren/aurora-smart-home\n/plugin install aurora@aurora-smart-home\n/aurora:aurora\n```\n\nThen describe what you want to build.\n\n---\n\n**Aurora helps you work with Home Assistant.** Home Assistant's core development is funded by [Nabu Casa](https://www.nabucasa.com). If your home runs on HA, please consider supporting them. Aurora is an independent community project, not affiliated with, endorsed by, or funded by Nabu Casa, the Open Home Foundation, or Anthropic. Agent personas are fictional.\n\n---\n\n## Contact\n\nQuestions, build ideas, or want to share a project? Reach out on Instagram:\n[@roligaprojekt](https://www.instagram.com/roligaprojekt).\n\nBug reports and feature requests: open a\n[GitHub issue](https://github.com/tonylofgren/aurora-smart-home/issues).\n\n---\n\nCreated for use with [Claude Code](https://docs.anthropic.com/en/docs/claude-code) by Anthropic.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonylofgren%2Faurora-smart-home","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonylofgren%2Faurora-smart-home","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonylofgren%2Faurora-smart-home/lists"}