mcpbeat

Minutes Recap

silverstein/minutes-claude-minutes-recap

Generate a daily digest of today's policy-authorized meetings and voice memos — key decisions, action items, and themes across available recordings. Use when the user asks "recap my day", "what happened in my meetings today", "daily summary", "what did I discuss today", "any action items from today", or wants a consolidated view of the day's conversations.

This is a copy. The original lives at silverstein/minutes-minutes-recap.

876 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
1405
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/silverstein/minutes --skill minutes-recap

The instruction itself

5 sections, as written by the author

/minutes-recap

Synthesize today's policy-authorized normal meetings and voice memos into a

single daily brief. Restricted history is excluded from this agent workflow by

default and must never be treated as absent evidence.

How to generate the recap

  • Find today's recordings from the bounded live list:
   minutes list --limit 50

Require exit status 0, parse the JSON written to stdout, and select entries

whose date is today. A date string is not a search query.

  • Read each selected recording with

minutes get "<exact path>" --json. Require exit status 0 and use only the

returned content. Never reopen list paths through the host filesystem.

  • Synthesize into a daily brief — use the template in templates/daily-recap.md as a starting point, adapting sections based on what actually exists in the day's recordings.
  • Present the recap directly in the conversation — don't save it to a file unless asked.

What makes a good recap

  • Cross-reference across meetings: if pricing came up in two different calls, note that
  • Surface conflicts: if Meeting A decided X but Meeting B discussed doing Y, flag it
  • Prioritize action items: these are the things the user needs to act on
  • Include voice memos: ideas captured on the go are easy to forget — surface them
  • If there are no meetings or memos today, say so clearly rather than making something up

Interactive conflict detection

When you find conflicts between meetings (e.g., different decisions on the same topic, contradictory action items, or shifted priorities), don't just note them — ask the user about them.

Use AskUserQuestion: "I found a conflict between your meetings today: [Meeting A] decided [X], but [Meeting B] discussed doing [Y]. Which one is current?"

Options should include:

  • The decision from Meeting A
  • The decision from Meeting B
  • "Neither — it's still unresolved"
  • "Both are valid in different contexts"

This turns the recap from a passive report into an active reconciliation tool. Surface at most 2-3 conflicts per recap to avoid fatigue.

Gotchas

  • No recordings today ≠ an error — If there are no meetings or memos for today, say "No recordings found for today" and offer to search a different date range. Don't hallucinate a recap.
  • Voice memos are easy to miss — They live in ~/meetings/memos/, not the main ~/meetings/ directory. The search command includes both, but double-check if the user says "I recorded a voice memo today" and you don't see it.
  • Meetings without LLM summarization have less structure — If a meeting file only has a raw transcript (no Summary, Decisions, or Action Items sections), you'll need to extract insights yourself from the transcript text. Check the YAML frontmatter for action_items: and decisions: fields.
  • Cross-day meetings — A meeting that started at 11 PM and ended at 1 AM will be dated by its start time. If the user asks "what happened today" and is missing a late-night meeting, check yesterday's date too.

How to use it

Copy the folder

Take silverstein/minutes-claude-minutes-recap from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.