返回 Skill 列表
extension
分类: 开发与工程无需 API Key

meeting-schema-validation

用于处理会议记录时 - 验证YAML前导信息是否具有必需的字段(日期、类型、客户、参与者)和正确的命名约定

person作者: jakexiaohubgithub

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

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