Agent skill

meeting-schema-validation

Use when processing meeting transcripts - validates YAML frontmatter has required fields (date, type, customer, participants) and proper naming convention

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/meeting-schema-validation

SKILL.md

Meeting Schema Validation

Purpose

Ensure all meeting transcripts maintain consistent schema for:

  • Reliable meeting synthesis
  • Accurate customer attribution
  • Proper temporal filtering
  • Searchable meeting archives

When to Use This Skill

Activate automatically when:

  • Processing new meeting transcripts
  • meeting-synthesis skill loads meeting files
  • User adds meetings to datasets/meetings/
  • Validating meeting data integrity
  • Any workflow depends on meeting transcript structure

Required Schema

YAML Frontmatter Requirements

All meetings must begin with:

yaml
---
date: "YYYY-MM-DD"
type: "sales" | "product" | "customersuccess" | "onboarding" | "strategy" | "ops" | "marketing" | "general"
customer: "Company Name"  # Primary customer/company
companies: ["Company A", "Company B"]  # All companies involved
participants: ["Person Name", "Another Person"]
granola_folder: "Sales" | "Product" | "CustomerSuccess" | etc.
granola_url: "https://app.granola.so/notes/..."
meeting_note_id: "uuid-format-string"
tags: ["2025Q3", "keyword", "topic"]
---

Required fields:

  • date: ISO format YYYY-MM-DD
  • type: One of the defined meeting types
  • customer: Primary customer/company name
  • companies: Array of all involved companies
  • participants: Array of participant names

Optional but recommended:

  • granola_folder: Source folder (for tracking)
  • granola_url: Link to original notes
  • meeting_note_id: Unique identifier (UUID)
  • tags: Searchable keywords and quarters

File Naming Convention

Required format:

YYYY-MM-DD_{type}_{titleSlug}_{companyOrFunctionSlug}_{participantsSlug}.md

Examples:

2025-10-15_sales_discovery-call_prettyboy_jenna-mike.md
2025-10-14_product_feature-planning_internal_jay-sarah.md
2025-10-13_customersuccess_qbr_compoundstudio_alex.md

Components:

  1. YYYY-MM-DD: Meeting date (matches frontmatter date field)
  2. {type}: Meeting type (matches frontmatter type field)
  3. {titleSlug}: Kebab-case title describing meeting topic
  4. {companyOrFunctionSlug}: Company name or internal function (kebab-case)
  5. {participantsSlug}: Key participants (kebab-case, abbreviated)

Required Content Sections

All meetings must contain these sections:

markdown
## ⬇️ AI Summary
[Executive summary of key points and outcomes]

## ⬇️ Action Items
- [ ] Action item 1
- [ ] Action item 2

## ⬇️ Full Transcript
[Raw transcript or detailed notes]

## ⬇️ Links
- [Link to related resource]

Section order is standardized (aids parsing and synthesis)

Directory Structure

Meetings organized by:

datasets/meetings/
├── Customers/
│   └── {CustomerName}/
│       └── {YYYY}/
│           └── MM-DD_{type}_{title}_{customer}_{participants}.md
└── Internal/
    └── {Function}/  # Product, CS, Sales, Marketing, Ops
        └── {YYYY}/
            └── MM-DD_{type}_{title}_{function}_{participants}.md

Examples:

datasets/meetings/Customers/PrettyBoy/2025/10-15_sales_discovery-call_prettyboy_jenna-mike.md
datasets/meetings/Internal/Product/2025/10-14_product_feature-planning_internal_jay-sarah.md

Validation Process

1. Load Meeting File

Read meeting from:

  • datasets/meetings/Customers/{Customer}/{YYYY}/{filename}.md, OR
  • datasets/meetings/Internal/{Function}/{YYYY}/{filename}.md

2. Validate YAML Frontmatter

Check required fields exist:

✓ date present and format YYYY-MM-DD?
✓ type present and valid value?
✓ customer present (non-empty string)?
✓ companies present and array?
✓ participants present and array?

Validate field formats:

  • date: Regex ^\d{4}-\d{2}-\d{2}$
  • type: Must be one of: sales, product, customersuccess, onboarding, strategy, ops, marketing, general
  • customer: Non-empty string
  • companies: Array with at least one entry
  • participants: Array with at least one entry
  • tags: Array (if present)
  • meeting_note_id: UUID format (if present)
  • granola_url: Valid URL (if present)

3. Validate File Naming

Extract components from filename:

regex
^(\d{4}-\d{2}-\d{2})_([a-z]+)_([a-z0-9-]+)_([a-z0-9-]+)_([a-z0-9-]+)\.md$

Validate consistency:

  • Date in filename matches frontmatter date?
  • Type in filename matches frontmatter type?
  • Filename uses kebab-case throughout?
  • Filename follows YYYY-MM-DD prefix pattern?

4. Validate Content Sections

Check required sections exist:

✓ ## ⬇️ AI Summary
✓ ## ⬇️ Action Items
✓ ## ⬇️ Full Transcript
✓ ## ⬇️ Links

Validation method:

bash
grep -q "## ⬇️ AI Summary" meeting.md
grep -q "## ⬇️ Action Items" meeting.md
grep -q "## ⬇️ Full Transcript" meeting.md
grep -q "## ⬇️ Links" meeting.md

5. Validate Directory Placement

Check file is in correct directory:

  • Customer meetings → datasets/meetings/Customers/{CustomerName}/{YYYY}/
  • Internal meetings → datasets/meetings/Internal/{Function}/{YYYY}/

Consistency checks:

  • Directory customer name matches frontmatter customer?
  • Directory year matches frontmatter date year?
  • Directory function matches meeting context (for internal meetings)?

6. Generate Report

If all pass:

markdown
# Meeting Schema Validation: PASS

**File**: 2025-10-15_sales_discovery-call_prettyboy_jenna-mike.md

✓ YAML frontmatter complete: All required fields present
✓ Field formats valid:
  - date: 2025-10-15 (valid ISO format)
  - type: sales (valid type)
  - customer: PrettyBoy (present)
  - companies: ["PrettyBoy"] (array, 1 entry)
  - participants: ["Jenna Smith", "Mike Johnson"] (array, 2 entries)
✓ Filename format valid: YYYY-MM-DD_{type}_{title}_{customer}_{participants}.md
✓ Filename consistency: Date and type match frontmatter
✓ Required sections present: AI Summary, Action Items, Full Transcript, Links
✓ Directory placement valid: Customers/PrettyBoy/2025/

**Status**: Meeting schema validated

If any fail:

markdown
# Meeting Schema Validation: FAIL

**File**: 2025-10-15_discovery_prettyboy.md

✗ YAML frontmatter incomplete:
  - Missing field: `participants`
  - Missing field: `companies`

✗ Filename format invalid:
  - Expected: YYYY-MM-DD_{type}_{title}_{customer}_{participants}.md
  - Actual: 2025-10-15_discovery_prettyboy.md
  - Missing: {participants} component

✗ Required sections missing:
  - Missing: ## ⬇️ Action Items

✗ Directory placement incorrect:
  - File location: datasets/meetings/2025-10-15_discovery_prettyboy.md
  - Expected: datasets/meetings/Customers/PrettyBoy/2025/

**Required fixes**:
1. Add missing frontmatter fields: participants, companies
2. Rename file to include all components
3. Add missing section: ## ⬇️ Action Items
4. Move file to correct directory: Customers/PrettyBoy/2025/

**Status**: NEEDS_FIX

7. Block or Approve

If PASS:

  • Meeting can be used in synthesis workflows
  • Schema integrity confirmed
  • Ready for processing

If FAIL:

  • Meeting blocked from synthesis
  • Workflows depending on this meeting flagged
  • Must address violations before use

Integration with Workflows

Meeting Synthesis Integration

Invoked by:

  • meeting-synthesis skill (before processing meetings)
  • product-planning workflow (validates meetings in time window)
  • cs-prep workflow (validates customer meeting collection)

Blocking behavior:

  • If schema validation fails → meeting skipped from synthesis
  • User notified of schema violations
  • Invalid meetings logged for manual review

Manual Validation

Direct usage: User can validate existing meetings:

"Validate meeting schema for datasets/meetings/Customers/PrettyBoy/2025/10-15_sales_discovery-call_prettyboy_jenna-mike.md"

Auto-Correction

For minor issues, offer auto-correction:

Correctable issues:

  • Missing companies array: Auto-populate from customer field
  • Missing tags array: Auto-generate from date (e.g., "2025Q3") and type
  • Incorrect directory: Suggest correct path and offer to move

Non-correctable issues:

  • Missing required fields (date, type, customer, participants)
  • Invalid field formats
  • Missing required sections → These require manual fixes

Success Criteria

Meeting schema validated when:

  • All required frontmatter fields present and valid
  • Filename follows naming convention
  • Filename consistent with frontmatter
  • All required sections present
  • File in correct directory
  • Validation report shows PASS status

Common Mistakes

Mistake Fix
Missing participants field Add array of participant names
Invalid type value Use one of defined types (sales, product, etc.)
Date format "10/15/2025" Use ISO format: "2025-10-15"
Filename missing components Include all: date_type_title_customer_participants
Wrong directory Move to Customers/{Name}/{YYYY}/ or Internal/{Function}/{YYYY}/

Related Skills

  • meeting-synthesis: Uses validated meetings for signal extraction
  • source-integrity: Complementary validation for other source types
  • product-planning: Depends on valid meeting schema

Anti-Rationalization Blocks

Common excuses that are explicitly rejected:

Rationalization Reality
"Missing field is optional" Required fields are mandatory.
"Close enough" on naming Follow convention exactly.
"Will fix schema later" Fix now or skip from synthesis.
"Manual meetings don't need schema" All meetings follow schema.

Didn't find tool you were looking for?

Be as detailed as possible for better results