First-run setup for Zigbee home network. Captures MQTT broker (type, IP, port), Zigbee coordinator (type, connection, stack), optional Home Assistant config, generates a dedicated MQTT credential for Claude, detects companion MCPs, and records export directory. Saves config to plugin data store.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin zigbee-home-maintenanceThis skill uses the workspace's default tool permissions.
This skill walks a user through first-time configuration of their Zigbee home network environment. It captures the MQTT broker location and credentials, identifies the Zigbee coordinator (SMLight, Sonoff, ConBee, etc.), optionally records Home Assistant access details, generates a dedicated MQTT username/password pair for Claude's use, detects available companion MCPs, and designates a director...
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
This skill walks a user through first-time configuration of their Zigbee home network environment. It captures the MQTT broker location and credentials, identifies the Zigbee coordinator (SMLight, Sonoff, ConBee, etc.), optionally records Home Assistant access details, generates a dedicated MQTT username/password pair for Claude's use, detects available companion MCPs, and designates a directory for network exports and backups. All configuration is stored in ${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/zigbee-home-maintenance/config.json.
Subsequent skills in this plugin resolve the same CONFIG_DIR and read config.json to locate the broker, coordinator, and Home Assistant targets.
Resolve and check configuration directory. Compute CONFIG_DIR="${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/zigbee-home-maintenance" and create it if missing (mkdir -p "$CONFIG_DIR"). If $CONFIG_DIR/config.json already exists, read it, present the current values to the user, and offer three choices: (a) keep as-is, (b) update specific fields only, or (c) re-onboard from scratch. Proceed based on the choice.
MQTT broker details. Ask the user for:
192.168.1.100).1883; 8883 for TLS).Zigbee coordinator. Ask the user to identify their coordinator:
Home Assistant (optional). Ask whether Home Assistant is in use. If yes: capture the HA host IP address and the base URL (e.g., http://homeassistant.local:8123 or http://192.168.1.x:8123). If no, record in_use: false.
Generate MQTT credential for Claude. Propose the username claude-zigbee-maintainer and generate a strong random password locally using openssl rand -base64 24. Display both to the user. Explain that this credential must be added to their MQTT broker's user list manually by the user:
mosquitto_passwd <config-file> claude-zigbee-maintainer command they need to run.mqtt.claude_credential.Detect companion MCPs. Run claude mcp list 2>/dev/null and parse the output for the presence of these MCPs (case-insensitive): mosquitto, home-assistant, smlight, zigbee2mqtt. Record which ones are detected in the config under mcps.detected as an array. If any IoT-relevant MCPs are missing, inform the user which ones would enhance later skills (e.g., "The Mosquitto MCP would allow direct topic inspection") but note that the plugin will degrade gracefully without them.
User data store for network exports. Ask the user where they want Zigbee network backups, device inventories, and Zigbee2MQTT exports to be saved. Suggest ~/Documents/Zigbee-Network-Backups as a default. Create the directory if it doesn't exist. Store the absolute, expanded path in the config under paths.exports_dir. (User-owned data such as exports do not live under $CLAUDE_USER_DATA; this is a pointer to user-managed storage.)
Write config.json atomically. Use the following schema:
{
"version": 1,
"mqtt": {
"broker_type": "mosquitto",
"host": "192.168.x.x",
"port": 1883,
"tls": false,
"ha_addon": true,
"claude_credential": {
"username": "claude-zigbee-maintainer",
"password": "<base64-random-string>"
}
},
"coordinator": {
"type": "smlight-slzb-06",
"connection": "network",
"host": "192.168.x.x",
"stack": "zigbee2mqtt"
},
"home_assistant": {
"in_use": true,
"host": "192.168.x.x",
"base_url": "http://homeassistant.local:8123"
},
"mcps": {
"detected": ["home-assistant"]
},
"paths": {
"exports_dir": "/home/<user>/Documents/Zigbee-Network-Backups"
}
}
Write the file securely: chmod 600 "$CONFIG_DIR/config.json" after writing.
Print summary report. Show the user:
$CONFIG_DIR/config.json.$CONFIG_DIR/config.json is created with all onboarding data, mode 600.config.json is written with mode 600 to protect credentials from other local users.