name: alfred-meeting-prep description: > [Alfred] Prepare Master for meetings. Extracts meetings from Google Calendar, prepares agendas with expected outcomes, key questions, and information gaps. Use when: "prep my meetings", "what meetings do I have", "prepare for tomorrow", "meeting prep". allowed-tools: Read, Write, Edit, Glob, Grep, Bash(git:, pnpm:, npx tsx .claude/skills/sync-data-gcal/*), WebFetch, Task
Alfred Meeting Prep
Scope: Today + Tomorrow (all meetings). Every meeting audited with prep.
Required Context
context/WHO_IS_MASTER.md— calendar accountcontext/TEAM.md— who's who
Status Definitions
Every meeting gets exactly ONE status:
PREP_NEEDED— upcoming, requires preparationACTION_NEEDED— has unresolved gap or conflictCOMPLETED— already happenedSKIPPED— cancelled or declined
Process
1. Check for Previous Run Today
Glob: outputs/YYYY-MM-DD-*-meeting-prep.md
If previous run exists:
- Still scan Google Calendar (do not skip)
- Carry over previous prep data as correct
- Focus on NEW or CHANGED meetings
- Update status for meetings now COMPLETED
- Note "Changes since last run: X" in summary
2. Extract Calendar (MANDATORY)
Never infer meeting attendees from email triage, HubSpot bookings, or other indirect sources. The calendar API is the single source of truth for who is in each meeting.
Fetch events via the gcal CLI script:
npx tsx .claude/skills/sync-data-gcal/fetch.ts --days 2
This returns JSON with all events for today + tomorrow from the primary calendar. Each event includes: title, start/end, attendees (with emails and response status), organizer, location, description, hangout link, and event ID.
Why this matters: HubSpot bookings can reschedule or replace earlier bookings in the same slot. Email confirmations may refer to different meetings. Only the calendar event data shows the current, correct attendee.
3. Classify Each Meeting
- End time < now → COMPLETED
- Cancelled/declined → SKIPPED
- Has unresolved conflict or gap → ACTION_NEEDED
- Upcoming → PREP_NEEDED
4. Build Prep for Each PREP_NEEDED Meeting
Generate:
- Agenda (3 items based on meeting type and context)
- Expected Outcome (specific, measurable)
- Questions to Ask (3 open-ended questions)
- Gaps (unknowns to resolve before meeting)
5. Write Report
Output: outputs/YYYY-MM-DD-HHmm-meeting-prep.md (local time)
Output Template
STATUS: COMPLETE
# Meeting Prep Audit — YYYY-MM-DD HH:mm
**Calendar:** [from WHO_IS_MASTER.md]
**Period:** Today + Tomorrow
## Summary
- PREP_NEEDED: X
- ACTION_NEEDED: X
- COMPLETED: X
- SKIPPED: X
## Action Items
1. **Meeting** (Time) — Issue → Resolution needed
2. ...
## Conflicts
1. **Time** — Conflict → Suggested resolution
2. ...
## Full Audit
1. **Meeting Title** — Date, Time — STATUS
- Attendees: ...
- Agenda: ...
- Expected outcome: ...
- Questions: ...
- Gaps: ...
2. ...