---
name: silverstein/minutes-search
source: https://app.decimal.ai/s/silverstein-minutes-search@1/SKILL.md
source_sha256: f6a25e15d767
---

# /minutes-search

Find information across all meeting transcripts and voice memos.

## Usage

```bash
# Basic search
minutes search "pricing strategy"

# Filter to just voice memos
minutes search "onboarding idea" -t memo

# Filter to just meetings
minutes search "sprint planning" -t meeting

# Date filter + limit
minutes search "API redesign" --since 2026-03-01 --limit 5
```

## Flags

| Flag | Description |
|------|-------------|
| `-t, --content-type <meeting\|memo>` | Filter by type |
| `--since <date>` | Only results after this date (ISO format, e.g., `2026-03-01`) |
| `-l, --limit <n>` | Maximum results (default: 10) |

## Output

Returns JSON to stdout with an array of matches. Each result includes:
- `title` — Meeting or memo title
- `date` — When it was recorded
- `content_type` — "meeting" or "memo"
- `snippet` — The line containing the match
- `path` — Full path to the markdown file

Human-readable output goes to stderr. A result path is only a hint. To read the
full transcript, run `minutes get "<exact path>" --json`, require exit status 0,
and use only that response. Never pass the path to `cat` or the host `Read` tool.

## How search works

Search is case-insensitive and matches against both the transcript body and the YAML frontmatter title. It walks all `.md` files in `~/meetings/` (including the `memos/` subfolder).

For richer semantic search, users can configure QMD as the search engine in `~/.config/minutes/config.toml`:
```toml
[search]
engine = "qmd"
qmd_collection = "meetings"
```

## Search coaching

When the user's search query is vague or too broad, push back before running it:

- **"who said X"** or **"what did Alex say"** → If the meeting has `speaker_map` in frontmatter, use it to identify who said what. `speaker_map` maps SPEAKER_X labels to real names. High confidence = reliable, Medium = "likely" (suggest `minutes confirm` to lock it in).
- **"everything"** or **"all meetings"** → "That'll return hundreds of results. What specifically are you looking for? A person, a topic, or a decision?"
- **Single common word** like "meeting" or "project" → "That's too broad. Can you narrow it — a person's name, a specific topic, or a date range?"
- **"that meeting"** or **"the one where"** → "Help me narrow it down. Do you remember who was in the meeting, roughly when it was, or a specific thing that was said?"

Suggest search strategies based on what the user is looking for:
- **Finding a person's input** → Search their name: `minutes search "Alex"`
- **Finding a decision** → Search decision keywords: `minutes search "decided"` or `minutes search "agreed"`
- **Finding an idea** → Search voice memos: `minutes search "idea" -t memo`
- **Finding something from a time range** → Use `--since`: `minutes search "pricing" --since 2026-03-01`

## Tips for good searches

- Search for **what people said**, not document titles: `"we should postpone the launch"` not `"launch delay meeting"`
- Search for **names** to find the policy-authorized normal history involving someone: `"Alex"` or `"Case"`
- Search for **decisions**: `"decided"`, `"agreed"`, `"committed to"`
- Reauthorize a selected result with `minutes get "<exact path>" --json` before loading full context

## Gotchas

- **Search is substring, not fuzzy** — `"price"` matches `"pricing"` and `"price"`, but `"prcing"` (typo) matches nothing. Try multiple terms if you're not sure of the exact wording.
- **`--since` requires ISO date format** — Use `2026-03-01`, not `"last week"` or `"March 1st"`. For relative dates, compute the ISO date first: `date -v-7d +%Y-%m-%d`.
- **Large result sets flood stdout** — Always use `--limit` when searching broad terms. The default limit is 10, but common words can match hundreds of files.
- **QMD semantic search requires separate setup** — If `config.toml` sets `engine = "qmd"` but the QMD collection isn't indexed, search will fail silently. Run `qmd update && qmd embed` first.
- **Voice memos vs meetings** — Both are searched by default. Use `-t memo` or `-t meeting` to narrow results. Voice memos live in `~/meetings/memos/`, meetings in `~/meetings/`.
- **Empty results don't mean it wasn't discussed** — If the meeting wasn't transcribed (e.g., recording was stopped before processing), it won't appear in search. Check `minutes list` to see what's been processed.