# Morning Routine (bundle) > Start every day ready: your front page at 7, a brief for each meeting at 7:30, and the five emails that matter at 8. ## Members - [Morning Newspaper](https://botplaza.lol/skills/morning-newspaper.md): every day at 7:00 AM - [Meeting Prep Brief](https://botplaza.lol/skills/meeting-prep-brief.md): every weekday at 7:30 AM - [Inbox Digest](https://botplaza.lol/skills/inbox-digest.md): every weekday at 8:00 AM ## Install MCP: call `install_bundle` with id `morning-routine` at https://botplaza.lol/api/mcp, or paste the prompt below for your assistant. ### Grok Bot 1. Paste the prompt into a one-to-one chat with your Grok Bot (it already contains all 3 SKILL.md files). 2. Answer the one round of setup questions, and connect any apps it asks for from the connect card. 3. Check the routines in the Bot's info pane under Routines; pause or edit any of them there. ````text Install the BotPlaza bundle "Morning Routine" (3 skills). For each skill below, save it as a skill with its exact name. Then create one routine per scheduled skill that runs it on the schedule listed and posts the result here; skills marked on demand get no routine. Before the first run, read the setup questions in all 3 skills, merge the ones they share (such as my name, city, time zone and where to deliver), ask me everything in one short message, and remember my answers for every skill in this bundle. When you're done, list the skills and routines you created. Never send, post, submit, or buy anything on my behalf without asking me first. 1. Morning Newspaper: routine every day at 7:00 AM 2. Meeting Prep Brief: routine every weekday at 7:30 AM 3. Inbox Digest: routine every weekday at 8:00 AM === Skill 1 of 3: Morning Newspaper === --- name: morning-newspaper description: Use when the user asks for their morning paper, daily briefing, front page, or "what do I need to know today", or when a scheduled morning routine runs this skill. Builds a personalized, newspaper-style briefing with top stories, the user's chosen topics, markets, weather, a calendar glance, and one long read, every item linked to a source published in the last 24 hours. metadata: id: morning-newspaper version: "1.0.0" author: BotPlaza --- # Morning Newspaper > Wake up to a front page built for you. ## What it does Assemble a one-page, newspaper-style briefing the reader can finish over coffee: a masthead, a lead story, the topics they care about, markets, weather, today's calendar, and one long read worth saving for later. Every story links to its source. Nothing is invented. ## When to use - The user asks for "my paper", "the morning paper", "today's front page", "daily briefing", or "what's going on today". - A scheduled routine (for example "every day at 7:00 AM") calls this skill. - The user asks to change what the paper covers. Update the saved preferences, then confirm the change in one line. ## Requires Web search and web access for news and weather. Optional: a calendar connector (Google Calendar or Outlook) for "Your day", and an email connector for "Inbox watch". If an optional connector is missing, skip that section and say so in one line. ## Schedule Default: Daily, 7:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs Read these from saved preferences or memory. On the first run, ask for them once in a single short message, offer the defaults, and save the answers. | Setting | Default | Notes | |---|---|---| | `masthead` | "The Morning Edition" | Paper name shown at the top. Many readers use "The [Name] Daily". | | `reader_name` | user's first name | Used in the greeting line only. | | `location` | ask | City for weather. Also sets the "local" section. | | `timezone` | user's timezone | All times print in this zone, with its label. | | `topics` | World, Technology, Business, Science | Toggle any of: World, Local, Politics, Business, Technology, AI, Science, Health, Climate, Sports, Culture, Books, Design, Startups, Crypto. Custom topics allowed (e.g. "Formula 1", "Denver housing"). | | `teams_or_tickers` | none | Sports teams to follow and market tickers to watch. | | `sections` | all on | Front page, Topics, Markets, Weather, Calendar, Long Read, Inbox Watch (off by default), On This Day (off by default), Quote (off by default). | | `length` | standard | `brief` (about 3 min read), `standard` (about 6 min), `full` (about 12 min). | | `tone` | straight | `straight` (wire-service neutral), `conversational`, or `witty` (light, never flippant about tragedy). | | `sources_prefer` / `sources_avoid` | none | Outlets to favor or skip. | | `delivery` | this chat | Where the paper lands: chat, email draft, or a document. | ## Steps 1. **Load preferences.** Read saved settings. If any required setting (`location`, `timezone`) is missing, use the defaults above, run anyway, and ask for it at the end of the paper in one line. 2. **Set the news window.** The window is the 24 hours before now in the reader's timezone. On Monday, widen to 72 hours so weekend news isn't lost. Write today's date in full for the masthead (e.g. "Saturday, October 31, 2026"). 3. **Gather the front page.** Search the web for the biggest stories in the window. Pick candidates that at least two independent outlets are reporting. Open each article; do not write from search snippets alone. Record the outlet, headline, publish time, and URL. 4. **Gather each topic.** For each toggled topic, find 1 to 3 stories in the window (1 for `brief`, 2 for `standard`, 3 for `full`). Prefer original reporting, primary sources (filings, papers, official statements), and the user's `sources_prefer`. Skip `sources_avoid`. 5. **Markets.** If the Markets section is on, get the latest close or current level for major indexes plus each ticker in `teams_or_tickers`, with percent change and the "as of" time. On weekends and market holidays, show the last close and say so ("Markets closed; figures as of Friday's close"). 6. **Weather.** Get today's forecast for `location`: high, low, conditions, precipitation chance, and anything notable (warnings, air quality, sunset time). One sentence on what it means for the day ("Bring an umbrella after 3 PM"). 7. **Calendar glance.** If a calendar connector is available, list today's events with start times in the reader's timezone, and flag conflicts, early starts, and travel gaps. If no calendar is connected, drop the section silently on scheduled runs, and mention once on manual runs that connecting a calendar adds it. 8. **Inbox watch (optional).** If enabled and an email connector is available, list up to 3 messages that need a reply today. Show sender and subject only, never full message bodies. 9. **Long read.** Pick one substantial piece (feature, essay, investigation, or interview) published in the last 7 days that matches the reader's topics. Give its reading time and a two-sentence reason it's worth the time. 10. **Rank and cut.** Lead with the story that most affects the reader: global significance first, then topic match, then local relevance. Remove duplicates across sections. Cut to the length budget. A short paper beats a padded one. 11. **Write.** Use the output format below. Headlines in sentence case, active voice, under 12 words. Each summary is 1 to 3 sentences: what happened, why it matters, what's next. Write in the chosen tone. No hype words ("game-changer", "revolutionary"), and no opinions presented as fact. 12. **Check before sending.** Every story has a working link and a publish time inside the window. Every number (prices, percentages, temperatures) comes from a source opened this run. Dates and times show the reader's timezone. If a fact can't be verified, cut it. 13. **Deliver.** Post to the `delivery` destination. If delivery means sending an email or posting somewhere new, draft it and ask for approval the first time. ## Output format ```markdown # {MASTHEAD} **{Weekday, Month D, YYYY}** · {Location} · {Edition No. N, optional} *Good morning, {reader_name}. {One sentence on the shape of the day.}* --- ## Front page ### {Lead headline} {2–3 sentence summary.} [{Outlet}]({url}) · {time, tz} ### {Second headline} {1–2 sentences.} [{Outlet}]({url}) ## {Topic name} - **{Headline}.** {1–2 sentences.} [{Outlet}]({url}) ## Markets | Index / ticker | Level | Change | |---|---|---| *As of {time, tz}. Source: [{source}]({url})* ## Weather: {Location} {High}/{Low}, {conditions}. {Precip chance}. {What it means for the day.} ## Your day - {time} · {event} {flag if any} ## The long read **[{Title}]({url})**, {Outlet}, {N} min read {Two sentences on why it's worth it.} --- *Sources opened this morning: {count}. Reply "more on {topic}", "less {topic}", or "add {topic}" to adjust tomorrow's paper.* ``` ## Customization - "Add Formula 1 and drop crypto." Update `topics`. - "Make it shorter on weekdays and full on Sundays." Store a per-day `length`. - "Call it The Rivera Herald." Update `masthead`. - "Deliver at 6:30 AM." Update the routine schedule, not this skill. - "Only Canadian sources for local news." Add to `sources_prefer` for Local. ## Edge cases - **Quiet news day:** run fewer stories. Never pad with old news. Say "A quiet morning" in the greeting. - **Breaking story still developing:** label it "Developing" and say what is confirmed and what isn't. - **Paywalled source:** summarize only what's visible and mark the link "(paywall)". Prefer an open source covering the same story. - **Topic with no news in the window:** omit the topic. Don't stretch the window except on Mondays. - **Reader is traveling:** if the calendar shows travel or the user says they're away, use the destination for weather and local news and label it. - **Tragedy or sensitive news:** use the straight tone for that item even when the paper is set to witty. - **A source fails or a connector is down:** run with what works and note it in one line at the bottom ("Calendar unavailable this morning"). - **Conflicting reports:** give both figures and their sources rather than picking one. ## Boundaries - Read-only. This skill never sends email, accepts invites, or posts publicly without the user's approval. - Never present unverified claims, search snippets, or model memory as today's news. - Don't quote more than a sentence or two from any article. Summarize and link. === Skill 2 of 3: Meeting Prep Brief === --- name: meeting-prep-brief description: Use when the user asks to prep for a meeting, call, or interview, asks "who am I meeting today", or when a routine runs before calendar events. Builds a one-page brief per meeting with attendee backgrounds, shared history from email and docs, the goal, talking points, and questions to ask, all sourced. metadata: id: meeting-prep-brief version: "1.0.0" author: BotPlaza --- # Meeting Prep Brief > Walk into every meeting knowing who's there and what you want. ## What it does Walk into every meeting knowing who's in the room, what happened last time, and what you want out of it. ## When to use - "Prep me for my 2 PM", "who's on my calendar today", "brief me before the call with {name}". - A routine that runs each morning for the day's meetings, or 30 minutes before each external meeting. ## Requires A calendar connector. Email and document connectors make the brief much better but are optional. Web search for public background. ## Schedule Default: Weekdays, 7:30 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Setting | Default | Notes | |---|---|---| | `which_meetings` | today's meetings with external attendees | Or a named meeting, "all of today", or "next 3 days". | | `skip` | 1:1s with direct reports, focus blocks, all-hands | Patterns to ignore. | | `depth` | standard | `quick` (5 bullets), `standard` (1 page), `deep` (adds company research and recent news). | | `my_goal` | infer, then confirm | What the user wants out of the meeting. | ## Steps 1. **Read the event:** title, time (user's timezone), duration, attendees, location or link, agenda, and attachments. 2. **Identify attendees.** For each person outside the user's organization, find their role and company from the invite, email signatures, and public professional profiles or company pages. Don't guess; if unknown, say "Role unknown". 3. **Pull shared history.** Search email and docs for the last 3 to 5 interactions with these attendees or their company. Note open commitments on both sides ("You promised pricing by Friday"). 4. **Check the news.** For external companies, find anything material in the last 30 days (funding, launches, leadership changes, layoffs) with links. 5. **Set the goal.** State the user's likely goal in one line. If it's unclear, write two options and ask. 6. **Write talking points and questions:** 3 points the user should make and 3 questions to ask, each grounded in the history or news above. 7. **Flag risks:** conflicts, back-to-back meetings with no travel time, missing dial-in, attendees added at the last minute. ## Output format ```markdown # {Meeting title} **{Day, time–time tz}** · {Location / link} · {Duration} **Goal:** {one line} ## Who's in the room - **{Name}**, {Role}, {Company}. {One relevant fact.} [source]({url}) ## Where things stand - {Last interaction, date, outcome} - **Open:** {commitment, owner, due} ## Worth knowing - {Recent company news.} [source]({url}) ## Say 1. {Talking point} ## Ask 1. {Question} ## Watch out - {Risk or logistics flag} ``` ## Edge cases - **No external attendees:** give a 3-line brief (purpose, open items, what to bring). - **Recurring meeting:** focus on what changed since the last occurrence. - **Common name, uncertain match:** say the match is uncertain and don't include background. - **Private or personal events:** skip them unless the user asks. ## Boundaries Read-only. Don't email attendees, accept or decline invites, or edit events without approval. Use only professional, public information about people. === Skill 3 of 3: Inbox Digest === --- name: inbox-digest description: Use when the user asks to triage their inbox, for an email digest, "what needs my attention in email", or when a scheduled daily email routine runs. Sorts recent mail into Reply today, Waiting on you, FYI, and Safe to ignore, with drafts offered for replies. Read-only; never sends, archives, or deletes without approval. metadata: id: inbox-digest version: "1.0.0" author: BotPlaza --- # Inbox Digest > Know which five emails matter before you open your inbox. ## What it does Turn an overflowing inbox into a short list: what needs a reply today, what's waiting on you, what's worth knowing, and what can go. ## When to use - "Triage my inbox", "what did I miss in email", "daily email digest", "anything urgent?" - A scheduled routine (e.g. weekdays at 8:00 AM and 4:00 PM). ## Requires An email connector (Gmail, Outlook, or similar) with read access. If none is connected, say so and stop. Don't ask for a password. ## Schedule Default: Weekdays, 8:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Setting | Default | Notes | |---|---|---| | `window` | since last digest, max 24 h | Or "last 3 days" after a vacation. | | `vip_senders` | none | People or domains that always rank first. | | `mute` | newsletters, receipts, social notifications | Categories to drop into Safe to ignore. | | `max_items` | 15 | Cap across all buckets. | | `draft_replies` | offer | `off`, `offer` (ask first), or `auto-draft` (save drafts, never send). | | `tone` | the user's own | Learn from their sent mail when drafting. | ## Steps 1. **Fetch** threads in the window from the inbox (skip spam and trash). Read the latest message in each thread plus enough history to understand it. 2. **Classify** each thread: - **Reply today:** a direct question or request to the user, a deadline within 48 hours, or anything from a VIP that asks for something. - **Waiting on you:** the user owes something but it isn't urgent, including threads where the user said "I'll get back to you". - **FYI:** worth knowing, no action (decisions made, status updates, confirmations). - **Safe to ignore:** muted categories, automated mail, cold outreach. 3. **Extract** for each actionable thread: sender, subject, the ask in one line, any deadline (in the user's timezone), and a link to the thread. 4. **Rank** within buckets: VIP, then deadline, then age. 5. **Draft** (if enabled): for Reply today items, write a short reply in the user's voice. Save as drafts only when the setting is `auto-draft`; otherwise show them inline and ask. 6. **Deliver** the digest in the format below. ## Output format ```markdown # Inbox digest · {date, time tz} {N} new threads · {R} need a reply today ## Reply today 1. **{Sender}**: {Subject}. {The ask in one line.} Due {deadline}. [Open]({thread link}) ## Waiting on you - **{Sender}**: {what you owe}, {age} ## FYI - {One-line summary} ({sender}) ## Safe to ignore ({count}) {Comma-separated senders or categories} *Reply "draft 1" to get a reply drafted, or "mute {sender}" to hide them next time.* ``` ## Edge cases - **Sensitive content** (medical, legal, HR, financial account numbers): summarize at the subject level only. - **Possible phishing** (urgent payment requests, credential links, lookalike domains): put in a separate "Looks suspicious" line and never click its links. - **Very long threads:** summarize the current state, not the history. - **Empty window:** reply "Inbox is clear since {time}." and stop. ## Boundaries Never send, archive, label, delete, unsubscribe, or forward without the user's explicit approval for that specific action. ```` ### Muse 1. Paste the prompt into a chat with your assistant (it contains every SKILL.md). 2. Answer the setup questions once. 3. Try one: "Run Morning Newspaper." 4. Muse doesn't keep outside skills between chats; paste again if it forgets. ````text Here are 3 task instructions from the BotPlaza bundle "Morning Routine". Follow each one whenever I say "Run ". Before the first run, read the setup questions in all 3 skills, merge the ones they share (such as my name, city, time zone and where to deliver), ask me everything in one short message, and remember my answers for every skill in this bundle. Never send, post, submit, or buy anything on my behalf without asking me first. 1. Morning Newspaper: routine every day at 7:00 AM 2. Meeting Prep Brief: routine every weekday at 7:30 AM 3. Inbox Digest: routine every weekday at 8:00 AM Please set up a recurring task for each scheduled one: Morning Newspaper every day at 7:00 AM; Meeting Prep Brief every weekday at 7:30 AM; Inbox Digest every weekday at 8:00 AM. If you can save these as skills, please do. === Skill 1 of 3: Morning Newspaper === --- name: morning-newspaper description: Use when the user asks for their morning paper, daily briefing, front page, or "what do I need to know today", or when a scheduled morning routine runs this skill. Builds a personalized, newspaper-style briefing with top stories, the user's chosen topics, markets, weather, a calendar glance, and one long read, every item linked to a source published in the last 24 hours. metadata: id: morning-newspaper version: "1.0.0" author: BotPlaza --- # Morning Newspaper > Wake up to a front page built for you. ## What it does Assemble a one-page, newspaper-style briefing the reader can finish over coffee: a masthead, a lead story, the topics they care about, markets, weather, today's calendar, and one long read worth saving for later. Every story links to its source. Nothing is invented. ## When to use - The user asks for "my paper", "the morning paper", "today's front page", "daily briefing", or "what's going on today". - A scheduled routine (for example "every day at 7:00 AM") calls this skill. - The user asks to change what the paper covers. Update the saved preferences, then confirm the change in one line. ## Requires Web search and web access for news and weather. Optional: a calendar connector (Google Calendar or Outlook) for "Your day", and an email connector for "Inbox watch". If an optional connector is missing, skip that section and say so in one line. ## Schedule Default: Daily, 7:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs Read these from saved preferences or memory. On the first run, ask for them once in a single short message, offer the defaults, and save the answers. | Setting | Default | Notes | |---|---|---| | `masthead` | "The Morning Edition" | Paper name shown at the top. Many readers use "The [Name] Daily". | | `reader_name` | user's first name | Used in the greeting line only. | | `location` | ask | City for weather. Also sets the "local" section. | | `timezone` | user's timezone | All times print in this zone, with its label. | | `topics` | World, Technology, Business, Science | Toggle any of: World, Local, Politics, Business, Technology, AI, Science, Health, Climate, Sports, Culture, Books, Design, Startups, Crypto. Custom topics allowed (e.g. "Formula 1", "Denver housing"). | | `teams_or_tickers` | none | Sports teams to follow and market tickers to watch. | | `sections` | all on | Front page, Topics, Markets, Weather, Calendar, Long Read, Inbox Watch (off by default), On This Day (off by default), Quote (off by default). | | `length` | standard | `brief` (about 3 min read), `standard` (about 6 min), `full` (about 12 min). | | `tone` | straight | `straight` (wire-service neutral), `conversational`, or `witty` (light, never flippant about tragedy). | | `sources_prefer` / `sources_avoid` | none | Outlets to favor or skip. | | `delivery` | this chat | Where the paper lands: chat, email draft, or a document. | ## Steps 1. **Load preferences.** Read saved settings. If any required setting (`location`, `timezone`) is missing, use the defaults above, run anyway, and ask for it at the end of the paper in one line. 2. **Set the news window.** The window is the 24 hours before now in the reader's timezone. On Monday, widen to 72 hours so weekend news isn't lost. Write today's date in full for the masthead (e.g. "Saturday, October 31, 2026"). 3. **Gather the front page.** Search the web for the biggest stories in the window. Pick candidates that at least two independent outlets are reporting. Open each article; do not write from search snippets alone. Record the outlet, headline, publish time, and URL. 4. **Gather each topic.** For each toggled topic, find 1 to 3 stories in the window (1 for `brief`, 2 for `standard`, 3 for `full`). Prefer original reporting, primary sources (filings, papers, official statements), and the user's `sources_prefer`. Skip `sources_avoid`. 5. **Markets.** If the Markets section is on, get the latest close or current level for major indexes plus each ticker in `teams_or_tickers`, with percent change and the "as of" time. On weekends and market holidays, show the last close and say so ("Markets closed; figures as of Friday's close"). 6. **Weather.** Get today's forecast for `location`: high, low, conditions, precipitation chance, and anything notable (warnings, air quality, sunset time). One sentence on what it means for the day ("Bring an umbrella after 3 PM"). 7. **Calendar glance.** If a calendar connector is available, list today's events with start times in the reader's timezone, and flag conflicts, early starts, and travel gaps. If no calendar is connected, drop the section silently on scheduled runs, and mention once on manual runs that connecting a calendar adds it. 8. **Inbox watch (optional).** If enabled and an email connector is available, list up to 3 messages that need a reply today. Show sender and subject only, never full message bodies. 9. **Long read.** Pick one substantial piece (feature, essay, investigation, or interview) published in the last 7 days that matches the reader's topics. Give its reading time and a two-sentence reason it's worth the time. 10. **Rank and cut.** Lead with the story that most affects the reader: global significance first, then topic match, then local relevance. Remove duplicates across sections. Cut to the length budget. A short paper beats a padded one. 11. **Write.** Use the output format below. Headlines in sentence case, active voice, under 12 words. Each summary is 1 to 3 sentences: what happened, why it matters, what's next. Write in the chosen tone. No hype words ("game-changer", "revolutionary"), and no opinions presented as fact. 12. **Check before sending.** Every story has a working link and a publish time inside the window. Every number (prices, percentages, temperatures) comes from a source opened this run. Dates and times show the reader's timezone. If a fact can't be verified, cut it. 13. **Deliver.** Post to the `delivery` destination. If delivery means sending an email or posting somewhere new, draft it and ask for approval the first time. ## Output format ```markdown # {MASTHEAD} **{Weekday, Month D, YYYY}** · {Location} · {Edition No. N, optional} *Good morning, {reader_name}. {One sentence on the shape of the day.}* --- ## Front page ### {Lead headline} {2–3 sentence summary.} [{Outlet}]({url}) · {time, tz} ### {Second headline} {1–2 sentences.} [{Outlet}]({url}) ## {Topic name} - **{Headline}.** {1–2 sentences.} [{Outlet}]({url}) ## Markets | Index / ticker | Level | Change | |---|---|---| *As of {time, tz}. Source: [{source}]({url})* ## Weather: {Location} {High}/{Low}, {conditions}. {Precip chance}. {What it means for the day.} ## Your day - {time} · {event} {flag if any} ## The long read **[{Title}]({url})**, {Outlet}, {N} min read {Two sentences on why it's worth it.} --- *Sources opened this morning: {count}. Reply "more on {topic}", "less {topic}", or "add {topic}" to adjust tomorrow's paper.* ``` ## Customization - "Add Formula 1 and drop crypto." Update `topics`. - "Make it shorter on weekdays and full on Sundays." Store a per-day `length`. - "Call it The Rivera Herald." Update `masthead`. - "Deliver at 6:30 AM." Update the routine schedule, not this skill. - "Only Canadian sources for local news." Add to `sources_prefer` for Local. ## Edge cases - **Quiet news day:** run fewer stories. Never pad with old news. Say "A quiet morning" in the greeting. - **Breaking story still developing:** label it "Developing" and say what is confirmed and what isn't. - **Paywalled source:** summarize only what's visible and mark the link "(paywall)". Prefer an open source covering the same story. - **Topic with no news in the window:** omit the topic. Don't stretch the window except on Mondays. - **Reader is traveling:** if the calendar shows travel or the user says they're away, use the destination for weather and local news and label it. - **Tragedy or sensitive news:** use the straight tone for that item even when the paper is set to witty. - **A source fails or a connector is down:** run with what works and note it in one line at the bottom ("Calendar unavailable this morning"). - **Conflicting reports:** give both figures and their sources rather than picking one. ## Boundaries - Read-only. This skill never sends email, accepts invites, or posts publicly without the user's approval. - Never present unverified claims, search snippets, or model memory as today's news. - Don't quote more than a sentence or two from any article. Summarize and link. === Skill 2 of 3: Meeting Prep Brief === --- name: meeting-prep-brief description: Use when the user asks to prep for a meeting, call, or interview, asks "who am I meeting today", or when a routine runs before calendar events. Builds a one-page brief per meeting with attendee backgrounds, shared history from email and docs, the goal, talking points, and questions to ask, all sourced. metadata: id: meeting-prep-brief version: "1.0.0" author: BotPlaza --- # Meeting Prep Brief > Walk into every meeting knowing who's there and what you want. ## What it does Walk into every meeting knowing who's in the room, what happened last time, and what you want out of it. ## When to use - "Prep me for my 2 PM", "who's on my calendar today", "brief me before the call with {name}". - A routine that runs each morning for the day's meetings, or 30 minutes before each external meeting. ## Requires A calendar connector. Email and document connectors make the brief much better but are optional. Web search for public background. ## Schedule Default: Weekdays, 7:30 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Setting | Default | Notes | |---|---|---| | `which_meetings` | today's meetings with external attendees | Or a named meeting, "all of today", or "next 3 days". | | `skip` | 1:1s with direct reports, focus blocks, all-hands | Patterns to ignore. | | `depth` | standard | `quick` (5 bullets), `standard` (1 page), `deep` (adds company research and recent news). | | `my_goal` | infer, then confirm | What the user wants out of the meeting. | ## Steps 1. **Read the event:** title, time (user's timezone), duration, attendees, location or link, agenda, and attachments. 2. **Identify attendees.** For each person outside the user's organization, find their role and company from the invite, email signatures, and public professional profiles or company pages. Don't guess; if unknown, say "Role unknown". 3. **Pull shared history.** Search email and docs for the last 3 to 5 interactions with these attendees or their company. Note open commitments on both sides ("You promised pricing by Friday"). 4. **Check the news.** For external companies, find anything material in the last 30 days (funding, launches, leadership changes, layoffs) with links. 5. **Set the goal.** State the user's likely goal in one line. If it's unclear, write two options and ask. 6. **Write talking points and questions:** 3 points the user should make and 3 questions to ask, each grounded in the history or news above. 7. **Flag risks:** conflicts, back-to-back meetings with no travel time, missing dial-in, attendees added at the last minute. ## Output format ```markdown # {Meeting title} **{Day, time–time tz}** · {Location / link} · {Duration} **Goal:** {one line} ## Who's in the room - **{Name}**, {Role}, {Company}. {One relevant fact.} [source]({url}) ## Where things stand - {Last interaction, date, outcome} - **Open:** {commitment, owner, due} ## Worth knowing - {Recent company news.} [source]({url}) ## Say 1. {Talking point} ## Ask 1. {Question} ## Watch out - {Risk or logistics flag} ``` ## Edge cases - **No external attendees:** give a 3-line brief (purpose, open items, what to bring). - **Recurring meeting:** focus on what changed since the last occurrence. - **Common name, uncertain match:** say the match is uncertain and don't include background. - **Private or personal events:** skip them unless the user asks. ## Boundaries Read-only. Don't email attendees, accept or decline invites, or edit events without approval. Use only professional, public information about people. === Skill 3 of 3: Inbox Digest === --- name: inbox-digest description: Use when the user asks to triage their inbox, for an email digest, "what needs my attention in email", or when a scheduled daily email routine runs. Sorts recent mail into Reply today, Waiting on you, FYI, and Safe to ignore, with drafts offered for replies. Read-only; never sends, archives, or deletes without approval. metadata: id: inbox-digest version: "1.0.0" author: BotPlaza --- # Inbox Digest > Know which five emails matter before you open your inbox. ## What it does Turn an overflowing inbox into a short list: what needs a reply today, what's waiting on you, what's worth knowing, and what can go. ## When to use - "Triage my inbox", "what did I miss in email", "daily email digest", "anything urgent?" - A scheduled routine (e.g. weekdays at 8:00 AM and 4:00 PM). ## Requires An email connector (Gmail, Outlook, or similar) with read access. If none is connected, say so and stop. Don't ask for a password. ## Schedule Default: Weekdays, 8:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Setting | Default | Notes | |---|---|---| | `window` | since last digest, max 24 h | Or "last 3 days" after a vacation. | | `vip_senders` | none | People or domains that always rank first. | | `mute` | newsletters, receipts, social notifications | Categories to drop into Safe to ignore. | | `max_items` | 15 | Cap across all buckets. | | `draft_replies` | offer | `off`, `offer` (ask first), or `auto-draft` (save drafts, never send). | | `tone` | the user's own | Learn from their sent mail when drafting. | ## Steps 1. **Fetch** threads in the window from the inbox (skip spam and trash). Read the latest message in each thread plus enough history to understand it. 2. **Classify** each thread: - **Reply today:** a direct question or request to the user, a deadline within 48 hours, or anything from a VIP that asks for something. - **Waiting on you:** the user owes something but it isn't urgent, including threads where the user said "I'll get back to you". - **FYI:** worth knowing, no action (decisions made, status updates, confirmations). - **Safe to ignore:** muted categories, automated mail, cold outreach. 3. **Extract** for each actionable thread: sender, subject, the ask in one line, any deadline (in the user's timezone), and a link to the thread. 4. **Rank** within buckets: VIP, then deadline, then age. 5. **Draft** (if enabled): for Reply today items, write a short reply in the user's voice. Save as drafts only when the setting is `auto-draft`; otherwise show them inline and ask. 6. **Deliver** the digest in the format below. ## Output format ```markdown # Inbox digest · {date, time tz} {N} new threads · {R} need a reply today ## Reply today 1. **{Sender}**: {Subject}. {The ask in one line.} Due {deadline}. [Open]({thread link}) ## Waiting on you - **{Sender}**: {what you owe}, {age} ## FYI - {One-line summary} ({sender}) ## Safe to ignore ({count}) {Comma-separated senders or categories} *Reply "draft 1" to get a reply drafted, or "mute {sender}" to hide them next time.* ``` ## Edge cases - **Sensitive content** (medical, legal, HR, financial account numbers): summarize at the subject level only. - **Possible phishing** (urgent payment requests, credential links, lookalike domains): put in a separate "Looks suspicious" line and never click its links. - **Very long threads:** summarize the current state, not the history. - **Empty window:** reply "Inbox is clear since {time}." and stop. ## Boundaries Never send, archive, label, delete, unsubscribe, or forward without the user's explicit approval for that specific action. ```` ### Dots 1. Paste the prompt into a chat with your assistant (it contains every SKILL.md). 2. Answer the setup questions once. 3. Try one: "Run Morning Newspaper." 4. Wait for the dot to confirm each schedule. ````text Here are 3 task instructions from the BotPlaza bundle "Morning Routine". Take these on as ongoing responsibilities and follow each one whenever I say "Run ". Before the first run, read the setup questions in all 3 skills, merge the ones they share (such as my name, city, time zone and where to deliver), ask me everything in one short message, and remember my answers for every skill in this bundle. Never send, post, submit, or buy anything on my behalf without asking me first. 1. Morning Newspaper: routine every day at 7:00 AM 2. Meeting Prep Brief: routine every weekday at 7:30 AM 3. Inbox Digest: routine every weekday at 8:00 AM Set scheduled check-ins in Eastern time for the next 3 months: Morning Newspaper every day at 7:00 AM; Meeting Prep Brief every weekday at 7:30 AM; Inbox Digest every weekday at 8:00 AM. Confirm the schedules back to me. === Skill 1 of 3: Morning Newspaper === --- name: morning-newspaper description: Use when the user asks for their morning paper, daily briefing, front page, or "what do I need to know today", or when a scheduled morning routine runs this skill. Builds a personalized, newspaper-style briefing with top stories, the user's chosen topics, markets, weather, a calendar glance, and one long read, every item linked to a source published in the last 24 hours. metadata: id: morning-newspaper version: "1.0.0" author: BotPlaza --- # Morning Newspaper > Wake up to a front page built for you. ## What it does Assemble a one-page, newspaper-style briefing the reader can finish over coffee: a masthead, a lead story, the topics they care about, markets, weather, today's calendar, and one long read worth saving for later. Every story links to its source. Nothing is invented. ## When to use - The user asks for "my paper", "the morning paper", "today's front page", "daily briefing", or "what's going on today". - A scheduled routine (for example "every day at 7:00 AM") calls this skill. - The user asks to change what the paper covers. Update the saved preferences, then confirm the change in one line. ## Requires Web search and web access for news and weather. Optional: a calendar connector (Google Calendar or Outlook) for "Your day", and an email connector for "Inbox watch". If an optional connector is missing, skip that section and say so in one line. ## Schedule Default: Daily, 7:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs Read these from saved preferences or memory. On the first run, ask for them once in a single short message, offer the defaults, and save the answers. | Setting | Default | Notes | |---|---|---| | `masthead` | "The Morning Edition" | Paper name shown at the top. Many readers use "The [Name] Daily". | | `reader_name` | user's first name | Used in the greeting line only. | | `location` | ask | City for weather. Also sets the "local" section. | | `timezone` | user's timezone | All times print in this zone, with its label. | | `topics` | World, Technology, Business, Science | Toggle any of: World, Local, Politics, Business, Technology, AI, Science, Health, Climate, Sports, Culture, Books, Design, Startups, Crypto. Custom topics allowed (e.g. "Formula 1", "Denver housing"). | | `teams_or_tickers` | none | Sports teams to follow and market tickers to watch. | | `sections` | all on | Front page, Topics, Markets, Weather, Calendar, Long Read, Inbox Watch (off by default), On This Day (off by default), Quote (off by default). | | `length` | standard | `brief` (about 3 min read), `standard` (about 6 min), `full` (about 12 min). | | `tone` | straight | `straight` (wire-service neutral), `conversational`, or `witty` (light, never flippant about tragedy). | | `sources_prefer` / `sources_avoid` | none | Outlets to favor or skip. | | `delivery` | this chat | Where the paper lands: chat, email draft, or a document. | ## Steps 1. **Load preferences.** Read saved settings. If any required setting (`location`, `timezone`) is missing, use the defaults above, run anyway, and ask for it at the end of the paper in one line. 2. **Set the news window.** The window is the 24 hours before now in the reader's timezone. On Monday, widen to 72 hours so weekend news isn't lost. Write today's date in full for the masthead (e.g. "Saturday, October 31, 2026"). 3. **Gather the front page.** Search the web for the biggest stories in the window. Pick candidates that at least two independent outlets are reporting. Open each article; do not write from search snippets alone. Record the outlet, headline, publish time, and URL. 4. **Gather each topic.** For each toggled topic, find 1 to 3 stories in the window (1 for `brief`, 2 for `standard`, 3 for `full`). Prefer original reporting, primary sources (filings, papers, official statements), and the user's `sources_prefer`. Skip `sources_avoid`. 5. **Markets.** If the Markets section is on, get the latest close or current level for major indexes plus each ticker in `teams_or_tickers`, with percent change and the "as of" time. On weekends and market holidays, show the last close and say so ("Markets closed; figures as of Friday's close"). 6. **Weather.** Get today's forecast for `location`: high, low, conditions, precipitation chance, and anything notable (warnings, air quality, sunset time). One sentence on what it means for the day ("Bring an umbrella after 3 PM"). 7. **Calendar glance.** If a calendar connector is available, list today's events with start times in the reader's timezone, and flag conflicts, early starts, and travel gaps. If no calendar is connected, drop the section silently on scheduled runs, and mention once on manual runs that connecting a calendar adds it. 8. **Inbox watch (optional).** If enabled and an email connector is available, list up to 3 messages that need a reply today. Show sender and subject only, never full message bodies. 9. **Long read.** Pick one substantial piece (feature, essay, investigation, or interview) published in the last 7 days that matches the reader's topics. Give its reading time and a two-sentence reason it's worth the time. 10. **Rank and cut.** Lead with the story that most affects the reader: global significance first, then topic match, then local relevance. Remove duplicates across sections. Cut to the length budget. A short paper beats a padded one. 11. **Write.** Use the output format below. Headlines in sentence case, active voice, under 12 words. Each summary is 1 to 3 sentences: what happened, why it matters, what's next. Write in the chosen tone. No hype words ("game-changer", "revolutionary"), and no opinions presented as fact. 12. **Check before sending.** Every story has a working link and a publish time inside the window. Every number (prices, percentages, temperatures) comes from a source opened this run. Dates and times show the reader's timezone. If a fact can't be verified, cut it. 13. **Deliver.** Post to the `delivery` destination. If delivery means sending an email or posting somewhere new, draft it and ask for approval the first time. ## Output format ```markdown # {MASTHEAD} **{Weekday, Month D, YYYY}** · {Location} · {Edition No. N, optional} *Good morning, {reader_name}. {One sentence on the shape of the day.}* --- ## Front page ### {Lead headline} {2–3 sentence summary.} [{Outlet}]({url}) · {time, tz} ### {Second headline} {1–2 sentences.} [{Outlet}]({url}) ## {Topic name} - **{Headline}.** {1–2 sentences.} [{Outlet}]({url}) ## Markets | Index / ticker | Level | Change | |---|---|---| *As of {time, tz}. Source: [{source}]({url})* ## Weather: {Location} {High}/{Low}, {conditions}. {Precip chance}. {What it means for the day.} ## Your day - {time} · {event} {flag if any} ## The long read **[{Title}]({url})**, {Outlet}, {N} min read {Two sentences on why it's worth it.} --- *Sources opened this morning: {count}. Reply "more on {topic}", "less {topic}", or "add {topic}" to adjust tomorrow's paper.* ``` ## Customization - "Add Formula 1 and drop crypto." Update `topics`. - "Make it shorter on weekdays and full on Sundays." Store a per-day `length`. - "Call it The Rivera Herald." Update `masthead`. - "Deliver at 6:30 AM." Update the routine schedule, not this skill. - "Only Canadian sources for local news." Add to `sources_prefer` for Local. ## Edge cases - **Quiet news day:** run fewer stories. Never pad with old news. Say "A quiet morning" in the greeting. - **Breaking story still developing:** label it "Developing" and say what is confirmed and what isn't. - **Paywalled source:** summarize only what's visible and mark the link "(paywall)". Prefer an open source covering the same story. - **Topic with no news in the window:** omit the topic. Don't stretch the window except on Mondays. - **Reader is traveling:** if the calendar shows travel or the user says they're away, use the destination for weather and local news and label it. - **Tragedy or sensitive news:** use the straight tone for that item even when the paper is set to witty. - **A source fails or a connector is down:** run with what works and note it in one line at the bottom ("Calendar unavailable this morning"). - **Conflicting reports:** give both figures and their sources rather than picking one. ## Boundaries - Read-only. This skill never sends email, accepts invites, or posts publicly without the user's approval. - Never present unverified claims, search snippets, or model memory as today's news. - Don't quote more than a sentence or two from any article. Summarize and link. === Skill 2 of 3: Meeting Prep Brief === --- name: meeting-prep-brief description: Use when the user asks to prep for a meeting, call, or interview, asks "who am I meeting today", or when a routine runs before calendar events. Builds a one-page brief per meeting with attendee backgrounds, shared history from email and docs, the goal, talking points, and questions to ask, all sourced. metadata: id: meeting-prep-brief version: "1.0.0" author: BotPlaza --- # Meeting Prep Brief > Walk into every meeting knowing who's there and what you want. ## What it does Walk into every meeting knowing who's in the room, what happened last time, and what you want out of it. ## When to use - "Prep me for my 2 PM", "who's on my calendar today", "brief me before the call with {name}". - A routine that runs each morning for the day's meetings, or 30 minutes before each external meeting. ## Requires A calendar connector. Email and document connectors make the brief much better but are optional. Web search for public background. ## Schedule Default: Weekdays, 7:30 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Setting | Default | Notes | |---|---|---| | `which_meetings` | today's meetings with external attendees | Or a named meeting, "all of today", or "next 3 days". | | `skip` | 1:1s with direct reports, focus blocks, all-hands | Patterns to ignore. | | `depth` | standard | `quick` (5 bullets), `standard` (1 page), `deep` (adds company research and recent news). | | `my_goal` | infer, then confirm | What the user wants out of the meeting. | ## Steps 1. **Read the event:** title, time (user's timezone), duration, attendees, location or link, agenda, and attachments. 2. **Identify attendees.** For each person outside the user's organization, find their role and company from the invite, email signatures, and public professional profiles or company pages. Don't guess; if unknown, say "Role unknown". 3. **Pull shared history.** Search email and docs for the last 3 to 5 interactions with these attendees or their company. Note open commitments on both sides ("You promised pricing by Friday"). 4. **Check the news.** For external companies, find anything material in the last 30 days (funding, launches, leadership changes, layoffs) with links. 5. **Set the goal.** State the user's likely goal in one line. If it's unclear, write two options and ask. 6. **Write talking points and questions:** 3 points the user should make and 3 questions to ask, each grounded in the history or news above. 7. **Flag risks:** conflicts, back-to-back meetings with no travel time, missing dial-in, attendees added at the last minute. ## Output format ```markdown # {Meeting title} **{Day, time–time tz}** · {Location / link} · {Duration} **Goal:** {one line} ## Who's in the room - **{Name}**, {Role}, {Company}. {One relevant fact.} [source]({url}) ## Where things stand - {Last interaction, date, outcome} - **Open:** {commitment, owner, due} ## Worth knowing - {Recent company news.} [source]({url}) ## Say 1. {Talking point} ## Ask 1. {Question} ## Watch out - {Risk or logistics flag} ``` ## Edge cases - **No external attendees:** give a 3-line brief (purpose, open items, what to bring). - **Recurring meeting:** focus on what changed since the last occurrence. - **Common name, uncertain match:** say the match is uncertain and don't include background. - **Private or personal events:** skip them unless the user asks. ## Boundaries Read-only. Don't email attendees, accept or decline invites, or edit events without approval. Use only professional, public information about people. === Skill 3 of 3: Inbox Digest === --- name: inbox-digest description: Use when the user asks to triage their inbox, for an email digest, "what needs my attention in email", or when a scheduled daily email routine runs. Sorts recent mail into Reply today, Waiting on you, FYI, and Safe to ignore, with drafts offered for replies. Read-only; never sends, archives, or deletes without approval. metadata: id: inbox-digest version: "1.0.0" author: BotPlaza --- # Inbox Digest > Know which five emails matter before you open your inbox. ## What it does Turn an overflowing inbox into a short list: what needs a reply today, what's waiting on you, what's worth knowing, and what can go. ## When to use - "Triage my inbox", "what did I miss in email", "daily email digest", "anything urgent?" - A scheduled routine (e.g. weekdays at 8:00 AM and 4:00 PM). ## Requires An email connector (Gmail, Outlook, or similar) with read access. If none is connected, say so and stop. Don't ask for a password. ## Schedule Default: Weekdays, 8:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Setting | Default | Notes | |---|---|---| | `window` | since last digest, max 24 h | Or "last 3 days" after a vacation. | | `vip_senders` | none | People or domains that always rank first. | | `mute` | newsletters, receipts, social notifications | Categories to drop into Safe to ignore. | | `max_items` | 15 | Cap across all buckets. | | `draft_replies` | offer | `off`, `offer` (ask first), or `auto-draft` (save drafts, never send). | | `tone` | the user's own | Learn from their sent mail when drafting. | ## Steps 1. **Fetch** threads in the window from the inbox (skip spam and trash). Read the latest message in each thread plus enough history to understand it. 2. **Classify** each thread: - **Reply today:** a direct question or request to the user, a deadline within 48 hours, or anything from a VIP that asks for something. - **Waiting on you:** the user owes something but it isn't urgent, including threads where the user said "I'll get back to you". - **FYI:** worth knowing, no action (decisions made, status updates, confirmations). - **Safe to ignore:** muted categories, automated mail, cold outreach. 3. **Extract** for each actionable thread: sender, subject, the ask in one line, any deadline (in the user's timezone), and a link to the thread. 4. **Rank** within buckets: VIP, then deadline, then age. 5. **Draft** (if enabled): for Reply today items, write a short reply in the user's voice. Save as drafts only when the setting is `auto-draft`; otherwise show them inline and ask. 6. **Deliver** the digest in the format below. ## Output format ```markdown # Inbox digest · {date, time tz} {N} new threads · {R} need a reply today ## Reply today 1. **{Sender}**: {Subject}. {The ask in one line.} Due {deadline}. [Open]({thread link}) ## Waiting on you - **{Sender}**: {what you owe}, {age} ## FYI - {One-line summary} ({sender}) ## Safe to ignore ({count}) {Comma-separated senders or categories} *Reply "draft 1" to get a reply drafted, or "mute {sender}" to hide them next time.* ``` ## Edge cases - **Sensitive content** (medical, legal, HR, financial account numbers): summarize at the subject level only. - **Possible phishing** (urgent payment requests, credential links, lookalike domains): put in a separate "Looks suspicious" line and never click its links. - **Very long threads:** summarize the current state, not the history. - **Empty window:** reply "Inbox is clear since {time}." and stop. ## Boundaries Never send, archive, label, delete, unsubscribe, or forward without the user's explicit approval for that specific action. ```` ### Any assistant 1. Paste the prompt into a chat with your assistant (it contains every SKILL.md). 2. Answer the setup questions once. 3. Try one: "Run Morning Newspaper." ````text Here are 3 task instructions from the BotPlaza bundle "Morning Routine". Follow each one whenever I say "Run ". Before the first run, read the setup questions in all 3 skills, merge the ones they share (such as my name, city, time zone and where to deliver), ask me everything in one short message, and remember my answers for every skill in this bundle. Never send, post, submit, or buy anything on my behalf without asking me first. 1. Morning Newspaper: routine every day at 7:00 AM 2. Meeting Prep Brief: routine every weekday at 7:30 AM 3. Inbox Digest: routine every weekday at 8:00 AM === Skill 1 of 3: Morning Newspaper === --- name: morning-newspaper description: Use when the user asks for their morning paper, daily briefing, front page, or "what do I need to know today", or when a scheduled morning routine runs this skill. Builds a personalized, newspaper-style briefing with top stories, the user's chosen topics, markets, weather, a calendar glance, and one long read, every item linked to a source published in the last 24 hours. metadata: id: morning-newspaper version: "1.0.0" author: BotPlaza --- # Morning Newspaper > Wake up to a front page built for you. ## What it does Assemble a one-page, newspaper-style briefing the reader can finish over coffee: a masthead, a lead story, the topics they care about, markets, weather, today's calendar, and one long read worth saving for later. Every story links to its source. Nothing is invented. ## When to use - The user asks for "my paper", "the morning paper", "today's front page", "daily briefing", or "what's going on today". - A scheduled routine (for example "every day at 7:00 AM") calls this skill. - The user asks to change what the paper covers. Update the saved preferences, then confirm the change in one line. ## Requires Web search and web access for news and weather. Optional: a calendar connector (Google Calendar or Outlook) for "Your day", and an email connector for "Inbox watch". If an optional connector is missing, skip that section and say so in one line. ## Schedule Default: Daily, 7:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs Read these from saved preferences or memory. On the first run, ask for them once in a single short message, offer the defaults, and save the answers. | Setting | Default | Notes | |---|---|---| | `masthead` | "The Morning Edition" | Paper name shown at the top. Many readers use "The [Name] Daily". | | `reader_name` | user's first name | Used in the greeting line only. | | `location` | ask | City for weather. Also sets the "local" section. | | `timezone` | user's timezone | All times print in this zone, with its label. | | `topics` | World, Technology, Business, Science | Toggle any of: World, Local, Politics, Business, Technology, AI, Science, Health, Climate, Sports, Culture, Books, Design, Startups, Crypto. Custom topics allowed (e.g. "Formula 1", "Denver housing"). | | `teams_or_tickers` | none | Sports teams to follow and market tickers to watch. | | `sections` | all on | Front page, Topics, Markets, Weather, Calendar, Long Read, Inbox Watch (off by default), On This Day (off by default), Quote (off by default). | | `length` | standard | `brief` (about 3 min read), `standard` (about 6 min), `full` (about 12 min). | | `tone` | straight | `straight` (wire-service neutral), `conversational`, or `witty` (light, never flippant about tragedy). | | `sources_prefer` / `sources_avoid` | none | Outlets to favor or skip. | | `delivery` | this chat | Where the paper lands: chat, email draft, or a document. | ## Steps 1. **Load preferences.** Read saved settings. If any required setting (`location`, `timezone`) is missing, use the defaults above, run anyway, and ask for it at the end of the paper in one line. 2. **Set the news window.** The window is the 24 hours before now in the reader's timezone. On Monday, widen to 72 hours so weekend news isn't lost. Write today's date in full for the masthead (e.g. "Saturday, October 31, 2026"). 3. **Gather the front page.** Search the web for the biggest stories in the window. Pick candidates that at least two independent outlets are reporting. Open each article; do not write from search snippets alone. Record the outlet, headline, publish time, and URL. 4. **Gather each topic.** For each toggled topic, find 1 to 3 stories in the window (1 for `brief`, 2 for `standard`, 3 for `full`). Prefer original reporting, primary sources (filings, papers, official statements), and the user's `sources_prefer`. Skip `sources_avoid`. 5. **Markets.** If the Markets section is on, get the latest close or current level for major indexes plus each ticker in `teams_or_tickers`, with percent change and the "as of" time. On weekends and market holidays, show the last close and say so ("Markets closed; figures as of Friday's close"). 6. **Weather.** Get today's forecast for `location`: high, low, conditions, precipitation chance, and anything notable (warnings, air quality, sunset time). One sentence on what it means for the day ("Bring an umbrella after 3 PM"). 7. **Calendar glance.** If a calendar connector is available, list today's events with start times in the reader's timezone, and flag conflicts, early starts, and travel gaps. If no calendar is connected, drop the section silently on scheduled runs, and mention once on manual runs that connecting a calendar adds it. 8. **Inbox watch (optional).** If enabled and an email connector is available, list up to 3 messages that need a reply today. Show sender and subject only, never full message bodies. 9. **Long read.** Pick one substantial piece (feature, essay, investigation, or interview) published in the last 7 days that matches the reader's topics. Give its reading time and a two-sentence reason it's worth the time. 10. **Rank and cut.** Lead with the story that most affects the reader: global significance first, then topic match, then local relevance. Remove duplicates across sections. Cut to the length budget. A short paper beats a padded one. 11. **Write.** Use the output format below. Headlines in sentence case, active voice, under 12 words. Each summary is 1 to 3 sentences: what happened, why it matters, what's next. Write in the chosen tone. No hype words ("game-changer", "revolutionary"), and no opinions presented as fact. 12. **Check before sending.** Every story has a working link and a publish time inside the window. Every number (prices, percentages, temperatures) comes from a source opened this run. Dates and times show the reader's timezone. If a fact can't be verified, cut it. 13. **Deliver.** Post to the `delivery` destination. If delivery means sending an email or posting somewhere new, draft it and ask for approval the first time. ## Output format ```markdown # {MASTHEAD} **{Weekday, Month D, YYYY}** · {Location} · {Edition No. N, optional} *Good morning, {reader_name}. {One sentence on the shape of the day.}* --- ## Front page ### {Lead headline} {2–3 sentence summary.} [{Outlet}]({url}) · {time, tz} ### {Second headline} {1–2 sentences.} [{Outlet}]({url}) ## {Topic name} - **{Headline}.** {1–2 sentences.} [{Outlet}]({url}) ## Markets | Index / ticker | Level | Change | |---|---|---| *As of {time, tz}. Source: [{source}]({url})* ## Weather: {Location} {High}/{Low}, {conditions}. {Precip chance}. {What it means for the day.} ## Your day - {time} · {event} {flag if any} ## The long read **[{Title}]({url})**, {Outlet}, {N} min read {Two sentences on why it's worth it.} --- *Sources opened this morning: {count}. Reply "more on {topic}", "less {topic}", or "add {topic}" to adjust tomorrow's paper.* ``` ## Customization - "Add Formula 1 and drop crypto." Update `topics`. - "Make it shorter on weekdays and full on Sundays." Store a per-day `length`. - "Call it The Rivera Herald." Update `masthead`. - "Deliver at 6:30 AM." Update the routine schedule, not this skill. - "Only Canadian sources for local news." Add to `sources_prefer` for Local. ## Edge cases - **Quiet news day:** run fewer stories. Never pad with old news. Say "A quiet morning" in the greeting. - **Breaking story still developing:** label it "Developing" and say what is confirmed and what isn't. - **Paywalled source:** summarize only what's visible and mark the link "(paywall)". Prefer an open source covering the same story. - **Topic with no news in the window:** omit the topic. Don't stretch the window except on Mondays. - **Reader is traveling:** if the calendar shows travel or the user says they're away, use the destination for weather and local news and label it. - **Tragedy or sensitive news:** use the straight tone for that item even when the paper is set to witty. - **A source fails or a connector is down:** run with what works and note it in one line at the bottom ("Calendar unavailable this morning"). - **Conflicting reports:** give both figures and their sources rather than picking one. ## Boundaries - Read-only. This skill never sends email, accepts invites, or posts publicly without the user's approval. - Never present unverified claims, search snippets, or model memory as today's news. - Don't quote more than a sentence or two from any article. Summarize and link. === Skill 2 of 3: Meeting Prep Brief === --- name: meeting-prep-brief description: Use when the user asks to prep for a meeting, call, or interview, asks "who am I meeting today", or when a routine runs before calendar events. Builds a one-page brief per meeting with attendee backgrounds, shared history from email and docs, the goal, talking points, and questions to ask, all sourced. metadata: id: meeting-prep-brief version: "1.0.0" author: BotPlaza --- # Meeting Prep Brief > Walk into every meeting knowing who's there and what you want. ## What it does Walk into every meeting knowing who's in the room, what happened last time, and what you want out of it. ## When to use - "Prep me for my 2 PM", "who's on my calendar today", "brief me before the call with {name}". - A routine that runs each morning for the day's meetings, or 30 minutes before each external meeting. ## Requires A calendar connector. Email and document connectors make the brief much better but are optional. Web search for public background. ## Schedule Default: Weekdays, 7:30 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Setting | Default | Notes | |---|---|---| | `which_meetings` | today's meetings with external attendees | Or a named meeting, "all of today", or "next 3 days". | | `skip` | 1:1s with direct reports, focus blocks, all-hands | Patterns to ignore. | | `depth` | standard | `quick` (5 bullets), `standard` (1 page), `deep` (adds company research and recent news). | | `my_goal` | infer, then confirm | What the user wants out of the meeting. | ## Steps 1. **Read the event:** title, time (user's timezone), duration, attendees, location or link, agenda, and attachments. 2. **Identify attendees.** For each person outside the user's organization, find their role and company from the invite, email signatures, and public professional profiles or company pages. Don't guess; if unknown, say "Role unknown". 3. **Pull shared history.** Search email and docs for the last 3 to 5 interactions with these attendees or their company. Note open commitments on both sides ("You promised pricing by Friday"). 4. **Check the news.** For external companies, find anything material in the last 30 days (funding, launches, leadership changes, layoffs) with links. 5. **Set the goal.** State the user's likely goal in one line. If it's unclear, write two options and ask. 6. **Write talking points and questions:** 3 points the user should make and 3 questions to ask, each grounded in the history or news above. 7. **Flag risks:** conflicts, back-to-back meetings with no travel time, missing dial-in, attendees added at the last minute. ## Output format ```markdown # {Meeting title} **{Day, time–time tz}** · {Location / link} · {Duration} **Goal:** {one line} ## Who's in the room - **{Name}**, {Role}, {Company}. {One relevant fact.} [source]({url}) ## Where things stand - {Last interaction, date, outcome} - **Open:** {commitment, owner, due} ## Worth knowing - {Recent company news.} [source]({url}) ## Say 1. {Talking point} ## Ask 1. {Question} ## Watch out - {Risk or logistics flag} ``` ## Edge cases - **No external attendees:** give a 3-line brief (purpose, open items, what to bring). - **Recurring meeting:** focus on what changed since the last occurrence. - **Common name, uncertain match:** say the match is uncertain and don't include background. - **Private or personal events:** skip them unless the user asks. ## Boundaries Read-only. Don't email attendees, accept or decline invites, or edit events without approval. Use only professional, public information about people. === Skill 3 of 3: Inbox Digest === --- name: inbox-digest description: Use when the user asks to triage their inbox, for an email digest, "what needs my attention in email", or when a scheduled daily email routine runs. Sorts recent mail into Reply today, Waiting on you, FYI, and Safe to ignore, with drafts offered for replies. Read-only; never sends, archives, or deletes without approval. metadata: id: inbox-digest version: "1.0.0" author: BotPlaza --- # Inbox Digest > Know which five emails matter before you open your inbox. ## What it does Turn an overflowing inbox into a short list: what needs a reply today, what's waiting on you, what's worth knowing, and what can go. ## When to use - "Triage my inbox", "what did I miss in email", "daily email digest", "anything urgent?" - A scheduled routine (e.g. weekdays at 8:00 AM and 4:00 PM). ## Requires An email connector (Gmail, Outlook, or similar) with read access. If none is connected, say so and stop. Don't ask for a password. ## Schedule Default: Weekdays, 8:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Setting | Default | Notes | |---|---|---| | `window` | since last digest, max 24 h | Or "last 3 days" after a vacation. | | `vip_senders` | none | People or domains that always rank first. | | `mute` | newsletters, receipts, social notifications | Categories to drop into Safe to ignore. | | `max_items` | 15 | Cap across all buckets. | | `draft_replies` | offer | `off`, `offer` (ask first), or `auto-draft` (save drafts, never send). | | `tone` | the user's own | Learn from their sent mail when drafting. | ## Steps 1. **Fetch** threads in the window from the inbox (skip spam and trash). Read the latest message in each thread plus enough history to understand it. 2. **Classify** each thread: - **Reply today:** a direct question or request to the user, a deadline within 48 hours, or anything from a VIP that asks for something. - **Waiting on you:** the user owes something but it isn't urgent, including threads where the user said "I'll get back to you". - **FYI:** worth knowing, no action (decisions made, status updates, confirmations). - **Safe to ignore:** muted categories, automated mail, cold outreach. 3. **Extract** for each actionable thread: sender, subject, the ask in one line, any deadline (in the user's timezone), and a link to the thread. 4. **Rank** within buckets: VIP, then deadline, then age. 5. **Draft** (if enabled): for Reply today items, write a short reply in the user's voice. Save as drafts only when the setting is `auto-draft`; otherwise show them inline and ask. 6. **Deliver** the digest in the format below. ## Output format ```markdown # Inbox digest · {date, time tz} {N} new threads · {R} need a reply today ## Reply today 1. **{Sender}**: {Subject}. {The ask in one line.} Due {deadline}. [Open]({thread link}) ## Waiting on you - **{Sender}**: {what you owe}, {age} ## FYI - {One-line summary} ({sender}) ## Safe to ignore ({count}) {Comma-separated senders or categories} *Reply "draft 1" to get a reply drafted, or "mute {sender}" to hide them next time.* ``` ## Edge cases - **Sensitive content** (medical, legal, HR, financial account numbers): summarize at the subject level only. - **Possible phishing** (urgent payment requests, credential links, lookalike domains): put in a separate "Looks suspicious" line and never click its links. - **Very long threads:** summarize the current state, not the history. - **Empty window:** reply "Inbox is clear since {time}." and stop. ## Boundaries Never send, archive, label, delete, unsubscribe, or forward without the user's explicit approval for that specific action. ```` ## Safety - Calendar and inbox details appear in the paper, so don't post it to a shared channel unless you're fine with others seeing them. - Markets data is delayed; the paper shows an 'as of' time. Not financial advice. - It looks up attendees on the public web; keep it to professional info. - Briefs can include private email and doc content, so keep them in your private chat. - Read access to email is sensitive: connect only the account you want summarized. - It never sends. Auto-draft only saves drafts for you to review. - Emails can contain instructions aimed at AI; the skill treats email content as data and won't act on it.