# Homelab Health

> Unified health dashboard for all configured homelab services. Use when the user wants to check service status, verify credentials work, see which services are reachable, or diagnose connectivity issues. Triggers on: 'check health', 'service status', 'what's running', 'is plex up', 'verify my setup', 'homelab health', or after running /homelab-core:setup.

- Skill: `jmagar/homelab-health` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add jmagar/homelab-health`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jmagar/homelab-health/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jmagar (https://skillmd.com/u/jmagar)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jmagar/homelab-health

---


# Homelab Service Health Dashboard

Run the health check script and present results as a clean dashboard.

## Run the Check

```bash
bash ~/claude-homelab/skills/health/scripts/check-health.sh
```

Or from the plugin cache (when installed via Claude Code):
```bash
bash "${CLAUDE_PLUGIN_ROOT}/skills/health/scripts/check-health.sh"
```

## Present the Dashboard

Parse the JSON output and display as a formatted table:

```
Service Health Dashboard
========================
Category        Service          Status        URL
--------        -------          ------        ---
Media           plex             ✓ reachable   https://plex.example.com:32400
                radarr           ✓ reachable   https://radarr.example.com
                sonarr           ⚠ unreachable https://sonarr.example.com
                overseerr        ○ not configured
                prowlarr         ✓ reachable   https://prowlarr.example.com
                tautulli         ✓ reachable   https://tautulli.example.com

Downloads       qbittorrent      ✓ reachable   https://qbit.example.com
                sabnzbd          ✓ reachable   https://sabnzbd.example.com

Infrastructure  unraid-server1   ✓ reachable   https://unraid1.example.com/graphql
                unraid-server2   ○ not configured
                unifi            ✓ reachable   https://unifi.example.com
                tailscale        ✓ reachable   (API)

Utilities       gotify           ✓ reachable   https://gotify.example.com
                linkding         ✓ reachable   https://links.example.com
                memos            ⚠ unreachable https://memos.example.com
                bytestash        ○ not configured
                paperless        ✓ reachable   https://paperless.example.com
                radicale         ✓ reachable   https://cal.example.com

Summary: 12 reachable  ·  1 unreachable  ·  5 not configured
```

## Status Icons

| Icon | Status | Meaning |
|------|--------|---------|
| ✓ | reachable | URL responded (any HTTP code except timeout) |
| ⚠ | unreachable | URL configured but timed out or connection refused |
| ○ | not configured | No URL set in `~/.claude-homelab/.env` |

## Follow-Up Actions

After showing the dashboard, offer context-sensitive help:

- **Unreachable services**: "Want me to help diagnose `sonarr`? I can check if the URL is correct or test the connection."
- **Not configured services**: "You have 5 services not configured. Want to set them up now?" → offer to run `/homelab-core:setup`
- **All reachable**: "Everything looks good! All configured services are responding."

## Refresh

If the user asks to recheck a specific service, re-run the script and filter the output for that service. Don't run the full check for a single-service query.

