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.
—
—
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
High
Do not use without reviewing
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. skills/_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/skills/_scripts/hubs_config.py init [--path hubs.json]Then chain to Add to register the first hub.
python3 .tessl/plugins/jbaruch/hubitat-dev/skills/_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/skills/_scripts/hubs_config.py set-default --name <name>Finish here.
python3 .tessl/plugins/jbaruch/hubitat-dev/skills/_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/skills/_scripts/hubs_config.py listPrint the configured hubs and which is default. Finish here.