Create concise pre-meeting briefs and daily prep for customer meetings or the user's most important meeting of the day, using authoritative internal context plus supplementary public web enrichment.
Output Shapes format exactly. Fold broader account, product, deal, support, partnership, or public-company context into Background Context only when it changes how the user should handle the meeting.sales:user-context in preflight mode by loading [$sales:user-context](../user-context/SKILL.md) and running its preflight script before searching connectors, retrieving evidence, or drafting output. Do not look for a callable MCP tool named sales:user-context.sales_preflight envelope as authoritative for saved context, source-category mapping, final obligations, and conditional guidance.final_obligations unless the response is clarification-only.context_gap_note only when missing setup or inaccessible sources materially limits the brief.context.sources from the sales_preflight envelope to resolve each attempted semantic source category to available apps, connectors, and helper skills. Defer connector fallback, source preferences, durable source rules, and helper-skill loading mechanics to sales:user-context. Do not prompt about categories this skill does not attempt.crm is available, include a bounded CRM lookup before relying on calendar, docs, internal messages, meeting notes, or public context alone. If CRM returns one high-confidence account match, use it as the primary account candidate; if multiple plausible account matches remain, ask the user to choose from concrete candidates.calendar for meeting candidates, titles, attendees, timing, invite body, and agenda. For customer/account ambiguity, try crm before relying on document_store, internal_messaging, meeting_notes, or public context alone. Manual meeting details are the fallback after those categories are unavailable, empty, or insufficient.{Natural clarification question, e.g. "Which meeting should I prepare?"}
a. **{actual candidate}** - {short source-derived context}
b. **{actual candidate}** - {short source-derived context}
calendar: meeting existence, meeting title, time, attendees, invite body, stated agenda, and first-pass meeting focus.crm: account status, opportunity/deal context, contacts, owner, recent activity, and account records that materially change meeting prep.meeting_notes: prior calls, internal prep calls, objections, stakeholder language, commitments, decisions, follow-ups, and transcript-backed continuity.document_store: account plans, implementation docs, mutual action plans, relevant assets, account notes, and team guidance.external_messaging: recent customer questions, commitments, attachments, tone shifts, scheduling context, and promised next steps.internal_messaging: account-team strategy, risks, blockers, internal coordination context, and discussion history that changes how the meeting should be handled.data_enrichment / public web search: company/contact enrichment, attendee roles, firmographics, official company context, recent news, filings, announcements, funding, earnings, leadership changes, and first-time account ramp-up. Use public web only after a meeting/account anchor exists, keep searches targeted to the anchored company, attendees, and topic, and skip it when internal sources already provide enough context.context.sources before using connector-specific logic.next, upcoming, today, tomorrow, scheduled, daily-digest, or invite-dependent meeting prep, calendar is required to resolve the meeting title, time, attendees, invite body, and stated agenda unless the user supplied equivalent meeting details. For vague prompts such as "prep me for a meeting" or "prep me for my next meeting," stop after calendar candidate discovery and return options; enrichment starts only after user selection. If calendar is unavailable but user-provided details are sufficient, continue with a clear limitation; if the meeting anchor remains ambiguous, ask with concrete calendar-backed candidates when available.crm, external_messaging, internal_messaging, document_store, meeting_notes, public web, or enrichment. Those sources may suggest candidate context, but selected meeting evidence still needs calendar, user-provided details, or user confirmation.meeting_notes is conditional but expected when accessible and likely to contain prior customer or internal prep context. Search by account, attendee, meeting title, and opportunity/topic terms. If checked and no relevant prior context is found, say so briefly instead of implying transcript-backed continuity.crm is required when CRM is available and a customer/account anchor is supplied, inferred, or confirmed. Use CRM for account status, opportunity/deal context, owner, contacts, recent activity, and records that materially change the agenda, risks, recommended close, or broader account posture. When multiple opportunities or solutions exist, prefer the one that matches the meeting title/topic, user ask, attendees, product or solution aliases, and recency. If CRM is unavailable or yields no relevant account/deal context, name the gap.Inference: for synthesis.## Prepare For Meeting
This skill creates a concise brief for an upcoming customer or high-value sales-adjacent meeting using calendar, account context, CRM, meeting notes, transcripts, docs, email, internal messaging, saved plugin memory, and user-provided guidance.
Review the brief action text from Next Step Guidance for onboarding to place in its common frame, and do not add a second direct-run continuation.prepare-for-meeting is the active workflow, every turn must either advance the journey, offer the earliest valid next step, or explicitly match one of the allowed exit reasons below. This applies across the whole turn, including after tool calls, connector writes, document updates, Slack/email handoffs, readbacks, short answers, local rewrites, one-paragraph summaries, confirmations, FYI/source cards, partial results, source-gap notes, status updates, explanations of what changed, and answers to "what's next?".Journey States or name the specific exit reason. Generic advice, bare confirmations, source links, "done" messages, and "next best step" summaries do not satisfy this invariant when a concrete journey state remains available.DONT_NOTIFY, or another active parent flow owns the final CTA. Required-input and clarification responses are not exits; make the unresolved question the final natural continuation. Each Sales skill may define its own allowed omission reasons, but if a skill is silent, the next-step flow is mandatory by default.| State | Use when | Final continuation |
|---|---|---|
| Review the brief | The first substantive prep output for a selected meeting has just been produced. | Anything we should expand on, or anything you'd change? |
| Review the revised brief | The user asked for any change to the brief, including a small rewrite, added question, one-paragraph summary, source adjustment, or formatting tweak. Make the change in chat first. | If Daily Meeting Prep is eligible, use Anything else you'd change? If that looks good, want me to set up Sales Daily Meeting Prep for weekday morning calendar checks? Otherwise use Anything else you'd change? If that looks good, want me to move it into a dedicated meeting doc? |
| Offer Daily Meeting Prep | The user has tried meeting prep, accepted the brief or a revision, and sales_preflight does not show daily_meeting_prep active, installed, ready, verified, declined, skipped, or deferred. This is especially important during guided Sales onboarding after the first Prepare For Meeting demo is accepted. | Offer to set up Sales Daily Meeting Prep so Sales checks the calendar each weekday, prepares one high-value qualifying meeting when useful, and returns DONT_NOTIFY when no meeting is worth prepping. |
| Create a meeting doc | The user accepts the brief, says no changes are needed, says a revision looks good, or asks to operationalize the prep after Daily Meeting Prep is already active, installed, ready, verified, declined, skipped, deferred, unavailable, not applicable, or explicitly bypassed by the user. | Offer to create a lightweight meeting doc from the accepted non-empty brief, with space for decisions, owners, and follow-ups. |
| Iterate the meeting doc | A meeting doc exists and the user asks to change it, or readback shows a content/formatting issue. | Offer the specific doc edit or cleanup needed. |
| Link or draft share note | A meeting doc exists and does not need edits. | Offer to link it to the calendar event or draft a short Slack/email note for review with the doc, goal, open questions, and decisions needed. Do not offer to post or send the note directly unless the user explicitly asks for posting/sending or approves a reviewed draft. |
| Set post-meeting reminder | The doc handoff step has been completed or declined, follow-up has not been handled, and notes/transcript availability is not already confirmed. This still applies after the meeting has ended when a future check can be scheduled for notes/transcript availability. | Offer an event-aware automatic follow-up that starts checking at the event-derived time, or a small post-end buffer when the meeting has already ended, and cancels itself after meeting notes/transcript are found and follow-up is handled. |
| Post-meeting follow-up | The meeting has ended and notes, transcript, or recap evidence is already available, or the user explicitly asks to check available notes now and draft the follow-up. | Offer or run follow-up-after-call for the recap, customer/internal follow-up, action tracker, and CRM-ready next steps. |
daily_meeting_prep as ineligible when sales_preflight.context.automations.daily_meeting_prep.status is active, installed, ready, verified, declined, skipped, skipped_for_now, deferred, deferred_environment_api_limitations, unavailable, or not_applicable, or when other readback clearly shows the user already has a matching Sales Daily Meeting Prep automation. Do not offer meeting doc creation as the accepted-brief default while Daily Meeting Prep remains eligible, unless the user explicitly asks for the doc instead.Set post-meeting reminder, include the automatic trigger behavior and the exact proposed schedule derived from the meeting event, for example: Want me to automatically start checking 5 minutes before the meeting ends, at {date/time/timezone}, then pull the notes/transcript when they show up and draft the recap plus action tracker? Use the selected calendar event's scheduled end time minus a default 5-minute lead buffer in the event timezone. The proposed first run must be in the future; if the lead-buffer time has already passed, use the next future event-aware time before the scheduled end when possible, otherwise use a small future post-end buffer. If the meeting end time is unknown, ask for it in the final continuation instead of guessing. If the meeting already ended and notes/transcript evidence is available, use Post-meeting follow-up instead of scheduling; if availability is unknown or not yet found, still offer the event-aware check/reminder instead of generic next-step advice.Set post-meeting reminder, create the narrowest event-aware reminder or automation the available tool supports. Prefer a one-time future wakeup when it can reliably run after notes are available; otherwise create a short-lived heartbeat whose first run is the exact event-aware start time above and whose prompt says to return DONT_NOTIFY until notes/transcript are found. The reminder instructions must name the meeting, meeting date/time, prep doc or calendar link when available, sources to check for notes/transcript, and intended follow-up action: pull notes/transcript, summarize decisions and action items, and run or offer follow-up-after-call. They must also say that once notes/transcript are found and the follow-up has been drafted or offered, the automation should cancel/delete itself so it does not keep running. Do not create a daily, weekly, generic 7 PM, arbitrary long-interval, or untethered recurring automation unless the user explicitly asks for that recurrence. If the tool cannot schedule a future event-aware first run, report the limitation and ask for an explicit fallback time instead of creating a generic schedule. After creating the reminder, read back the exact first-run date/time, cadence if any, and self-cancel condition as the final natural continuation.Offer Daily Meeting Prep, load [$sales:user-context](../user-context/SKILL.md) and its references/automation.md plus plugin-author-config/automation-config.md. Use the daily_meeting_prep entry from the later journey automation section, not the default onboarding automation list. Create or repair a dedicated Sales Daily Meeting Prep heartbeat automation only after user approval, with its configured weekday 9:00 AM local cadence and launcher instructions. Read back the automation and target thread before claiming it is set up. If the user declines, skips, or defers this offer, record that disposition under automations.daily_meeting_prep when the state file is available so future accepted briefs do not keep re-offering the same automation. If the environment cannot persist the automation, say that plainly and continue the meeting-prep journey; do not mark initial Sales onboarding incomplete because this later journey automation was skipped or deferred.Review the brief, treat a lightweight acknowledgement as accepting the brief as-is; if Daily Meeting Prep is eligible, move to Offer Daily Meeting Prep, otherwise move to Create a meeting doc. If the previous continuation was Review the revised brief, treat a lightweight acknowledgement such as "okay looks good" as accepting the revision; if the visible continuation already offered Sales Daily Meeting Prep, treat the acknowledgement as approval to create or repair that automation, otherwise move to Offer Daily Meeting Prep when eligible and Create a meeting doc only when the automation is ineligible or explicitly bypassed. If the previous continuation was Offer Daily Meeting Prep, treat a lightweight acknowledgement as approval to create or repair the automation. After resolving the accepted action or resume request, apply the Final Continuation Invariant.Authority and gaps.Known Limitations or a concise clarification over long-running retrieval.Single Meeting Prep: use when the user asks for prep for one specific customer meeting, account, invite, attendee, or topic.Daily Prep Digest: use when the user asks for a day-based summary or morning prep digest. Start from calendar, keep meetings with at least one external attendee, and produce one chronological digest.Scheduled Meeting Selection: use only for system-triggered automations, heartbeats, recurring check-ins, or scheduled runs. Start from calendar, prepare exactly one meeting where prep would materially help, briefly say why it was selected, and return DONT_NOTIFY if no qualifying meeting exists. Choose among candidates using the strongest available impact signals:calendar for day-based, scheduled, invite-dependent, or user-requested calendar selection, including next, upcoming, today, tomorrow, or latest scheduled meeting prompts. Read title, timing, attendee list, description, and invite body before adding narrative unless the user supplied equivalent meeting details.Single Meeting Prep and Daily Prep Digest, keep the customer/account anchor and stop if the meeting is not clearly customer-facing or account-related. For Scheduled Meeting Selection, customer/account meetings win; otherwise choose only a high-impact non-routine work meeting.
For non-customer meetings selected only by Scheduled Meeting Selection, do not add customer-specific objections, CRM facts, public account research, customer-facing assets, or Broader Account Context unless the meeting evidence actually names a customer or account.crm and document_store for account state and broader context. Match the active opportunity or deal to the meeting topic before using deal facts; if another same-account opportunity appears unrelated, exclude it or label the conflict instead of letting it drive the brief. Capture account-level facts for Broader Account Context; promote them into Upcoming Meeting only when they directly affect the objective, agenda, risks, questions, or close. For non-customer meetings selected by Scheduled Meeting Selection, use internal sources for workstream decisions, blockers, owners, and dependencies instead of forcing account context.meeting_notes by exact external attendee emails or names, account name and aliases, opportunity or solution names, invite title terms, and focused topic terms. If no direct prior external customer call is found, say so and use relevant internal meeting records only as internal continuity. Then pull external_messaging for unanswered questions, scheduling shifts, tone changes, and promised next steps. Then pull internal_messaging and document_store for internal strategy that changes the agenda, decision framing, likely objections, or next actions.Inference: where needed. If public evidence conflicts with internal sources, defer to internal source truth and mention the discrepancy in Known Limitations.Problem, Customer side, Seller side, and Goal for this meeting; name people only when sourced and label inferred motives or constraints.Background Context bullets instead of collecting them in a separate sources section. Each factual Background Context bullet should end with the source title, record name, channel/thread, or meeting/date label as visible Markdown link text when a source exposes a useful URL. Use plain labels with (no useful link available) when needed. Do not link to meeting join URLs, generic room links, or opaque connector refetch IDs.Output Shapes before sending.
Select the applicable provided shape after the prep mode and meeting type are known, then fill that shape directly. The selected output shape is the only user-facing structure for the brief body; after it, apply Next Step Guidance unless an explicit exception applies.(no useful link available) when that absence matters.# [Meeting Name]
**Date:** [Date / Time]
**Attendees:** [Names + roles]
## Summary
* [Core meeting objective]
* [Current account, opportunity, or workstream signal]
* [Top implication, risk, or source gap for this meeting]
## Goal
[The specific outcome to achieve: decision, feedback, alignment, commitment, or next step.]
## Open Questions
* [Most important unresolved question]
* [Question this meeting should answer, tied to CRM, transcript, or invite gaps when relevant]
* [Decision or clarification needed]
## Proposed Agenda
1. [Topic or question to discuss]
2. [Topic or decision to resolve, tailored to meeting type and deal/workstream stage]
3. [Confirm next steps / owners]
## Background Context
* [Compact account/deal or workstream snapshot with inline source citation]
* [Relevant attendees, prior-call/internal-prep continuity, or customer/team context with inline source citation]
* [Useful assets, constraints, and material source gaps with inline source citation when factual]
Clarification Stop: end with only the unresolved required input question.Daily Prep Digest: use **Today's External Meetings**, one compact chronological brief per meeting, and **Priority Watchouts**.Next Step Guidance.