From mission-control
Prepare for an upcoming meeting. Resolves the meeting against today's calendar, pulls attendee context from contacts, memory, and the recurring-meeting register, and prints a one-screen pre-read. Use when the user says "/prep next", "/prep \"team sync\"", "who's in my next meeting", "prep me for the AWS call", or asks for context on an upcoming event. Reads only from the Mission Control workspace; writes nothing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mission-control:prepThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pre-meeting context. Reads, prints, does not write.
/prepPre-meeting context. Reads, prints, does not write.
Argument parsing:
/prep next → first event in personal/data/calendar.json whose start is strictly in the future, in chronological order. If none, fall back to the next event after now even if today's calendar is done./prep "<phrase>" or /prep <phrase> → case-insensitive substring match against event title, then against keys in memory/personal/recurring.md and personal/inputs/recurring.md. If multiple match, prefer the one closest to now (future events first, then most recent past)./prep with no args → equivalent to /prep next.If nothing resolves, print: "No matching event in today's calendar. Try /prep next or pass a substring of the meeting title."
In this order:
personal/data/calendar.json — the canonical event data: time, attendees, organizer, location.personal/inputs/recurring.md — domain-specific standing-meeting notes (calendar-title match, weekly purpose, what to bring).memory/personal/recurring.md — broader recurring-meeting memory.personal/inputs/contacts.md first, then memory/people.md. Don't invent context if neither file has the person.None. /prep prints to chat only. Never updates calendar, sends invites, or modifies any file.
A single chat response, scannable in one screen:
{Meeting title}
{Start - End, local} - {organizer or "no organizer"}
Why this meeting
{One line from inputs/recurring.md if standing; otherwise inferred from title or empty.}
Attendees ({count})
- {Name or email} - {one-line context from contacts/memory, or "no context on file"}
- ...
What to bring
{From inputs/recurring.md "what to bring" if available; otherwise omit this section.}
Open threads with attendees
{Any recent emails (inbox.json) or Slack mentions (slack.json) from any attendee, with the snippet and link/permalink. Skip if none.}
Notes
{Anything else from inputs/recurring.md "notes" or memory/people.md last-context lines worth surfacing.}
If personal/inputs/contacts.md is empty for external attendees, say so explicitly rather than padding with generic descriptions: "No external contacts on file yet; add entries to personal/inputs/contacts.md to enrich future preps."
Lead with relationship and current arc, not generic title. "Greg runs the AWS Marketplace push from the Greg-Fina-AWS side" beats "Greg Fina, employee at AWS." First-person where natural ("you owe Greg three things from May 21").
No em dashes. No filler ("Here's a summary..."). Print only what changes how the user walks into the meeting.
contacts.md and memory/people.md, prefer contacts.md (it has meeting-specific context).spec/mission-control-spec.md §4.4personal/data/calendar.jsonpersonal/inputs/recurring.md, memory/personal/recurring.mdpersonal/inputs/contacts.md, memory/people.mdpersonal/data/inbox.json, personal/data/slack.jsonpersonal/CLAUDE.mdCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub jawhnycooke/mission-control --plugin mission-control