skills/meeting-prep/SKILL.md
Check calendar, research attendees, and produce a briefing document for each upcoming meeting
npx skillsauth add sofer/.agents meeting-prepInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Prepare briefing documents for upcoming meetings so the user walks in prepared. For each meeting on the calendar, the twin researches attendees, retrieves related business documentation, and produces a briefing containing attendee profiles, meeting purpose, a suggested agenda, and questions to ask.
Before starting the steps below:
~/.agents/config/voice-profile.yaml for voice and tone rules.yaml files from ~/.agents/config/business-context/ for domain knowledge (company info, offerings, contacts, terminology)Skill: calendar-fetch
Input: Time range from the user's request, or defaults (now to 24 hours from now)
Output → calendar_events
Read and follow the instructions in ~/.agents/skills/calendar-fetch/SKILL.md.
Pass through any time range the user specified. The result is a list of upcoming calendar events, each with title, time, attendees, description, and metadata.
If no events are found, stop and report: "No upcoming meetings found in the requested time range. No briefings to prepare."
If calendar-fetch fails (e.g. Google Calendar MCP server unavailable), stop and report the error. Calendar data is required to proceed.
Skill: contact-research
Input: Attendee names and email addresses from calendar_events
Output → attendee_profiles
For each meeting in calendar_events, identify the external attendees (exclude the user's own email address). For each attendee (up to 5 per meeting):
~/.agents/skills/contact-research/SKILL.md, providing the attendee's name and email as input.Collect all attendee profiles. Each profile is labelled with the attendee's email and associated with the meeting(s) they attend.
If a meeting has no external attendees, skip this step for that meeting and note that no attendee research was needed.
If contact-research fails for a specific attendee, note the failure and continue with the remaining attendees. Do not stop the entire process.
Skill: notion-query
Input: Search queries derived from the meeting title and description in calendar_events
Output → business_context
For each meeting in calendar_events:
~/.agents/skills/notion-query/SKILL.md, using the derived search query.If notion-query fails (e.g. Notion MCP server unavailable), note the limitation and continue to the next step. Notion context is valuable but not required.
Skill: meeting-context
Input: Each event from calendar_events, enriched with attendee_profiles and business_context
Output → meeting_briefings
For each meeting in calendar_events:
~/.agents/skills/meeting-context/SKILL.md, providing the calendar event as input.If meeting-context fails for a specific meeting (e.g. the event has no title), report the error for that meeting and continue with the remaining meetings.
Present a briefing document for each upcoming meeting. Use the following format for each briefing:
---
# Meeting briefing: [title]
**When**: [start_time] to [end_time] ([duration] minutes)
**Location**: [location or meeting link, or "Not specified"]
**Attendees**: [comma-separated list of attendee names]
## Attendee profiles
[For each researched attendee, include their profile summary from contact-research.
Format each as:]
### [Name] ([email])
[Narrative summary from contact-research, including role, company, prior interactions]
[If no attendees or no external attendees, state: "No external attendees for this meeting."]
## Meeting purpose
[Purpose statement from meeting-context]
## Key topics
[Numbered list of topics from meeting-context, each with a brief explanation]
## Suggested agenda
[Agenda table from meeting-context with items, durations, and notes]
## Questions to ask
[Bulleted list of questions from meeting-context]
## Prior context
[Notion references and recent email threads from meeting-context, if available.
Omit this section if no prior context was found.]
## Data sources
[Note which sources were available and used, e.g.:
"Context drawn from: Google Calendar, contact research (Gmail, Notion, web), Notion query, meeting context analysis. Gmail was unavailable for attendee research."]
---
If multiple meetings were found, present each briefing in sequence, ordered by meeting start time. Separate each briefing with a horizontal rule (---).
After all briefings, provide a brief summary: "Prepared [N] briefing(s) for meetings between [start] and [end]."
tools
Check whether Claude and Codex have equivalent access to shared agent resources, skills, hooks, plugins, MCP servers, permissions, startup behaviour, and provider-specific adapter config. Use when comparing agent environments, debugging missing capabilities after restart, or deciding whether to symlink a resource or configure a runtime.
testing
Record substantive skill use in an append-only local log. Use after choosing or invoking a non-system skill for real work, when a skill is inspected but not used, or when a skill fails to apply. Do not use for routine system skills or incidental file reads.
testing
Turn a vague or underspecified request into a self-contained problem statement. Use when the user has a rough idea, when a request would fail if handed directly to an agent, or before non-trivial work that needs shared understanding.
data-ai
Append a one-line learning to ~/.agents/learning-log.md. Use when the user types /learning, or when something genuinely worth remembering surfaced during work and the user confirms it should be captured.