aviz85/claude-skills-library/quick-voice
Claude Code and agent skill by aviz85/claude-skills-library
- community
Checking that the SKILL.md file is still in the repository.
Spin up an instant browser voice session (OpenAI Realtime gpt-realtime-2) to close a topic in a short conversation instead of working through documents. Generic & white-label - works for any process. Supports live data work (read/update files, JSON, run commands), and distill mode (no tools, ends with a structured deliverable). Has a generic canvas that can display images, markdown, code, html, json, video, audio - perfect for "let's go over X" flows where the agent shows you items one by one and you react in real time. Use when user says "let's close this in a voice call", "run a quick voice session about X", "תפעיל שיחה קולית", "let's go over the [images/leads/PRs/files/notes]", or when a task is faster as a 3-minute conversation than as a document edit.
Install
npx vskill@latest install aviz85/claude-skills-library/quick-voiceSKILL.md
quick-voice
White-label voice session generator. Each invocation produces a per-session web app that opens a WebRTC voice channel to OpenAI Realtime (gpt-realtime-2) with context-specific instructions, tools, and canvas behavior.
When to use
- "תפעיל איתי שיחה קולית על X" / "let's have a quick voice call about X"
- Going through a list of items where speaking is faster than reading + clicking
- Closing a topic that needs a few decisions + updates (not a long-form plan)
- Producing a structured output (decisions / action items / notes) from a free-form discussion
Two modes
| Mode | Tools | Output | |
|---|---|---|---|
| live | File / JSON / bash tools available — agent updates real data during the call | A summary of changes made (in output.md) | |
| distill | No data-mutation tools; canvas + save_note + end_session only | A long structured deliverable (decisions, notes, action items) in output.md |
The canvas is available in both modes.
How to run a session
Step 1 — figure out context
Look at the conversation. The user said one of:
- Explicit: "let's close the freelancer reviews" → topic = freelancer reviews
- Implicit: earlier in the conversation we generated 10 images → topic = "go over generated images"
- Vague: "תפעיל שיחה קולית" → call AskUserQuestion (single Q) to clarify topic + mode
Step 2 — pick a runtime directory + generate the session config
Each session has its own runtime directory holding config.json, output.md, server.log, done.flag. The runtime dir lives outside the skill so the skill itself stays code-only and project data stays with the project.
Pick a session id: id=$(date +%Y%m%d-%H%M%S).
Choose the runtime directory:
- Inside a project (git repo / codebase you're working in):
put it at <project-root>/.quick-voice/<id>/. Add .quick-voice/ to the project's .gitignore so session data never gets committed.
- No project context:
use /tmp/quick-voice-$USER/<id>/.
Create the directory and write config.json into it:
Fields:
mode:"live"or"distill".topic: shown in the page header.instructions: the system prompt. Write it in Hebrew (Aviz prefers Hebrew). Be specific — describe the flow you want the agent to follow.voice:"ash"(default),"alloy","cedar", etc.cwd: directory the file tools are scoped to. Required if any file tool is enabled.tools: whitelist of tool names from the full set (seelib/tool-defs.js). For distill mode use only:canvas_show,canvas_clear,save_note,end_session. For live mode add file / JSON / bash tools as needed.canvas_hints: optional. If you pre-load items the agent should walk through, list them here. Otherwise the agent decides what to show.output_template: seedsoutput.mdso the agent has a structure to fill in viasave_note.
Step 3 — launch
<runtime-dir> is the absolute path to the directory you created in Step 2. The launcher reads <runtime-dir>/config.json and writes output.md, server.log, done.flag back into the same directory.
Cross-platform (macOS / Linux / Windows). This:
- Verifies
OPENAI_API_KEY(from env or~/.claude/skills/quick-voice/.env) - Runs
npm installonce ifnode_modulesis missing - Finds a free port in 3031-3040 (uses
net.createServer— no shell needed) - Spawns
server.js, polls/configuntil ready - Opens the default browser at
http://localhost:<port>(openon macOS,xdg-openon Linux,starton Windows) - Waits for the user to end the session (close browser →
/doneis hit, or the agent callsend_session) - Prints
output.mdand exits
Step 4 — surface the output
After the launcher returns, read runtime/<id>/output.md and present it to the user. Do NOT delete the runtime dir automatically — the user may want to re-open or audit it. The session log is in runtime/<id>/server.log.
Available tools (full set)
See lib/tool-defs.js for OpenAI Realtime tool definitions and lib/tools.js for implementations. Whitelist via config.json.tools.
Canvas (both modes):
canvas_show({ type, source, title?, content? })— display in canvas.type∈image|markdown|html|code|json|video|audio|text|url.- For media (
image,video,audio): passsource(file path or URL). - For text-like (
markdown,html,code,json,text): pass eithercontent(inline string) ORsource(file path — the client fetches the file via/fileand renders it). If you have a long block already on disk, prefersource; if you're generating short content inline, usecontent. - For
url: passsource(iframe src). canvas_clear()— clear canvas.
Output / control (both modes):
save_note({ heading, content })— append a section tooutput.md.end_session({ summary? })— finalize and close.summaryis appended to output.md.
Data (live mode only):
read_file({ path })— read file undercwd.write_file({ path, content })— write file undercwd.append_file({ path, content })— append.update_json({ path, patch })— shallow-mergepatchinto a JSON file (object root only).list_dir({ path })— list directory contents.run_bash({ cmd })— run a shell command incwd. Use sparingly.
Examples
Example 1 — "let's go over the images you just created" (distill)
Example 2 — "review pending freelancer scores" (live)
Example 3 — vague invocation
User says only "תפעיל שיחה קולית". Call AskUserQuestion once:
Question: "על מה השיחה?"Options: [explicit topic the user types in via 'Other'], "סקירה חופשית — distill בלבד"
Then build the config from the answer.
Anti-patterns
- Don't bake secrets.
OPENAI_API_KEYcomes from~/.claude/skills/quick-voice/.env(or the project's.env). Never inline. - Don't generate huge instructions. Keep
instructions≤ 2KB. The agent needs to act fast. - Don't skip `cwd` when enabling file tools — it scopes the blast radius.
- Don't enable `run_bash` unless really needed. Prefer specific tools.
- Don't auto-delete `runtime/<id>/`. The user may want to re-open or audit.
Files in this skill
server.js— Express server. Reads$QV_RUNTIME_DIR/config.json, vends OpenAI ephemeral tokens, executes tool calls server-side, serves files via/file?path=....public/index.html,public/app.js— WebRTC client + generic canvas renderer (markdown/html/code/json/text can be loaded fromsourcepaths in addition to inlinecontent).lib/tool-defs.js— OpenAI Realtime tool schemas.lib/tools.js— server-side tool implementations.scripts/launch.js— cross-platform Node launcher: takes an absolute<runtime-dir>path, finds free port, spawns server, opens browser, waits for done.
Per-session files (config.json, output.md, server.log, done.flag) live in the runtime directory you picked — typically <project>/.quick-voice/<id>/ or /tmp/quick-voice-$USER/<id>/.
Security
- Security scanPassed, 92 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/quick-voice/SKILL.md
Popularity
- Repository stars
- 44
- Repository forks
- 13
- 7-day trend score
- 19
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/aviz85/claude-skills-library/quick-voice)