Claude opencode Skill

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

LLM Mart · 0 points · 19 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download silverstein-minutes-.agents_skills_minutes_minutes-verify-e56450a.zip · 3 KB
Part of silverstein/minutes — 155 skills

Install

skills CLI npx skills add https://github.com/silverstein/minutes/tree/main/.agents/skills/minutes/minutes-verify
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install silverstein-minutes@llmmart
Git 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

Skill Path

Before running helper scripts or opening bundled references, set:

export MINUTES_SKILLS_ROOT="$(git rev-parse --show-toplevel)/.agents/skills/minutes"
export MINUTES_SKILL_ROOT="$MINUTES_SKILLS_ROOT/minutes-verify"

/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 "$MINUTES_SKILL_ROOT/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.
Files (minutes)
  • agents
    • openai.yaml 245 B
      interface:
        display_name: "Minutes Verify"
        short_description: "Verify that Minutes is properly set up and working — model downloaded, mic accessible, directories exist, no stale state."
        default_prompt: "Use Minutes Verify for this task."
      
  • 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 3.1 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.
    ---
    
    ## Skill Path
    
    Before running helper scripts or opening bundled references, set:
    
    ```bash
    export MINUTES_SKILLS_ROOT="$(git rev-parse --show-toplevel)/.agents/skills/minutes"
    export MINUTES_SKILL_ROOT="$MINUTES_SKILLS_ROOT/minutes-verify"
    ```
    
    # /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 "$MINUTES_SKILL_ROOT/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.

No comments yet.

Reviews (0)

No reviews yet.

Related