Back to list
nathanvale

meeting-from-transcription

by nathanvale

SideQuest - ADHD-friendly Claude Code plugins for developers who thrive on hyperfocus. Tools that work with your brain, not against it.

1🍴 0📅 Jan 21, 2026

SKILL.md


Meeting from Transcription

Create meeting notes from transcription sources with intelligent metadata extraction.

Input Detection

InputAction
No argumentQuery inbox for transcriptions, show list
.vtt fileConvert first, requires --date
.md fileValidate type: transcription
Bare nameExpand to 00 Inbox/<name>.md

Workflow

Step 1: Resolve Input

No input provided:

First, prime the index to ensure it's up-to-date:

para_index_prime({ dir: "00 Inbox", response_format: "json" })

Then query for transcriptions:

para_index_query({ frontmatter: "type=transcription", dir: "00 Inbox", response_format: "json" })
  • If transcriptions found → Display numbered list with recorded dates, then stop
  • If none found → Use AskUserQuestion to prompt for file path

Input provided:

  • .vtt extension → See vtt-conversion.mdREQUIRES --date flag
  • .md or bare name → Continue to Step 2

Path expansion: If no / in path, prepend 00 Inbox/. If no .md extension, append it.

Step 2: Read & Validate Transcription

para_read({ file: "<PATH>", response_format: "json" })

Validate frontmatter:

  • Has frontmatter block
  • Has type: transcription
  • Has recorded field OR user provided --date

On validation error → See error-handling.md

Extract:

  • recorded → Meeting datetime (or use --date override)
  • summary → Use if present, otherwise generate from content
  • Body content → Everything AFTER the --- frontmatter block

Step 3: Determine Meeting Type

If --type override provided, use it. Otherwise infer from transcript content.

See meeting-types.md for enum values and inference signals.

Step 3b: Determine Area or Project

REQUIRED: Meeting notes must have either area or project in frontmatter.

  1. Check transcription frontmatter for existing area or project field
  2. If present → Use that value (already a wikilink)
  3. If not present → Use AskUserQuestion to ask user:
    • "Which area or project does this meeting belong to?"
    • Provide options based on context from the transcript content
    • Include "Other" option for custom input

The value must be a wikilink format: [[Area Name]] or [[Project Name]]

Step 4: Commit Uncommitted Changes

para_commit({ response_format: "json" })

Step 5: Create Meeting Note

cd ${CLAUDE_PLUGIN_ROOT} && bun src/cli.ts create \
  --template meeting \
  --source-text "<TRANSCRIPT_BODY>" \
  --arg "meeting_date=<DATE>" \
  --arg "meeting_type=<TYPE>" \
  --arg "transcription=[[<NOTE_NAME>]]" \
  --arg "summary=<SUMMARY>" \
  --arg "area=[[<AREA_NAME>]]"

Or if project instead of area:

  --arg "project=[[<PROJECT_NAME>]]"

Arguments:

  • meeting_date — ISO format: YYYY-MM-DDTHH:mm:ss
  • meeting_type — One of: 1-on-1, standup, planning, retro, review, interview, stakeholder, general
  • transcription — Note name WITHOUT path or .md extension, wrapped in [[...]]
  • summary — Concise 1-line description (max 100 chars)
  • area OR projectREQUIRED (one of these must be provided) — Wikilink to parent area or project

Extract meeting filename from CLI output, then:

para_frontmatter_set({
  file: "<TRANSCRIPTION_PATH>",
  set: { "meeting": "[[<MEETING_NOTE_NAME>]]" },
  response_format: "json"
})

Step 7: Final Commit

para_commit({ response_format: "json" })

Step 8: Report Results

Return:

  • Meeting note path created
  • Meeting type (inferred or overridden)
  • Summary used
  • Confirmation of bi-directional links

References

Load as needed based on input type or errors:

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon