mcpField
M
meeting-intelligence-system-skill

meeting-intelligence-system-skill

github.com/scientiacapitalProductivity2850 installsUpdated 3w ago
Repository

About meeting-intelligence-system-skill

A skill for turning Epiphan-internal meeting transcripts or notes into structured summaries, decisions, action items, blockers, and follow-up drafts. It checks that a meeting is internal and routes prospect or customer calls to a separate skill.

Key features

  1. 01Internal-meeting scope check
  2. 02Decision and action-item extraction
  3. 03Blocker, risk, and sentiment capture
  4. 04Gmail follow-up draft creation
  5. 05Optional follow-up calendar event

Use cases

  1. 01Extracting owners and deadlines from a standup
  2. 02Recording decisions from a planning meeting
  3. 03Drafting follow-ups after internal meetings

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/scientiacapital/skills --skill meeting-intelligence-system-skill

After installing, type/meeting-intelligence-system-skillin Claude Code to confirm it loaded.

Bundled filesconfig.json

Details

From the project README

Meeting Intelligence System

Turn an internal meeting transcript or set of notes into a structured record (decisions with owners and rationale, action items with owner/deadline/priority, blockers, open questions, sentiment) and a follow-up email that lands as a Gmail draft, not pasted text. Scope is Epiphan-internal meetings only; a transcript that turns out to be a prospect or customer call is routed to the sales-call skills instead of analyzed here. Keywords: `meeting minutes`, `action items`, `standup`, `retro`, `planning meeting`, `follow-up email`

<quick_start> Trigger: "analyze this meeting" / "extract action items from this standup" / "follow-up email from these notes". Input: pasted transcript or notes, a Google Drive file (read_file_content), or a Clari call id for an internally recorded meeting (clari_get_call with the transcript).

Tool order:

  1. Scope check — if attendees include a non-Epiphan domain or the content is discovery/demo/pricing with a prospect, stop and route: "This is a sales call; use call-recording-analyzer-skill." Do not summarize it here.
  2. Get the transcript — pasted text, read_file_content (Drive), or clari_get_call (internal recording).
  3. Extract metadata, decisions, action items, blockers, sentiment, open questions (sections below).
  4. Follow-up email — create_draft (Gmail) from the Tim mailbox to the attendees, subject Action items: [meeting] - [date]. Internal recipients need no brand gate; if any recipient is outside Epiphan, run get_writing_style + check_my_copy first. Never send.
  5. Optional, confirm-first: create_event (Google Calendar) for a follow-up the meeting asked for. </quick_start>

<success_criteria>

  • Scope check performed; sales/prospect transcripts routed, not analyzed
  • All explicit decisions extracted with owner, rationale, and final-vs-tentative status
  • Action items in a table with owner, deadline, priority; ownerless or dateless items flagged
  • Blockers and risks listed with the needed action or mitigation
  • Follow-up email created as a Gmail draft (draft id returned), not pasted in chat
  • Outcome sidecar and run-log line written </success_criteria>

Stage 0 — Scope check

Internal only. Signals that this is a sales call: external email domain among attendees, words like demo, pricing, quote, PO, competitor names, a HubSpot deal mentioned. On any of these, respond with the routing line and the sibling skill name, write a sidecar with status: success and metrics.routed_to, and stop.

Stage 1 — Transcript

  • Pasted notes: use as-is.
  • Drive file: search_files then read_file_content.
  • Clari (internal recording): clari_list_calls / search_calls to find it, clari_get_call with the transcript, clari_get_call_summary for key moments.
  • Unparseable or empty after one retry → error (stage: transcript), ask for the text.

Stage 2 — Extraction

  1. Metadata — title/topic, attendees, date, meeting type (standup, planning, retro, 1:1, all-hands).
  2. Decisions — every explicit decision; who made it; rationale if stated; final vs tentative; needs-approval flag.
  3. Action items — task, owner, deadline, priority, dependencies. Owner unclear → owner: UNASSIGNED and a note. No date → deadline: TBD.
  4. Blockers and risks — blocker, impact, needed action; risks with mitigation; escalation flags; resource constraints.
  5. Sentiment — overall tone (productive / tense / confused / aligned), agreement vs disagreement areas, morale indicators, tension points with a short quote.
  6. Key topics and open questions — main discussion points, questions raised with who will answer.

Stage 3 — Output

# Meeting Summary: [Title]
**Date**: [date] | **Type**: [standup/planning/retro/1:1] | **Attendees**: [names]

## Executive summary
[2-3 sentences: purpose and outcome]

## Decisions
1. **[Decision]** — Owner: [name] — Rationale: [why] — Status: Final | Tentative | Needs approval

## Action items
| Priority | Action | Owner | Deadline | Depends on |
|---|---|---|---|---|
| High | [task] | [name or UNASSIGNED] | [date or TBD] | [item or -] |

## Blockers and risks
1. **[Blocker]** — Impact: [..] — Needs: [action] — Escalate: [yes/no]

## Key discussion points
- [Topic]: [summary]

## Open questions
1. [Question] — Owner: [who answers]

## Sentiment
Tone: [..] · Alignment: [high/medium/low] · Concerns: [summary]

## Follow-up email
Gmail draft id: [id] · To: [attendees] · Subject: Action items: [title] - [date]

Stage 4 — Follow-up email (Gate D)

Body template, filled from the extraction:

Hi all,

Thanks for joining [meeting] today. Outcomes:

Decisions
- [decision] ([owner])

Action items
- [owner]: [task] by [date]

Blockers
- [blocker] — [needed action]

Next meeting: [date/time or TBD]

Tim

create_draft (Gmail) from the Tim mailbox. Return the draft id. External recipient present → get_writing_style + check_my_copy before creating the draft. Never send_message.

Stage 5 — Emit outcome sidecar + run log

Write ~/.claude/skill-analytics/last-outcome-meeting-intelligence-system-skill.json:

{"ts":"[UTC ISO8601]","skill":"meeting-intelligence-system-skill","version":"<frontmatter version>","variant":"default",
 "status":"[success|partial|error]","runtime_ms":[estimated ms from start],
 "metrics":{"meetings_analyzed":[n],"decisions_captured":[n],"action_items_extracted":[n],"unassigned_items":[n],"blockers":[n],"draft_created":[true|false],"routed_to":[null|"call-recording-analyzer-skill"]},
 "error":null,"session_id":"[YYYY-MM-DD]"}

status partial/error must name the failing stage in error. Append one line to ~/.claude/skill-runs/meeting-intelligence-system-skill.jsonl.

<self_healing> partial = summary produced but a stage degraded: Clari or Drive fetch failed after retry (ask for pasted text, continue), owners unidentifiable (items marked UNASSIGNED and counted), create_draft failed (email body returned in chat with a flag). error = no transcript obtainable, or the content is a sales call (routed, not analyzed). Ladder per ~/.claude/skills/epiphan-house-rules-skill/reference/self-healing.md: retry once → degrade with a flag → tell Tim in chat → halt. </self_healing>

"Analyze this standup transcript"Blockers first, action items per person, impediments flagged, velocity concerns noted, Gmail draft to the team. "Create action items from this product planning meeting"Decisions (feature priority), action items (mockups, tech spec) with owners and dates, tracking table, Gmail draft. "Summarize my call with Baylor's AV director"Routing line: sales call, use call-recording-analyzer-skill. No summary produced here.

<anti_patterns>

  • Summarizing a prospect call here; the Clari scorecard skills own those.
  • Pasting the follow-up email in chat instead of creating the Gmail draft.
  • Vague action items ("look into X"); every item has a verb, an owner or UNASSIGNED, a date or TBD.
  • Treating a proposal as a decision; mark tentative items. </anti_patterns>

<reference_guides>

  • Siblings: call-recording-analyzer-skill (prospect calls, MEDDIC scorecard), sdr-call-coaching (SDR dial coaching), internal-email-composer (standalone internal emails)
  • ~/.claude/skills/epiphan-house-rules-skill/reference/self-healing.md — failure ladder and run-log format </reference_guides>

Comments

Markdown supported