Daily meeting preparation system that checks your calendar each morning, deeply researches external attendees (LinkedIn, company info, GitHub, past notes), and sends you personalized briefs via email (1 per person). Use when you want automated preparation for upcoming meetings with context about each person you're meeting.
npx skills add https://github.com/gooseworks-ai/goose-skills --skill meeting-brief
Automated daily meeting preparation system that researches meeting attendees and sends you personalized briefs.
Every morning (configurable time):
Edit config.json to list your team members (these will be skipped):
{
"team_members": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"team_domains": [
"@yourcompany.com"
],
"schedule": "0 7 * * *",
"timezone": "America/Los_Angeles",
"your_email": "[email protected]",
"brief_from": "Meeting Brief <[email protected]>",
"slack_webhook": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
"send_email": true,
"send_slack": true,
"include_calendar_details": true,
"research_depth": "standard"
}
Config options:
team_members: Emails to skip (exact match)team_domains: Domain patterns to skip (e.g., skip all @yourcompany.com)schedule: Cron expression for daily run (default: 7am)timezone: Timezone for scheduleyour_email: Where to send briefsbrief_from: From address for briefsslack_webhook: Slack incoming webhook URL (optional)send_email: Whether to send email briefs (default: true)send_slack: Whether to send Slack notifications (default: false)include_calendar_details: Include meeting time/location in briefresearch_depth: quick (web only), standard (web + GitHub), deep (web + GitHub + past notes)Run manually each morning:
cd skills/meeting-brief
./scripts/run_daily.sh
scripts/run_daily.sh)scripts/check_calendar.sh)scripts/research_person.js)scripts/generate_brief.js)send_email: true)send_slack: true, scripts/send_slack.sh)supernotes/people/)data/sent/YYYY-MM-DD.json)For each external attendee, the system researches:
research_depth is standard or deep)research_depth is deep)Research is structured as JSON:
{
"person": {
"name": "Jane Doe",
"email": "[email protected]",
"company": "Example Corp",
"title": "VP Engineering"
},
"linkedin": {
"url": "...",
"bio": "...",
"experience": [...]
},
"github": {
"username": "janedoe",
"profile_url": "...",
"recent_repos": [...]
},
"company": {
"name": "Example Corp",
"industry": "...",
"recent_news": [...]
},
"past_interactions": [
"Met at conference in 2024",
"Discussed partnership opportunity"
]
}
The AI-generated brief comes in two formats:
Deeper, narrative-driven brief with:
Example Brief:
Subject: Meeting Brief: Jane Doe - Product Partnership Discussion
Hi,
You're meeting with Jane Doe today at 2pm.
## Quick Overview
Jane is VP of Engineering at Example Corp, a B2B SaaS company in the dev tools space. She's been there for 3 years and previously worked at GitHub and Microsoft.
## Background
- Strong background in developer tooling and infrastructure
- Recently led Example Corp's API platform overhaul (launched Q4 2025)
- Active on GitHub (janedoe) - maintains several open-source CLI tools
- Technical blog focuses on API design and developer experience
## Conversation Starters
- Their new API platform (just launched, getting good traction)
- Recent blog post on GraphQL vs REST (published last week)
- Shared interest in developer experience (noted in her LinkedIn)
## Notes
- You met briefly at DevTools Summit 2024
- She mentioned interest in partnering on integration opportunities
---
Meeting: Product Partnership Discussion
Time: Today at 2:00 PM
Location: Zoom (link in calendar)
Run for a specific person:
# Research a person
node scripts/research_person.js "Jane Doe" "[email protected]" "Example Corp"
# Generate brief
node scripts/generate_brief.js research_output.json meeting_context.json
# Send brief
./scripts/send_brief.sh brief.html "Jane Doe"
Run for today's meetings:
./scripts/run_daily.sh
meeting-brief/
├── data/
│ ├── sent/ # Sent brief logs (by date)
│ │ └── 2026-02-21.json
│ ├── research/ # Research cache (by person)
│ │ └── jane-doe.json
│ └── meetings/ # Meeting data (by date)
│ └── 2026-02-21.json
└── logs/
└── run.log # Execution logs
DRY_RUN=true in run_daily.sh to preview without sendingquick, upgrade to standard or deep as neededNo briefs sent:
gcalcli agenda today tomorrow)logs/run.logBriefs missing information:
research_depth in config.jsondata/research/Duplicate briefs:
data/sent/ for already-sent trackinggh): For GitHub profile lookup (optional)data/research/Analyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.
Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack.
A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.
Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.
Prepare meeting materials with Notion context and Codex research; use when gathering context, drafting agendas/pre-reads, and tailoring materials to attendees.
Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update.
Take gooseworks-ai/meeting-brief from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.