# Morning Brief

> Scan industry news, summarize important emails, check today's calendar, and send a 60-second brief to Slack DM. Runs automatically via GitHub Action at 6 AM GST or on-demand. Triggers on: morning brief, daily brief, news brief, what did I miss, catch me up, brief me.

- Skill: `talgacapri/morning-brief` (Agent Skill)
- Install (CLI): `npx skillmds@latest add talgacapri/morning-brief`
- Raw SKILL.md: https://api.skillmd.com/api/skills/talgacapri/morning-brief/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: talgacapri (https://skillmd.com/u/talgacapri)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/talgacapri/morning-brief

---


## Why this exists, and what I'd change

**Why it exists.** Two PMs at the same company often miss the same news because nobody runs the daily scan. This automates it: industry news plus email summary plus today's calendar, delivered to a Slack DM in 60 seconds. Cuts the "what did I miss?" ritual.

**Design tradeoffs.**
- **Slack DM delivery instead of email.** Lower-friction for daily checking. Cost: needs Slack MCP wired. Emails are more universal across orgs that don't use Slack.
- **Fixed 6am local schedule via GitHub Action.** Reliable across machines, no local cron to maintain. Cost: ties you to GitHub Actions usage limits. On a long-haul timezone shift, it fires at the wrong local time until you update the schedule.
- **Industry news topics are static config.** You declare topics once and the scout runs them daily. Cost: if your focus shifts mid-quarter, the brief is still scanning yesterday's beats.

**What I'd change.** Replace the fixed schedule with "send 30 minutes before your first calendar meeting." That hits the right cognitive moment regardless of timezone or meeting density.

---

# Morning Brief

Deliver a 60-second daily brief covering industry news, email highlights, and today's schedule, straight to your Slack DMs.

```
/morning-brief            → run now, send to Slack
/morning-brief draft      → run now, save to file only (no Slack)
/morning-brief schedule   → show automation status
```

**Time:** ~30 seconds. Uses Gmail MCP, Notion MCP, Slack MCP, and web search.

---

## Workflow (4 steps)

### Step 1 — Scan industry news

Run 3 parallel web searches covering your competitive landscape. Customize the queries below for your industry, region, and stage:

**Search 1:** `[your category] [your sector] [your region] news [current month] [current year]`
**Search 2:** `[your regulatory environment] [your industry] regulation [current year]`
**Search 3:** `AI [your category] funding [current year]`

> Example for a B2B SaaS in the US workflow-automation space:
> - Search 1: `workflow automation SaaS competitors news [month] [year]`
> - Search 2: `SOC 2 enterprise SaaS data privacy regulation [year]`
> - Search 3: `AI agents workflow automation funding [year]`

From the combined results, extract the **top 3-5 stories** most relevant to you. Prioritize:
1. Direct competitors
2. Regulatory changes in your jurisdiction
3. Market data and projections for your category
4. AI developments relevant to your domain
5. Funding rounds in your space

For each story: one bold headline + one sentence of "so what" for your company.

### Step 2 — Summarize important emails

Use Gmail MCP:

```
Tool: summarize-top-k-emails
Arguments: { "k": 10 }
```

From the results, filter for emails that need action or awareness:

**Action required:**
- Emails from your CEO or other leadership (configure the senders to watch)
- Emails requiring a decision or response
- Active threads with multiple replies (people are engaged)

**Awareness:**
- Sentry/monitoring alerts
- Event invitations with deadlines
- External outreach worth noting

Skip: marketing newsletters, automated notifications, spam.

For each highlighted email: sender, subject, one line of what's needed.

### Step 3 — Check today's meetings

Use Notion MCP to query meeting notes for today:

```
Tool: notion-query-meeting-notes
Arguments:
  filter:
    operator: "and"
    filters:
      - property: "created_time"
        filter:
          operator: "date_is"
          value:
            type: "exact"
            value:
              type: "date"
              start_date: "YYYY-MM-DD"  ← today
```

If no meetings found in Notion (common for weekends or if notes haven't been created yet), state: "No meetings today" or "No meetings logged yet."

For weekdays with no Notion results, note it may be worth checking your calendar directly.

### Step 4 — Compile and send the brief

Format the brief as a single Slack message. Target reading time: 60 seconds (roughly 250-300 words max).

**Format:**

```
*Your 60-Second Morning Brief*  |  [Day], [Month] [DD], [YYYY]

---

*INDUSTRY NEWS*

1. **[Headline]** — [One sentence "so what" for your company]

2. **[Headline]** — [One sentence]

3. **[Headline]** — [One sentence]

---

*EMAIL HIGHLIGHTS*

1. **[Thread/subject] ([sender])** — [What's needed from you]. *[Action tag: Follow up / Decide / FYI]*

2. **[Subject] ([sender])** — [What it means]. *[Action tag]*

---

*CALENDAR*

[Meeting list with times, or "No meetings today. Use the downtime for [suggestion based on active threads/PRDs]."]
```

**Sending:**

If mode is default (not "draft"):
```
Tool: slack_send_message_draft
Arguments:
  channel_id: "U0A9SLM1CBZ"   ← your Slack user ID (DM to self)
  message: [compiled brief]
```

The draft lets you review before it goes live. If you prefer auto-send, change to `slack_send_message`.

If mode is "draft":
Save to `outputs/daily-briefs/YYYY-MM-DD-morning-brief.md` instead.

---

## Output Quality Checklist

Before sending, verify:

- [ ] **News is current:** Stories are from the past 7 days, not recycled old news
- [ ] **Emails are actionable:** Each has a clear action tag (Follow up / Decide / FYI)
- [ ] **No sensitive data in Slack:** Don't include email bodies, just subjects and summaries
- [ ] **Under 300 words:** The brief should be scannable in 60 seconds
- [ ] **"So what" for your company:** Every news item ties back to why it matters for the business
- [ ] **Weekend awareness:** On weekends, adjust tone (lighter, more strategic reading)

---

## Automation

This skill runs automatically at 6:00 AM local time via GitHub Action. Set your timezone and work-week cadence in `.github/workflows/morning-brief.yml`.

**How the automation works:**
1. GitHub Action triggers on cron schedule (defaults to Mon-Fri; change to match your work week)
2. Action runs Claude Code with this skill
3. Claude pulls news, emails, and calendar
4. Brief is sent to your Slack DMs before you wake up

**Workflow file:** `.github/workflows/morning-brief.yml`

To check automation status: `/morning-brief schedule`

To adjust the time: Edit the cron expression in the workflow file.

---

## Edge Cases

| Situation | Action |
|-----------|--------|
| No new industry news | Use "No major developments" and include one evergreen insight from recent trends |
| Gmail MCP auth expired | Skip email section, note "Gmail unavailable, check manually" |
| Weekend (Fri/Sat) | Lighter brief, focus on news + strategic reading suggestions |
| All emails are noise | State "Inbox clear, no action items" |
| Slack send fails | Fall back to saving as file in `outputs/daily-briefs/` |

---

## Related Skills

**Before this:** None required, this is a standalone morning routine.

**After this:**
- `/daily-plan` — deeper daily planning with task prioritization
- `/meeting-notes` — process meetings as they happen during the day

**Pairs with:**
- `/weekly-plan` — set weekly priorities that inform the brief's focus
- `/weekly-review` — end-of-week reflection

