Agent skill

Minutes Tag

by silverstein in silverstein/minutes

Lightweight outcome tagging for meetings — won, lost, stalled, great, or noise.

MITAuto-check passed

Install Minutes Tag

skills CLI
$ npx skills add silverstein/minutes --skill minutes-tag -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install silverstein/minutes minutes-tag --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
minutes-tag
GitHub stars
1.5k
Token cost
~2.2k tokens
SKILL.md length
1,165 words
Files
2 (incl. scripts)
Skills in repo
24
Repo updated
First seen
Licence
MIT

At a glance

Lightweight outcome tagging for meetings — won, lost, stalled, great, or noise.

  • Works in 5 steps: Identify the meeting → Identify the tag → Capture a note only if the user gave one… → …
  • The user says tag this meeting
  • SKILL.md covers Skill Path, How it works and Gotchas
  • Runs Python scripts from its folder; calls git and python3

What it does

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.

When your agent uses it

  • The user says tag this meeting
  • Mark that as a win
  • That one was a loss
  • Tag yesterdays call as stalled

Example prompts

  • “tag this meeting”
  • “mark that as a win”
  • “that one was a loss”
  • “/minutes-tag”

Requirements

  • Python 3
  • Compatibility (from SKILL.md): opencode

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Identify the meeting
  2. Identify the tag
  3. Capture a note only if the user gave one in their message
  4. Edit the frontmatter via the bundled helper script
  5. Confirm and nudge

What it can do on your machine

Read from SKILL.md and the folder at commit d3285c7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    opencode

    From compatibility in the SKILL.md frontmatter.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~155
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from silverstein/minutes at commit d3285c7, republished under its MIT licence (© silverstein). 1,165 words, ~2,239 tokens.

Download SKILL.mdSave it as .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.
name
minutes-tag
description
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. Surface this skill any time the user mentions a meeting result, win, loss, or wasted time.
compatibility
opencode

Skill Path

Before running helper scripts or opening bundled references, set:

bash
export MINUTES_SKILLS_ROOT="$(git rev-parse --show-toplevel)/.opencode/skills"
export MINUTES_SKILL_ROOT="$MINUTES_SKILLS_ROOT/minutes-tag"

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

How it works

Phase 1: Identify the meeting

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"):

bash
minutes list --content-type meeting --limit 1

Use 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"):

bash
minutes list --content-type meeting --limit 10

Pick 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"):

bash
minutes search "<name>" --content-type meeting --limit 5

Pick the most recent. If ambiguous, ask once.

Phase 2: Identify the tag

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:

  • won — got the outcome you wanted (deal closed, decision made, agreement reached)
  • lost — didn't get what you wanted (deal lost, idea rejected, no decision)
  • stalled — neither — went sideways, no clear outcome, needs another meeting
  • great — high-quality conversation regardless of outcome (insight, real connection, energy, learned something)
  • noise — should have been an email; no value; time wasted
  • (custom) — let the user provide their own tag

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

Phase 3: Capture a note only if the user gave one in their message

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:

  • "tag as won, note: Sarah committed to monthly billing" → note = "Sarah committed to monthly billing"
  • "tag won — got the verbal commit on pricing" → note = "got the verbal commit on pricing"
  • "tag stalled because Alex postponed the decision" → note = "Alex postponed the decision"

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.

Phase 4: Edit the frontmatter via the bundled helper script

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

bash
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:

  • The new fields (outcome, outcome_note if a note was passed, tagged_at) are inserted just before the closing --- of the frontmatter, after every other existing field.
  • All other frontmatter fields are preserved byte-for-byte — no reordering, no reformatting, no whitespace changes.
  • Re-tagging is fully idempotent: if 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 body of the meeting file is never touched — only the frontmatter block.
  • Writes are atomic (temp file + rename) so an interrupted run can never leave a half-written meeting.

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.

Show full SKILL.md (446 more words)Show less
Phase 5: Confirm and nudge

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):

bash
minutes get "<filename-without-.md>" 2>&1 | head -3

If 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):

bash
ls ~/.minutes/tag-nudge-shown 2>/dev/null

If 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 trends and I'll show you what your winning meetings have in common."

bash
mkdir -p ~/.minutes && touch ~/.minutes/tag-nudge-shown

The marker file is the state. No counting, no edge cases, no risk of repeated nudges from re-tagging the same meeting.

Gotchas

  • Speed is the entire feature. If tagging takes more than two questions (the tag, optionally the note), you've broken it. Default to "most recent". Skip the optional note unless the user clearly wants to add one.
  • Standard tags only correlate. Mirror's correlation analysis only works on the five standard tags: 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.
  • Don't touch the meeting body. Only edit the YAML frontmatter block between the first two --- markers. Use Edit with surgical precision.
  • Re-tagging is intentional. If the user tags a meeting that's already tagged, overwrite it cleanly. They're either correcting themselves or seeing it differently after the fact. Both are valid.
  • Preserve existing frontmatter exactly. Some meetings have 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.
  • Tag freshness matters. Tags are most valuable within ~24 hours, while the outcome is fresh in the user's head. Tagging two weeks later is fine but worth less. Don't enforce this — just don't make tagging feel like a chore that the user puts off.
  • Don't try to infer the tag from the transcript. If the user says "tag this meeting" without saying which outcome, ask. Don't guess from the transcript — your guess will be wrong in the cases that matter most (a meeting that looks like a win on paper but actually wasn't, or vice versa).
  • The note is optional for a reason. Most users will skip it. That's fine — the tag itself is the load-bearing data. Don't make the user feel like they're underperforming if they skip the note.

© silverstein, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in .opencode/skills/minutes-tag of silverstein/minutes.

  • SKILL.md
  • scripts/tag_apply.py

Open the folder on GitHubat commit d3285c7

Compare with similar skills

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.

Minutes Tag compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Minutes Tag this skillsilverstein/minutes1.5k—~2.2kAutomated safety check: PassMIT
Meeting Minutesgithub/awesome-copilot40k2 repos~2kAutomated safety check: PassMIT
Meetingsalirezarezvani/claude-skills28k—~1.5kAutomated safety check: PassMIT
Meeting Minutesaipoch/medical-research-skills1.9k—~1.8kAutomated safety check: PassMIT
Meeting Minutes Takerdaymade/claude-code-skills1.4k—~9.8kAutomated safety check: PassMIT
Meeting Minutes Generatoraipoch/medical-research-skills1.9k—~1.5kAutomated safety check: PassMIT

Similar skills

  • Meeting Minutes

    github/awesome-copilot

    Official

    Generate concise, actionable meeting minutes for internal meetings.

    40k GitHub starsUsed in 2 repos~2k tokens
    Productivity & AutomationAuto-check passed
  • 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…

    28k GitHub stars~1.5k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Meeting Minutes

    aipoch/medical-research-skills

    Use meeting minutes for other workflows that need structured execution, explicit assumptions, and clear output boundaries.

    1.9k GitHub stars~1.8k tokensUpdated 23 days ago
    Productivity & AutomationAuto-check passed
  • Meeting Minutes Taker

    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…

    1.4k GitHub stars~9.8k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Meeting Minutes Generator

    aipoch/medical-research-skills

    Generates structured meeting minutes from text transcripts. An agent skill from aipoch/medical-research-skills.

    1.9k GitHub stars~1.5k tokensUpdated 23 days ago
    Productivity & AutomationAuto-check passed
  • Meeting Action Items

    NousResearch/hermes-agent

    Turn meeting notes into cited decisions, owners, tickets. An agent skill from NousResearch/hermes-agent.

    252k GitHub stars~950 tokensUpdated today
    Productivity & AutomationAuto-check passed

More from silverstein/minutes

All 24 skills in this repo
  • Minutes Video Review

    silverstein/minutes

    Analyze a product walkthrough, bug report video, Loom, or ScreenPal using Minutes transcription plus visual review.

    1.5k GitHub stars~1.4k tokensUpdated 2 days ago
    Auto-check: notes
  • Minutes Mirror

    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…

    1.5k GitHub stars~3.5k tokensUpdated 2 days ago
    Auto-check passed
  • Minutes Verify

    silverstein/minutes

    Verify that Minutes is properly set up and working — model downloaded, mic accessible, directories exist, no stale state.

    1.5k GitHub stars~801 tokensUpdated 2 days ago
    Auto-check passed
  • Minutes Record

    silverstein/minutes

    Start or stop recording a meeting, call, or voice memo. An agent skill from silverstein/minutes.

    1.5k GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check passed
  • Minutes Brief

    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.

    1.5k GitHub stars~3.1k tokensUpdated 2 days ago
    Auto-check passed
  • Minutes Cleanup

    silverstein/minutes

    Manage old recordings — find large files, archive old meetings, delete processed originals.

    1.5k GitHub stars~852 tokensUpdated 2 days ago
    Auto-check passed

Questions about Minutes Tag

What does Minutes Tag do?

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.

When should I use Minutes Tag?

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.

How do I install Minutes Tag in Claude Code?

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.

How do I install Minutes Tag in Codex?

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.

Can I use Minutes Tag in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Minutes Tag need to run?

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.

Does Minutes Tag access the network?

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.

Is Minutes Tag safe to install?

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.

What licence does Minutes Tag use?

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.

How many tokens does Minutes Tag use?

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.

What are the alternatives to Minutes Tag?

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.

Who maintains Minutes Tag?

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.