Claude-skill-registry gohome

Use when Clawdbot needs to test or operate GoHome (Home Assistant clone) via gRPC discovery, metrics, and Grafana.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gohome-clawdis" ~/.claude/skills/majiayu000-claude-skill-registry-gohome && rm -rf "$T"
manifest: skills/data/gohome-clawdis/SKILL.md
source content

GoHome Skill

This skill teaches Clawdbot 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):

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-clawdbot plugin):

gohome-cli services

Use the CLI from source if needed:

go run ./cmd/gohome-cli services

If Go is not available, build with Nix and run the CLI from the result:

nix build .#packages.x86_64-linux.default
./result/bin/gohome-cli services

Discovery flow (read-only)

  1. List plugins:
GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli plugins list
  1. Describe a plugin:
GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli plugins describe tado
  1. List methods for a service:
GOHOME_GRPC_ADDR="$GOHOME_GRPC_ADDR" go run ./cmd/gohome-cli methods gohome.plugins.tado.v1.TadoService
  1. Call a safe RPC (read-only):
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:

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:

gohome-cli tado zones
gohome-cli tado set living-room 20

Metrics validation

Confirm the Tado scraper is healthy and metrics are present:

curl -s "${GOHOME_HTTP_BASE}/gohome/metrics" | rg -n "gohome_tado_"

Expect:

  • gohome_tado_scrape_success 1
  • zone temperature + humidity 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:

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
    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.