meeting-prep

$npx mdskill add sonichi/sutando/meeting-prep

Prepares meeting briefs with attendee info, context, and talking points

  • Gathers attendee details, recent emails, and context for upcoming meetings
  • Uses Google Calendar, Gmail API, and macOS Contacts for data collection
  • Analyzes meeting time, attendee relationships, and recent communication patterns
  • Delivers structured prep documents 30 minutes before meetings or on demand

SKILL.md

.github/skills/meeting-prepView on GitHub ↗
---
name: meeting-prep
description: "Auto-prepare for upcoming meetings: attendee info, recent email threads, talking points, and agenda. Runs 30 min before each meeting or on demand."
user-invocable: true
---

# Meeting Prep

Prepare a briefing for an upcoming meeting — attendee info, recent context, and talking points.

**Usage**: `/meeting-prep [meeting name or time]`

ARGUMENTS: $ARGUMENTS

## How it works

1. **Find the meeting.** If ARGUMENTS specifies a meeting name or time, find it. Otherwise, find the next meeting starting within 60 minutes.

```bash
~/.claude/skills/google-calendar/scripts/google-calendar.py events list \
  --time-min NOW --time-max NOW_PLUS_60MIN
```

2. **Extract attendees.** From the calendar event, get the list of attendee emails.

3. **Look up each attendee.** For each attendee (skip the owner):

   a. **Contacts** — search by email:
   ```bash
   python3 ~/.claude/skills/macos-tools/scripts/contacts.py search "email@example.com"
   ```

   b. **Recent emails** — search Gmail for recent threads with this person:
   ```bash
   gws gmail users messages list --params 'q=from:email@example.com OR to:email@example.com newer_than:14d'
   ```
   Read the top 2-3 threads to extract context.

   c. **Web presence** — if the person is external or unfamiliar, do a quick web search for their name + company to understand their role.

4. **Build the brief.** Generate a concise prep document:

```
Meeting: [title]
Time: [start] - [end]
Location: [link or room]

Attendees:
- [Name] ([role/company]) — [1-line context from recent emails]
- ...

Recent context:
- [Key thread 1 summary]
- [Key thread 2 summary]

Suggested talking points:
- [Based on recent threads and meeting title]
- ...

Action items to follow up on:
- [Any commitments from prior meetings/emails]
```

5. **Deliver.** Write to `results/meeting-prep-{timestamp}.txt` so the voice agent can speak it. Also write to `notes/meeting-prep-{date}-{title-slug}.md` for reference.

## Auto-scheduling

The proactive loop should check for meetings starting in the next 30-45 minutes. If one is found and no prep exists yet, run this skill automatically. Add this check to the proactive loop:

```
Check calendar for meetings in next 30-45 min.
If found and no notes/meeting-prep-{date}-{slug}.md exists, run /meeting-prep.
```

## Tips

- Skip recurring 1:1s unless the attendee is new or there are recent email threads
- For large meetings (>5 attendees), focus on the organizer and key participants
- If the meeting has an agenda doc linked, read and summarize it
- Keep the brief voice-friendly — it will be spoken aloud

More from sonichi/sutando

SkillDescription
agent-registryLocal Agent Registry — a standalone, dependency-free service that tracks running Claude Code (and other) agent instances. Agents self-register on startup and heartbeat while alive; the Electron overlay and Sutando dashboard read the live list. Use when you need to know which coding agents are running, where, and since when.
bot2bot-postPost a coordination message from this bot to the shared bot2bot channel, @-mentioning the other Sutando node.
claude-codexBash wrapper around the local Codex CLI for non-interactive runs from inside Sutando (bridges, cron, scripts). For interactive code review or task hand-off from this Claude Code session, prefer the official `/codex:*` plugin commands; this skill is the file-bridge-compatible path that `discord-bridge.py` invokes for team-tier sandboxed delegation.
claude-geminiUse the local Gemini CLI from Claude Code with the user's existing Gemini authentication or API configuration. Use for large-context repo scans, multimodal analysis, second-opinion planning, or structured Gemini runs in the current workspace.
claude-routerChoose between the local Codex CLI and Gemini CLI from Claude Code. Use for automatic model selection when the user wants the best local delegate for code review, repo-wide analysis, planning, or implementation.
cross-node-syncRsync-over-ssh sync between Sutando nodes (Mac Studio and MacBook) for shared memory + notes. Optional — core runs fine without it; enables automatic cross-bot learning and note propagation by running from the proactive-loop cron on each pass.
deal-finderScan configured sources (Craigslist now; eBay + Facebook Marketplace planned) for used-item listings matching the owner's criteria. Currently configured for a Mac mini search (M2+, 16GB+, 512GB+, ≤$500, near 94566). Notify owner via SMS + Telegram on a match.
electron-overlay-dimmingReusable pattern for focus-based auto-dimming of Electron overlay windows — when the app loses focus, all overlay windows fade to a low opacity; when an overlay regains focus, they return to their configured opacity. Use when building always-on-top Electron overlays that should recede while the user works in other apps.
gemini-ttsRender text to mp3 via Google Gemini Flash TTS. Free-tier eligible (1500 req/day). Use for video narration, demo voiceovers, audio notes. Parallels openai-tts; default for make-viral-video.
macos-toolsmacOS native integrations: screen capture, calendar, reminders, contacts, email (Mail.app), Spotlight search. Use when the user asks about their screen, schedule, to-do list, contacts, or wants to send email on macOS.