minutes-verify
Verify that Minutes is properly set up and working — model downloaded, mic accessible, directories exist, no stale state. Use when the user says "is minutes working", "check my setup", "verify minutes", "test recording setup", "why isn't minutes working", "minutes health check",
Install
npx skills add https://github.com/silverstein/minutes/tree/main/.claude/plugins/minutes/skills/minutes-verify
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install silverstein-minutes@llmmart
git clone https://github.com/silverstein/minutes.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole silverstein/minutes collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
/minutes-verify
Run a health check on the Minutes installation to confirm everything is working.
How to verify
Run the verification script included with this skill:
bash "${CLAUDE_PLUGIN_ROOT}/skills/minutes-verify/scripts/verify-setup.sh"
The script checks each component and outputs a pass/fail status for each. Read the output and report results to the user.
What gets checked
| Check | What it verifies |
|---|---|
| Binary | minutes command exists on PATH |
| Model | At least one whisper model downloaded in ~/.minutes/models/ or ~/.cache/whisper/ |
| Meetings dir | ~/meetings/ directory exists |
| Memos dir | ~/meetings/memos/ directory exists |
| PID state | No stale PID file in ~/.minutes/recording.pid |
| Audio input | CLI-context audio input visibility (macOS only; desktop readiness is authoritative for the signed app) |
| Config | ~/.config/minutes/config.toml exists (optional — defaults work fine) |
| Spotlight privacy | macOS .metadata_never_index markers exist for ~/.minutes and ~/meetings when those directories exist |
After verification
If any checks fail, tell the user exactly what to do:
- Binary missing →
cargo build --releasein the minutes repo, then add to PATH - No model →
minutes setup --model small(recommended) or--model tiny(faster, lower quality) - No meetings dir →
mkdir -p ~/meetings/memos— will also be created on first recording - Stale PID →
rm ~/.minutes/recording.pid— previous recording crashed without cleanup - Audio input warning → Treat as CLI-context-only. If the signed desktop app's Readiness Center shows Audio input/Microphone as ready, trust the desktop app identity.
- Spotlight privacy warning → Open the desktop app or run
minutes setupso Minutes can recreate the.metadata_never_indexmarkers.
Gotchas
- The script is macOS-specific for the audio input check (uses
system_profiler). On Linux, that check will be skipped. On macOS, shell-context checks can disagree with the signed desktop app; use the desktop Readiness Center for TCC-sensitive truth. - "Model not found" is the #1 setup issue — most people forget to run
minutes setupafter building. - Config file is optional — if
~/.config/minutes/config.tomldoesn't exist, that's fine. Minutes uses compiled defaults. Only flag it as "not configured" (informational), not as an error. - Spotlight privacy uses folder markers — Minutes verifies
.metadata_never_index; it does not disable Spotlight indexing for the whole user volume.
Files (minutes)
-
scripts
-
verify-setup.sh 3.7 KB
#!/usr/bin/env bash # Minutes setup verification script # Checks all components needed for recording, transcription, and storage. set -euo pipefail PASS="PASS" FAIL="FAIL" WARN="WARN" errors=0 check() { local label="$1" status="$2" detail="${3:-}" if [ "$status" = "$PASS" ]; then printf " %-20s %s" "$label" "$PASS" elif [ "$status" = "$WARN" ]; then printf " %-20s %s" "$label" "$WARN" else printf " %-20s %s" "$label" "$FAIL" errors=$((errors + 1)) fi [ -n "$detail" ] && printf " (%s)" "$detail" printf "\n" } echo "Minutes Health Check" echo "====================" echo "" # 1. Binary if command -v minutes &>/dev/null; then version=$(minutes --version 2>/dev/null || echo "unknown") check "Binary" "$PASS" "$version" else check "Binary" "$FAIL" "minutes not found on PATH" fi # 2. Whisper model model_found=false model_detail="" for dir in "$HOME/.minutes/models" "$HOME/.cache/whisper"; do if [ -d "$dir" ]; then count=$(find "$dir" -name "*.bin" -o -name "ggml-*.bin" 2>/dev/null | wc -l | tr -d ' ') if [ "$count" -gt 0 ]; then model_found=true model_detail="$count model(s) in $dir" break fi fi done if $model_found; then check "Whisper model" "$PASS" "$model_detail" else check "Whisper model" "$FAIL" "no models found — run: minutes setup --model small" fi # 3. Meetings directory if [ -d "$HOME/meetings" ]; then count=$(find "$HOME/meetings" -maxdepth 1 -name "*.md" 2>/dev/null | wc -l | tr -d ' ') check "Meetings dir" "$PASS" "$count meeting(s)" else check "Meetings dir" "$FAIL" "~/meetings/ does not exist" fi # 4. Memos directory if [ -d "$HOME/meetings/memos" ]; then count=$(find "$HOME/meetings/memos" -maxdepth 1 -name "*.md" 2>/dev/null | wc -l | tr -d ' ') check "Memos dir" "$PASS" "$count memo(s)" else check "Memos dir" "$WARN" "~/meetings/memos/ does not exist — will be created on first memo" fi # 5. PID state pid_file="$HOME/.minutes/recording.pid" if [ -f "$pid_file" ]; then pid=$(cat "$pid_file" 2>/dev/null || echo "") if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then check "PID state" "$PASS" "recording active (PID $pid)" else check "PID state" "$FAIL" "stale PID file — run: rm $pid_file" fi else check "PID state" "$PASS" "no active recording" fi # 6. Audio input (macOS only) if [ "$(uname)" = "Darwin" ]; then if system_profiler SPAudioDataType 2>/dev/null | grep -q "Input Source"; then check "Audio input" "$PASS" "CLI context sees an input device" else check "Audio input" "$WARN" "CLI context sees no input source; if the desktop Readiness Center is ready, trust the signed app" fi else check "Audio input" "$WARN" "skipped (non-macOS)" fi # 7. Config file (optional) config_file="$HOME/.config/minutes/config.toml" if [ -f "$config_file" ]; then check "Config" "$PASS" "$config_file" else check "Config" "$WARN" "not configured — using defaults (this is fine)" fi # 8. Spotlight privacy markers (macOS only) if [ "$(uname)" = "Darwin" ]; then missing_markers=() for dir in "$HOME/.minutes" "$HOME/meetings"; do if [ -d "$dir" ] && [ ! -e "$dir/.metadata_never_index" ]; then missing_markers+=("$dir") fi done if [ "${#missing_markers[@]}" -eq 0 ]; then check "Spotlight privacy" "$PASS" "metadata exclusion markers present" else check "Spotlight privacy" "$WARN" "missing .metadata_never_index in: ${missing_markers[*]}; open Minutes or run minutes setup" fi else check "Spotlight privacy" "$WARN" "skipped (non-macOS)" fi echo "" if [ "$errors" -eq 0 ]; then echo "All checks passed. Minutes is ready to use." else echo "$errors check(s) failed. Fix the issues above before recording." fi exit "$errors"
-
-
SKILL.md 2.9 KB
--- name: minutes-verify description: Verify that Minutes is properly set up and working — model downloaded, mic accessible, directories exist, no stale state. Use when the user says "is minutes working", "check my setup", "verify minutes", "test recording setup", "why isn't minutes working", "minutes health check", or after running setup for the first time. user_invocable: true --- # /minutes-verify Run a health check on the Minutes installation to confirm everything is working. ## How to verify Run the verification script included with this skill: ```bash bash "${CLAUDE_PLUGIN_ROOT}/skills/minutes-verify/scripts/verify-setup.sh" ``` The script checks each component and outputs a pass/fail status for each. Read the output and report results to the user. ## What gets checked | Check | What it verifies | |-------|-----------------| | Binary | `minutes` command exists on PATH | | Model | At least one whisper model downloaded in `~/.minutes/models/` or `~/.cache/whisper/` | | Meetings dir | `~/meetings/` directory exists | | Memos dir | `~/meetings/memos/` directory exists | | PID state | No stale PID file in `~/.minutes/recording.pid` | | Audio input | CLI-context audio input visibility (macOS only; desktop readiness is authoritative for the signed app) | | Config | `~/.config/minutes/config.toml` exists (optional — defaults work fine) | | Spotlight privacy | macOS `.metadata_never_index` markers exist for `~/.minutes` and `~/meetings` when those directories exist | ## After verification If any checks fail, tell the user exactly what to do: - **Binary missing** → `cargo build --release` in the minutes repo, then add to PATH - **No model** → `minutes setup --model small` (recommended) or `--model tiny` (faster, lower quality) - **No meetings dir** → `mkdir -p ~/meetings/memos` — will also be created on first recording - **Stale PID** → `rm ~/.minutes/recording.pid` — previous recording crashed without cleanup - **Audio input warning** → Treat as CLI-context-only. If the signed desktop app's Readiness Center shows Audio input/Microphone as ready, trust the desktop app identity. - **Spotlight privacy warning** → Open the desktop app or run `minutes setup` so Minutes can recreate the `.metadata_never_index` markers. ## Gotchas - **The script is macOS-specific** for the audio input check (uses `system_profiler`). On Linux, that check will be skipped. On macOS, shell-context checks can disagree with the signed desktop app; use the desktop Readiness Center for TCC-sensitive truth. - **"Model not found" is the #1 setup issue** — most people forget to run `minutes setup` after building. - **Config file is optional** — if `~/.config/minutes/config.toml` doesn't exist, that's fine. Minutes uses compiled defaults. Only flag it as "not configured" (informational), not as an error. - **Spotlight privacy uses folder markers** — Minutes verifies `.metadata_never_index`; it does not disable Spotlight indexing for the whole user volume.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.