skills/zocomputer/skills/morning-briefing

morning-briefing

SKILL.md

Setup

  1. Install this skill to Skills/morning-briefing/
  2. Create a scheduled agent to run it at your preferred morning time
  3. Optional dependencies (the skill adapts to what's available):
    • Data/tasks.db (DuckDB) with a tasks table for task tracking. If you use the task-manager skill, this exists already. If not, the tasks section is skipped.
    • Gmail integration (connected via Settings > Integrations)
    • Google Calendar integration
    • Supermemory for meeting prep context

How to Run

This is an orchestration skill. Follow these steps in order, then compose and deliver the briefing.

Step 1: Gather Today's Tasks

If Data/tasks.db exists, run the helper script:

python3 /home/workspace/Skills/morning-briefing/scripts/tasks_query.py

Returns JSON with overdue and due_today arrays, sorted by priority.

If the database doesn't exist, skip this section.

Step 2: Gather Today's Calendar

Use the Google Calendar tool:

use_app_google_calendar(
  tool_name="google_calendar-list-events",
  configured_props={
    "calendarId": "primary",
    "timeMin": "<today>T00:00:00<tz_offset>",
    "timeMax": "<today>T23:59:59<tz_offset>",
    "timeZone": "<user_timezone>",
    "singleEvents": true,
    "orderBy": "startTime"
  }
)

Replace <today> with current date, <tz_offset> with the user's UTC offset, and <user_timezone> with their timezone.

Step 3: Gather Inbox Highlights

Use Gmail to find important unread emails:

use_app_gmail(
  tool_name="gmail-find-email",
  configured_props={
    "q": "is:unread is:important newer_than:1d",
    "withTextPayload": true,
    "maxResults": 5
  }
)

If fewer than 3 results, also try:

use_app_gmail(
  tool_name="gmail-find-email",
  configured_props={
    "q": "is:unread newer_than:1d -category:promotions -category:social",
    "withTextPayload": true,
    "maxResults": 5
  }
)

Step 4: Gather News Digest

Customize these searches for the user's interests. Examples:

Tech/AI news:

web_search(
  query="AI technology news highlights",
  time_range="day",
  topic="news"
)

Industry-specific news (customize for user's industry):

web_search(
  query="<user's industry> news",
  time_range="day",
  topic="news"
)

Step 5: Compose the Briefing

Write the briefing in this format:

# Morning Briefing -- <Day of Week>, <Month DD, YYYY>

## Today's Schedule
<Calendar events with times, attendees, and any prep notes>

## Tasks
### Overdue
<List with priority badges, source, title>

### Due Today
<List with priority badges, source, title>

## Inbox Highlights
<3-5 most important emails with sender, subject, 1-line summary>

## News Digest
### <Category 1>
<3-5 notable items with 1-line summaries>

### <Category 2>
<2-3 relevant items>

Add a one-liner observation at the top if something stands out (overdue count, big meeting, breaking news).

Step 6: Deliver

Email:

send_email_to_user(
  subject="Morning Briefing -- <Month DD>",
  markdown_body="<full briefing markdown>"
)

SMS (condensed version, max 3-4 lines):

send_sms_to_user(
  message="Morning: <X> tasks due, <Y> overdue. <top meeting>. <one notable item>"
)

Step 7: Archive

Save the full briefing to:

/home/workspace/Records/Briefings/<YYYY-MM-DD>-morning.md

Customization

  • News categories: Edit step 4 to match the user's interests and industry
  • Delivery timing: Adjust the scheduled agent time
  • Delivery channels: Email only, SMS only, or both
  • Meeting prep: If Supermemory is available, search for context about upcoming meeting attendees
  • Tone: Match the user's AI persona voice

Notes

  • If any section fails to load (API error, no results), include it with a "Could not load" note rather than skipping entirely.
  • News items should be deduplicated across sources.
  • The SMS should be ruthlessly brief. Only the most critical info.
Weekly Installs
1
GitHub Stars
14
First Seen
3 days ago
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1