plugins/claude-code-homeassistant-hermit/skills/ha-integration-health/SKILL.md
Detect dropped HA integrations by computing per-domain unavailable-entity ratios from the latest context snapshot. Flags domains where most entities are unavailable, suggesting the integration lost its connection. Runs daily as a scheduled check via reflect --scheduled-checks.
npx skillsauth add gtapps/claude-code-hermit ha-integration-healthInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When an HA integration loses its connection (lost WiFi, API change, expired token), its entities go unavailable. This skill reads the latest normalized snapshot, groups entities by domain, and flags domains with a high unavailable ratio.
Run the integration-health check via the CLI:
${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha integration-health
The CLI:
snapshot-ha-normalized-latest.json exists and is fresh (< 24h). If stale or missing, runs ha refresh-context first to bring it up to date, then proceeds with analysis.total >= 3 AND ratio >= 0.5..claude-code-hermit/state/integration-health-degraded-domains.json — a machine-readable state artifact consumed by ha-analyze-patterns (via silence.ts) to suppress overlapping long_unavailable findings.reflect --scheduled-checks routes the findings block through the proposal pipeline. The stdout shape is fixed:
ha-integration-health findings — <date>
Degraded domains: N
- <domain>: <unavailable>/<total> entities unavailable (<percent>%)
If nothing is flagged: No actionable findings. (D domains scanned).
If snapshot is stale or missing and HA is unreachable: No actionable findings. (skipped: snapshot stale, refresh failed — <error>).
If the snapshot exists but can't be parsed: No actionable findings. (skipped: snapshot unreadable — <error>).
Keep stdout to this shape — no prose, no extra sections.
tools
Composes and delivers the daily fitness brief — a forward-looking morning read (readiness + today's plan) or a backward-looking evening read (today's training, or an earned-rest note, + tomorrow's setup) — in the operator's configured voice. Invoke with /claude-code-fitness-hermit:fitness-brief --morning|--evening|--slot <name>. Becomes the plugin's two daily beats — the morning Strava connectivity check and the evening activity sync, RPE binding, and Run deep-dive.
development
Renew the hermit's long-lived Claude login token over the channel, before it expires. Relays a one-time sign-in link to the operator, takes the code back, installs the new token, and restarts. Activates on messages like 'relogin', 'renew my login', 'reauth', 'the login is expiring', or when doctor's credential-expiry check flags setup-token.
development
Synthesizes the past 7 days of archived briefs into a weekly digest — top stories, emerging vs faded themes, category activity, and per-source performance built from archive frontmatter. Delivers to the operator's configured channel and archives a weekly note. Designed as a weekly routine. Invoke with /feed-hermit:weekly-digest.
development
Manage developing story arcs tracked across briefs — add, resolve, and list active arcs in compiled/story-arcs-*.md. Arc Watch keywords drive the feed-brief arc-tagging enrichment. Invoke with /feed-hermit:story-arcs add|resolve|list.