Claude-skill-registry-data meeting-schema-validation

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

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-schema-validation" ~/.claude/skills/majiayu000-claude-skill-registry-data-meeting-schema-validation && rm -rf "$T"
manifest: data/meeting-schema-validation/SKILL.md
source content

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:

---
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:

## ⬇️ 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:

^(\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:

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:

# 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:

# 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

MistakeFix
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 componentsInclude all: date_type_title_customer_participants
Wrong directoryMove 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:

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