plugins/claude-code-hermit/skills/weekly-review/SKILL.md
Generate the weekly review report for the current ISO week. Writes to .claude-code-hermit/compiled/review-weekly-YYYY-Www.md and sends a channel-friendly summary with an evolution block. Runs every Sunday at 23:00 via routine.
npx skillsauth add gtapps/claude-code-hermit weekly-reviewInstall 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.
Generates the weekly review for the current ISO week.
Run:
node ${CLAUDE_PLUGIN_ROOT}/scripts/weekly-review.js .claude-code-hermit
Report the result. On success, output the review filename. If a Knowledge Health section appears in the review output, summarize the issues to the operator.
Build the weekly evolution block from the freshly-written review file:
.claude-code-hermit/compiled/review-weekly-<current-week>.md frontmatter (just written in step 1).compiled/review-weekly-*.md frontmatter (sort by week descending, take the second file).## This week's evolution
- Cost: $X.XX (vs $Y.YY prior week, Δ+/-N%)
- Autonomy: N% self-directed (vs M% prior, Δ+/-N pp)
- Proposals: +A created, B resolved (C pending review, D in flight)
- Oldest open accepted: PROP-NNN (Nd since accepted) [or "none"]
Channel-send the combined weekly summary:
node ${CLAUDE_PLUGIN_ROOT}/scripts/resolve-outbound-channel.js .claude-code-hermit
Parse stdout as JSON. On success ("id" and "chat_id" present), send via mcp__plugin_<id>_<id>__reply with { chat_id, text: <message> } where <id> is the resolved channel name.{"error":"no_reachable_channel"}: if push_notifications === true in config.json, fire PushNotification(message="<one-line weekly review headline>", status="proactive") so the summary still reaches the operator. Then append a single Findings line to .claude-code-hermit/sessions/SHELL.md: "weekly-review: no reachable channel configured, channel-send skipped". Only log this once per session to avoid noise. Do not emit a channel-send-unavailable alert issue (weekly-review is a recurring routine, not an alert)."primary": "<channel-name>" inside channels in config.json.Archive expired raw artifacts:
node ${CLAUDE_PLUGIN_ROOT}/scripts/archive-raw.js .claude-code-hermit
Report how many were archived, retained, and skipped.
Archive superseded compiled artifacts:
node ${CLAUDE_PLUGIN_ROOT}/scripts/archive-compiled.js .claude-code-hermit
Report how many were archived, retained, and skipped.
/claude-code-hermit:hermit-settings.archive-raw.js only moves files — it never deletes. Archived files land in raw/.archive/ and can be restored manually.archive-compiled.js only moves files — it never deletes. Keeps the newest 2 artifacts per type; foundational-tagged artifacts are always retained. Archived files land in compiled/.archive/ and can be restored manually.tools
Presence history & tracker-health report — current home/away state, reliability, recent arrival/departure transitions, and activity patterns for person/device_tracker entities. Use when the operator asks about presence history or when a presence-dependent automation (locks, alarm, vacuum, climate) misbehaves.
development
Evening house brief — end-of-day security check, device status, and energy snapshot. Runs as a daily routine at 22:30 or on demand.
tools
Browse and explain the hermit's Home Assistant automations — list by topic, filter by keyword with plain-language YAML explanations, or sort by last-fired. Read-only. Use when the operator asks "what automations do I have / what does this one do / which haven't fired."
tools
On-demand HA-voice brainstorm — reads entity inventory, automation/script listings, and operator intent to surface at most 2 capability-gap ideas, each gated by proposal-triage before becoming a PROP. Invoke when the operator asks "what automations am I missing?", "any coverage gaps?", or "brainstorm improvements". Never runs autonomously.