ld-morning-updates

Compose and post a daily family affirmation to a life-dashboard kiosk from calendar events.

2|Updated Aug 25, 2026
One-click install
npx skills add https://github.com/plow-pbc/life-assistant-hermes-agent --skill ld-morning-updates-plow-pbc
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ld-morning-updates
Source: https://github.com/plow-pbc/life-assistant-hermes-agent/tree/main/ld-morning-updates
Command: npx skills add https://github.com/plow-pbc/life-assistant-hermes-agent --skill ld-morning-updates-plow-pbc

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Families with a shared kiosk display need a fresh, personal morning message each day without anyone manually writing it. This Skill reads the household's upcoming calendar events and posts one short, warm affirmation to the kiosk every morning at 7am. ## Core Features & Use Cases - Calendar-grounded affirmations: Reads the next three days of events across all configured calendar sources via the vendored plow-gog CLI, then anchors the message in something specific like a recital, date night, or trip. - Privacy-safe kiosk posting: Enforces a strict privacy boundary so sensitive events (medical, financial, surprises) never appear on the shared family display, and treats calendar content as untrusted data. - Deterministic cron-safe delivery: Uses a byte-identical argv for Latch allow-listing, a fixed handoff file, and environment-based credentials so the unattended 7am cron run never stalls on approvals. - Use Case: A household runs a Hermes agent with a life-dashboard kiosk; each morning the family sees a message like "School play tomorrow — break a leg, team" generated automatically from their shared calendars. ## Quick Start Ask the agent to run the morning affirmation now to test the kiosk posting, or ask it to set up the daily 7am kiosk affirmation for your family dashboard.

Frequently Asked Questions about ld-morning-updates

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I post a daily affirmation to a kiosk display from calendar events?▼

Read upcoming events with the plow-gog calendar CLI, compose a message of 115 characters or fewer anchored in a specific family event, write it to the fixed handoff file, then run the post_message.py helper which delivers it to the kiosk endpoint.

How do I schedule a cron job that runs a command without approval prompts?▼

Keep the command argv byte-identical on every run so Latch always-allow rules match it, and use relative flags like --days=3 instead of computed dates. Avoid shell wrappers, heredocs, or interpreter one-liners since cron runs have no user to approve flagged commands.

Can this skill read multiple Google Calendars in one call?▼

Yes, one plow-gog call covers every source by comma-joining all calendar_id values under a single account. Each calendar is addressed by its globally-unique id, and including shared family calendars is required so their events appear in the kiosk message.

Why does the calendar command fail when I add safety flags?▼

Latch injects its own safety flags and refuses any caller-supplied duplicates, so adding --readonly or --wrap-untrusted makes every run fail before it starts. Pass only the exact documented argv with config-supplied account and calendar values.

What happens if the calendar account is not connected?▼

The skill skips the calendar read for that run and composes the affirmation from an abstract fallback instead. The message still posts to the kiosk, just without event-specific grounding.

How are kiosk credentials kept out of the command line?▼

The post_message.py helper reads the endpoint from DASHBOARD_ENDPOINT_URL and the token from DASHBOARD_TOKEN environment variables loaded from a mode-600 .env file. Credentials never appear in argv, and the handoff file path is fixed so injected input cannot steer the post.