extruct-ai/gtm-cowork-skills · Archived

meeting-followup

Draft a follow-up email after a call. Pulls meeting context from Granola (MCP), recent email history from Gmail (MCP), and pending tasks from Attio. Triggers on: "follow up", "draft follow-up", "write follow-up", "post-call email", "meeting follow-up", "follow up email".

First seen Apr 17, 2026

Installation

$ npx skills add extruct-ai/gtm-cowork-skills --skill meeting-followup

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from extruct-ai/gtm-cowork-skills.

npx skills add extruct-ai/gtm-cowork-skills

Browse all from extruct-ai/gtm-cowork-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 7
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,999 B
  • docs SUMMARY.md 295 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

SKILL.md

Meeting Follow-Up Email

Draft a follow-up email after a call by combining meeting notes, email history, and CRM context.

Inputs

The user provides one or more of:

  • A contact name or email address
  • A meeting reference (title, date, or Granola meeting ID)
  • Specific points to include in the follow-up

If the user provides a Granola meeting context (summary, endTime), use that directly. If not provided, ask for the contact name or email.

Workflow

Step 1: Gather meeting context (Granola MCP)

Use Granola MCP tools to find and extract the meeting:

  1. If meeting context is provided inline (summary, endTime): use it directly.
  2. If contact name is known: call querygranolameetings with

"meeting with {contact_name}" to find the most recent meeting.

  1. If no match: call listmeetings with timerange: "last30days" and scan

for a matching title or attendee.

  1. Once meeting ID is found: call get_meetings with the ID to get full details.

Extract:

  • Summary and key discussion points
  • Action items and next steps
  • Decisions made
  • Commitments from either side

If more detail is needed, call getmeetingtranscript with the meeting ID.

Step 2: Gather email history (Gmail MCP)

Use Gmail MCP tools to get conversation context:

  1. Resolve the contact email. Sources (try in order):

- User provides it directly - Extract from meeting attendees (Granola) - Search Attio: use search-records with object = "people" and the contact name as query - Ask the user

  1. Call gmailsearchmessages with query:

from:{contactemail} OR to:{contactemail} Limit to 10 most recent messages.

  1. Identify the most relevant thread (most recent exchange or matching meeting topic).
  1. Call gmailreadthread with the thread ID to get full email bodies.

Extract:

  • What was last discussed over email
  • Open questions or proposals
  • Tone and formality level of the conversation
  • Prior commitments or offers

Step 3: Check pending CRM tasks (Attio MCP)

Query Attio for open tasks linked to this contact:

  • Use list-tasks with is_completed = false.
  • Filter results for tasks whose linked_records match the contact's record ID

Note any overdue or pending tasks to reference in the follow-up.

Step 4: Draft the follow-up

Structure:

  1. Thank them for their time (1 sentence, reference the specific meeting topic)
  2. Summarize key discussion points (2-3 bullets from meeting + emails)
  3. List next steps or action items (explicit, with owners if discussed)
  4. Clear call-to-action (one specific ask or proposal)

Tone rules:

  • Match the tone of the existing email thread (formal ↔ casual)
  • Professional but warm
  • No filler phrases ("I hope this email finds you well")
  • Use the same greeting style as previous emails in the thread
  • Reference specific things discussed, not generic pleasantries

Constraints:

  • Under 200 words
  • No emojis unless the contact uses them
  • If a proposal or price was mentioned, reference it naturally

Step 5: Save artifacts locally

After gathering context, persist to revops/customers/{company-slug}/:

  1. Meeting notes: Save Granola meeting data to meetings/YYYY-MM-DD_{title-slug}.md

using the template from revops/customers/README.md

  1. Context update: If context.md exists, update the Deal History and Current Status.

If it doesn't exist, create it from the template.

  1. Check first: Read existing files before writing to avoid overwriting.

This is non-optional — Granola data can be deleted, the local copy is the source of truth.

Step 6: Present and act

Show the draft with:

  • To: address
  • Subject: line (reply to existing thread or new subject)
  • Body
  • Context used: brief note on sources (meeting summary, email thread, tasks)

Ask the user if they want to:

  1. Edit the draft
  2. Create a Gmail draft via gmailcreatedraft
  3. Start over with different context

Attio MCP Tool Reference

Use these MCP tools (NOT raw API calls):

Task Tool Key parameters
Search people or companies search-records object, query
Get pending tasks list-tasks is_completed=false

Environment

Variable Source Purpose
Attio MCP (Attio connector) CRM — people, tasks
Gmail MCP (claude.ai Gmail) Email search, read threads, create drafts
Granola MCP (Granola) Meeting notes, transcripts, summaries

Reference

  • CRM enrichment context: revops/CRM_ENRICHMENT.md
  • Customer artifacts: revops/customers/ (see README.md for structure and templates)