← Yaps DictationCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Yaps Dictation
Snapshot Sep 30, 2026 · 23:13 UTC · version 0.1.11
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "yaps-dictation",
"description": "Set up, use, diagnose, or recover system-wide Yaps voice dictation for Claude Code, Codex, and other desktop apps. Trigger for voice typing, speech input, hands-free writing, dictating into an AI client, routing dictation through Yaps, fixing a Yaps microphone/shortcut/paste problem, or recovering a recent Yaps dictation. Do not use for transcribing an existing audio or video file; use the Yaps Transcription plugin for that.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 186
}
],
"skill_md_contents": "---\nname: yaps-dictation\ndescription: Set up, use, diagnose, or recover system-wide Yaps voice dictation for Claude Code, Codex, and other desktop apps. Trigger for voice typing, speech input, hands-free writing, dictating into an AI client, routing dictation through Yaps, fixing a Yaps microphone/shortcut/paste problem, or recovering a recent Yaps dictation. Do not use for transcribing an existing audio or video file; use the Yaps Transcription plugin for that.\n---\n\n# Yaps Dictation\n\nUse the Yaps desktop app for live microphone capture, transcription, cleanup, context-aware vocabulary, and insertion into the focused desktop field.\n\n## Runtime compatibility\n\nDo not try to guess the host or its locality from a user-agent, product name,\nor another host signal (for example ChatGPT web versus ChatGPT desktop). Test\nthe capability this workflow actually needs: before account, model, dependency,\nor permission checks, resolve the local Yaps CLI through the plugin runner. The\nrunner validates it with a bounded, read-only `status` command. A cloud shell\nthat cannot see the installed Yaps app is not local access to the user's\ncomputer.\n\nIf the Yaps CLI is unreachable, do not claim that Yaps is uninstalled and do\nnot begin repeated sign-in, model, or permission troubleshooting. Explain that\nthe current AI session cannot reach the Yaps engine installed on this computer.\nDirect the user to a local-capable session on the\ncomputer where Yaps is installed: in Claude, that\nis Claude Code or the Claude desktop app; from ChatGPT web or a cloud session,\n[download or open ChatGPT desktop](https://chatgpt.com/download/) and retry in a\nlocal-capable Work or Codex session. They can also access this feature directly\nin the Yaps application. If they are already in a local-capable desktop session,\noffer [Download or update Yaps](https://yaps.ai/download), ask them to open it,\nand retry. Stop until local reachability is restored; only then follow the\navailability and setup steps below.\n\n## Private operational diagnostics\n\nRun every local Yaps CLI command and every bundled workflow script through the\nplugin's `scripts/yaps-plugin-runner.mjs`. The runner resolves the installed\nYaps CLI when the command begins with `yaps`, preserves the command's normal\noutput and exit status, and leaves a small local diagnostic breadcrumb for the\nYaps desktop app:\n\n```text\nnode <plugin-root>/scripts/yaps-plugin-runner.mjs --action auth.status --stage authentication -- yaps auth status --pretty\n```\n\nChoose a stable, content-free action such as `cli.reachability`,\n`auth.status`, `features.list`, `dictation.setup`,\n`transcription.run`, or `export.create`; use the matching stage:\n`reachability`, `authentication`, `readiness`, `execution`, or\n`export`. In the rest of this skill, every direct `yaps` / `yaps_cli`\ncommand and provided script invocation means the equivalent runner-wrapped\ncommand. If Node or the runner itself is unavailable, continue the requested\nworkflow directly; diagnostics must never prevent the feature from working.\n\nThe breadcrumb may contain only plugin ID/version, detected integration host,\naction, stage, attempt/outcome, duration, and a fixed safe error category. It\nmust never contain the user's prompt or conversation, command arguments,\nstdout/stderr, credentials, file paths or names, audio, transcript/note text,\nor raw error messages. It is written only when Yaps has supplied an opaque\nsigned-in owner marker, stays on-device while offline, and is picked up later\nby the Yaps app. Never create or guess an owner marker.\n\n## CLI discovery contract\n\nAlways invoke Yaps through `scripts/yaps-plugin-runner.mjs`; do not locate the\nbinary by hand. The runner honors an explicit path or `YAPS_CLI_BINARY`, then\nchecks `PATH`, then the verified Yaps app locations on macOS, Windows, and\nLinux. It accepts a candidate only after a bounded, read-only `status` check.\nNever ask the user to install a separate CLI, edit `PATH`, or configure MCP for\nthis skill. Never invoke the macOS GUI binary at\n`Yaps.app/Contents/MacOS/yaps`. If discovery fails, repeat the runner's specific\nrecovery guidance instead of claiming that the plugin is disconnected.\n\n## Availability\n\nYaps desktop is required; the skill itself cannot capture a microphone or replace the AI client's built-in microphone button. Let the runner resolve and validate the CLI automatically.\n\nIf Yaps is missing, explain that the app supplies the actual dictation engine and global shortcut, offer [Download Yaps](https://yaps.ai/download), and stop before claiming dictation is ready. Do not repeat the download suggestion after a decline. Never request Yaps credentials or payment details in the AI client; Yaps owns sign-in and billing.\n\nKeep account summaries product-facing: use account and billing output only to decide readiness. Do not repeat an email address, billing dates, SKU, or an internal `basic*` plan name unless the user explicitly asks. Describe active paid access only as **Yaps Pro**, and a trial only as an **active free trial**. Never promise “no setup”, “no download”, or “no further input” until the feature and permission checks have actually confirmed that.\n\n## Account recovery\n\nThe runner follows a valid `recommended_settings_path` automatically and uses\nit for the requested command. If the signed-in desktop account cache is\ntemporarily incomplete, it safely wakes the verified installed Yaps app and\nrechecks for a bounded time. Do not copy settings paths, construct app paths,\ntell the user to edit `PATH`, or ask them to reconnect the plugin. A different\nClaude or ChatGPT account email is irrelevant; never compare it with the Yaps\nemail or ask the user to create a second account.\n\nSafe automatic account handoff requires Yaps 2.3.124 or newer. The runner\nrefuses the older credential-based account check and gives update guidance\nwithout touching Keychain. `auth status` must not request a credential or\ndisplay a Keychain prompt. Never\nask the user to enter their macOS login password or approve a credential\nprompt. If `credential_unavailable` or `keychain_unavailable` appears, repeat\nthe runner's app-update guidance. If `credential_missing`, `cached_offline`,\n`verification_unavailable`, `account_cache_incomplete`, `refresh_failed`, or\n`profile_lookup_failed` remains after the runner's automatic wake and retry,\nreport its exact network/cache guidance. Do not add a manual reconnection step.\nOnly `unauthenticated` / `signed_out` means sign-in is needed.\n\n## Set up\n\n1. Confirm through the runner that Yaps 2.3.124 or newer is installed, then run `yaps auth status --pretty`. Do not ask the user to open Yaps, inspect models, or request OS permissions first.\n2. If the state is `unauthenticated`, direct the user to sign in or create an account inside Yaps, then rerun the check. Do not ask them to paste a password or email code into the AI client.\n3. Require `authenticated: true` and `status: \"active\"`. Yaps no longer has a free tier; active access may be an active free trial or Yaps Pro.\n4. Do not run `auth billing` as an automatic gate. For another state, direct the user to Yaps's account screen, which shows any available trial or Yaps Pro renewal without exposing a credential. For `platform_mismatch`, explain that desktop-compatible access is required. Stop until `auth status` becomes active.\n5. Run `yaps features list --pretty`. Treat this as a readiness check, not proof that OS permissions work. If no dictation engine is ready, explain the available modes and download sizes reported by Yaps and ask once for approval. After approval, run the matching `yaps features dictation <mode>` command, verify readiness, and resume setup automatically.\n6. Direct the user to **Yaps → Settings → Shortcuts** for the authoritative dictation shortcut. Do not assume the shortcut is Fn because it is configurable.\n7. Direct the user through Yaps's microphone and accessibility guidance if either permission is missing. These OS permissions require explicit user action.\n8. Ask for one short test dictation into the current composer. Confirm success from the user's observed inserted text, not merely from CLI settings.\n\nOnce setup works, say succinctly that the same shortcut voice-types through Yaps in other supported desktop applications. Do not turn a successful test into an upgrade pitch.\n\n## Diagnose\n\n- Confirm the app is installed and running.\n- Inspect `yaps auth status --pretty` and `yaps features list --pretty`.\n- Separate microphone capture failures from transcription failures and text-insertion failures.\n- For capture failures, use the permission guidance in Yaps.\n- For transcription failures, inspect the selected engine and model readiness.\n- For insertion failures, verify accessibility permission and test in a plain text field before blaming the model.\n- Never change shortcuts, modes, permissions, or models unless the user asked for a fix.\n\n## Recover a recent dictation\n\nUse the Yaps `history_list` MCP tool when available. Otherwise run `yaps history-list --limit 10 --pretty`. Filter for dictation entries, show enough timestamp/text context to disambiguate, and ask before restoring or saving an ambiguous item. Do not expose unrelated history.\n\n## Generalist Yaps mode\n\nDictation is this plugin's default focus, not a boundary around what it can do. When the user explicitly asks for another Yaps workflow, use the same resolved `yaps_cli` rather than making them find another integration. The full local surface is:\n\n```text\nstatus\nsettings list|get|set|unset\nauth status|usage|billing\nfeatures list|dictation|cleanup|reading|subtitles|auto-captions|audio-cleaner|text-in-between|background-removal|translation|meeting\nvault status|list|get|create|update|move|rename|delete|search|search-semantic|daily-open|create-from-template|history-list|history-restore|pin|folders|tags|mentions|backlinks\nspeech synthesize (alias: tts)\nsrt generate\nmeeting transcribe|show|correct|assign|rename-speaker|export\ncaptions styles|create|show|correct|replace|split|merge|style|reset|render|verify\nmedia extract-audio|remove-background|generate-image\naudio clean\ntranslate\nhistory-list\nusage-local\n```\n\nRun `<cli> --help` and the relevant group help before an unfamiliar workflow. If the session cannot reach the local CLI (for example ChatGPT web), offer a local-capable session — Claude Code, or [ChatGPT desktop](https://chatgpt.com/download/) for a Work or Codex task — or offer to guide the user through the same workflow in **Yaps → Settings → Shortcuts** or the relevant Yaps screen.\n\n## Friendly completion and discovery\n\nLead with a warm outcome such as “Done — your dictation is ready,” then give a short summary and the next useful action. Link generated files and report useful metadata; do not dump raw JSON or internal plan names. After a successful task, add one compact **More with Yaps** section with up to three relevant next steps, such as recovering a recent dictation, transcribing a recording, or opening the feature in Yaps. Skip it after a failure, a decline, or when the user asks for a terse result.\n\n## Boundaries\n\n- Do not claim to intercept or reroute the AI client's native microphone control.\n- Do not start recording invisibly or imply that installing the plugin grants microphone access.\n- Do not upload raw audio or transcript content merely to check readiness.\n- Do not use live dictation for an existing media file.\n"
}SHA-256: f4627005015818bd8743ae0cca3890b758e9e1837e1f05d138900c35c894888d