plugins/claude-code-hermit/skills/brief/SKILL.md
Returns a 5-line executive summary of recent work. Checks active session first, falls back to latest report. Activates on messages like "brief", "what happened", "morning update", "overnight summary".
npx skillsauth add gtapps/claude-code-hermit 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.
Provide a concise executive summary of recent session activity. Designed for morning check-ins, phone/channel consumption, and quick status updates.
If config.always_on is true, deliver all operator-facing output per CLAUDE-APPEND.md § Operator Notification. The terminal is unmonitored in always-on mode. For the push-fallback branch, condense the brief to a single line (≤200 chars, no markdown): include whichever of yesterday's/today's cost, open proposal count, and active heartbeat alerts are present and non-zero; omit zero or unavailable fields. Example: Brief: 16 proposals open, yesterday $0.42, 1 alert — open CC to view. In interactive mode, output to terminal. This applies to all flags below.
Delivery: After composing the brief, deliver it to the operator (see Always-On Delivery Rule above).
Emphasize forward-looking content:
.claude-code-hermit/cost-summary.md for cost context. Include: "Yesterday: $X.XX (12.3K tokens) across N sessions" — read the Date, Cost, and Tokens columns from the trend table for yesterday's row.config.always_on is true: what happened overnight (activity since evening routine)config.always_on is false: frame as "here's where things stand" rather than "what happened overnight"config.always_on is true: run bash "${CLAUDE_PLUGIN_ROOT}/scripts/check-upgrade.sh" "${CLAUDE_PLUGIN_ROOT}" from the project root. If it emits an ---Upgrade Available--- section, append a final line to the brief: ⚠ Plugin update available: <the version line> (the version line already ends with Run /claude-code-hermit:hermit-evolve; do not repeat it). Output nothing if the script is silent. (Interactive operators already see this notice at session-start step 2; the gate avoids double-notification.)After composing the morning brief, check state/micro-proposals.json → pending for entries with status: "pending" (fresh read — re-read the file(s) now; do not reuse a value cached in context from before compaction):
follow_up_count of 0: append each as a final line: MP-YYYYMMDD-N (tier N): [question] — Reply "MP-YYYYMMDD-N yes" or "MP-YYYYMMDD-N no". (Bare yes/no accepted when only one pending.)follow_up_count of 1: append with softer framing: "Still waiting on MP-YYYYMMDD-N: [question] — ignore again to drop it". Increment follow_up_count to 2.follow_up_count >= 2: read question first, then set status: "expired", remove from pending. Append micro-resolved event via append-metrics.js with "action":"expired","question":"<question>". Do not resurrect unless fresh evidence accumulates from scratch.Delivery: After composing the brief, deliver it to the operator (see Always-On Delivery Rule above).
Emphasize backward-looking content:
date field, or ## Summary for pre-Observatory reports, plus current SHELL.md progress log).claude-code-hermit/cost-summary.md for today's cost and token total. If the summary is stale (its frontmatter updated date is not today), the cost-tracker will regenerate it on the next interaction — use the trend table's today row (Cost and Tokens columns) or fall back to scanning reports.in_progress or has progress entries since last report, note it in the brief (e.g., "Session still open — run /session-close to archive.") and let the operator close explicitly. Exception: if config.always_on is true AND config.routines contains an enabled entry with skill containing daily-auto-close, suppress the note — the auto-close routine archives it at midnight. Idle transitions are owned by the session skill and session-mgr; brief does not trigger them.Current behavior — general purpose summary as described below.
.claude-code-hermit/sessions/SHELL.md exists (fresh read — re-read the file(s) now; do not reuse a value cached in context from before compaction):
in_progress: summarize the active task (existing behavior below)idle (session between tasks): format as:
[Brief] YYYY-MM-DD | idle | N tasks completed
Session: since [start date]
Last: [latest Session Summary entry] — [status]
Cumulative: $X.XX (12.3K tokens) across N tasks
Status: Idle — ready for what's next
Then check for auto-detected proposals (step after Output Format) and return..claude-code-hermit/sessions/S-*-REPORT.md (sort by filename, take the highest number):
/claude-code-hermit:session to start."Keep the output to 5 lines, plus an optional 6th line for pending proposals (see Rules below):
[Brief] YYYY-MM-DD | [tags if present]
Working on: one-line description
Status: completed/partial/blocked (X/Y tasks) | $cost spent (12.3K tokens)
Done: step1, step2, step3
Next: description of next action (or "Session complete" if all done)
TaskList, comma-separated. If too many, show first 3 and "+ N more"TaskList. If blocked, show "Blocked: reason".claude-code-hermit/proposals/ for files with source: auto-detected and status: proposed (read from YAML frontmatter if present, fall back to bullet metadata). (fresh read — re-read the file(s) now; do not reuse a value cached in context from before compaction). If any exist, append a 6th line: Proposals: N auto-detected proposal(s) pending reviewWhen invoked with "brief today", "daily summary", or "what happened today":
Scan all session reports archived today (match date in YAML frontmatter, or Date in ## Summary for pre-Observatory reports) plus the current SHELL.md progress log. Read .claude-code-hermit/cost-summary.md for aggregated cost data. Format as a day-level summary covering: work done, cost, and proposals created/resolved.
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.