Transforms raw meeting materials (transcripts, notes, chat logs) into structured minutes by automatically extracting agenda topics, discussion highlights, decisions, and action items with owners and deadlines. Use when a user provides a transcript, notes, or chat log and asks to create meeting minutes, summarize a meeting, extract action items, recap a discussion, or clean up a transcript.
Installs into .claude/skills of the current project.
Are you the author of Structured Minutes?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/null0xxx-structured-minutes-fd676cda)
---
name: structured-minutes
description: "Transforms raw meeting materials (transcripts, notes, chat logs) into structured minutes by automatically extracting agenda topics, discussion highlights, decisions, and action items with owners and deadlines. Use when a user provides a transcript, notes, or chat log and asks to create meeting minutes, summarize a meeting, extract action items, recap a discussion, or clean up a transcript."
license: MIT
---
# Structured Minutes — Raw Notes to Structured Minutes SOP
Transforms raw meeting materials (transcripts, notes, chat logs) into professional, structured meeting minutes with automatic extraction of topics, decisions, and action items.
## Quick Start
1. User provides raw meeting material (transcript / notes / pasted text)
2. Agent processes step by step following the SOP below
3. Outputs structured minutes; optionally runs `scripts/validate_minutes.py` to verify completeness
4. After user confirmation, exports as a Markdown file
---
## SOP Workflow
### Phase 1: Input Collection & Preprocessing
**Goal**: Identify the type of source material and fill in any missing metadata.
**Steps**:
1. **Identify the material type** and confirm with the user:
- Speech-to-text transcript (ASR transcript)
- Handwritten notes
- IM chat log (Slack / Teams / Discord / etc.)
- Mixed materials
2. **Extract or ask for metadata** (all fields are required):
| Field | Description | Example |
|-------|-------------|---------|
| Meeting Title | Topic of the meeting | Q2 Product Review |
| Date | YYYY-MM-DD format | 2026-04-14 |
| Time | HH:MM-HH:MM | 14:00-15:30 |
| Location / Format | Physical room or online tool | Zoom Meeting |
| Facilitator | Meeting organizer | Alice Chen |
| Recorder | Person writing the minutes | AI-assisted |
| Attendees | List of all participants | Alice, Bob, Carol |
3. **If any of the above fields are missing from the material**, proactively ask the user to fill them in. Do not guess attendees or dates.
---
### Phase 2: Topic Identification & Segmentation
**Goal**: Split the continuous meeting content into distinct agenda topics.
**Method**:
1. **Read through the entire text** and identify topic transition points. Common signals:
- Explicit topic introductions ("Next topic", "Moving on to", "Regarding XX")
- Speaker change + subject change
- Timestamp jumps (if available)
2. **Number and name each topic** using this format:
```
Topic 1: [Concise title, ≤ 10 words]
Topic 2: [Concise title, ≤ 10 words]
...
```
3. **Special handling rules**:
- If a topic was interrupted and revisited later, merge into a single topic
- Brief small talk or off-topic chat should not become a standalone topic — ignore or group under "Other"
- Even if the entire meeting covers only one subject, explicitly label it as "Topic 1"
4. **Present the topic list to the user for confirmation** before proceeding.
---
### Phase 3: Deep Extraction per Topic
**Goal**: Extract structured information for each topic.
**For each topic, extract using the following template**:
```markdown
### Topic N: [Title]
**Background**: (1-2 sentences — why this was discussed)
**Discussion Highlights**:
- [Point 1]: [Key opinion / data / proposal] (Speaker: XX)
- [Point 2]: [Key opinion / data / proposal] (Speaker: XX)
- ...
**Disagreements**: (if any)
- [Issue]: Side A argues… / Side B argues…
**Decisions**:
- ✅ [Clear decision, stated as a declarative sentence]
- ✅ [List each decision separately if there are multiple]
**Action Items**:
| # | Task Description | Owner | Deadline | Priority |
|---|------------------|-------|----------|----------|
| 1 | [Specific, actionable task] | [Name] | YYYY-MM-DD | High/Med/Low |
```
**Extraction rules**:
- **Discussion Highlights**: Retain key information; remove repetitive or overly colloquial content. Each point ≤ 50 words.
- **Decisions**: Must be an agreed-upon outcome, not "to be continued." If no clear decision was reached, note "**Pending**: needs [condition] before revisiting."
- **Action item criteria** (all of the following must be met):
- Has a clear "what to do" (verb + object)
- Has a clear or inferable owner
- Is a specific, executable task — not a directional statement
- **Deadline handling**:
- Explicitly mentioned in the transcript → use directly
- Vague expressions like "next week" / "end of month" → convert to a specific date and mark `(estimated)`
- Not mentioned at all → mark "TBD" and flag it for the user in notes
- **Priority assessment**:
- High: Blocks other work / has a clearly urgent deadline / was emphasized repeatedly
- Medium: Has a deadline but not urgent / routine follow-up
- Low: Nice-to-have / exploratory task
---
### Phase 4: Cross-Topic Global Extraction
**Goal**: Extract information that spans across topics.
1. **Open Issues** (items with no conclusion that need further discussion):
```markdown
## Open Issues
| # | Description | Related Topic | Next Steps |
|---|-------------|---------------|------------|
| 1 | [Issue] | Topic N | [Discuss next meeting / Waiting on XX for more info] |
```
2. **Risk Alerts** (potential risks identified during the summarization process):
```markdown
## ⚠️ Risk Alerts
- [Risk 1]: [Description] (Source: Topic N)
- [Risk 2]: [Description]
```
Common risk signals: deadline conflicts, insufficient resources, unclear dependencies, action items with no owner.
3. **Key Metrics** (specific numbers mentioned during the meeting):
```markdown
## Key Metrics
- [Metric name]: [Value] (Source: Topic N)
```
---
### Phase 5: Assembly & Output
**Goal**: Assemble all extracted results into complete minutes.
**Output template**:
```markdown
# Meeting Minutes: [Meeting Title]
| Field | Details |
|-------|---------|
| Date | YYYY-MM-DD |
| Time | HH:MM - HH:MM |
| Location | [Location / online tool] |
| Facilitator | [Name] |
| Recorder | [Name] |
| Attendees | [List of names] |
---
## Topic Overview
| Topic | Decision Status | Action Items |
|-------|----------------|--------------|
| Topic 1: [Title] | ✅ Decided / ⏳ Pending | N |
| Topic 2: [Title] | ✅ Decided / ⏳ Pending | N |
---
## Detailed Record
### Topic 1: [Title]
(Full content extracted in Phase 3)
### Topic 2: [Title]
(Full content extracted in Phase 3)
---
## Action Items Summary
| # | Task Description | Owner | Deadline | Priority | Source Topic |
|---|------------------|-------|----------|----------|--------------|
| 1 | [Task] | [Name] | YYYY-MM-DD | High/Med/Low | Topic N |
| ... | | | | | |
## Open Issues
(Phase 4 content)
## ⚠️ Risk Alerts
(Phase 4 content — omit this section if none)
## Key Metrics
(Phase 4 content — omit this section if none)
```
---
### Phase 6: Quality Check
**Goal**: Ensure the minutes are complete, accurate, and actionable.
**Automated checklist** (check each item and report):
- [ ] All metadata fields are filled (no "unknown" or blank values)
- [ ] Every topic has a decision (even if marked "Pending")
- [ ] Every action item has an owner (no "TBD" owners)
- [ ] Every action item has a deadline (may be "TBD" but must be noted)
- [ ] Action items summary count = sum of per-topic action items
- [ ] No names appear that were not mentioned in the source material (guard against hallucination)
- [ ] Date format is consistently YYYY-MM-DD
- [ ] Data cited in the minutes matches the source
**Validation script**: After completing the minutes, you can run `scripts/validate_minutes.py` to perform structural validation on the output Markdown file.
```bash
python3 scripts/validate_minutes.py <minutes_file.md>
```
The script checks:
- Whether required sections are present
- Whether the action item table format is complete
- Whether deadline formats are valid
- Whether owner fields are empty
- Whether topic overview and detailed record counts match
---
### Phase 7: Delivery & Follow-up
1. **Present the minutes to the user for review**, focusing on:
- "Are the action items accurate? Anything missing?"
- "Do the decisions reflect what was actually discussed?"
- "Is there anything that needs to be added or changed?"
2. **Revise based on user feedback** until the user is satisfied.
3. **Export options**:
- Save as a Markdown file
- If the user needs another format (Google Docs, Word, etc.), suggest using the corresponding skill for conversion
---
## Configuration
This skill requires no external parameters. The following are optional customizations:
| Setting | Default | Description |
|---------|---------|-------------|
| Language | English | Output language for the minutes; follows the source material language |
| Action Item Priority | Enabled | Whether to label priorities (High / Med / Low) |
| Risk Alerts | Enabled | Whether to generate the risk alerts section |
| Key Metrics | Enabled | Whether to extract numbers/metrics mentioned in the meeting |
---
## Common Scenarios
### Scenario 1: Transcript Cleanup
User pastes a transcript exported from Otter.ai, Fireflies, or a similar tool. Agent follows the SOP to produce structured minutes.
### Scenario 2: Chat Log Organization
User pastes a Slack thread or Teams chat. Agent identifies topics and extracts action items.
### Scenario 3: Handwritten Notes
User pastes bullet points jotted down during the meeting. Agent adds structure and confirms any gaps.
### Scenario 4: Cross-Timezone Multilingual Meeting
User provides a transcript in any language. Agent processes it with the same workflow and outputs minutes in the user's preferred language.