Skip to content
Education
Skill

/morning-brief

Prepare a daily briefing from configured calendar, email, reminders and goals sources.

From plugin
claudeblattman
48229 skills7 agents2 commands

Claude Code

$ npx -y skills add chrisblattman/claudeblattman --skill morning-brief --agent claude-code

SKILL.md

morning-brief.SKILL.md
name: morning-brief
description: "Prepare a daily briefing from configured calendar, email, reminders and goals sources."

Morning Briefing

*v1.5 — Unified hard deadline keywords; edge case fixes; structural cleanup*

Generate a comprehensive daily morning briefing combining calendar, reminders, inbox state, weather, meeting context, and optional email triage into a single view.

Prerequisites

This skill requires several MCP integrations and config files to function fully. Missing components degrade gracefully (sections are omitted, not errors).

**Required:**

  • **Gmail MCP** -- for inbox scanning, VIP detection, waiting-for detection
  • **Google Calendar MCP** -- for today's schedule and lookahead

**Recommended:**

  • Config files (see First-Time Setup below):
  • `~/.claude-assistant/config/email-policy.md` -- VIP lists, email routing rules
  • `~/.claude-assistant/config/calendar-policy.md` -- calendar IDs, working hours, city name
  • `~/.claude-assistant/config/triage-config.md` -- label IDs, vendor domains, classification rules
  • `~/.claude-assistant/config/goals.yaml` -- objectives and priorities for goal alignment

**Optional:**

  • **Granola MCP** -- for meeting context from past transcripts
  • **Apple Reminders** (macOS only) -- for task/reminder integration
  • `/triage-inbox` skill -- for auto-triage phase
  • Health check script at `~/.claude-assistant/scripts/check-sync.sh` -- for system health monitoring

First-Time Setup

1. **Create config directory:**

   mkdir -p ~/.claude-assistant/config
   mkdir -p ~/.claude-assistant/state
   mkdir -p ~/.claude-assistant/logs
   mkdir -p ~/.claude-assistant/scripts

2. **Create calendar-policy.md** with at minimum:

   ## Calendars
   - primary (your-email@gmail.com)
   - [add other calendar IDs you want included]

   ## Working Hours
   - 8:00 AM to 6:00 PM

   ## Location
   - City: [Your City]
   - Timezone: [YOUR_TIMEZONE]

3. **Create email-policy.md** with at minimum:

   ## VIP List
   ### Tier 1 (respond within 24h)
   - [name] <email@example.com>

   ### Tier 2 (respond within 48h)
   - [name] <email@example.com>

   ## @ToSelf Label
   - Label name: @ToSelf
   - Label ID: <YOUR_LABEL_ID>

4. **Create goals.yaml** (optional but recommended):

   push_level: moderate  # gentle | moderate | assertive
   objectives:
     - name: "Example project"
       weight: high
       status: active
       next_step: "Draft section 3"

5. **Create triage-config.md** if using auto-triage (see `/triage-inbox` for format).

Customization Points

| Setting | Where to Configure | Default | |---------|-------------------|---------| | **Weather city** | `calendar-policy.md` > Location > City | Omitted if not set | | **Working hours** | `calendar-policy.md` > Working Hours | 8am-6pm (10 hours) | | **Timezone** | `calendar-policy.md` > Timezone | System timezone | | **Calendar IDs** | `calendar-policy.md` > Calendars | Primary only | | **VIP list** | `email-policy.md` > VIP List | No VIP highlighting | | **Goal alignment** | `goals.yaml` > objectives | Section omitted | | **Deep work push level** | `goals.yaml` > push_level | `moderate` | | **Email delivery** | See Phase 7 below | Terminal only | | **Auto-triage** | Requires `/triage-inbox` + `triage-config.md` | Skipped | | **Granola meeting context** | Requires Granola MCP | Gmail-only context | | **Reminders** | Requires macOS (osascript) | Section omitted | | **Health check** | `~/.claude-assistant/scripts/check-sync.sh` | Skipped if not found |

Arguments

`$ARGUMENTS` can include:

  • *(none)* -- full briefing, terminal output only
  • `email` -- also email the briefing (requires email delivery setup)
  • `tomorrow` -- show tomorrow's schedule/reminders instead of today
  • `no-triage` -- skip the auto-triage phase
  • `no-reminders` -- skip the reminders phase (useful on non-macOS)

Multiple arguments can be combined: `email tomorrow`, `no-triage no-reminders`, etc.

Instructions

Phase 0: Quick Health Check (< 5 seconds)

If a health check script exists at `~/.claude-assistant/scripts/check-sync.sh`, run it before fetching any data:

bash ~/.claude-assistant/scripts/check-sync.sh 2>&1

**Interpretation:**

  • If exit code = 0 (all checks pass): Include a single line at the top of the briefing: `System health: all checks passed`
  • If exit code > 0 (any failures): Include a warning block in the briefing header summarizing failures only (omit passing checks). Format:
!! System health: [N] issue(s)
  - [failure description 1]
  - [failure description 2]

**Never block the briefing on health check results** -- failures are informational only. If the script is not found or fails to run, skip this phase silently and continue to Phase 1.

Phase 1: Read Config Files

Read available config files. Missing files are not errors -- skip the corresponding sections.

1. Read `~/.claude-assistant/config/email-policy.md` -- extract VIP lists (Tier 1, Tier 2), family addresses, @ToSelf label ID 2. Read `~/.claude-assistant/config/calendar-policy.md` -- extract calendar IDs, working hours, city name, timezone 3. Read `~/.claude-assistant/config/triage-config.md` -- extract label IDs, vendor domains, classification rules (needed only if triage is enabled) 4. Read `~/.claude-assistant/config/goals.yaml` -- extract objectives, push_level, active priorities

If a config file is missing, note it internally and continue. The briefing adapts to available data.

Phase 2: Calendar Data

Query all configured calendars for today's events (or tomorrow's if `tomorrow` argument).

For each calendar ID in `calendar-policy.md`:

mcp__google_workspace__get_events
  calendar_id: [calendar ID]
  time_min: [target date]T00:00:00[YOUR_TIMEZONE]
  time_max: [target date]T23:59:59[YOUR_TIMEZONE]

Also fetch lookahead events (tomorrow, or weekend on Fridays):

  • On Fridays: fetch Saturday AND Sunday events for
Read more
@chrisblattman
Ships withclaudeblattman

Claude Code for professionals who don't code — Skills, agents, and setup guides

48229 skills7 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
482
Star history of chrisblattman/claudeblattman on GitHub, a chart by star-history.com

Other skills on claudeblattman.

ask-agents

ask-agents

Ask the specific Claude, Codex, Gemini, or Grok agent the user names and automatically retrieve its response. Use for targeted…

council

council

Develop independent approaches to a task, decision, plan, or draft, then use a fresh worker to synthesize them. Use for an…

done

done

Close out current work by saving decisions, unresolved tasks, useful artifacts, a session log and a current-state handoff for the…

kit-setup

kit-setup

Discover and test optional Claude, Codex, Gemini through Antigravity, and Grok subscription connections. Help with missing CLI or…

More skills from other plugins.

lesson-quiz

lesson-quiz

Test a learner on a single Claude Code tutorial lesson (01-10) with 10 questions, scoring answers and flagging weak spots. Use…

@luongnv89@luongnv89Install Skill
build-personal-skill

build-personal-skill

Evidence-based creation of a reusable personal course-making Skill from the user's own classroom and chat history. Use when the…

@thu-maic@thu-maicInstall Skill

Questions about morning-brief.

Which coding agents can use morning-brief?
morning-brief installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.