$npx -y skills add product-on-purpose/pm-skills --skill foundation-stakeholder-updateProduces async communication to stakeholders, primarily non-attendees and secondarily some attendees who want a reference. Translates meeting outcomes into what-it-means language for readers, with channel variants (slack, teams, email, notion, exec-memo) and audience variants (en
| 1 | <!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 --> |
| 2 | # Stakeholder Update |
| 3 | |
| 4 | A stakeholder update is async communication to readers who need to know the outcomes of a meeting. Primary audience is non-attendees; secondary audience is some attendees who want a reference version (came in late, stepped out, need something to forward). |
| 5 | |
| 6 | Distinct from `foundation-meeting-recap` in audience, format, and purpose: the recap is a summary of what happened for people who were in the room; the stakeholder-update is a translation of outcomes into what-it-means for readers (tailored to their role, with technical-to-business translation where the audience warrants it). |
| 7 | |
| 8 | Distinct from `/discover-stakeholder-summary`: that skill is about understanding stakeholders (input to the user's work). This skill is about communicating to stakeholders (output from the user's work). |
| 9 | |
| 10 | This skill belongs to the Meeting Skills Family. It conforms to the [Meeting Skills Family Contract](../../docs/reference/skill-families/meeting-skills-contract.md). |
| 11 | |
| 12 | ## When to Use |
| 13 | |
| 14 | - After a meeting with outcomes affecting teams who were not in the room |
| 15 | - When a decision or commitment needs to propagate to downstream teams async |
| 16 | - When a recap exists and needs to be translated into audience-specific language |
| 17 | - When the user needs something from readers (specific CTA) and cannot afford for it to be buried |
| 18 | |
| 19 | ## When NOT to Use |
| 20 | |
| 21 | - Summarizing what happened for attendees. Use `foundation-meeting-recap`. |
| 22 | - Broadcasting status with no specific audience tailoring. A plain Slack message is sufficient; the skill adds value when translation or CTA framing matters. |
| 23 | - Communicating research findings to stakeholders. Use `/discover-interview-synthesis` plus targeted comms. |
| 24 | - The source is not one meeting's outcomes but a broader artifact (a spec, discovery synthesis, research report, GTM plan, or experiment results) that needs to fan out to several audience-tailored briefings from one canonical master. Use `foundation-stakeholder-briefings`. |
| 25 | |
| 26 | ## Zero-friction execution |
| 27 | |
| 28 | Per the family contract, this skill never blocks on interrogation. Default flow: |
| 29 | |
| 30 | 1. Load related recap (preferred) or raw meeting notes |
| 31 | 2. Detect thread continuation by scanning same directory for prior stakeholder-updates on the same `project`/`topics` |
| 32 | 3. Infer channel (if not specified) from audience variant: engineering / design → slack; leadership → email; mixed → notion |
| 33 | 4. Present a brief inference summary (detected channel, audience, CTA, thread continuation if any, translation candidates) |
| 34 | 5. Accept `go` or corrections |
| 35 | 6. Produce the channel-tailored update |
| 36 | |
| 37 | If invoked with `--go`, skip the inference summary. The entire output is shareable content (per family contract. no separate summary block needed). |
| 38 | |
| 39 | ## Instructions |
| 40 | |
| 41 | When asked to create a stakeholder update, follow these steps: |
| 42 | |
| 43 | 1. **Load related recap** |
| 44 | Parse frontmatter to extract meeting context, decisions, actions, outcomes. If no recap provided, accept raw meeting notes with a lower input-quality flag. |
| 45 | |
| 46 | 2. **Detect thread continuation** |
| 47 | Scan same directory for prior `stakeholder-update` artifacts with matching `project` / `topics`. If found, reference the prior update in the frontmatter `thread_continuation_of` field. |
| 48 | |
| 49 | 3. **Present go-mode inference summary** |
| 50 | Show inferred channel (if not specified), detected audience, proposed CTA, thread continuation status, translation candidates (flagged jargon or acronyms that may not land). |
| 51 | |
| 52 | 4. **Distill key outcomes** |
| 53 | From the recap or notes, select 3-5 outcomes that matter to the target audience. Do not include everything from the recap. filter by audience relevance. |
| 54 | |
| 55 | 5. **Frame the CTA** |
| 56 | If action is needed: lead with it, not bury it |
| 57 | If FYI-only: state explicitly in the TL;DR |
| 58 | |
| 59 | 6. **Translate technical-to-business** |
| 60 | Flag jargon and acronyms unlikely to land with the audience. Provide plainer alternatives. Keep a translations-applied log for user verification in the output's Generation context. |
| 61 | |
| 62 | 7. **Build the channel-tailored variant** |
| 63 | |
| 64 | - **Slack / Teams**: headline (one action-oriented line, optionally one emoji), TL;DR 3 bullets, context sentence, "what this means for [audience]", CTA (bold with marker if action needed; italic " |