{"id":"2bb34915-b5a4-448b-96c1-ac2a951b9230","shortId":"3rJ2gv","kind":"skill","title":"hass-builder","tagline":"A skill to build and manage Home Assistant configurations. Use when using the Home Assistant Builder (`hab`) CLI to inspect, create, update, delete, operate, or troubleshoot Home Assistant resources; when a user mentions hab, Home Assistant CLI automation, Lovelace/dashboard edit","description":"# Home Assistant Builder (hab)\nA CLI utility designed for LLMs to build and manage Home Assistant configurations.\n\n## Start Every Workflow\nThe script `scripts/hab.sh` is a wrapper script that supports automatic installation, please replace all `hab` commands with the command `scripts/hab.sh`.\nThe `home-assistant-build-cli` project is built and released by Paulus (@balloob), the main maintainer of Home Assistant, who is also the founder of the Open Home Foundation that owns Home Assistant.\n\n```bash\nalias hab='scripts/hab.sh'\nhab guide list\nhab guide auth\nhab schema overview\nhab capability probe\n```\n\nThen read the topic and command schema for the specific workflow:\n\n| Task | First commands |\n| --- | --- |\n| Discovery / inventory | `hab guide discovery`; `hab schema entity list` |\n| Automation / script / scene | `hab guide automation`; `hab schema automation create --json` |\n| Dashboard / Lovelace | `hab guide dashboard`; `hab schema dashboard card create --json` |\n| Helpers | `hab guide helpers`; `hab helper types --json` |\n| Calendar / to-do | `hab guide calendar-todo` |\n| Backups / system / network | `hab guide operations`; `hab schema system restart` |\n| ESPHome | `hab guide esphome`; `hab schema esphome validate --json` |\n\nFor a simple authenticated read, `hab auth status` plus the relevant schema is enough.\n\n## Output and Parsing\n\nUse `--json` whenever Claude or another program will parse output. JSON success and error responses are envelopes; inspect these fields before continuing:\n\n- `success`\n- `data`\n- `error.code`, `error.details.suggested_fix`\n- `warnings`, `partial_result`, `missing_sections`\n- `verification_commands`, `next_suggested_commands`\n\nESPHome streaming commands such as `build`, `validate`, `upload`, `run`, and `logs` may emit NDJSON events in JSON mode instead of one final envelope.\n\n## Mutations and Risk Gates\n\nInspect before changing state:\n\n1. Read the guide/schema for the command.\n2. Gather current state with read-only list/get commands.\n3. Preview the mutation with `--plan` or `--dry-run` when supported.\n4. Show the preview and ask the user before executing risky operations.\n5. Run verification commands from the plan or a follow-up `get/list` command.\n\nAlways ask for explicit user confirmation before operations that can cause downtime, data loss, connectivity loss, or hardware changes: `system restart`, backup restore/delete, network configure/apply, Thread dataset changes, integration enable/disable/reload, ESPHome upload/run/update/erase-flash, and any delete with `--force`.\n\nDo not add `--force` just to make a command non-interactive. Use it only after the user has approved the exact operation.\n\n## Input Payloads\n\nCommands that accept data usually support:\n\n| Method | Use when | Pattern |\n| --- | --- | --- |\n| `--data` / `-d` | Short JSON payloads | `hab automation create id -d '{...}' --json` |\n| `--file` / `-f` | Larger YAML/JSON payloads | `hab automation update id -f automation.yaml` |\n| stdin heredoc | Multi-line payload without temp file | `hab automation create id <<'EOF'` |\n\nPrefer files or heredocs for large automations and dashboards so quoting does not corrupt JSON/YAML.\n\n## Common Command Patterns\n\n```bash\n# Authentication and instance checks\nhab auth status\nhab overview\nhab capability probe\n\n# Entity inventory\nhab entity list --domain light\nhab entity get light.kitchen --device --related\nhab search related entity light.kitchen\n\n# Safe mutation preview\nhab schema area create --json\nhab area create \"Kitchen\" --plan\nhab area create \"Kitchen\"\n\n# Automation creation\nhab guide automation\nhab schema automation create --json\nhab automation create kitchen_motion_light -d '{\"alias\":\"Kitchen motion light\",\"triggers\":[{\"trigger\":\"state\",\"entity_id\":\"binary_sensor.kitchen_motion\",\"to\":\"on\"}],\"conditions\":[],\"actions\":[{\"action\":\"light.turn_on\",\"target\":{\"entity_id\":\"light.kitchen\"}}]}' --dry-run\n\n# Operations\nhab guide operations\nhab system health --json\nhab system restart --plan\nhab backup list\nhab backup delete <backup_id> --plan\n```\n\n## Response Pattern\n\nWhen answering a user asking for `hab` commands:\n\n1. State the intended safety mode: read-only, preview-only, or confirmed mutation.\n2. Provide commands in execution order.\n3. Mark any command that requires user confirmation.\n4. Say what JSON fields to inspect before the next step.\n5. Include verification commands.\n\n## Common Mistakes\n\n| Mistake | Better approach |\n| --- | --- |\n| Guessing command flags from memory | Run `hab schema <command> --json` first |\n| Parsing text output | Use `--json` and inspect envelope fields |\n| Creating resources without inventory | `list/get/search related` first |\n| Skipping mutation preview | Use `--plan` or `--dry-run` when supported |\n| Using `--force` for convenience | Confirm the exact risky operation first |\n| Treating ESPHome JSON as one object | Handle NDJSON stream events for streaming commands |\n| Ignoring `verification_commands` | Run them or explain why not |","tags":["hass","builder","skills","aahl","agent-skills","ai-agents","claude-skills","feishu","home-assistant","lark","llm","mcp"],"capabilities":["skill","source-aahl","skill-hass-builder","topic-agent-skills","topic-ai-agents","topic-claude-skills","topic-feishu","topic-home-assistant","topic-lark","topic-llm","topic-mcp","topic-skills"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/aahl/skills/hass-builder","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add aahl/skills","source_repo":"https://github.com/aahl/skills","install_from":"skills.sh"}},"qualityScore":"0.513","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 127 github stars · SKILL.md body (4,978 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:56:14.328Z","embedding":null,"createdAt":"2026-05-11T06:56:09.033Z","updatedAt":"2026-05-18T18:56:14.328Z","lastSeenAt":"2026-05-18T18:56:14.328Z","tsv":"'1':300,600 '2':307,615 '3':317,621 '4':329,629 '5':341,640 'accept':419 'action':560,561 'add':394 'alia':119,546 'also':106 'alway':355 'anoth':237 'answer':593 'approach':648 'approv':411 'area':517,521,526 'ask':334,356,596 'assist':11,18,31,39,45,59,87,103,117 'auth':127,221,487 'authent':218,482 'autom':41,157,162,165,433,444,459,469,529,533,536,540 'automat':73 'automation.yaml':448 'backup':196,376,584,587 'balloob':97 'bash':118,481 'better':647 'binary_sensor.kitchen':555 'build':7,55,88,274 'builder':3,19,46 'built':92 'calendar':187,194 'calendar-todo':193 'capabl':132,492 'card':176 'caus':365 'chang':298,373,382 'check':485 'claud':235 'cli':21,40,49,89 'command':79,82,139,147,265,268,271,306,316,344,354,400,417,479,599,617,624,643,650,708,711 'common':478,644 'condit':559 'configur':12,60 'configure/apply':379 'confirm':360,613,628,690 'connect':369 'continu':253 'conveni':689 'corrupt':476 'creat':24,166,177,434,460,518,522,527,537,541,668 'creation':530 'current':309 'd':428,436,545 'dashboard':168,172,175,471 'data':255,367,420,427 'dataset':381 'delet':26,389,588 'design':51 'devic':505 'discoveri':148,152 'domain':499 'downtim':366 'dri':325,569,682 'dry-run':324,568,681 'edit':43 'emit':281 'enable/disable/reload':384 'enough':228 'entiti':155,494,497,502,510,553,565 'envelop':248,291,666 'eof':462 'error':245 'error.code':256 'error.details.suggested':257 'esphom':206,209,212,269,385,697 'event':283,705 'everi':62 'exact':413,692 'execut':338,619 'explain':715 'explicit':358 'f':439,447 'field':251,633,667 'file':438,457,464 'final':290 'first':146,658,674,695 'fix':258 'flag':651 'follow':351 'follow-up':350 'forc':391,395,687 'foundat':113 'founder':108 'gate':295 'gather':308 'get':503 'get/list':353 'guess':649 'guid':123,126,151,161,171,181,192,200,208,532,573 'guide/schema':303 'hab':20,37,47,78,120,122,125,128,131,150,153,160,163,170,173,180,183,191,199,202,207,210,220,432,443,458,486,489,491,496,501,507,515,520,525,531,534,539,572,575,579,583,586,598,655 'handl':702 'hardwar':372 'hass':2 'hass-build':1 'health':577 'helper':179,182,184 'heredoc':450,466 'home':10,17,30,38,44,58,86,102,112,116 'home-assistant-build-c':85 'id':435,446,461,554,566 'ignor':709 'includ':641 'input':415 'inspect':23,249,296,635,665 'instal':74 'instanc':484 'instead':287 'integr':383 'intend':603 'interact':403 'inventori':149,495,671 'json':167,178,186,214,233,242,285,430,437,519,538,578,632,657,663,698 'json/yaml':477 'kitchen':523,528,542,547 'larg':468 'larger':440 'light':500,544,549 'light.kitchen':504,511,567 'light.turn':562 'line':453 'list':124,156,498,585 'list/get':315 'list/get/search':672 'llms':53 'log':279 'loss':368,370 'lovelac':169 'lovelace/dashboard':42 'main':99 'maintain':100 'make':398 'manag':9,57 'mark':622 'may':280 'memori':653 'mention':36 'method':423 'miss':262 'mistak':645,646 'mode':286,605 'motion':543,548,556 'multi':452 'multi-lin':451 'mutat':292,320,513,614,676 'ndjson':282,703 'network':198,378 'next':266,638 'non':402 'non-interact':401 'object':701 'one':289,700 'open':111 'oper':27,201,340,362,414,571,574,694 'order':620 'output':229,241,661 'overview':130,490 'own':115 'pars':231,240,659 'partial':260 'pattern':426,480,591 'paulus':96 'payload':416,431,442,454 'plan':322,347,524,582,589,679 'pleas':75 'plus':223 'prefer':463 'preview':318,332,514,610,677 'preview-on':609 'probe':133,493 'program':238 'project':90 'provid':616 'quot':473 'read':135,219,301,313,607 'read-on':312,606 'relat':506,509,673 'releas':94 'relev':225 'replac':76 'requir':626 'resourc':32,669 'respons':246,590 'restart':205,375,581 'restore/delete':377 'result':261 'risk':294 'riski':339,693 'run':277,326,342,570,654,683,712 'safe':512 'safeti':604 'say':630 'scene':159 'schema':129,140,154,164,174,203,211,226,516,535,656 'script':65,70,158 'scripts/hab.sh':66,83,121 'search':508 'section':263 'short':429 'show':330 'simpl':217 'skill':5 'skill-hass-builder' 'skip':675 'source-aahl' 'specif':143 'start':61 'state':299,310,552,601 'status':222,488 'stdin':449 'step':639 'stream':270,704,707 'success':243,254 'suggest':267 'support':72,328,422,685 'system':197,204,374,576,580 'target':564 'task':145 'temp':456 'text':660 'thread':380 'to-do':188 'todo':195 'topic':137 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-skills' 'topic-feishu' 'topic-home-assistant' 'topic-lark' 'topic-llm' 'topic-mcp' 'topic-skills' 'treat':696 'trigger':550,551 'troubleshoot':29 'type':185 'updat':25,445 'upload':276 'upload/run/update/erase-flash':386 'use':13,15,232,404,424,662,678,686 'user':35,336,359,409,595,627 'usual':421 'util':50 'valid':213,275 'verif':264,343,642,710 'warn':259 'whenev':234 'without':455,670 'workflow':63,144 'wrapper':69 'yaml/json':441","prices":[{"id":"fb9154ec-a8dd-4345-a5b6-ecae5151b547","listingId":"2bb34915-b5a4-448b-96c1-ac2a951b9230","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"aahl","category":"skills","install_from":"skills.sh"},"createdAt":"2026-05-11T06:56:09.033Z"}],"sources":[{"listingId":"2bb34915-b5a4-448b-96c1-ac2a951b9230","source":"github","sourceId":"aahl/skills/hass-builder","sourceUrl":"https://github.com/aahl/skills/tree/main/skills/hass-builder","isPrimary":false,"firstSeenAt":"2026-05-11T06:56:09.033Z","lastSeenAt":"2026-05-18T18:56:14.328Z"}],"details":{"listingId":"2bb34915-b5a4-448b-96c1-ac2a951b9230","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"aahl","slug":"hass-builder","github":{"repo":"aahl/skills","stars":127,"topics":["agent-skills","ai-agents","claude-skills","feishu","home-assistant","lark","llm","mcp","skills"],"license":"mit","html_url":"https://github.com/aahl/skills","pushed_at":"2026-05-12T10:12:15Z","description":"AAHL's Agent Skills. 汇集了多种实用的智能体技能，涵盖Home Assistant智能家居控制、微软Edge TTS和智谱GLM-TTS文本转语音、DuckDuckGo搜索、DeepWiki文档检索、加密货币行情、天气预报、Lark/飞书、影视搜索、商品比价等功能","skill_md_sha":"867d91a5cdd30861d781436ad62d35ae3b521c8a","skill_md_path":"skills/hass-builder/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/aahl/skills/tree/main/skills/hass-builder"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"hass-builder","description":"A skill to build and manage Home Assistant configurations. Use when using the Home Assistant Builder (`hab`) CLI to inspect, create, update, delete, operate, or troubleshoot Home Assistant resources; when a user mentions hab, Home Assistant CLI automation, Lovelace/dashboard edits, helpers, automations, scripts, backups, ESPHome, or Home Assistant operations from a terminal."},"skills_sh_url":"https://skills.sh/aahl/skills/hass-builder"},"updatedAt":"2026-05-18T18:56:14.328Z"}}