Vivadicta cli usage
Agent skills for the VivaDicta for Mac CLI (vivadicta). Install with npx skills add n0an/vivadicta-cli-skills.
npx -y skills add n0an/vivadicta-cli-skills --skill vivadicta-cli-usageAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Run vivadicta commands against the user's VivaDicta for Mac history from the shell. Use when picking a subcommand, flag combo, or output format for the vivadicta CLI.
SKILL.md
6.1 KB, as published. Nobody here has run it
vivadicta cli usage
Use this skill when you need to run or design a vivadicta command. Covers canonical flags, output formats, env vars, exit codes, and the full subcommand map.
Preconditions
- VivaDicta.app installed at
/Applications/VivaDicta.app. vivadictaon$PATH(install viabrew install n0an/tap/vivadicta).- UI app running is only required for write commands (
rewrite,transcribe,job). Reads work standalone.
Command discovery
Prefer --help over guessing:
vivadicta --help
vivadicta search --help
vivadicta transcribe --help
--help is authoritative. This skill lists the common shape; anything finer-grained lives behind --help.
Subcommand map
All 11 subcommands, one line each.
Reads (no UI app required):
vivadicta recent [N]- last N transcriptions, newest first. DefaultN=10, capped at 50.vivadicta search <query>- full-text search. Filters:--since,--from/--to,--tag,--source,--mode,--limit(default 20, max 100),--full.vivadicta get <id-or-query>- one transcription. Accepts raw UUID, keyword (latest,last,most recent,newest,current), or natural-language query ("yesterday's call with sam"). Flags:--format plain|markdown(in-summary text),--all-variations.vivadicta presets [--all]- list AI rewrite presets.--allincludes hidden.vivadicta tags- list user tags + source tags with counts.vivadicta modes [--all]- list Viva Modes (app-/URL-aware profiles).--allincludes disabled.vivadicta vocab- list custom vocabulary words.vivadicta replacements [--all]- list post-transcription find-and-replace rules.
Writes (UI app must be running):
vivadicta rewrite <id-or-query> --preset <alias>- rewrite with an AI preset. Blocking.--dry-runprints plan without hitting the UI app.vivadicta transcribe <file-or-url> [--async]- transcribe an audio file or YouTube URL. Auto-routes:http(s)://→ URL,file:/// path /~//.// bare filename that resolves → file. Blocking default polls every 2 s until done;--asyncreturns a job UUID.vivadicta job <uuid>- single-shot status check for a job fromtranscribe --async.
Modes is read-only in v1 - create or edit Viva Modes from the UI app, then vivadicta modes surfaces them.
Global flags
Apply to every subcommand:
--output <text|table|json|markdown>- output format.markdownis supported only byget. Default is TTY-aware (see next section).--pretty- pretty-print JSON. Only valid when the effective format isjson.--quiet/-q- suppress stderr chrome (progress phases, hints).--verbose/-v- include extra fields in human output.--help/-h- per-subcommand help.--version- printCFBundleShortVersionStringfrom the installed app.
Output format resolution (TTY-aware)
- Explicit
--output <fmt>wins. - Otherwise
VIVADICTA_OUTPUT=<fmt>env var. - Otherwise stdout TTY detection:
- TTY →
text - Pipe / redirect →
json
- TTY →
- Override detection with
VIVADICTA_FORCE_TTY=1orVIVADICTA_FORCE_NON_TTY=1(CI determinism).
JSON shape matches the matching MCP tool's response. One value differs: ref carries a raw UUID from the CLI (vs a session handle like t1 in MCP). Follow-up vivadicta commands accept either.
Env vars
| Var | Purpose |
|---|---|
VIVADICTA_OUTPUT | Default --output format. Overrides TTY detection. |
VIVADICTA_FORCE_TTY=1 | Force text/table output even when piped. |
VIVADICTA_FORCE_NON_TTY=1 | Force JSON output even on a TTY. |
VIVADICTA_TIMEOUT_SECONDS | Blocking-write poll timeout (default 600). |
NO_COLOR=1 | Standard convention, disables ANSI (v1 ships no color anyway). |
Exit codes
For scripting:
| Exit | Meaning |
|---|---|
| 0 | Success |
| 1 | Generic internal failure |
| 2 | invalid_arguments (malformed arg, unsupported flag combination, validation failure) |
| 3 | preset_not_found / preset_ambiguous (fuzzy match failed or returned multiple candidates) |
| 4 | transcription_not_found / transcription_ambiguous (resolver failed) |
| 5 | vivadicta_not_running (write command with UI app stopped) |
| 6 | daily_limit_reached (write only) |
| 10 | storage_unavailable (launch the UI app at least once before using reads) |
| 64 | Usage error (unknown subcommand, bad enum value, --pretty without --output json) |
Branch on these in scripts:
vivadicta get "$QUERY" --output json > /tmp/out.json
case $? in
0) jq '.title' /tmp/out.json ;;
4) echo "no match, retry with a UUID" >&2 ;;
5) echo "open VivaDicta first" >&2; exit 1 ;;
10) echo "launch the app at least once" >&2; exit 1 ;;
*) echo "unexpected exit" >&2; exit 1 ;;
esac
Output piping
The TTY-aware default makes pipes ergonomic out of the box:
vivadicta recent 5 | jq '.transcriptions[].title'
vivadicta search "sprint" --since yesterday --output json | jq '.count'
vivadicta get latest --output markdown > ~/notes/today.md
In a TTY the same commands produce aligned tables.
Error output
Errors print to stderr with vivadicta: <message> + optional hint: line. When --output json is active, errors become a structured payload for jq:
{"status":"error","code":4,"error":"transcription_not_found","message":"No transcription matches '...'","hint":"did you mean ...","candidates":[...]}
Guardrails
- For writes, check that the UI app is running first (
pgrep -f VivaDicta.appis enough). Otherwise exit 5 is the expected failure; don't retry. - For reads right after a UI-side edit, expect up to a few seconds of CloudKit sync lag before the new record appears in CLI output.
- If asked to create or edit presets / tags / modes / vocab / replacements: v1 doesn't support this from the CLI. Point the user to the UI app.
- For long-running tasks (
transcribe,rewrite), default to blocking so the user's next step has the result. Pass--asynconly when the user explicitly wants to background the job.