ld-morning-triage

Posts the most important unaddressed iMessage or Gmail alert to a kiosk dashboard.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Important inbound messages — a bounced payment notice, an urgent text from a family member — get buried across iMessage and Gmail, and nobody has time to scan both inboxes twice a day. This Skill reads the last 36 hours of messages from the owner's Mac, picks the single most important unaddressed item, and surfaces it as an alert card on a kiosk dashboard plus a text to the owner. ## Core Features & Use Cases - Dual-source gathering: Reads iMessage from the Mac's Messages SQLite database (read-only) and unread Gmail via plow-gog, both through Plow Latch with byte-identical, pre-approved command lines. - Deterministic filtering: A Python script decodes typedstream message bodies, applies the unaddressed rule per chat (inbound messages after the last outbound reply), and drops excluded sender handles. - LLM ranking and safe composition: Ranks candidates with configurable priority instructions (financial alerts outrank everything by default), then composes a ≤115-character paraphrased alert that never quotes message bodies or leaks amounts and account numbers. - Use Case: At 07:05 a cron fires; the Skill finds an unread insufficient-funds email from the bank, posts "the mortgage payment bounced at Mercury" as kiosk card 1, and texts the alert to the owner. ## Quick Start Ask the agent to run the morning triage now and post today's top alert to the kiosk.

Frequently Asked Questions about ld-morning-triage

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

FAQPage Schema
How do I triage unread iMessage and Gmail messages automatically?▼

Run the triage skill, which queries the Mac's Messages chat.db read-only with sqlite3 and searches unread Gmail via plow-gog, filters for unaddressed conversations, ranks candidates, and posts the top item as a kiosk alert card.

How does the skill decide which message is most important?▼

An LLM ranks filtered candidates using configurable ranking_instructions from config.json. By default, financial alerts like failed payments or insufficient-funds notices from known senders outrank everything else.

Why must the sqlite3 and plow-gog commands be byte-identical every run?▼

Latch always-allow rules key on the exact argv, so any computed value in the command makes each run novel and strands it on a manual approval card. Relative time windows live inside the SQL or Gmail query instead.

Does the skill mark messages as read or reply to senders?▼

No. The Messages database is opened read-only and the Gmail read is a search only. The skill never replies, marks-as-read, or edits anything; it only posts the alert and returns it.

What happens if the Gmail gather fails but iMessage works?▼

The run continues with the iMessage candidates and names the Gmail failure in the final response. A broken mail read never costs the owner the iMessage alert and never passes as a quiet mailbox.

How is private message content protected in the kiosk alert?▼

The alert text is a ≤115-character paraphrase that never quotes message bodies verbatim and omits amounts, account numbers, and email addresses. The raw gather file is deleted by the filter as it reads it.