Meeting Minutes
github/awesome-copilot
Generate concise, actionable meeting minutes for internal meetings.
Lightweight outcome tagging for meetings — won, lost, stalled, great, or noise.
$ npx skills add silverstein/minutes --skill minutes-tag -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install silverstein/minutes minutes-tag --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/silverstein/minutes.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.opencode/skills/minutes-tag .claude/skills/minutes-tag && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "minutes-tag" agent skill from https://github.com/silverstein/minutes/tree/main/.opencode/skills/minutes-tag into .claude/skills/minutes-tag/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minutes-tag", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/silverstein/minutes/tree/main/.opencode/skills/minutes-tagType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add silverstein/minutes --skill minutes-tag -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install silverstein/minutes minutes-tag --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/silverstein/minutes.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.opencode/skills/minutes-tag .agents/skills/minutes-tag && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "minutes-tag" agent skill from https://github.com/silverstein/minutes/tree/main/.opencode/skills/minutes-tag into .agents/skills/minutes-tag/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minutes-tag", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add silverstein/minutes --skill minutes-tag -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install silverstein/minutes minutes-tag --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/silverstein/minutes.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.opencode/skills/minutes-tag .cursor/skills/minutes-tag && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "minutes-tag" agent skill from https://github.com/silverstein/minutes/tree/main/.opencode/skills/minutes-tag into .cursor/skills/minutes-tag/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minutes-tag", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/silverstein/minutes.git --path .opencode/skills/minutes-tag--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add silverstein/minutes --skill minutes-tag -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install silverstein/minutes minutes-tag --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/silverstein/minutes.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.opencode/skills/minutes-tag .gemini/skills/minutes-tag && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "minutes-tag" agent skill from https://github.com/silverstein/minutes/tree/main/.opencode/skills/minutes-tag into .gemini/skills/minutes-tag/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minutes-tag", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install silverstein/minutes minutes-tagInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add silverstein/minutes --skill minutes-tag -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/silverstein/minutes.git skills-src && mkdir -p .github/skills && cp -r skills-src/.opencode/skills/minutes-tag .github/skills/minutes-tag && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "minutes-tag" agent skill from https://github.com/silverstein/minutes/tree/main/.opencode/skills/minutes-tag into .github/skills/minutes-tag/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minutes-tag", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add silverstein/minutes --skill minutes-tag -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install silverstein/minutes minutes-tag --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/silverstein/minutes.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.opencode/skills/minutes-tag .opencode/skills/minutes-tag && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "minutes-tag" agent skill from https://github.com/silverstein/minutes/tree/main/.opencode/skills/minutes-tag into .opencode/skills/minutes-tag/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minutes-tag", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
minutes-tagLightweight outcome tagging for meetings — won, lost, stalled, great, or noise.
Minutes Tag is an agent skill from silverstein/minutes. Lightweight outcome tagging for meetings — won, lost, stalled, great, or noise. Use whenever the user says "tag this meeting", "mark that as a win", "that one was a loss", "tag yesterday's call as stalled", "mark this great", "that meeting was noise", "label that meeting", or any time they describe a meeting outcome in passing. Tagging takes 5 seconds and unlocks /minutes-mirror correlation analysis — the more meetings get tagged, the smarter mirror gets at telling the user what behavior patterns lead to wins…
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/tag_apply.py`). Compatibility notes: opencode
The repository describes itself as: Open-source, local-first Granola/Otter alternative that Claude Code, Codex, Cursor, and any MCP client can query. Meetings, calls, and voice memos transcribed on-device into… The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d3285c7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
gitpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
opencode
From compatibility in the SKILL.md frontmatter.
Minutes Tag loads about 2.2k tokens when it runs. Until then it costs about 155 tokens; SKILL.md has 1,165 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from silverstein/minutes at commit d3285c7, republished under its MIT licence (© silverstein). 1,165 words, ~2,239 tokens.
.claude/skills/minutes-tag/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Before running helper scripts or opening bundled references, set:
export MINUTES_SKILLS_ROOT="$(git rev-parse --show-toplevel)/.opencode/skills"
export MINUTES_SKILL_ROOT="$MINUTES_SKILLS_ROOT/minutes-tag"Lightweight outcome tagging — adds an outcome: field to a meeting's frontmatter so /minutes-mirror can correlate the user's behavior with their results over time.
The whole point of this skill is speed. Tagging should take 5 seconds, not 5 questions. Don't be precious about it — most users will never adopt tagging if it feels like data entry.
Three patterns the user might use. Always filter to meetings, not voice memos — voice memos can't be "won" or "lost".
1. Most recent ("tag this meeting", "mark that as a win", "tag the call I just finished"):
minutes list --content-type meeting --limit 1Use the most recent. Don't ask which one — that defeats the speed promise. The default behavior should always be "the call you just had".
2. By date ("tag yesterday's call", "tag the Tuesday call"):
minutes list --content-type meeting --limit 10Pick the meeting matching the date. If multiple meetings match the same day, ask once: "You had <N> meetings <date>. Which one?" with options listing titles.
3. By name ("tag my call with Sarah as a win"):
minutes search "<name>" --content-type meeting --limit 5Pick the most recent. If ambiguous, ask once.
If the user already named the outcome in their message ("tag that as a win"), use it directly. Don't ask again — they already told you.
If they haven't, ask via AskUserQuestion with these standard options:
Standard tags are the only ones /minutes-mirror will correlate. Custom tags are stored faithfully but won't appear in correlation analysis — warn the user gently if they pick a custom one: "Custom tags are saved, but mirror only correlates the standard five."
Do not ask an interactive note question. That's a second prompt and it breaks the speed promise.
Parse the user's original message for a "why" or note. Common patterns:
If you find a note in the message, use it. If you don't, leave outcome_note out of the frontmatter entirely. Don't insert an empty field. Don't ask. Users who want a fuller record have /minutes-debrief for that.
Use the script — do not Edit the frontmatter manually. YAML frontmatter is fragile, and the script handles all the edge cases (no existing frontmatter, existing outcome that needs replacement, atomic write to prevent half-edits, preservation of all other fields).
python3 "$MINUTES_SKILL_ROOT/scripts/tag_apply.py" \
"<absolute-path-to-meeting-file>" \
--outcome <won|lost|stalled|great|noise|custom> \
[--note "the optional one-line note from Phase 3"]Pass --note only if Phase 3 found a note in the user's message. Skip the flag entirely otherwise — the script will omit outcome_note from the frontmatter rather than inserting an empty field.
What the script guarantees:
outcome, outcome_note if a note was passed, tagged_at) are inserted just before the closing --- of the frontmatter, after every other existing field.outcome: already exists, the script removes the old outcome lines and re-inserts fresh ones at the end. Old outcome_note: is dropped if no new note is passed.The script prints {"status": "ok", ...} to stdout on success, or {"error": "..."} to stderr with non-zero exit on failure. Surface any error to the user.
Fallback if Python isn't available (extremely rare on macOS): use the Edit tool with surgical precision. Find the closing --- of the frontmatter, anchor on a small unique block ending in it, and insert your new fields right before. This is brittle on unusual frontmatter — only do it if the script fails.
Confirm in one line: "Tagged <meeting title> as <outcome>."
Then verify the file is still parseable by Minutes after the edit. The slug is the filename minus .md (e.g., 2026-03-18-product-roadmap-with-case):
minutes get "<filename-without-.md>" 2>&1 | head -3If the output contains an error or warning about malformed frontmatter, surface it gently: "Note: this meeting's frontmatter has a pre-existing schema issue. The tag was saved, but /minutes-mirror may skip this meeting until it's fixed." Don't try to fix the unrelated schema issue — that's not tag's job.
One-time lifetime nudge (idempotent — never repeats):
ls ~/.minutes/tag-nudge-shown 2>/dev/nullIf that marker file doesn't exist, this is the first time tag has run on this machine. Show the nudge once, then create the marker:
"First tag — nice. When you've tagged ~10 meetings, run
/minutes-mirror trendsand I'll show you what your winning meetings have in common."
mkdir -p ~/.minutes && touch ~/.minutes/tag-nudge-shownThe marker file is the state. No counting, no edge cases, no risk of repeated nudges from re-tagging the same meeting.
won, lost, stalled, great, noise. Custom tags are saved but won't be analyzed. Warn the user once if they pick a custom tag — don't lecture them, just let them know.--- markers. Use Edit with surgical precision.action_items, decisions, intents, entities, people, calendar_event, captured_at, device, recorded_by, etc. Don't reformat or reorder anything — only insert/update the three outcome fields.© silverstein, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in .opencode/skills/minutes-tag of silverstein/minutes.
Open the folder on GitHubat commit d3285c7
Minutes Tag next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Minutes Tag this skillsilverstein/minutes | 1.5k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Meeting Minutesgithub/awesome-copilot | 40k | 2 repos | ~2k | Automated safety check: Pass | MIT | |
| Meetingsalirezarezvani/claude-skills | 28k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Meeting Minutesaipoch/medical-research-skills | 1.9k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Meeting Minutes Takerdaymade/claude-code-skills | 1.4k | — | ~9.8k | Automated safety check: Pass | MIT | |
| Meeting Minutes Generatoraipoch/medical-research-skills | 1.9k | — | ~1.5k | Automated safety check: Pass | MIT |
github/awesome-copilot
Generate concise, actionable meeting minutes for internal meetings.
alirezarezvani/claude-skills
A skill your agent uses when someone wants to decide whether a meeting is worth calling, price a meeting in dollars, build a timeboxed agenda with desired outcomes, or turn messy meeting notes into…
aipoch/medical-research-skills
Use meeting minutes for other workflows that need structured execution, explicit assumptions, and clear output boundaries.
daymade/claude-code-skills
Transforms raw meeting transcripts into structured, evidence-based meeting minutes — merges multiple versions without losing content, reviews existing minutes against the transcript for missing…
aipoch/medical-research-skills
Generates structured meeting minutes from text transcripts. An agent skill from aipoch/medical-research-skills.
NousResearch/hermes-agent
Turn meeting notes into cited decisions, owners, tickets. An agent skill from NousResearch/hermes-agent.
silverstein/minutes
Analyze a product walkthrough, bug report video, Loom, or ScreenPal using Minutes transcription plus visual review.
silverstein/minutes
Self-coaching analysis of your own behavior across meetings — talk-time ratio, filler words, hedging language, monologue length, energy patterns, and (when meetings are tagged via /minutes-tag) what…
silverstein/minutes
Verify that Minutes is properly set up and working — model downloaded, mic accessible, directories exist, no stale state.
silverstein/minutes
Start or stop recording a meeting, call, or voice memo. An agent skill from silverstein/minutes.
silverstein/minutes
Fast non-interactive briefing before any meeting — auto-detects your next calendar event, pulls relationship history, surfaces open commitments, and produces a one-page brief in under 30 seconds.
silverstein/minutes
Manage old recordings — find large files, archive old meetings, delete processed originals.
Lightweight outcome tagging for meetings — won, lost, stalled, great, or noise. Minutes Tag is an agent skill from silverstein/minutes. Lightweight outcome tagging for meetings — won, lost, stalled, great, or noise.
Minutes Tag fits situations like: the user says tag this meeting; mark that as a win; that one was a loss; tag yesterdays call as stalled.
Run `npx skills add silverstein/minutes --skill minutes-tag -a claude-code`. Or copy the skill folder (.opencode/skills/minutes-tag in silverstein/minutes) into .claude/skills/minutes-tag in your project. Claude Code loads it when a task matches its description.
Run `npx skills add silverstein/minutes --skill minutes-tag -a codex`. Or copy the skill folder (.opencode/skills/minutes-tag in silverstein/minutes) into .agents/skills/minutes-tag in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add silverstein/minutes --skill minutes-tag -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/minutes-tag, .gemini/skills/minutes-tag, .github/skills/minutes-tag and .opencode/skills/minutes-tag in your project.
Going by SKILL.md and its folder, Minutes Tag needs Python for the scripts in its folder and the command-line tools its instructions call (git and python3). Our summary lists: Python 3. Compatibility (from SKILL.md): opencode.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Minutes Tag is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Minutes Tag: Meeting Minutes (github/awesome-copilot, 40k stars), Meetings (alirezarezvani/claude-skills, 28k stars), Meeting Minutes (aipoch/medical-research-skills, 1.9k stars) and Meeting Minutes Taker (daymade/claude-code-skills, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
silverstein (a GitHub user) maintains it in silverstein/minutes, which has 1,542 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 8, 2026.
Source: silverstein/minutes on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.