npx agentspec-cli install f05437c9-ba13-44de-9a9f-808661360ab5 --framework ClaudeCode→ .claude/skills/gohome/SKILL.md
# GoHome Skill
This skill teaches Openclaw how to discover capabilities and validate the GoHome stack
using the repo CLI, Prometheus metrics, and Grafana.
## Quick start
Set the target host and ports (optional; defaults read from config or MagicDNS):
```sh
export GOHOME_HOST="gohome"
export GOHOME_HTTP_BASE="http://${GOHOME_HOST}:8080"
export GOHOME_GRPC_ADDR="${GOHOME_HOST}:9000"
```
Use the CLI on PATH (preferred, installed by the nix-openclaw plugin):
```sh
gohome-cli services
```
Use the CLI from source if needed:
```sh
go run ./cmd/gohome-cli services
```
If Go is not available, build with Nix and run the CLI from the result:
```sh
nix build .#packages.x86_64-linux.default
./result/bin/gohome-cli services
```
## Discovery flow (read-only)
1) List plugins:
```sh
GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli plugins list
```
2) Describe a plugin:
```sh
GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli plugins describe tado
```
3) List methods for a service:
```sh
GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli methods gohome.plugins.tado.v1.TadoService
```
4) Call a safe RPC (read-only):
```sh
jq -n '{}' | GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli call \
gohome.plugins.tado.v1.TadoService/ListZones
```
## Friendly CLI (agent-friendly)
Roborock:
```sh
gohome-cli roborock status
gohome-cli roborock rooms
gohome-cli roborock clean kitchen
gohome-cli roborock mop kitchen
gohome-cli roborock vacuum kitchen
gohome-cli roborock smart kitchen
gohome-cli roborock map --labels names
```
## Sending maps to users (Telegram/messaging)
When user asks for a map, send it as an image they can see inline. Use the MEDIA: syntax with the gohome map URL:
```
MEDIA:http://gohome:8080/roborock/map.png?device_name=Roborock+Qrevo+S&labels=names
Robot on dock in hallway. Battery 100%.
```
This sends the map image directly in the chat. Options:
- `labels=names` — room names (recommended)
- `labels=segments` — segment IDs
- no labels param — clean map
Do NOT just describe the map or show it in a code block — send it as a MEDIA: image so users can see it.
Tado:
```sh
gohome-cli tado zones
gohome-cli tado set living-room 20
```
Weheat (read-only):
```sh
GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli methods \
gohome.plugins.weheat.v1.WeheatService
jq -n '{state: 3}' | GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli call \
gohome.plugins.weheat.v1.WeheatService/ListHeatPumps
jq -n '{heat_pump_id: "<id>"}' | GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli call \
gohome.plugins.weheat.v1.WeheatService/GetLatestLog
```
## Metrics validation
Confirm the Tado scraper is healthy and metrics are present:
```sh
curl -s "${GOHOME_HTTP_BASE}/gohome/metrics" | rg -n "gohome_tado_"
```
Expect:
- `gohome_tado_scrape_success 1`
- zone temperature + humidity metrics
Confirm Weheat metrics:
```sh
curl -s "${GOHOME_HTTP_BASE}/gohome/metrics" | rg -n "gohome_weheat_"
```
Expect:
- `gohome_weheat_scrape_success 1`
- per-heat-pump log + energy metrics
## Grafana access
Grafana is proxied under:
```
${GOHOME_HTTP_BASE}/grafana/
```
Use MagicDNS (`gohome`) or set `GOHOME_HOST` to the tailnet FQDN if needed.
## Stateful / destructive actions (require explicit approval)
Only call write RPCs after user approval. Example:
```sh
jq -n --arg zone_id "1" --argjson temp 20.0 \
'{zone_id: $zone_id, temperature_celsius: $temp}' | \
GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli call \
gohome.plugins.tado.v1.TadoService/SetTemperature
```
## Troubleshooting
- If DNS fails, verify MagicDNS is enabled and run `tailscale status`.
- If metrics are missing, check `gohome_tado_scrape_success` / `gohome_weheat_scrape_success` and token validity.
- Prefer `jq -n` to build JSON for gRPC calls; it avoids quoting mistakes.
- `gohome-cli` reads `/etc/gohome/config.pbtxt` (or `~/.config/gohome/config.pbtxt`) for default host info.
Built on the Agent Skills standard
openclaw-secure-linux-cloud
Use when self-hosting OpenClaw on a cloud server, hardening a remote OpenClaw gateway, choosing between SSH tunneling, Tailscale, or reverse-proxy exposure, or reviewing Podman, pairing, sandboxing, token auth, and tool-permission defaults for a secure personal deployment.
by AgentHub Crawler
wagmios
Give your OpenClaw agent a homelab. Use when managing Docker containers, installing marketplace apps, or any Docker-related tasks on behalf of the user. Scope-based API key permissions — agent can only do what the key allows. On Linux, Docker requires sudo — without root access, WAGMIOS is the only safe interface for agent homelab control. Supports multi-machine management — one agent can manage multiple WAGMIOS instances across different hosts, each with its own scoped key. Requires X-API-Key header on eve
by AgentHub Crawler
🤖 OpenClaw JS — Manual for AI Agents
**Welcome!** If you are an AI Coding Agent tasked to modify, review, or debug this project, read this document first. It contains essential architectural constraints, coding conventions, and project-specific knowledge.
Sign in to leave a comment.
by AgentHub Crawler