plugins/claude-code-homeassistant-hermit/skills/ha-evening-brief/SKILL.md
Evening house brief — end-of-day security check, device status, and energy snapshot. Runs as a daily routine at 22:30 or on demand.
npx skillsauth add gtapps/claude-code-hermit ha-evening-briefInstall 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.
An end-of-day house check that confirms the house is secure before night. Designed to run as the evening-brief routine at 22:30.
When both claude-code-hermit and claude-code-homeassistant-hermit are installed and evening-brief is enabled, this skill subsumes /claude-code-hermit:brief --evening — operators should disable the core evening routine to avoid duplicate ~22:30 notifications. For hermits without HA, /claude-code-hermit:brief --evening remains the standalone path.
Time & context — Call GetDateTime for current time. Read .claude-code-hermit/OPERATOR.md for language preferences.
Live house snapshot — Call GetLiveContext. Extract and organize:
Anomalous sensors — From the live snapshot, identify currently unavailable, stuck, or unexpected-state sensors. Report only what is currently wrong — no baseline diff required.
3a. Pending updates: Run ${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha updates --digest and capture stdout. Branch on its content (the command always exits 0 — never branch on exit code):
(skipped: — log a single line to SHELL.md ## Monitoring (updates fetch failed: <detail after "skipped:">) and omit the Updates: section entirely.(no updates pending) — omit the Updates: section entirely.Updates: section, translating tier labels into the operator's language. No proposal-id lookup here (unlike the morning brief).Energy snapshot — From the live context, pull current power draw and day's energy consumption if HA energy entities exist. Omit this section if no energy sensors are available.
Compose brief — Write a concise evening brief in the operator's language (from OPERATOR.md). Use the format below.
Write to compiled/ — Write the composed brief to .claude-code-hermit/compiled/brief-evening-<YYYY-MM-DD>.md with frontmatter:
title: "Evening Brief — <YYYY-MM-DD>"
type: brief
created: <ISO8601>
session: <session_id from runtime.json, or null if absent>
tags: [evening-brief, ha]
Then append the following line to .claude-code-hermit/sessions/SHELL.md under a ### Artifacts produced this session subsection in ## Monitoring (create the subsection if absent):
- [[compiled/brief-evening-<YYYY-MM-DD>]]
This citation is lifted into ## Artifacts when /claude-code-hermit:session-close archives the session.
Good evening! Home - [date]
Security:
- [alarm state, lock states, open covers — or "All secure"]
Devices:
- [robovac status, lights left on — or "All clear"]
Sensors:
- [currently unavailable or anomalous — or "None"]
Updates:
- [tier] Title: installed → latest
- [N HACS updates pending]
- [Omit section entirely when none pending or the fetch was skipped.]
Energy:
- [day's consumption, current draw — omit section when unavailable]
Keep the entire brief under 14 lines (10 when the Updates: section is absent — no updates pending or the fetch was skipped). Adapt the greeting and section headers to the operator's configured language.
config.always_on is true in .claude-code-hermit/config.json: deliver the composed brief via the Operator Notification protocol in CLAUDE.md (core resolves the channel and falls back to push / SHELL.md logging when no channel is reachable). The terminal is unmonitored in always-on mode — never gate delivery on session_state. For the push-fallback branch, condense to a single line (per § Operator Notification push format): lead with the security verdict (open doors, unlocked, open windows) or secure, then any anomaly. Example: House secure, garage door still open — open CC to view.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.