project-management/skills/meeting-analyzer/SKILL.md
Analyzes meeting transcripts and recordings to surface behavioral patterns, communication anti-patterns, and actionable coaching feedback. Use this skill whenever the user uploads or points to meeting transcripts (.txt, .md, .vtt, .srt, .docx), asks about their communication habits, wants feedback on how they run meetings, requests speaking ratio analysis, mentions filler words or conflict avoidance, or wants to compare their communication across time periods. Also trigger when users mention tools like Granola, Otter, Fireflies, or Zoom transcripts. Even if the user just says "look at my meetings" or "how do I come across in meetings" — use this skill.
npx skillsauth add alirezarezvani/claude-skills meeting-analyzerInstall 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.
Originally contributed by maximcoding — enhanced and integrated by the claude-skills team.
Transform meeting transcripts into concrete, evidence-backed feedback on communication patterns, leadership behaviors, and interpersonal dynamics.
Scan the target directory for transcript files (.txt, .md, .vtt, .srt, .docx, .json).
For each file:
YYYY-MM-DD prefix or embedded timestamps)Speaker 1:, [John]:, John Smith 00:14:32, VTT/SRT cue formattingPrint a brief inventory table so the user confirms scope before heavy analysis begins.
Different tools produce wildly different formats. Normalize everything into a common internal structure before analysis:
{ speaker: string, timestamp_sec: number | null, text: string }[]
Handling per format:
<v Speaker>) or prefixed.Name: or [Name] prefixes per line. If no speaker labels exist, warn the user that per-speaker analysis is limited.speaker/text fields (common Otter/Fireflies export).If timestamps are missing, degrade gracefully — skip timing-dependent metrics (speaking pace, pause analysis) but still run text-based analysis.
Run all applicable analysis modules below. Each module is independent — skip any that don't apply (e.g., skip speaking ratios if there are no speaker labels).
Calculate per-speaker:
Produce a per-meeting summary and a cross-meeting average if multiple transcripts exist.
Red flags to surface:
Scan the user's speech for hedging and avoidance markers:
Hedging language (score per-instance, aggregate per meeting):
Conflict avoidance patterns (requires more context, flag with confidence level):
For each flagged instance, extract:
low (single hedge word), medium (pattern of hedging in one exchange), high (clearly avoided a necessary conversation)Count occurrences of: "um", "uh", "like" (non-comparative), "you know", "actually", "basically", "literally", "right?" (tag question), "so yeah", "I mean"
Report:
Only flag this as an issue if the rate exceeds ~3 per 100 words. Below that, it's normal speech.
Classify the user's questions:
Good listening indicators:
Poor listening indicators:
Report the ratio of open/clarifying/building vs. closed/leading questions.
Only apply when the user is the meeting organizer or facilitator.
Evaluate:
Track the emotional arc of the user's language across the meeting:
Flag energy drops — moments where the user's engagement visibly decreases (shorter turns, less substantive responses). These often correlate with discomfort, boredom, or avoidance.
Structure the final output as a single cohesive report. Use this skeleton — omit any section where data was insufficient:
# Meeting Insights Report
**Period**: [earliest date] – [latest date]
**Meetings analyzed**: [count]
**Total transcript words**: [count]
**Your speaking share (avg)**: [X%]
---
## Top 3 Findings
[Rank by impact. Each finding gets 2-3 sentences + one concrete example with a direct quote and timestamp.]
## Detailed Analysis
### Speaking Dynamics
[Stats table + narrative interpretation + flagged red flags]
### Directness & Conflict Patterns
[Flagged instances grouped by pattern type, with quotes and rewrites]
### Verbal Habits
[Filler word stats, contextual spikes, only if rate > 3/100 words]
### Listening & Questions
[Question type breakdown, listening indicators, specific examples]
### Facilitation
[Only if applicable — agenda, decisions, action items]
### Energy & Sentiment
[Arc summary, flagged drops]
## Strengths
[3 specific things the user does well, with evidence]
## Growth Opportunities
[3 ranked by impact, each with: what to change, why it matters, a concrete "try this next time" action]
## Comparison to Previous Period
[Only if prior analysis exists — delta on key metrics]
After delivering the report, offer:
Include this section in output only if the user seems unsure about how to get transcripts:
.vtt from cloud recordings..txt or .json from the web dashboard..docx or .json — both work..vtt.Recommend YYYY-MM-DD - Meeting Name.ext naming convention for easy chronological analysis.
| Anti-Pattern | Why It Fails | Better Approach | |---|---|---| | Analyzing without speaker labels | Per-person metrics impossible — results are generic word clouds | Ask user to re-export with speaker identification enabled | | Running all modules on a 5-minute standup | Overkill — filler word and conflict analysis need 20+ min meetings | Auto-detect meeting length and skip irrelevant modules | | Presenting raw metrics without context | "You said 'um' 47 times" is demoralizing without benchmarks | Always compare to norms and show trajectory over time | | Analyzing a single meeting in isolation | One meeting is a snapshot, not a pattern — conclusions are unreliable | Require 3+ meetings minimum for trend-based coaching | | Treating speaking time equality as the goal | A facilitator SHOULD talk less; a presenter SHOULD talk more | Weight speaking ratios by meeting type and role | | Flagging every hedge word as negative | "I think" and "maybe" are appropriate in brainstorming | Distinguish between decision meetings (hedges are bad) and ideation (hedges are fine) |
| Skill | Relationship |
|-------|-------------|
| project-management/senior-pm | Broader PM scope — use for project planning, risk, stakeholders |
| project-management/scrum-master | Agile ceremonies — pairs with meeting-analyzer for retro quality |
| project-management/confluence-expert | Store meeting analysis outputs as Confluence pages |
| c-level-advisor/executive-mentor | Executive communication coaching — complementary perspective |
development
Use when someone wants to run a weekly review, close open loops, audit stalled projects and commitments, get their system back to trusted, restart a lapsed review habit, or says "/cs:weekly-review". Walks David Allen's three-phase loop — GET CLEAR, GET CURRENT, GET CREATIVE — with deterministic scripts that inventory open loops, gate the checklist with named gaps, and score commitment health 0-100.
development
Use when someone wants to decide whether a meeting is worth calling, price a meeting in dollars, build a timeboxed agenda with desired outcomes, or turn messy meeting notes into owned action items — or says "should this be a meeting", "/cs:meeting-prep", or "/cs:meeting-actions". Runs a cost gate (ASYNC / NOT-READY / MEET), builds a decision-first agenda, and extracts an owner + due-date checklist that flags every orphan.
development
Convert a rambling description of a desired outcome into one polished, autonomous /goal prompt ready to paste into a fresh session. Use when the user says "/fable-goal", "turn this into a goal prompt", "write me a fable prompt", "write the prompt that builds X", or rambles about something they want made and asks for the prompt that makes it happen. The output is a single copy-paste prompt, never the build itself. Do NOT use when the user wants the thing built right now in this session — only when they want the PROMPT that will make it happen in a fresh session.
development
Use when someone wants to plan a deep work day, time-block their calendar or task list, budget or cut shallow work, protect focus hours, track deep-work sessions and streaks, run an end-of-day shutdown ritual, or says "/deep-work" or "/time-block". Classifies tasks deep vs shallow, builds an energy-first time-blocked schedule that refuses deep demand past the 4-hour ceiling, batches shallow work into at most two windows, and logs focus sessions against a weekly target.