Interactive meeting preparation — builds a relationship brief and talking points before a call. Use when the user says "prep me for my call with", "I'm meeting with X", "prepare me for", "what should I bring up with", "meeting prep", "get ready for my call", or wants to review history with someone before a meeting.
Interactive meeting preparation that searches your entire conversation history with someone, synthesizes a relationship brief, and produces talking points — before you walk into the room.
This is a multi-phase interactive flow, not a single command. Walk the user through each phase using AskUserQuestion, pushing back on vague answers.
Before asking who the user is meeting with, check if upcoming meetings are available from any calendar source. Try these in order — use the first that works:
1. Google Calendar MCP (best — most Minutes users have Claude + MCP):
If mcp__claude_ai_Google_Calendar__gcal_list_events is available, query today's remaining events:
gcal_list_events(
timeMin: "<now ISO, e.g. 2026-03-19T14:00:00>",
timeMax: "<end of day, e.g. 2026-03-19T23:59:59>",
condenseEventDetails: false
)
Do NOT hardcode a timezone — omit the timeZone parameter so the MCP uses the user's calendar default. This returns attendees, event titles, and times. Parse the results to find the next upcoming meeting with other people (skip all-day events and events with no attendees).
2. gog CLI (if installed):
gog calendar list --today --json -a <account> 2>/dev/null
3. Apple Calendar (osascript) (every Mac, zero install):
osascript -e 'tell application "Calendar" to get {summary, start date} of (every event of every calendar whose start date >= (current date) and start date < ((current date) + 1 * days))'
4. None available — skip to Phase 1 and ask manually.
If upcoming meetings are found: Present via AskUserQuestion: "I see you have these meetings coming up today:
Which one are you prepping for?"
Options: list each meeting + "None of these — I want to prep for something else"
If the user picks a meeting, auto-populate the person name and skip Phase 1. Pull attendee names from the calendar event directly.
If no upcoming meetings or calendar unavailable: Silently skip to Phase 1. Don't error or apologize — just ask manually.
If Phase 0 already identified the person, skip this phase.
Otherwise, ask via AskUserQuestion: "Who are you meeting with?"
If the answer is specific (a name like "Alex" or "Case"): → Check for learned aliases first:
node "${CLAUDE_PLUGIN_ROOT}/hooks/lib/minutes-learn-cli.mjs" aliases "<name>" 2>/dev/null
If aliases exist, search across every returned variant and merge the hits before deciding there is no history.
→ Search all past meetings:
minutes search "<name>" --limit 50
Also search common variations — first name, last name, nickname.
If the answer is vague ("the team", "everyone", "my usual meeting"): → Push back: "Be specific. Name one person who'll be in the room. I'll search everything you've discussed with them."
If the answer is a topic ("the pricing meeting", "the Q2 planning call"): → Adapt to topic-based prep:
minutes search "<topic>" --limit 20
Skip the relationship brief and go straight to a topic brief instead.
Read each matching meeting file with Read. Build a relationship brief:
Meeting history:
Recurring topics:
Open commitments:
action_items where assignee matches the user)action_items where assignee matches the other person)open)Decision history:
decisions: frontmatter)Present the relationship brief to the user. Don't ask for approval — just show it and move to Phase 3.
If there are zero past meetings: Say: "I don't have any recorded meetings with [name]. This will be your first meeting on record. What's the context — how do you know them?"
Then skip the relationship brief and go straight to Phase 3 with whatever context the user provides.
Ask via AskUserQuestion: "What's the one thing you'd regret not discussing in this meeting?"
If the answer is specific ("finalize the pricing at monthly billing", "get a commitment on the hire"): → Frame talking points around that goal. Connect it to relationship data — e.g., "Alex's mentioned pricing 3 times recently. She's ready for this conversation."
If the answer is vague ("just catch up", "the usual"): → Push back with evidence: "Based on your last 3 meetings with Alex, these topics are active: [list]. Which one matters most today?"
If the user skips ("I don't know yet" / "nothing specific"): → Accept it. Frame as an open-ended catch-up. Still produce talking points based on open items and recent topics.
Save the prep brief to ~/.minutes/preps/ for later pickup by /minutes-debrief:
mkdir -p ~/.minutes/preps
Write the file as ~/.minutes/preps/YYYY-MM-DD-{person-first-name}.prep.md with this structure:
---