forecast-review-prep
Builds a one-page pre-read for an upcoming forecast review, business review, or operating review by pulling the calendar event, recent email and chat discussion, attendee roles, and last cycle's open items into a structured brief. Use when the user asks to "prep me for the forecast review", "build the pre-read for the QBR", "brief me for the business review", "get me ready for the operating review", or "what is still open from last cycle". Do NOT use for anticipating specific questions (use stakeholder-qa-prep), building the forecast itself, or general meeting prep.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 107
- Forks
- 120
01 前言 Front Matter
- name
- forecast-review-prep
- license
- MIT
- metadata
- { "icon": "ChartMultiple" }
- description
- Builds a one-page pre-read for an upcoming forecast review, business review, or operating review by pulling the calendar event, recent email and chat discussion, attendee roles, and last cycle's open items into a structured brief. Use when the user asks to "prep me for the forecast review", "build the pre-read for the QBR", "brief me for the business review", "get me ready for the operating review", or "what is still open from last cycle". Do NOT use for anticipating specific questions (use stakeholder-qa-prep), building the forecast itself, or general meeting prep.
02 资源文件 1
- 许可证LICENSE1.1 KB
03 SKILL.md 正文
Forecast / Business Review Prep
A single-screen brief for an upcoming review: what it is, who's in the room, what they'll likely focus on, the numbers to have ready, and what's still open from last cycle.
When NOT to Use
- General meeting prep for any meeting type → outside this skill's scope
- Building the forecast or model itself → spreadsheet or BI work, do that first
- Anticipating and pre-answering specific questions → use
stakeholder-qa-prep - 1:1 prep → outside this skill's scope
Related Skills
Hand off rather than overlap:
- Anticipating and pre-answering questions — use stakeholder-qa-prep instead.
- A slide-format prep pack — use pptx instead.
- Writing the variance narrative itself — use variance-commentary instead.
- Close-cycle status — use close-status-digest instead.
- General meeting prep of any type — outside this skill's scope.
Workflow
1. Find the meeting
outlook_calendar-ListCalendarView from now through the next seven days, matched on the subject
keywords the user used. If they named it exactly, use that. If several candidates remain, list
them with core-AskUserQuestion — never guess between two plausible reviews.
Capture subject, start time in the user's local time zone, organizer, and attendees.
2. Identify the senior attendee
Scan the attendee list and resolve unfamiliar names with me_profile-GetUserDetails or
me_profile-SearchPeople to surface role and team. The most senior person in the room is
effectively who the user is preparing for — anchor the focus areas around them.
Never infer seniority from a name or email pattern; resolve it from the directory or leave it unstated.
3. Gather context — run these in parallel
m365_search-SearchM365withsources=["email","teams"]on the meeting subject and its key metrics, last 14 daysm365_search-SearchM365withsources=["files"]for pre-read documents referenced in those threadsoutlook-ListMessagesfiltered to the senior attendee, last 7 days- If the meeting recurs, find the prior occurrence with
outlook_calendar-ListEventsand pull its follow-up thread for open action items
4. Draft the brief
Fixed structure, capped at roughly one screen:
- Meeting — subject, time, organizer, attendees with roles
- Likely focus — what's top of mind based on retrieved discussion
- Key numbers to know — only figures found in retrieved context
- Questions to anticipate — 3-5 the senior attendee is likely to raise
- Open items from last cycle — outstanding follow-ups with owners
- Materials — bracketed links to documents found, e.g.
[file_1]
Output Format
Inline markdown. Write a file only if the user asks for one.
When Things Fail
- No matching meeting found — say so and ask for the meeting name; do not brief on a guessed event.
- Attendee lookup fails — list the attendee without a role rather than inferring seniority.
- Search returns nothing — deliver the brief with the sections you have and state plainly that no recent discussion was found. An empty "Likely focus" is a valid answer.
- Prior occurrence missing — omit the open-items section and say the prior cycle wasn't found.
- A tool errors — retry once, then continue and disclose the gap in plain language.
Example output
Meeting Q3 Business Review - Thu 14 May, 9:00-10:00 PT
Organizer: J. Alvarez - 7 attendees
Most senior: M. Chen (VP Finance)
Likely focus Renewal timing and the services margin dip flagged twice
in last week's thread
Key numbers Revenue $42.1M vs $40.3M plan (+4.5%)
Services margin 61% vs 64% prior quarter
Pipeline coverage [Verify before review]
Anticipate 1. Is the renewal pull-forward timing or run-rate?
2. What recovers the 300bps of services margin?
3. Does coverage support next quarter's number?
Open items Pricing exception policy - due from last cycle, still open
Guardrails
- Never invent a metric. If a number isn't in retrieved context, write
[Verify before review]rather than supplying a plausible figure. A brief with visible gaps is useful; a brief with invented numbers is dangerous in front of an executive. - If no relevant context surfaces, say so honestly — do not pad with generic preparation advice.
- For meetings marked private or confidential, surface the time block only, not subject details.
- Surface disagreements between attendees' recent positions rather than smoothing them over.
- Never evaluate an individual's performance, even by implication.
- If the brief would run past one screen, cut the least decision-relevant section rather than truncating mid-list.
- Never infer a person's role, seniority, or reporting line from their name or email address.
- Confirm before writing any file — the default is inline.
04 同仓库更多 Skills
stakeholder-and-decision-map
Mines customer interactions to identify stakeholders, infer their likely roles and engagement, map the decision process, and highlight who or what may be missing. Use when asked to "map a deal's buying group", identify influential or missing stakeholders, "assess who has gone quiet", or "explain how the customer will decide". Do not use for phased engagement plans, contact sequences, choosing or drafting outreach to the single next contact, seller or team performance reviews, or contacting, scheduling, or changing records.
sales-progress-update
Creates or refreshes a sales progress update for a manager or team about work done, deal movement, pending outcomes, supported forecast position, and help needed. Use when asked to "create my weekly sales update", "refresh my sales progress deck", "report my forecast position", "where do I stand against my quarter forecast", or "catch my manager up on committed deals". Do NOT use for non-sales project updates, a since-date deal change digest, momentum or blocker analysis, meeting prep, or outreach drafting.
submission-assemble
Put the checked CSR or 510(k) sections together in template order with a reviewer-facing open-items register, as a draft package for human sign-off. Use when the user asks "assemble the CSR draft", "put the module together for review", "build the review package with the open items on top", "compile the 510(k) sections in order" or "package this up for the submission lead". Do NOT use for assembling an unchecked draft - use consistency-check instead. Do NOT use for loading protocol, SAP or TLF sources - use source-ingest instead. Do NOT use for compiling general documents or slide decks - use the built-in docx or pptx skill instead. Do NOT use for filing or submitting to a regulator - use the sponsor's validated gateway, operated by a human, instead. Guardrail: draft for human approval only (L1); status is draft_clean or draft_open_items, never submitted.
source-ingest
Pull every number, date and population definition out of a study's protocol, SAP, TLF tables, investigator brochure and prior approved text into one cited fact map, keyed per config/field-dictionary.json, before any CSR or 510(k) section is written. Use when the user asks "here's the locked TLF set and SAP, set up the CSR", "load the protocol and tables before we start drafting", "what figures do we have from the database lock?", "pull the disposition counts out of Table 14.1.1" or "ingest the IB for the 510(k)". Do NOT use for drafting or assembling submission sections - use section-draft or submission-assemble instead. Do NOT use for reconciling a patient's medications - use the discharge-care-transition plugin instead. Guardrail: reads and cites sources only; never estimates, rounds or invents a fact.
section-plan
Work out which sections a CSR or 510(k) requires, from the templates in config, check each one against the cited fact map, and name what is missing before a word is drafted. Use when the user asks "what do we still need before we can draft the CSR?", "which sections are ready to start?", "what's blocking the performance data section?", "do we have everything for the synopsis?" or "map our tables to the E3 structure". Do NOT use for writing section language - use section-draft instead. Do NOT use for cross-checking a finished draft - use consistency-check instead. Do NOT use for outlining general Word documents or business reports - use the built-in docx skill instead. Only structures with a template in config are supported. Guardrail: plans only; never marks a section ready on a missing fact and never invents a structure.
section-draft
Write or revise the language for one planned CSR or 510(k) section - synopsis, efficacy, safety, discussion, device description - using only figures already in the cited fact map, each with its TLF or SAP citation. Use when the user asks "draft the Synopsis from our locked tables", "write up safety from Table 14.3.1", "give me a first pass at the discussion", "draft the device description for the 510(k)" or "tighten the wording of the Discussion section". Do NOT use for supplying a number not already in source_facts - use source-ingest instead. Do NOT use for verifying a draft's figures - use consistency-check instead. Do NOT use for appeal letters, clinical notes or discharge summaries - use the matching HLS plugin instead. Guardrail: drafts for human approval only (L1); never asserts an unsourced number or harmonises two figures.