phone-conversation
Make conversational phone calls and join Zoom meetings via Twilio + Gemini.
Skill by sonichi
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/sonichi-phone-conversation
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/phone-conversation
What's inside
- Skill name
phone-conversation- Description
- Make conversational phone calls and join Zoom meetings via Twilio + Gemini. Multi-turn AI conversations on the phone on behalf of the user.
- License
- MIT
- Instructions
- 58 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Instructions call the network
Files (12)
- README.md
- SKILL.md
- config.json.example
- manifest.json
- audio_path_guard.ts · scripts/
- conversation-server.ts · scripts/
- loopback_guard.ts · scripts/
- phone-agent-config.ts · scripts/
- server-lifecycle.ts · scripts/
- twilio-setup.py · scripts/
- twilio-webhook-sync.ts · scripts/
- upstream-recovery-wiring.ts · scripts/
SKILL.md (first lines)
# Phone Conversation Make outbound phone calls and join Zoom meetings where Sutando has a real multi-turn conversation, powered by Gemini. ## When to Use - "Call +14155551234 and ask if they're available for dinner" - "Call the restaurant and make a reservation for 7pm" - "Call my dentist and reschedule my appointment" - "Phone the landlord and ask about the maintenance request" - "Join my Zoom meeting 1234567890" - "Dial into the meeting and take notes" - Any time you need Sutando to have a phone conversation or join a meeting on your behalf ## Setup from the chat (only sign-up and the card are manual) The owner signs up at twilio.com and adds a payment method; everything after that is an API call, so do it for them with `scripts/twilio-setup.py`: 1. Ask for the **Account SID** and **Auth Token** (Twilio console → Account info) and store them: `vault set TWILIO_ACCOUNT_SID …`, `vault set TWILIO_AUTH_TOKEN …`. That is enough for the script: it, `startup.sh`'s phone gate and the phone server itself all resolve the environment (`.env` included) first and the vault when it is empty, so nothing is copied into `.env`. The phone server and its tunnel stay OFF until step 4 has written `TWILIO_PHONE_NUMBER`: the gate asks for all three (SID, token, number), because the server exits without the number and a tunnel to it would be public and dead. 2. `python3 skills/phone-conversation/scripts/twilio-setup.py status` — account type (a **Trial** account cannot buy a number or call unverified numbers; say so and point at https://console.twilio.com/billing), numbers owned, webhook drift. 3. `… numbers --country US --area 415` — list voice-capable numbers; let the owner pick. 4. `… buy +14155551234` — buys it, points its voice webhook at this machine (the running server's tunnel from `GET localhost:3100/health`; else `TWILIO_WEBHOOK_URL`, an operator-set fixed external URL; else `WEBHOOK_BASE_URL`), and writes `TWILIO_PHONE_NUMBER` + `TWILIO_WEBHOOK_PUSHED` (the base it pushed) into `<repo>/.env` in place. It never writes `TWILIO_WEBHOOK_URL`: the server binds that key instead of starting its own tunnel, so a moving ngrok URL recorded there goes stale on the next restart. Then restart the phone server (`startup.sh`). 5. `… set-webhook [BASE]` — re-point an owned number after the tunnel URL moved (`status` says "last pushed to Twilio … run set-webhook" when it did). With `TWILIO_AUTO_WEBHOOK=1` in `.env` the server pushes the tunnel it just bound on every start, so a restart with an unreserved ngrok needs no hand step. That push gives api.twilio.com 10 s per call and logs a skip (`webhook sync skipped … run twilio-setup.py set-webhook`) instead of holding the start; `set-webhook` is the retry. 6. Confirm: `curl localhost:3100/health` shows the tunnel; `status` shows no drift. Twilio's refusals are printed verbatim (error code + message + more_info link); relay them as they are, the fix is on Twilio's side (upgrade, verify a number, billing). ## How It Works Uses Twilio Media Streams for real-time bidirectional audio, piped to Gemini Live for natural conversation. The caller can interrupt mid-sentence — no waiting for the AI to finish speaking. 1. Call connects → Twilio opens a WebSocket audio stream 2. Audio flows bidirectionally between the caller and Gemini Live 3. Gemini responds in real time, interruptible at any point 4. Full transcript is saved when the call ends
From sonichi/sutando, MIT.
More from sonichi/sutando
- 0.757score
owner-agent-consult
sonichi
Before answering your OWNER, when the answer genuinely depends on something another agent of the same owner holds and you do not, ask that one agent once…
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
marketplace
sonichi
Install marketplace skills, activate cloud tools, check whether installed skills are up to date, or remove them — without the owner opening the Marketplace.
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
tutorial
sonichi
Show a new owner what to try first.
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
macos-tools
sonichi
macOS native integrations: screen capture, calendar, reminders, contacts, email (Mail.app), Spotlight search.
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
import-claude-context
sonichi
Bring the owner's Claude Code history into Sutando: index, extract and haiku-summarise the stock ~/.claude/projects transcripts, stage the result, show the…
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
image-generation
sonichi
Generate an image from a prompt or edit an existing one (Gemini image model, standard library only, any Gemini key the resolver finds) and attach the file to…
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
connect-apps
sonichi
Use when the owner asks about their calendar, email, meetings, Linear, Notion, Slack, Google Drive, GitHub or any other third-party app or the data in it…
SkillAFreshness: A★ 400Claude Code +9 - 0.754score
deal-finder
sonichi
Scan configured sources (Craigslist now; eBay + Facebook Marketplace planned) for used-item listings matching the owner's criteria.
SkillAFreshness: A★ 400Claude Code +9 - 0.754score
review-preflight
sonichi
Review tooling for a PR: review-preflight prints REVIEW.md's criteria and the PR's live gate state before a review; ci-triage maps a PR's failing checks to…
SkillAFreshness: A★ 400Claude Code +9 - 0.754score
model-switch
sonichi
Change the core's model without the CLI: send /model to the live core's pane through the shared sender, wait for the CLI to accept it (answering its confirm…
SkillAFreshness: A★ 400Claude Code +9 - 0.754score
claude-gemini
sonichi
Use the local Antigravity CLI (agy, Gemini-backed) from Claude Code with the user's existing Gemini authentication or API configuration.
SkillAFreshness: A★ 400Claude Code +9 - 0.754score
quota-tracker
sonichi
Track Claude Code quota usage via Anthropic API rate limit headers.
SkillAFreshness: A★ 400Claude Code +9
Signals
- Stars
- 400
- Forks
- 98
- Open issues
- 1,202
- Last commit (this folder)
- Oct 20, 2026 (9 days ago)
- Last release
- Aug 20, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/sonichi/sutando
- Website
- sutando.ai
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from sonichi
- 0.757score
import-claude-context
sonichi
Bring the owner's Claude Code history into Sutando: index, extract and haiku-summarise the stock ~/.claude/projects transcripts, stage the result, show the…
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
marketplace
sonichi
Install marketplace skills, activate cloud tools, check whether installed skills are up to date, or remove them — without the owner opening the Marketplace.
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
connect-apps
sonichi
Use when the owner asks about their calendar, email, meetings, Linear, Notion, Slack, Google Drive, GitHub or any other third-party app or the data in it…
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
image-generation
sonichi
Generate an image from a prompt or edit an existing one (Gemini image model, standard library only, any Gemini key the resolver finds) and attach the file to…
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
macos-tools
sonichi
macOS native integrations: screen capture, calendar, reminders, contacts, email (Mail.app), Spotlight search.
SkillAFreshness: A★ 400Claude Code +9 - 0.757score
owner-agent-consult
sonichi
Before answering your OWNER, when the answer genuinely depends on something another agent of the same owner holds and you do not, ask that one agent once…
SkillAFreshness: A★ 400Claude Code +9
Cite this page
phone-conversation skill. Agent Mart. https://agentmart.dev/skills/sonichi-phone-conversation (last updated 2026-10-24)