Skip to content
Education
Skill

/pre-meeting-brief

Prepare a meeting brief from configured calendar, correspondence, project documents and previous meeting records.

From plugin
claudeblattman
48229 skills7 agents2 commands

Claude Code

$ npx -y skills add chrisblattman/claudeblattman --skill pre-meeting-brief --agent claude-code

SKILL.md

pre-meeting-brief.SKILL.md
name: pre-meeting-brief
description: "Prepare a meeting brief from configured calendar, correspondence, project documents and previous meeting records."

<!-- pre-meeting-brief v1.3 | sanitized from private v1.3 -->

Pre-Meeting Brief

*v1.3 — Granola health-check simplified after the Granola public-API rewrite. Phase 0f no longer probes transcript content (the upcoming meeting has no transcript yet, and probing an arbitrary prior transcript adds latency without a clean health signal — it was producing false HOLLOW). HOLLOW classification removed for Granola entirely; Granola is now OK / DEGRADED / UNAVAILABLE only. Phase 1c fallback clarified to hunt PRIOR project meetings for context, not the upcoming one. Source-confidence table, circuit breaker, and error-handling table aligned.* *v1.2 — Generates a structured pre-meeting briefing from project communications. Run from a project directory.*

Pulls context from WhatsApp, Gmail, Granola, Google Docs, and local files. Surfaces decisions required, open loops, and preparation needs. Optionally emails the brief to attendees.

Prerequisites

**Required:**

  • **Gmail MCP** — for searching and reading message context
  • **Google Calendar MCP** — for identifying the target meeting and attendees

**Recommended:**

  • **Granola MCP** — for pulling meeting transcripts
  • **WhatsApp MCP** — for picking up project group threads
  • A project `.claude/CLAUDE.md` with team roster, group JIDs, dashboard doc ID, and folder paths

**Optional:**

  • A send-email helper script if you want one-step send (otherwise the skill creates a Gmail draft)

First-Time Setup

1. **Create a project config** at `[project-root]/.claude/CLAUDE.md` with at minimum:

   # Project Name

   ## Team
   - [Name] <email@example.com> — PI
   - [Name] <email@example.com> — Research Manager
   - [Name] <email@example.com> — RA

   ## Folders
   - transcripts: `transcripts/`
   - weekly_reviews: `weekly-reviews/`

   ## Config
   ```yaml
   project_keywords: [keyword1, keyword2]
   exclude_keywords: [unrelated_term]
   whatsapp_groups: ["Project Group Name"]
   google_doc_id: "YOUR_DOC_ID"
   granola_folder: "Project Folder Name"   # optional

2. **Create a transcripts folder** in your project directory:
   ```bash
   mkdir -p transcripts/

3. **(Optional) Configure a routing file** at `~/.claude-assistant/config/granola-routing.json` if you have multiple projects pulling Granola transcripts. The skill uses this to list known projects when it can't find a config.

Arguments

`$ARGUMENTS` can include (combine freely):

  • *(none)* — next upcoming meeting with project context
  • `[keyword]` — filter by meeting title
  • `nosend` — skip the email phase
  • `email` — include email draft (prompt to send)
  • `light` — force Light depth (overrides auto-detection)
  • `full` — force Full depth (overrides auto-detection)
  • `since:YYYY-MM-DD` — override lookback start date

CRITICAL: No Permission Prompts

**Do NOT use Task agents or ToolSearch.** All required tools are pre-approved. Call them directly:

  • `Read`, `Write`, `Bash`, `Glob`, `Grep`
  • `mcp__google_workspace__get_events`, `mcp__google_workspace__search_gmail_messages`, `mcp__google_workspace__get_gmail_message_content`
  • `mcp__google_workspace__get_doc_content`, `mcp__google_workspace__draft_gmail_message`
  • `mcp__granola-api__search_granola_events`, `mcp__granola-api__get_granola_document`, `mcp__granola-api__get_granola_transcript`
  • `mcp__whatsapp__list_messages`, `mcp__whatsapp__search_messages`, `mcp__whatsapp__list_chats`

**Risk escalation:**

  • Data gathering (all reads/searches): Auto
  • Briefing display: Auto
  • Email draft display: Batch-confirm (show draft + recipients)
  • Email send: Per-item confirm (user must say "send")

Instructions

Phase 0: Identify Meeting + Pre-flight

**0a. Read project config:** Read `$(pwd)/.claude/CLAUDE.md`. Extract:

  • `whatsapp_groups` — group names (look up JIDs via `sqlite3 ~/whatsapp-mcp-ts/data/whatsapp.db "SELECT jid, name FROM chats WHERE name LIKE '%[group_name]%'"`)
  • `google_doc_id` — project dashboard doc
  • `team` roster — all role groups (`pis`, `research_managers`, `field_team`, `ras`, etc.)
  • `project_keywords`, `exclude_keywords`
  • `folders.transcripts`, `folders.weekly_reviews`
  • `granola_folder` or `granola_folders` — Granola folder name(s) for transcript fetching
  • `pre_meeting_brief` section (if present — optional config overrides)

Extract fields from inside markdown code fences if present.

**If no `.claude/CLAUDE.md` found:** Stop. Read `~/.claude-assistant/config/granola-routing.json` (if present) and list known project directories:

No .claude/CLAUDE.md found in this directory.
Known project directories:
[list from granola-routing.json routes]
cd into a project directory and re-run /pre-meeting-brief.

**0b. Identify target meeting:** 1. Fetch today + tomorrow events via `mcp__google_workspace__get_events` (all calendars) 2. If `[keyword]` argument: filter by title contains keyword (case-insensitive) 3. Else: match events where attendee emails overlap project team roster, OR title contains any `project_keyword` 4. If 0 matches: "No matching meetings found today or tomorrow. Specify a keyword or check your calendar." 5. If 2+ matches: show numbered list, ask user to pick 6. If 1 match: proceed

**0c. Determine depth + funder flag:**

  • **Auto-Light** if: meeting ≤30 min AND calendar title contains "standup", "check-in", "weekly sync", "1:1", "one-on-one" AND no `full` argument
  • **Auto-Full** otherwise
  • Override with `light` or `full` argument
  • **Funder flag**: set if any attendee matches known funder contacts from a configured donor profiles folder (e.g., `~/Documents/donors/`) or if the project config lists them as funders. If set, donor profile lookup is included in Phase 1.

**0d. Determine lookback window:** Priority order: 1. `since:YYYY-MM-DD` argument (explicit override) 2. Most recent `weekly-review-*.md` in `f

Read more
@chrisblattman
Ships withclaudeblattman

Claude Code for professionals who don't code — Skills, agents, and setup guides

48229 skills7 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
482
Star history of chrisblattman/claudeblattman on GitHub, a chart by star-history.com

Other skills on claudeblattman.

ask-agents

ask-agents

Ask the specific Claude, Codex, Gemini, or Grok agent the user names and automatically retrieve its response. Use for targeted…

council

council

Develop independent approaches to a task, decision, plan, or draft, then use a fresh worker to synthesize them. Use for an…

done

done

Close out current work by saving decisions, unresolved tasks, useful artifacts, a session log and a current-state handoff for the…

kit-setup

kit-setup

Discover and test optional Claude, Codex, Gemini through Antigravity, and Grok subscription connections. Help with missing CLI or…

More skills from other plugins.

lesson-quiz

lesson-quiz

Test a learner on a single Claude Code tutorial lesson (01-10) with 10 questions, scoring answers and flagging weak spots. Use…

@luongnv89@luongnv89Install Skill
build-personal-skill

build-personal-skill

Evidence-based creation of a reusable personal course-making Skill from the user's own classroom and chat history. Use when the…

@thu-maic@thu-maicInstall Skill

Questions about pre-meeting-brief.

Which coding agents can use pre-meeting-brief?
pre-meeting-brief installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.