From claude-code-homeassistant-hermit
Analyzes Home Assistant history data and entity patterns to identify automation opportunities, unused devices, and energy anomalies. Use periodically or when looking for optimization opportunities.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-code-homeassistant-hermit:ha-analyze-patternsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
1. **Load existing analysis**: Read `.claude-code-hermit/raw/snapshot-ha-pattern-analysis-latest.json` if it exists.
Load existing analysis: Read .claude-code-hermit/raw/snapshot-ha-pattern-analysis-latest.json if it exists.
Get live context: Call GetLiveContext and GetDateTime via MCP for current state.
Fetch history: Run ${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha fetch-history --window-days 7. On non-zero exit, log a single line to SHELL.md ## Monitoring (history fetch failed: <stderr first line>) and continue — the skill proceeds using Phase 1 silence findings only. Do not surface the fetch failure to scheduled-check stdout.
Read normalized inventory: Read .claude-code-hermit/raw/snapshot-ha-normalized-latest.json. Extract both entity_index and silence_summary (added by every context refresh). Also read .claude-code-hermit/raw/snapshot-ha-history-7d-latest.json if present.
Analyze patterns from silence_summary and history:
From silence_summary.dead_automations (enabled automations not fired in 30+ days):
"automation.X has not fired in N days (enabled)".never_fired: true entries get special phrasing: "automation.X has never fired (enabled but never triggered)".From silence_summary.silent_event_sensors (motion/door/window sensors silent for 7+ days):
"binary_sensor.X (<device_class>) — no events in N days".From silence_summary.long_unavailable (individual entities unavailable 7+ days, domain not already degraded):
"entity.X unavailable for N days".From silence_summary.inactive_candidates_by_domain (lights/switches/covers/climates unchanged for 7+ days):
From silence_summary.suppressed_entity_domains:
From snapshot-ha-history-7d-latest.json (when present):
time_patterns: surface under Automation opportunities: as a schedule-based candidate. Example: "light.kitchen — 8/12 events at 07:00 UTC, consider time-based automation".entity_aggregates entry where event_count == 0 AND the entity also appears in silence_summary.inactive_candidates_by_domain: promote to actionable Reliability issues: only when the entity's last_changed timestamp (from entity_index) is older than 30 days. The 7-day Phase 1 informational threshold gets a much higher bar here because history corroborates it.automation.* entities — silence_summary.dead_automations is authoritative for that.Write findings: Save pattern data to .claude-code-hermit/raw/snapshot-ha-pattern-analysis-<YYYY-MM-DD>.json and update snapshot-ha-pattern-analysis-latest.json. Write the curated Markdown summary (when non-trivial findings exist) to .claude-code-hermit/raw/patterns-<YYYY-MM-DD>.md with frontmatter type: analysis, title: "HA Pattern Analysis — <YYYY-MM-DD>", created: <ISO8601>, session: <session_id or null>, tags: [ha-patterns, analysis]. Also write patterns-latest.md pointing to the same content. The Markdown body should include the richer breakdown: inactive_candidates_by_domain summary table, suppressed_entity_domains note, time-pattern table from history, and state_durations summary for climate.* entities (showing heating/cooling hours over the 7d window).
Update memory: Update your auto memory with key findings from this analysis.
Emit summary for reflect --scheduled-checks: Always output a plain-text findings block to stdout. reflect --scheduled-checks routes actionable items through the proposal pipeline. The stdout shape is fixed — do not add new top-level sections:
ha-analyze-patterns findings — <date>
Automation opportunities: <N>
- <opportunity 1>
Reliability issues: <N>
- <dead automation or silent sensor or long-unavailable entity>
Waste patterns: <N>
- <waste 1>
No action needed: <list anything normal or already automated>
Dead automations and silent event sensors fold under Reliability issues:. If there are zero findings across all categories, output: ha-analyze-patterns findings — <date>\nNo actionable findings.
Propose automations: If clear patterns emerge, suggest them. For complex ones, delegate to @claude-code-homeassistant-hermit:ha-automation-builder.
.claude-code-hermit/raw/snapshot-ha-pattern-analysis-<date>.json (raw pattern data, machine-readable).claude-code-hermit/raw/snapshot-ha-pattern-analysis-latest.json (fixed-name alias for latest).claude-code-hermit/raw/patterns-<date>.md (curated Markdown summary, written when non-trivial findings exist; type: analysis).claude-code-hermit/raw/patterns-latest.md (fixed-name alias for latest)npx claudepluginhub p/gtapps-claude-code-homeassistant-hermit-plugins-claude-code-homeassistant-hermitGenerates a presence history and tracker-health report showing home/away state, reliability, recent transitions, and activity patterns for person/device_tracker entities. Useful when presence-dependent automations misbehave.
Reviews Home Assistant automations, scripts, and helpers for errors, best-practice violations, and conflicts. Handles discovery and reading internally.
Create and manage Home Assistant YAML configuration files including automations, scripts, templates, blueprints, Lovelace dashboards, and file organization. Use when working with Home Assistant configuration files (.yaml, .yml) or discussing HA automations, scripts, sensors, or dashboards.