voicestatuslisted
Install: claude install-skill gtapps/voice-channel
# /voice:status
Report the current state of the voice channel connection.
## Resolve the state dir
First run:
```bash
echo "${VOICE_STATE_DIR:-$HOME/.claude/channels/voice}"
```
Use the output as `<STATE_DIR>` for all file paths below.
## What you do
Read `<STATE_DIR>/status.json` and `<STATE_DIR>/config.json` and report:
1. **Connection state** — `connecting`, `connected`, `disconnected`, or `error` (from `status.json`)
2. **Dispatcher URL** — from `config.json`, or "not configured" if no config exists
3. **Agent ID** — from `config.json`
4. **TLS** — if `dispatcher_url` starts with `wss://`, show "enabled (pinned)"; if `ws://`, show "disabled (plaintext)"
5. **Permission relay** — enabled or disabled
6. **Last activity** — `last_utterance_id` and `ts` from `status.json` if present
7. **Last error** — `last_close_code`, `last_close_reason`, or `last_error` if present
## Error states
### Certificate pin failure
If `status.json` has `state: 'error'` and `last_error` contains "cert pin mismatch" or "pin",
render it prominently as:
```
⚠ Certificate pin failure — token was NOT sent to the dispatcher.
The dispatcher's TLS certificate does not match the pinned fingerprint.
Fix: re-run /voice:configure with the correct pairing string from the dispatcher.
(Run 'voice-dispatcher tls fingerprint' on the laptop to get the current fingerprint,
or 'voice-dispatcher config rotate-token <id>' to generate a new pairing string.)
```
Do NOT treat this as a gene