Skills/meeting-notes/SKILL.md
Transforms raw video or audio transcripts into detailed, structured meeting summaries formatted for SharePoint. Handles messy auto-generated transcripts including unlabeled speakers, filler words, and transcript artifacts. Extracts discussion threads, decisions, action items, key quotes, and next steps. Use when a user pastes or shares a meeting transcript and wants polished, shareable notes. Triggers include "summarize this meeting transcript", "create notes from this recording", "turn this transcript into meeting notes", "write up this call", or when a user shares raw transcript text.
npx skillsauth add zrosenfield/sharepoint-ai-skills meeting-notesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill processes raw video or audio transcripts — including auto-generated, messy, or unlabeled ones — into polished, structured meeting summaries ready to publish in SharePoint.
Scope: Produces prose and Markdown only. Does not write code, scripts, or formulas.
Video transcripts vary widely in quality. Before extracting content, assess the transcript and handle these common issues:
Unlabeled or generic speakers If the transcript uses labels like "Speaker 1", "Speaker 2", or "Unknown Speaker", stop before processing and ask the user to provide a name mapping. A table format works well:
Ask: "This transcript uses generic speaker labels. Can you tell me who each speaker is? For example: Speaker 1 = [name and role], Speaker 2 = [name and role]."
If the user can only identify some speakers, proceed with those and label unresolved speakers as "Unidentified participant" in the notes.
Auto-captioning artifacts Auto-generated transcripts often contain: repeated words, false starts ("I — I think we should"), filler words ("um", "uh", "like", "you know"), and occasional word substitutions from mishearing. Silently clean these when extracting meaning. Do not preserve transcription artifacts in the notes unless the exact wording is significant.
Missing timestamps or metadata If the transcript has no timestamps, date, or attendee list, note the gaps at the top of the output and ask the user to fill them in before publishing.
Long tangents and side conversations Transcripts capture everything, including off-topic exchanges. Do not include small talk, extended technical troubleshooting unrelated to the meeting purpose, or side conversations that did not produce a decision or action. Summarize lengthy tangents in a single sentence if they consumed significant time.
Work through the transcript in a single pass, tagging content into five categories:
Decisions — any statement where the group agrees on a course of action, selects an option, or commits to a direction. Indicators: "we decided", "we're going to go with", "let's do", "agreed", "that's what we'll do", "confirmed".
Action items — any commitment by a named person to do something by a certain time. Indicators: "I'll", "can you", "who's going to", "by [date]", "let's make sure [person]", "take an action". Capture the owner, the task, and the deadline. If no deadline was stated, mark it as "No deadline set".
Discussion threads — the substantive topics the group worked through. Group related exchanges together even if they were not contiguous in the meeting. A topic that was raised, dropped, and returned to later is one thread, not two.
Key quotes — statements that are particularly clear, significant, or that capture the essence of a position or decision. Preserve these verbatim (cleaned of artifacts). Limit to four or fewer — if everything seems quotable, nothing is.
Parking lot items — questions raised but explicitly deferred, topics someone flagged for a future meeting, or issues that could not be resolved in this session.
Always deliver the notes in this order. Omit a section only if there is genuinely nothing to put in it — do not include empty sections.
# [Meeting Title or Topic]
**Date:** [Date]
**Duration:** [Approximate duration if determinable from transcript]
**Attendees:** [Names and roles where known]
**Purpose:** [One sentence: why this meeting was held]
If the transcript does not contain this information, include the header with blank fields marked as "[Not provided — please fill in]".
Two to four sentences capturing the full arc of the meeting: why it was held, what the group worked through, what was resolved, and what remains open. Write this for someone who will not read the rest of the document. It should stand alone.
One subsection per major topic. Each subsection:
Scale depth to significance. A topic that took 25 minutes of substantive back-and-forth deserves a full paragraph. A topic that was covered in two minutes gets two to three sentences.
Use this format:
## Discussion: [Topic Name]
[Framing sentence]
[Summary of discussion — key points, positions, concerns]
**Outcome:** [Resolved / Deferred / Open — and what that means]
A numbered list. Each decision is a single clear, unambiguous sentence in active voice. Write decisions as statements of fact, not as meeting summaries ("The team will migrate to the new platform in Q3" not "It was discussed that migration might happen").
If a decision was made with conditions or caveats, include those: "The team will migrate to the new platform in Q3, contingent on security review completion by end of July."
## Decisions
1. [Decision stated clearly]
2. [Decision stated clearly]
A table with four columns. Every row must have an owner and a task. Deadline and notes are filled in where stated; left blank or flagged otherwise.
## Action Items
| # | Action | Owner | Deadline | Notes |
|---|--------|-------|----------|-------|
| 1 | [What needs to happen] | [Name] | [Date or "Not set"] | [Any context] |
| 2 | ... | ... | ... | ... |
If the same person owns multiple actions, give each its own row. Do not group actions under one owner into a single cell.
Verbatim statements (cleaned of filler) worth preserving. Use these sparingly — only for statements that are unusually clear, represent an important commitment, or capture a significant position.
Format:
## Key Quotes
> "[Quote]" — [Speaker name], [context in a few words if needed]
Omit this section entirely if there are no quotes that genuinely warrant preservation.
What happens after this meeting. This is distinct from action items — next steps describe the overall forward motion of the initiative or project, not individual tasks. Write as a short bulleted list.
Include the next meeting date, topic, and expected attendees if mentioned.
Items that were raised but explicitly deferred or that could not be resolved in this session. Format as a bulleted list, each item with the name of the person who raised it if known.
Before delivering the notes, verify:
No decisions were made Do not invent decisions. Omit the Decisions section and note in the Executive Summary that the meeting was exploratory or informational.
No clear action items Omit the Action Items table. If the meeting produced commitments that were vague or unowned, list them in Next Steps with a note that owners need to be assigned.
Transcript is partial or cut off Note at the top of the document that the transcript appears incomplete and flag which section of the meeting may be missing.
Multiple languages or code-switching Summarize in the language the user is working in. Note in the header if the meeting was conducted in another language.
Very short meeting (under 15 minutes) Collapse the structure. Use: header, a single Summary section (instead of Executive Summary + Discussion Threads), Decisions, Action Items, and Next Steps. Skip Parking Lot and Key Quotes unless specifically relevant.
Deliver:
testing
--- name: review-council description: Convene a council of expert AI personas to review, stress-test, and improve any document, idea, proposal, or plan. Use this skill whenever the user asks to "review," "stress-test," "get feedback on," "critique," "poke holes in," "red team," "evaluate," "council," "panel review," or "get perspectives on" any content — whether it's an uploaded Word doc, Excel spreadsheet, PowerPoint deck, PDF, or just a raw idea typed into chat. Also trigger on phrases like "w
tools
Generates a polished, self-contained HTML heatmap scorecard — a weighted comparison matrix where entities (rows) are scored across dimensions (columns), with computed totals, rank badges, and a winner highlight. Use when asked to build a scorecard, comparison matrix, decision matrix, vendor evaluation, tool assessment, candidate scoring grid, competitive analysis, site-readiness matrix, or any weighted multi-criteria ranking. Interviews the user if entities or criteria are missing, constructs a validated JSON document, then renders it into a sandbox-safe HTML file using the component library. No external dependencies — output runs inside a SharePoint sandboxed iframe.
development
Generates a polished, self-contained HTML roadmap or milestone timeline from any project data — SharePoint lists, pasted tables, or a verbal description. Use when asked to build a project roadmap, product roadmap, migration timeline, release plan, onboarding sequence, run-of-show, phase plan, or any visual schedule showing items over time. Interviews the user if data is incomplete, constructs a validated JSON document, then renders it into a single sandbox-safe HTML file. Chooses between two layouts automatically: horizontal roadmap with swimlanes (for phase-range data) or vertical milestone list (for point-in-time events). No external dependencies — output runs inside a SharePoint sandboxed iframe.
development
Generates a polished, self-contained HTML executive report or dashboard from any data source — SharePoint lists, CSV exports, or a user description. Use when asked to build an exec report, one-pager, summary page, status dashboard, project summary, business review, or any single-page visual summary of data. Interviews the user if data is incomplete, constructs a validated JSON document block by block, then renders it into a single sandbox-safe HTML file using the component library. No external dependencies — output runs inside a SharePoint sandboxed iframe.