skills/meeting-context/SKILL.md
Determine why a meeting is happening and what should be discussed
npx skillsauth add sofer/.agents meeting-contextInstall 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.
Analyse a calendar event to determine why the meeting is happening and what should be discussed. Produces a structured meeting briefing with purpose, key topics, a suggested agenda, and questions to ask. Enriches the briefing with context from Notion and Gmail when available.
Before executing, read the available business context:
.yaml files from ~/.agents/config/business-context/ for domain knowledge (company info, offerings, contacts, terminology)Identify the calendar event data in context. The event should contain:
If no event data is found in context, stop and report: "No calendar event data found. This skill requires a calendar event as input (typically provided by the calendar-fetch skill in a composite workflow)."
If the event has no title, stop and report: "The calendar event has no title. A title is required to determine meeting context."
Calculate the meeting duration from start_time and end_time.
From the event data, derive search queries to find related context:
If the Notion MCP server is available (tools mcp__claude_ai_Notion__notion-search and mcp__claude_ai_Notion__notion-fetch exist):
mcp__claude_ai_Notion__notion-search with each query, using query_type: "internal".mcp__claude_ai_Notion__notion-fetch.If the Notion MCP server is not available, skip this step. Note in the output: "Notion was unavailable; business documentation context could not be retrieved."
If Notion searches return no results, proceed without Notion context.
If Gmail MCP tools are available (look for tools with names containing gmail or google_mail):
from:{email} OR to:{email}, limited to the most recent 5 threads.If no Gmail MCP tools are available, check for a GMAIL_ACCESS_TOKEN environment variable and use the Gmail API:
GET https://gmail.googleapis.com/gmail/v1/users/me/messages?q=from:{email} OR to:{email}&maxResults=5 with Authorization: Bearer {GMAIL_ACCESS_TOKEN}If neither Gmail MCP nor API is available, skip this step. Note in the output: "Gmail was unavailable; prior email context could not be retrieved."
If no email threads are found for an attendee, note that no prior email interactions were found for them.
Using all gathered information (event data, business context, Notion content, email history), produce the following:
Write a concise statement (1-2 sentences) explaining why this meeting is happening. Base this on:
If the event data is sparse, state the purpose with lower confidence and note what information was missing.
List 3-7 topics likely to be discussed, ordered by relevance. For each topic, include a brief explanation of why it is relevant. Draw from:
For recurring meetings, prioritise recent updates, blockers, and next steps over background context.
Create a proposed agenda that fits within the meeting duration. Each item should have:
Rules for agenda construction:
List 3-7 specific, actionable questions the user should consider asking during the meeting. These should:
If Notion references or email threads were found, include them:
For each researched attendee, include:
Present the meeting context in the following format:
## Meeting context: [title]
**When**: [start_time] to [end_time] ([duration] minutes)
**Attendees**: [list of names]
### Purpose
[1-2 sentence statement]
### Key topics
1. **[Topic]**: [brief explanation]
2. **[Topic]**: [brief explanation]
...
### Suggested agenda
| # | Item | Duration | Notes |
|---|------|----------|-------|
| 1 | [item] | [X] min | [context] |
| 2 | [item] | [X] min | [context] |
...
| | **Total** | **[Y] min** | |
### Questions to ask
- [Question]
- [Question]
...
### Prior context
**Notion references:**
- [Page title](url) -- [relevance note]
...
**Recent email threads:**
- [Subject] ([date]) -- [summary]
...
### Attendee notes
- **[Name]** ([email]): [context from prior interactions]
...
### Data sources
[Note which sources were available and which were not, e.g. "Context drawn from: event data, Notion (3 pages), Gmail (2 threads). Gmail was unavailable for attendee research."]
If prior context or attendee notes sections would be empty, omit them from the output.
A structured meeting briefing as described in step 6, suitable for consumption by composite skills via the context window. The output includes: meeting purpose, key topics, suggested agenda, questions to ask, prior context (when available), attendee notes (when available), and a data sources note.
When used within a composite skill, this output is labelled as specified by the composite step (e.g. meeting_context) and is available to all subsequent steps.
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.