Skip to content
Back to skills

Bettercallgpt

BSecurity

Set up bettercallgpt, a full-duplex voice call for Claude Code — check uv and the platform, install the Claude Code plugin, prepare an empty key file, run the readiness check. Use when the user asks to set up, install, update or troubleshoot bettercallgpt or "voice" for their coding agent. Never starts a call.

  • 8 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 2, 2026
ai-agentsbashazuregitapibackend

Works with

  • claude code
  • terminal
  • api

Security analysis

B88/100
  • criticalSends environment variables or credentials to an external URL

Pro shows the line behind each finding and how to fix it

Scanned October 6, 2026

npx -y skills add insta-fusion/bettercallgpt --skill bettercallgpt --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bettercallgpt?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bettercallgpt
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/insta-fusion-bettercallgpt/badge)](https://www.skillsdirectory.com/skills/insta-fusion-bettercallgpt)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bettercallgpt
description: Set up bettercallgpt, a full-duplex voice call for Claude Code — check uv and the platform, install the Claude Code plugin, prepare an empty key file, run the readiness check. Use when the user asks to set up, install, update or troubleshoot bettercallgpt or "voice" for their coding agent. Never starts a call.
---

# Set up bettercallgpt

The user wants to talk to their Claude Code session. Get them to the point where they type
`/bettercallgpt:on`, then stop. Work through the steps in order; when one fails, say what failed
and what the user can do, and stop — do not work around it.

## Rules

- **Never ask for, read out, echo or commit an API key**, and never open the key file after the
  user has filled it. You create it with empty values; the user types the key.
- **Never start a call, by any command.** Starting opens the microphone and a paid connection:
  only the user starts it, by typing `/bettercallgpt:on`.
- **Never allow-list** anything that could match the start: no `bettercallgpt` wildcard and no
  broad `uvx` rule (such as `Bash(uvx:*)`) in any settings file.
- Run each command below exactly as written, as its own Bash call, so the user sees and
  approves it.

## 1. uv

```sh
uv --version
```

If uv is missing, point the user to its install page (https://docs.astral.sh/uv/) and let them
install it their way, then continue. Nothing else needs installing: the next command fetches bettercallgpt and its
audio library.

## 2. Platform and config path

```sh
uvx --from git+https://github.com/insta-fusion/bettercallgpt@v0.2.1 bettercallgpt doctor
```

It prints JSON and starts nothing; exit code 1 only means "not ready yet" — read the JSON. If
`backend_problem` says the platform is unsupported (today only macOS runs the Claude Code
call), tell the user and stop. Note `env_file`: that is the key file's path.

## 3. The Claude Code plugin

```sh
claude plugin marketplace add insta-fusion/bettercallgpt
claude plugin install bettercallgpt@bettercallgpt
```

Updating instead? Run `claude plugin marketplace update bettercallgpt`, then
`claude plugin update bettercallgpt@bettercallgpt`. The commands `/bettercallgpt:on`, `:status` and
`:off` appear in **new** sessions (the desktop app needs a restart).

## 4. The key file

If the file at `env_file` does not exist, ask which voice service the user has — **Azure Voice
Live** (default, proven live, works on speakers) or **OpenAI Realtime** (experimental; use
headphones) — then create it readable only by the user, with empty values (replace `ENV_FILE`
with the path from step 2):

```sh
mkdir -p "$(dirname "ENV_FILE")" && (umask 077 && set -C && cat > "ENV_FILE" <<'EOF'
# Azure Voice Live (default)
AZURE_OPENAI_ENDPOINT=
AZURE_OPENAI_API_KEY=
# or OpenAI Realtime (experimental, headphones): uncomment both, leave the Azure lines empty
# VOICE_LIVE_PROVIDER=openai
# OPENAI_API_KEY=
EOF
)
```

(`set -C` makes the command refuse an existing file: never overwrite one.) Tell the user the
path and the lines to fill, and wait until they say it is done.

## 5. Check

Run the step 2 command again. Continue only when `"ready": true`; otherwise report the fields
that are not ready (missing credential *names*, audio devices) and stop.

## Done

Report in one short list: `doctor` ready or not, and how to start — the user types
`/bettercallgpt:on` in a new Claude Code session and approves the start (with OpenAI Realtime:
headphones). Permission prompts are answered on the keyboard; a spoken "yes" never approves
anything.

## Optional extras (offer, do not push)

- **Status line (terminal only).** `uvx --from git+https://github.com/insta-fusion/bettercallgpt@v0.2.1 bettercallgpt statusline`
  prints `🎙 voice` while this session's call is live. If
  `~/.claude/settings.json` has no `statusLine`, offer to set it to that command; if it has
  one, show how to append its output. After an update, the version in it must be updated too.
- **After `/compact`.** Offer to add the block in
  https://github.com/insta-fusion/bettercallgpt/blob/main/docs/HOST-INSTRUCTIONS.md to the
  user's `CLAUDE.md`, so voice turns stay understood.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…