Claude-skill-registry-data meeting-notes-formatter
Convert raw meeting notes to structured markdown or PDF with automatic section detection, action items extraction, and attendee parsing.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/meeting-notes-formatter" ~/.claude/skills/majiayu000-claude-skill-registry-data-meeting-notes-formatter && rm -rf "$T"
manifest:
data/meeting-notes-formatter/SKILL.mdsource content
Meeting Notes Formatter
Transform raw, unstructured meeting notes into clean, professional documents. Automatically detects sections, extracts action items, parses attendees, and exports to Markdown or PDF.
Quick Start
from scripts.notes_formatter import MeetingNotesFormatter # Format raw notes raw_notes = """ Project sync Jan 15 Attendees: John, Sarah, Mike Discussed Q1 roadmap - Feature A is priority - Feature B pushed to Q2 Sarah to send updated timeline by Friday Mike will review budget Next meeting Jan 22 """ formatter = MeetingNotesFormatter(raw_notes) formatter.format() formatter.save("meeting_notes.md") # Or save as PDF formatter.save("meeting_notes.pdf")
Features
- Auto-Detection: Identifies title, attendees, sections, action items
- Action Item Extraction: Pulls out tasks with owners and due dates
- Attendee Parsing: Extracts participant list from various formats
- Section Organization: Groups content into logical sections
- Output Formats: Markdown, PDF
- Templates: Structured output with consistent formatting
API Reference
Initialization
# From string formatter = MeetingNotesFormatter(raw_notes_string) # From file formatter = MeetingNotesFormatter.from_file("notes.txt")
Formatting
# Auto-format (detects structure) formatter.format() # With manual overrides formatter.set_title("Weekly Standup") formatter.set_date("2024-01-15") formatter.set_attendees(["John Smith", "Sarah Jones"]) formatter.format()
Manual Configuration
# Set meeting metadata formatter.set_title("Project Review Meeting") formatter.set_date("January 15, 2024") formatter.set_time("2:00 PM - 3:00 PM") formatter.set_location("Conference Room A") # Set attendees formatter.set_attendees(["John Smith", "Sarah Jones", "Mike Wilson"]) # Add sections manually formatter.add_section("Discussion", [ "Reviewed Q1 roadmap", "Discussed resource allocation", "Agreed on priorities" ]) # Add action items formatter.add_action_item("Send timeline update", owner="Sarah", due="Friday") formatter.add_action_item("Review budget proposal", owner="Mike")
Output
# Get formatted markdown markdown = formatter.to_markdown() # Save to file formatter.save("notes.md") # Markdown formatter.save("notes.pdf") # PDF # Get structured data data = formatter.to_dict()
Auto-Detection Features
Title Detection
Identifies meeting title from:
- First line if short and descriptive
- Lines containing "meeting", "sync", "standup", "review"
- Date patterns at start of notes
Attendee Detection
Extracts attendees from:
- "Attendees: John, Sarah, Mike"
- "Present: John Smith, Sarah Jones"
- "Participants: @john @sarah @mike"
- Lists following attendee keywords
Action Item Detection
Identifies tasks from:
- "ACTION: Send report"
- "TODO: Review document"
- "[John] to send update"
- "Sarah will review by Friday"
- Lines with owner/assignee patterns
Date Detection
Extracts dates from:
- "January 15, 2024"
- "2024-01-15"
- "01/15/2024"
- "Jan 15"
Output Formats
Markdown Output
# Weekly Project Sync **Date:** January 15, 2024 **Time:** 2:00 PM - 3:00 PM **Attendees:** John Smith, Sarah Jones, Mike Wilson --- ## Discussion - Reviewed Q1 roadmap progress - Feature A is on track for release - Feature B moved to Q2 due to resource constraints ## Decisions - Prioritize performance improvements - Delay new feature development until Q2 ## Action Items | Task | Owner | Due Date | |------|-------|----------| | Send updated timeline | Sarah | Jan 19 | | Review budget proposal | Mike | Jan 22 | | Schedule follow-up | John | Jan 16 | --- **Next Meeting:** January 22, 2024
PDF Output
Professional formatted PDF with:
- Clean typography
- Organized sections
- Action item table
- Header with meeting details
CLI Usage
# Format notes file python notes_formatter.py --input raw_notes.txt --output formatted.md # Output as PDF python notes_formatter.py --input notes.txt --output notes.pdf # With manual metadata python notes_formatter.py --input notes.txt \ --title "Weekly Standup" \ --date "Jan 15, 2024" \ --output standup.md
CLI Arguments
| Argument | Description | Default |
|---|---|---|
| Input text file | Required |
| Output file path | |
| Meeting title override | Auto-detect |
| Meeting date override | Auto-detect |
| Output template | |
Examples
Raw Notes Input
Team standup 1/15 john sarah mike present Updates: - John: finished API integration - Sarah: working on frontend - Mike: reviewing PRs Blockers: Sarah blocked on design specs need mike to review sarah's PR action items: john to deploy to staging today sarah follow up with design team mike review PR by EOD next standup wednesday
Formatted Output
# Team Standup **Date:** January 15, 2024 **Attendees:** John, Sarah, Mike --- ## Updates - **John:** Finished API integration - **Sarah:** Working on frontend - **Mike:** Reviewing PRs ## Blockers - Sarah blocked on design specs - Need Mike to review Sarah's PR ## Action Items | Task | Owner | Due | |------|-------|-----| | Deploy to staging | John | Today | | Follow up with design team | Sarah | - | | Review PR | Mike | EOD | --- **Next Meeting:** Wednesday
Project Review Notes
notes = """ Q4 Review - Dec 15 Present: Leadership team, Product, Engineering Revenue exceeded targets by 12% Customer satisfaction at 94% Engineering delivered 15 of 18 planned features Challenges: - Hiring slower than expected - Two key features delayed 2024 Planning: Q1 focus on performance Q2 new product launch Need budget approval for new hires Actions: CEO to approve headcount by Dec 20 VP Eng to present technical roadmap Product to finalize Q1 priorities """ formatter = MeetingNotesFormatter(notes) formatter.format() formatter.save("q4_review.pdf")
Templates
Standard (Default)
- Title and metadata header
- Sections with bullet points
- Action items table
- Next meeting footer
Minimal
- Simple markdown
- No tables
- Compact format
Detailed
- Full metadata
- Timestamps
- Expanded sections
- Decision log
Dependencies
reportlab>=4.0.0 python-dateutil>=2.8.0
Limitations
- English language only
- Best with structured raw notes
- May miss context in very informal notes
- PDF styling is basic