Meeting prep
Skill mshadmanrahman/pm-operating-system/_context/skills/meeting-prep
An opinionated workflow system that restructures how product managers work with Claude Code. 16 PM skills, 9 agents, 10 coding rules, 13 slash commands, 6 automation hooks, product brain system, and session lifecycle with memory/handoffs.
npx -y skills add mshadmanrahman/pm-operating-system --skill meeting-prepAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Pre-meeting context gathering across all connected systems. Pulls recent interactions, open items, and suggested talking points for any person or topic. Triggers on: "meeting prep", "prep for my meeting", "meeting with X", "prep for 1:1", "before my meeting", "get ready for sync", "/meeting-prep".
SKILL.md
5.2 KB, as published. Nobody here has run it
Meeting Prep Skill
Gathers cross-channel context before any meeting so you walk in fully prepared. Works for person-based prep (1:1s) and topic-based prep (product syncs, reviews).
When to Activate
- User says "meeting prep", "prep for my meeting with X", "1:1 prep"
- User provides a person name or meeting topic to prepare for
- User says "what should I discuss with X?"
- Before any recurring sync where context would help
Input
The user provides ONE of:
- Person name: "Daniel Carlbom", "Nina", "Marco"
- Topic/meeting name: "ESP review", "Big Room Planning", "Product Sync"
- Calendar event: A specific meeting from today's calendar
If no input, check today's Google Calendar for the next upcoming meeting and prep for that.
Execution
Step 0: Resolve Target
If the user gave a person name, that's the search target. If the user gave a topic, use it as the search query across all sources. If no input, get next meeting from Google Calendar:
Google Calendar MCP → list today's events → pick next upcoming → extract attendees + title
Step 1: Parallel Data Gathering (Fan-Out)
Launch parallel searches across all connected sources. Use the Agent tool with subagent_type="Explore" or direct MCP calls depending on complexity.
For person-based prep:
| Source | Query | What to Extract |
|---|---|---|
| Obsidian vault | Search notes mentioning person name | Last 3 meeting notes, decisions, action items |
| Granola MCP | query_granola_meetings with person name | Last meeting transcript, key points |
| Jira MCP | searchJiraIssuesUsingJql: assignee = "{person}" OR reporter = "{person}" AND updated >= -14d | Their active issues, recent updates |
| Slack MCP | slack_search_public_and_private for recent DMs/threads with person | Recent conversations, open threads |
| GitHub MCP | search_pull_requests by author | Their recent PRs (if engineering) |
| Confluence MCP | searchConfluenceUsingCql: contributor = "{person}" AND lastModified > now("-14d") | Pages they've been editing |
For topic-based prep:
| Source | Query | What to Extract |
|---|---|---|
| Obsidian vault | Search notes mentioning topic | Meeting history, decisions, context |
| Jira MCP | searchJiraIssuesUsingJql: text ~ "{topic}" AND updated >= -30d | Related tickets, current status |
| Slack MCP | slack_search_public_and_private for topic | Recent discussions, decisions |
| Confluence MCP | searchConfluenceUsingCql: text ~ "{topic}" AND lastModified > now("-30d") | Specs, RFCs, documentation |
| Gmail MCP | gmail_search_messages for topic | Email threads about topic |
Step 2: Synthesize Prep Doc
Merge all results into a structured prep document.
Output Format
Output directly in the conversation (do NOT create a file unless asked):
# Meeting Prep: {Person or Topic}
**For:** {Meeting name if known} | **When:** {Time if known}
## Last 3 Interactions
1. **{Date}** ({source}): {1-2 sentence summary}
2. **{Date}** ({source}): {1-2 sentence summary}
3. **{Date}** ({source}): {1-2 sentence summary}
## They're Waiting On You
- {Action item you owe them, with source}
- {Action item you owe them, with source}
(If none found: "Nothing outstanding found.")
## You're Waiting On Them
- {Action item they owe you, with source}
- {Action item they owe you, with source}
(If none found: "Nothing outstanding found.")
## Their Current Focus
- {What they're working on based on Jira/GitHub/Slack}
- {Recent PRs or tickets}
## Open Threads
- {Unresolved Slack threads or email chains}
- {Blocked Jira issues}
## Suggested Talking Points
1. {Based on open items and recent activity}
2. {Based on unresolved threads}
3. {Based on upcoming deadlines or decisions}
Rules
- Recency bias: Prefer last 14 days for people, last 30 days for topics
- No speculation: Only include items found in actual sources. If a source returns nothing, skip that section
- Cite sources: Always note where information came from (Jira, Slack, Obsidian, etc.)
- Keep it scannable: This should be readable in 2 minutes before a meeting
- Respect privacy: Don't include private Slack DMs unless the user is a participant
Fallback
If MCP tools are unavailable or return errors:
- Search Obsidian vault directly (always available)
- Note which sources were unreachable
- Still produce the prep doc with whatever was found
Examples
User: "meeting prep Daniel Carlbom"
→ Searches all sources for Daniel, produces person-based prep
User: "prep for ESP review"
→ Searches all sources for ESP/Explore Similar Programs, produces topic-based prep
User: "prep for my next meeting"
→ Checks Google Calendar, finds next meeting, preps based on attendees + title