Context for developing and debugging Hubitat Elevation apps, drivers, and hub environment — sandbox constraints, lifecycle idioms, capability contracts, plus grounded deploy/log-tail/lint mechanisms.
81
94%
Does it follow best practices?
Impact
27%
Average score across 2 eval scenarios
Advisory
Suggest reviewing before use
This skill is an action router — pick the step that matches the user's intent and execute only that step. Do not run other steps; do not parallelize.
hubs.json is the stateful artifact that tells the deploy/pull/debug flows how to reach each hub. Code operations are per-hub by IP (multi-hub-topology rule). The file holds IPs only, never secrets — Maker API credentials come from the environment. scripts/hubs_config.py is the sole writer of its shape and owns schema migration; the schema lives in skills/hub-config/state-schema.md. All actions below call it; its argument and output contract is in its module docstring.
Create a fresh, empty config (refuses to overwrite an existing one without --force):
python3 .tessl/plugins/jbaruch/hubitat-dev/scripts/hubs_config.py init [--path hubs.json]Then chain to Add to register the first hub.
python3 .tessl/plugins/jbaruch/hubitat-dev/scripts/hubs_config.py add --name <name> --ip <addr> [--port 8080] [--default]The first hub added becomes the default automatically. Creates the file if it does not exist. Finish here.
python3 .tessl/plugins/jbaruch/hubitat-dev/scripts/hubs_config.py set-default --name <name>Finish here.
python3 .tessl/plugins/jbaruch/hubitat-dev/scripts/hubs_config.py remove --name <name>If the removed hub was the default, another becomes default automatically. Finish here.
python3 .tessl/plugins/jbaruch/hubitat-dev/scripts/hubs_config.py listPrint the configured hubs and which is default. Finish here.