Skip to content
Back to skills

Daily Roundup

ASecurity

Morning briefing combining email, yesterday's meetings, and Slack into one section appended to the weekly report

  • 3 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added May 26, 2026
businessgogit

Works with

  • mcp

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add er1chu/claude-skills-weekly --skill daily-roundup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Daily Roundup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Daily Roundup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/er1chu-daily-roundup/badge)](https://www.skillsdirectory.com/skills/er1chu-daily-roundup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: daily-roundup
description: Morning briefing combining email, yesterday's meetings, and Slack into one section appended to the weekly report
allowed-tools: Read,Edit,Write,Glob,Grep,mcp__playground-slack-mcp__get_messages,mcp__gworkspace-mcp__read_mail,mcp__gworkspace-mcp__calendar_events,mcp__gworkspace-mcp__search_drive,mcp__gworkspace-mcp__read_file
---

# Daily Roundup

Generate a combined morning briefing from email, yesterday's meetings, and Slack. Append as a single section to the current week's weekly report.

## Arguments

- None required. Always processes the last 24 hours.

## Steps

### 0. Setup

1. Determine today's date, day of week, and yesterday's date.
2. Find the current week's weekly report: look in the current year folder for the most recent `w##-mm-dd` folder, read the `weekly-report-*.md` file.
3. Check if a `## Daily Roundup: [Today's Day Month Date]` section already exists. If so, you will replace it (idempotent).

### 1. Email (Gmail, last 24h)

1. Use `mcp__gworkspace-mcp__read_mail` with a query to fetch recent messages.
   - Query: `newer_than:1d` to get last 24 hours
   - Set `max_results: 50`, `include_body: true`
2. **Filter out noise:**
   - Skip messages from `noreply@`, `no-reply@`, `notifications@`, `calendar-notification@google.com`
   - Skip Google Calendar invites (subject starts with "Invitation:" or "Updated invitation:")
   - Skip automated newsletters, marketing (look for `unsubscribe` in body as a signal)
   - Skip Jira/GitHub notification emails (automated system notifications)
   <!-- TODO: customize - Add any other automated senders your org uses -->
3. **Categorize remaining emails:**
   - **Needs Response**: Direct questions to you, requests, asks, emails where you're in To (not CC)
   - **Worth Knowing**: Team updates, project threads, decisions being made
   - **FYI**: Announcements, broadcasts, CC'd threads
4. For each email, note: sender, subject, one-line summary, suggested action if applicable.

### 2. Yesterday's Meetings (skip on Mondays)

If today is **Monday**, skip this section entirely. Add a note: "Meetings skipped (Monday). See `/monday` briefing for weekly context."

Otherwise:

1. Use `mcp__gworkspace-mcp__calendar_events` to fetch yesterday's events.
   - Set `time_min` to yesterday 00:00 and `time_max` to yesterday 23:59.
   - Use the primary calendar.
2. For each meeting event:
   - Note: time, title, attendees (first names or short list)
   - Check if a meeting note already exists in the current week folder. Use `Glob` to search for `meeting-[yesterday's date]-*.md` in the week folder.
3. **Check for Gemini transcripts in Google Drive:**
   - Use `mcp__gworkspace-mcp__search_drive` with query: `name contains '[meeting title]' and mimeType contains 'document' and modifiedTime > '[yesterday ISO date]'`
   - Also try: `fullText contains 'transcript' and name contains '[partial meeting title]' and modifiedTime > '[yesterday ISO date]'`
   - If a transcript document is found and no meeting note file exists yet:
     a. Read the transcript with `mcp__gworkspace-mcp__read_file`
     b. Create a meeting note file: `meeting-[YYYY-MM-DD]-[slugified-title].md`
     c. Use this frontmatter:
        ```yaml
        ---
        type: meeting
        date: [YYYY-MM-DD]
        people: []
        projects: []
        tags: []
        ---
        ```
     d. Add a Summary section with key points from the transcript (3-5 bullets)
     e. Add a Next Steps section with action items
     f. Do NOT import the full transcript (leave that for manual review)
     g. Note in the roundup that a meeting note was auto-created
4. For each meeting, produce a brief summary line for the roundup.

### 3. Slack (last 24h)

1. Use `mcp__playground-slack-mcp__get_messages` with action: `my_messages`
   - Set time range to last 24 hours
   - Request count: 100
2. **Categorize:**
   - **Needs Response**: Direct @mentions, questions, requests, DMs needing reply
   - **Worth Knowing**: Thread updates, project decisions, shared context
   - **FYI**: Announcements, links shared, general channel activity
3. Include message snippets, channel names, and suggested actions.

### 4. Consolidate Quick Actions

Across all three sources, collect the top action items into a single checklist. Prioritize:
1. Direct asks/questions waiting for response (from any source)
2. Decisions needing input
3. Items to acknowledge or review

Limit to 5-7 items max. Be specific ("Reply to Jane about project timeline" not "Check email").

### 5. Append to Weekly Report

Construct the full roundup section and append it to the weekly report. If a roundup for today already exists, replace that section.

## Output Format

```markdown
## Daily Roundup: [Day] [Month] [Date]

**Generated:** [YYYY-MM-DD HH:MM]

### Email
**[X] messages scanned, [Y] relevant**

**Needs Response:**
- **[Sender]**: [Subject] - [one-line summary]
  - Action: [specific action]

**Worth Knowing:**
- **[Sender]**: [Subject] - [one-line summary]

**FYI:**
- [Subject] from [Sender] - [brief note]

*[If no relevant emails: "Inbox clear. No action needed."]*

### Yesterday's Meetings
*[If Monday: "Skipped (Monday). See Monday briefing for weekly context."]*

- **[HH:MM] [Meeting Title]** ([Attendee1], [Attendee2])
  - [2-3 line summary or "No transcript available"]
  - [If note created: "Meeting note created: [[meeting-YYYY-MM-DD-slug]]"]

*[If no meetings: "No meetings yesterday."]*

### Slack
**[X] messages scanned**

**Needs Response:**
- **[Person]** in #[channel]: "[snippet]"
  - Action: [specific action]

**Worth Knowing:**
- **[Topic]** in #[channel]: [summary]

**FYI:**
- [summary items]

*[If quiet: "Slack quiet. No action needed."]*

---

**Quick Actions:**
- [ ] [Top consolidated action items from all sources]
```

## Error Handling

- If Gmail MCP is unavailable: skip Email section, add note "Email: skipped (Gmail MCP unavailable)"
- If Calendar MCP is unavailable: skip Meetings section, add note "Meetings: skipped (Calendar MCP unavailable)"
- If Slack MCP is unavailable: skip Slack section, add note "Slack: skipped (Slack MCP unavailable)"
- If Drive search fails when looking for transcripts: note it and continue without transcript
- If weekly report file is not found: create a warning in the log and exit (don't create files in wrong locations)
- Always produce output even if all three sources fail (the section will just note the skips)

## Notes

- On Mondays, skip the meetings section. The `/monday` skill runs earlier and covers Monday context.
- Meeting note auto-creation is lightweight: summary + next steps only. Full transcript import is left to manual review.
- Focus on signal over noise. The goal is a 2-minute scan, not a comprehensive log.
- Email filtering should be aggressive. When in doubt, skip it.
- The idempotent section replacement means you can safely re-run this skill if a data source was temporarily unavailable.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.