/today — Daily productivity briefing

SkillCommunication

'Generates a daily productivity briefing by chaining Gmail, Calendar, Linear, and Slack into a single actionable

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /today — Daily productivity briefing skill

What this skill tells your AI

The instructions your AI receives, as published by matteotitta/genesys-skills in skills/meta/session/today/SKILL.md and read by ahel’s review.

Pull a structured daily briefing from all connected productivity tools in one shot. Designed to replace the morning ritual of checking 4 separate apps.


Claude Code Triggers

Invoke this skill when user says:

  • "/today"
  • "What's on my plate today?"
  • "Morning briefing"
  • "Daily summary"
  • "What do I need to focus on?"

Do NOT invoke when:

  • User asks about a single tool only (e.g., "check my email" → use Gmail MCP directly)
  • User asks for a specific Linear issue or calendar event
  • User wants to send an email or create a task (action, not briefing)

Modes

/today (default) — Morning briefing

Start-of-day overview. What happened overnight, what's coming up, what needs attention.

/today wrap — End-of-day wrap-up

What was done today, what's still pending, what to prep for tomorrow.

/today focus — Quick focus check

Minimal output. Just the top 3 things that need attention right now.


Process

Phase 1: Gather data (parallel)

Pull from all 4 sources simultaneously using parallel tool calls. Do NOT run these sequentially.

1a. Gmail — Use mcp__google-workspace__search_gmail_messages

  • Morning mode: query: "newer_than:12h", page_size: 15
  • Wrap mode: query: "newer_than:24h", page_size: 20
  • Always pass user_google_email: "matteo@genesysgrowth.com"
  • Then batch-fetch content for the returned message IDs using get_gmail_messages_content_batch

1b. Calendar — Use mcp__google-workspace__get_calendar_events

  • Morning mode: today's events
  • Wrap mode: today's events + tomorrow's first 3
  • Always pass user_google_email: "matteo@genesysgrowth.com"
  • Use calendar ID: matteo@genesysgrowth.com

1c. Linear — Use mcp__plugin_linear_linear__list_issues

  • assignee: "me", limit: 15
  • Filter to active states: In Progress, In Review, Next Up
  • Sort by priority (Urgent > High > Medium > Low)

1d. Slack — Use mcp__claude_ai_Slack__slack_search_public_and_private

  • Morning mode: search for mentions in last 12 hours
  • Wrap mode: search for mentions in last 24 hours
  • Query: from:me OR to:me or recent channel activity

1e. Recent decisions — Pull from session recall index

python3.claude/hooks/session-indexer.py --decisions --days 1
  • Morning mode: last 24h of decisions
  • Wrap mode: today's decisions only
  • If recall.db doesn't exist, skip this source silently

Phase 2: Synthesize

Process raw data into a structured briefing. Apply these rules:

Email triage:

  • Categorize: Action required / FYI / Can wait
  • Flag emails from clients (match against known client names from CLAUDE.md)
  • Surface any emails with deadlines or time-sensitive language

Calendar awareness:

  • Flag meetings starting in the next 2 hours
  • Note prep needed (if meeting has agenda or docs linked)
  • Identify back-to-back blocks with no buffer

Linear priorities:

  • Group by project (ClientCo, Genesys, GTM Engineer School, etc.)
  • Highlight blockers or overdue items
  • Note cycle progress if relevant

Slack highlights:

  • Summarize unread mentions
  • Flag any DMs that need responses
  • Note active threads you're part of

Phase 3: Output

Format as a structured briefing following the template below.


Tool Reference

ToolMCPPurpose
Gmail searchmcp__google-workspace__search_gmail_messagesFind recent emails
Gmail readmcp__google-workspace__get_gmail_messages_content_batchRead email content
Calendarmcp__google-workspace__get_calendar_eventsToday's schedule
Linearmcp__plugin_linear_linear__list_issuesActive tasks
Slack searchmcp__claude_ai_Slack__slack_search_public_and_privateRecent mentions
Slack channelmcp__claude_ai_Slack__slack_read_channelChannel activity

Notes

  • Always run Phase 1 sources in parallel — do not wait for one before starting the next
  • If any source fails (MCP unavailable), skip it and note "[Source] unavailable" in the briefing
  • Client name matching: use client names from CLAUDE.md (ClientCo, ClientCo, GTM Engineer School, etc.)
  • The user's email is always matteo@genesysgrowth.com
  • Calendar ID is matteo@genesysgrowth.com
  • Keep the briefing scannable — no walls of text, use the structured format

End-of-run HTML render (optional, prompted)

After the markdown briefing is produced and shown to the user, the skill asks:

"Render this as a shareable HTML file too? (y/n)"

  • y → emit a sibling .html file in the same location: a single self-contained page (inline CSS, no external assets) with the same content laid out as: priority section at top, agenda + Linear queue + decisions in two columns below, source-of-data footer. Filename: today-{YYYYMMDD}.html.
  • n → stop; markdown stays primary.

Rationale: most /today runs are terminal-only (just for me); occasional runs get forwarded to the team or a client weekly. The prompt keeps the choice in the moment of "I just saw the output, do I want to share it?" rather than buried in a flag I'd forget. Convention from .claude/rules/throwaway-editor-pattern.md (output-not-export variant — no copy-back button, since this is a one-way shareable).

Signals

GitHub stars
36
Forks
14
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
today-matteotitta
Source
github.com/matteotitta/genesys-skills