---
name: meeting-notes
description: Turn a raw meeting transcript or messy notes into a clean recap — Decisions, Action items (each with an owner and a due date), and Open questions — plus a short ready-to-send follow-up message. Resolves relative dates ("next Friday") against today's real date, and flags anything with no clear owner or date. Trigger with "/meeting-notes", "turn these notes into action items", "who owns what from this call", or when the user pastes a transcript/notes and wants the decisions and to-dos pulled out. It only extracts what's actually in the notes — it never invents tasks, owners, or dates.
---

# meeting-notes

Take a messy transcript or a dump of meeting notes and turn it into a recap a busy person can actually act on: what was decided, who owns what by when, and what's still open.

## What counts as "the notes"

1. **If the user pasted a transcript or notes**, use exactly that.
2. **If they named a source** ("the standup notes above", "the call transcript"), use that.
3. If there's nothing to work from, ask them to paste the notes or transcript. Don't guess at a meeting that isn't there.

## The rule that overrides everything: extract, don't invent

Every decision, task, owner, and date you output must be **traceable to something actually said in the notes**. If the notes don't name an owner, the owner is `[UNASSIGNED]` — you do not guess who "probably" owns it. If no date was given, it's `[NO DATE]`. If something was discussed but not concluded, it's an Open question, not a Decision. Never invent, never round up a "maybe" into a "decided".

## Resolve relative dates against today

Meetings talk in relative time — "by Friday", "next week", "end of month", "in two days". **Anchor every one of these to today's real calendar date** and output the absolute date (e.g. today is Thu 2026-07-30, so "next Friday" → `2026-08-07`). Get the current date first (e.g. `date +%Y-%m-%d`), then resolve. If a relative date is genuinely ambiguous ("Friday" could be this week or next), pick the nearest sensible one and mark it with a `(?)` so the user can check.

## The output shape

Produce these four blocks, in this order. Keep it tight — this is a recap, not a re-transcription.

**1. Decisions** — a short bulleted list of what was actually agreed. One line each, in plain language.

**2. Action items** — a table:

| Owner | Task | Due | Priority |
|---|---|---|---|
| Priya | Send the revised quote to the client | 2026-08-01 | High |
| [UNASSIGNED] | Book the venue for the offsite | [NO DATE] | Med |

- One row per commitment. Owner = the person named (or `[UNASSIGNED]`). Task = a concrete action starting with a verb. Due = the resolved absolute date (or `[NO DATE]`). Priority = High/Med/Low only if the notes signal it, else Med.
- Put the `[UNASSIGNED]` / `[NO DATE]` rows at the bottom so the gaps are obvious.

**3. Open questions** — things raised but not resolved, and anything blocked waiting on someone. One line each.

**4. Follow-up message** — a short, ready-to-send recap the user can paste into email or chat: a one-line summary, the decisions, and each person's action items. Plain and human, no filler. This is a draft for the user to send — the skill does not send anything.

## Steps

1. Read the notes. Get today's date (`date +%Y-%m-%d`) so relative dates resolve correctly.
2. Pull out decisions, action items (owner/task/due/priority), and open questions — extraction only, per the rules above.
3. Resolve every relative date to an absolute date; flag missing owners/dates.
4. Output the four blocks. If the user asks, also copy the follow-up message to the clipboard (`pbcopy` on macOS; `xclip`/`wl-copy`/`clip.exe` fallbacks) — otherwise just show it.
5. If the notes were long or ambiguous, end with a one-line note on anything you had to flag (`[UNASSIGNED]`, `[NO DATE]`, or a `(?)` date) so the user can fill the gaps.

## Guardrails

- **Extract only — never invent** a task, an owner, or a date that isn't grounded in the notes.
- **The follow-up is a draft, never sent.** The skill produces text; the user sends it.
- **Preserve names and figures exactly** as they appear; don't guess spellings or amounts.
- Keep the recap shorter than the source — if it's as long as the transcript, it isn't doing its job.
- Don't include side-chatter, jokes, or anything clearly off-topic in the action items.
