Agent skill

Phone Calls

by vellum-ai in vellum-ai/vellum-assistant

Make outgoing phone calls, receive incoming calls, and pull up past call transcripts

MITAuto-check passedProductivity & Automation

Install Phone Calls

skills CLI
$ npx skills add vellum-ai/vellum-assistant --skill phone-calls -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install vellum-ai/vellum-assistant phone-calls --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .claude/skills && cp -r skills-src/assistant/src/config/bundled-skills/phone-calls .claude/skills/phone-calls && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
phone-calls
GitHub stars
1.4k
Token cost
~3.1k tokens
SKILL.md length
1,580 words
Files
9 (incl. references)
Skills in repo
108
Repo updated
First seen
Licence
MIT

At a glance

Make outgoing phone calls, receive incoming calls, and pull up past call transcripts

  • Works in 5 steps: Twilio Setup → Enable Calls → Choose a Voice → …
  • Tasks that involve Meeting notes and agendas
  • SKILL.md covers External Identity, Step 1: Twilio Setup, Step 2: Enable Calls and Step 3: Choose a Voice, plus 2 more sections
  • Runs TypeScript scripts from its folder

What it does

Phone Calls is an agent skill from vellum-ai/vellum-assistant. Make outgoing phone calls, receive incoming calls, and pull up past call transcripts

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including reference files (for example `TOOLS.json`, `references/CONFIG.md` and `references/TRANSCRIPTS.md`). Compatibility notes: Designed for Vellum personal assistants

It sits in Productivity & Automation, covering Meeting notes and agendas. It works with Twilio and ElevenLabs. The repository describes itself as: An AI Assistant that’s easy to setup, does your work 24/7, knows your preferences and gets better over time. The licence is MIT.

When your agent uses it

  • Tasks that involve Meeting notes and agendas

Example prompts

  • “/phone-calls”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): Designed for Vellum personal assistants

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Twilio Setup
  2. Enable Calls
  3. Choose a Voice
  4. Verify Setup (Test Call)
  5. Guardian Verification

What it can do on your machine

Read from SKILL.md and the folder at commit 33cc983. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (TypeScript), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • console.twilio.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Vellum personal assistants

    From compatibility in the SKILL.md frontmatter.

Context cost

Phone Calls loads about 3.1k tokens when it runs, and up to ~8.4k if it reads all its reference files. Until then it costs about 24 tokens; SKILL.md has 1,580 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from vellum-ai/vellum-assistant at commit 33cc983, republished under its MIT licence (© vellum-ai). 1,580 words, ~3,092 tokens.

Download SKILL.mdSave it as .claude/skills/phone-calls/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.
name
phone-calls
description
Make outgoing phone calls, receive incoming calls, and pull up past call transcripts
compatibility
Designed for Vellum personal assistants
metadata.emoji
📞

You are helping the user set up and manage phone calls via Twilio. This skill covers enabling the calls feature, placing outbound calls, receiving inbound calls, and interacting with live calls. Twilio credential storage, phone number provisioning, and public ingress are handled by the twilio-setup skill.

External Identity

When speaking on behalf of your user during calls, refer to yourself as an "assistant" (not "AI assistant"). Use your user's name and pronouns from their user persona file (users/<slug>.md). Don't volunteer that you are an AI unless directly asked.

Overview

The calling system connects both outbound and inbound voice calls over Twilio Media Streams: the assistant transcribes and synthesizes call audio itself using the STT provider telephony selects (services.stt.roles.telephony when set, otherwise services.stt.provider) and the TTS provider (services.tts.provider, default: ElevenLabs), so working API keys for both are required before calls can connect. After Twilio setup, the assistant prompts the user to choose a voice from a curated list of supported options.

Initial Setup

Follow the steps below to ensure everything is prepared to make and receive phone calls.

Step 1: Twilio Setup

Immediately load the twilio-setup skill to begin setup. That skill marks Twilio setup as started before its read-only checks, which gives managed deployments a chance to open the Velay tunnel WebSocket while the user finishes entering credentials and choosing a number. Twilio setup is a prerequisite to all subsequent steps.

Step 2: Enable Calls

Once Twilio is confirmed to be fully configured, enable calls by updating the config:

bash
assistant config set calls.enabled true

Verify:

bash
assistant config get calls.enabled

Step 3: Choose a Voice

Voice selection and tuning are handled by the elevenlabs-voice skill. Follow the instructions there to pick a curated voice, optionally set up an ElevenLabs API key for advanced selection, or tune voice parameters.

Step 4: Verify Setup (Test Call)

Before making real calls, offer a quick verification. Suggest a test call to the user's own phone: "Want to do a quick test call to your phone to make sure everything works? This is a good way to make sure everything works and that you like the way I sound."

If they agree, ask for their personal phone number and place a test call with a simple task like "Introduce yourself and confirm the call system is working."

Step 5: Guardian Verification

The final step is for the user to verify themselves so that they are recognized when they call you. It's also a great way for them to hear what you sound like and decide if they want you to use a different voice.

Load the guardian-verify-setup skill and follow the instructions for guardian verification over the phone channel. This will require the user to provide you with their phone number and then for you to give them a call. Say something like:

Want to do a quick verification call now so that you can hear what I sound like and also so that I recognize your number when you call me in the future? I'll show a 6 digit code here in the chat and when you answer my call, enter it using your phone's keypad.

You can check their verification status with:

bash
assistant channel-verification-sessions status --channel phone --json

After they are verified, ask them what they think of your voice and offer to let them change it. Load up the elevenlabs-voice skill and follow the instructions there to see what voices are available and how to update your configured voice. Say something like:

Great, you're verified! What did you think of my voice? We can update it if you'd like.

Making Outbound Calls

Use the call_start tool to place outbound calls. Every call requires:

  • phone_number: The number to call in E.164 format (e.g. +14155551234)
  • task: What the call should accomplish - this becomes the AI voice agent's objective
  • context (optional): Additional background information for the conversation
Example calls:

Making a reservation:

call_start phone_number="+14155551234" task="Make a dinner reservation for 2 people tonight at 7pm" context="The user's name is John Smith. Prefer a table by the window if available."

Calling a business:

call_start phone_number="+18005551234" task="Check if they have a specific product in stock" context="Looking for a 65-inch Samsung OLED TV, model QN65S95D. Ask about availability and price."

Following up on an appointment:

call_start phone_number="+12125551234" task="Confirm the dentist appointment scheduled for next Tuesday at 2pm" context="The appointment is under the name Jane Doe, DOB 03/15/1990."
Caller identity in calls

Implicit calls always use the assistant's Twilio number (assistant_number). Only specify caller_identity_mode when the user explicitly requests a different identity for a specific call.

Default call (assistant number):

call_start phone_number="+14155551234" task="Check store hours for today"

Call from the user's own number:

call_start phone_number="+14155551234" task="Check store hours for today" caller_identity_mode="user_number"

Decision rule: Implicit calls (no explicit mode) always use the assistant's Twilio number. Only use caller_identity_mode="user_number" when the user explicitly requests it for a specific call.

Phone number format

Phone numbers MUST be in E.164 format: + followed by country code and number with no spaces, dashes, or parentheses.

  • US/Canada: +1XXXXXXXXXX (e.g. +14155551234)
  • UK: +44XXXXXXXXXX (e.g. +442071234567)
  • International: +{country_code}{number}

If the user provides a number in a different format, convert it to E.164 before calling. If the country is ambiguous, ask.

Trial account limitations

On Twilio trial accounts, outbound calls can ONLY be made to verified numbers. If a call fails with a "not verified" error:

  1. Tell the user they need to verify the number at https://console.twilio.com/us1/develop/phone-numbers/manage/verified
  2. Or upgrade to a paid Twilio account to call any number

Receiving Inbound Calls

Once Twilio is configured and the assistant has a phone number, inbound calls work automatically. When someone dials the assistant's number:

  1. The gateway resolves the assistant by phone number and forwards to the runtime
  2. A new voice session is created, keyed by the Twilio CallSid
  3. The LLM-driven orchestrator answers in receptionist mode - greeting the caller warmly and asking how it can help
  4. The conversation proceeds naturally, with ASK_GUARDIAN dispatches to consult the user when needed

No additional configuration is needed beyond Twilio setup and calls.enabled being true. As long as the phone number has been provisioned/assigned, inbound calls are handled automatically.

Guardian voice verification for inbound calls

To set up guardian verification, load the skill: skill_load skill=guardian-verify-setup. Once a guardian binding exists, inbound callers may be prompted for verification before calls proceed.

Show full SKILL.md (635 more words)Show less

Interacting with a Live Call

During an active call, the user can interact with the AI voice agent via the HTTP API endpoints. After placing a call with call_start, use call_status to poll the call state.

Answering questions

When the AI voice agent encounters something it needs user input for, it dispatches an ASK_GUARDIAN request to all configured guardian channels (mac desktop, Telegram). The call status changes to waiting_on_user.

  1. The question is delivered simultaneously to every configured channel. The first channel to respond wins (first-response-wins semantics) -- once one channel provides an answer, the other channels receive a "already answered" notice.
  2. On the mac desktop, a guardian request conversation is created with the question. On Telegram, the question text and a request code are delivered via the gateway.
  3. If DTMF callee verification is enabled, the callee must enter a verification code before the call proceeds (see the DTMF Callee Verification section above).
  4. The guardian provides an answer through whichever channel they prefer. The answer is routed to the AI voice agent, which continues the conversation naturally.

Important: Respond to pending questions quickly. There is a consultation timeout (default: 2 minutes). If no answer is provided in time, the AI voice agent will move on.

Guardian timeout and follow-up

When a consultation times out, the voice agent apologizes to the caller and moves on -- but the interaction is not lost. If the guardian responds after the timeout:

  1. Late reply detection: The system recognizes the late answer on whichever channel it arrives (desktop or Telegram) and presents a follow-up prompt asking the guardian what they would like to do.
  2. Follow-up options: The guardian can choose to:
    • Call back the original caller with the answer
    • Send a text message to the caller with the answer
    • Decline if the follow-up is no longer needed
  3. Automatic execution: If the guardian chooses to call back or send a message, the system resolves the original caller's phone number from the call record and executes the action automatically -- placing an outbound callback call or sending a message via the gateway.

All user-facing messages in this flow (timeout acknowledgments, follow-up prompts, completion confirmations) are generated by the assistant to maintain a natural, conversational tone. No fixed/canned responses are used.

The follow-up flow works across all guardian channels. The guardian can receive the timeout notice on Telegram and choose to call back -- the system handles cross-channel routing transparently.

Steering with instructions

When there is no pending question but the call is still active, the user can send steering instructions via the HTTP API (POST /v1/calls/:id/instruction) to proactively guide the call in real time - for example:

  • "Ask them about their cancellation policy too"
  • "Wrap up the call, we have what we need"
  • "Switch to asking about weekend availability instead"
  • "Be more assertive about getting a discount"

The instruction is injected into the AI voice agent's conversation context as high-priority input, and the agent adjusts its behavior accordingly.

Note: Steering is done via the HTTP API, not the desktop chat conversation. The desktop conversation only receives pointer/status messages about the call.

Call status values
  • initiated - Call is being placed
  • ringing - Phone is ringing on the other end
  • in_progress - Call is connected, conversation is active
  • waiting_on_user - AI agent needs input from the user (check pending question)
  • completed - Call ended successfully
  • failed - Call failed (check lastError for details)
  • cancelled - Call was manually cancelled
Ending a call early

Use call_end with the call session ID to terminate an active call:

call_end call_session_id="<session_id>" reason="User requested to end the call"

Reference

For detailed information on the following topics, see the reference files:

© vellum-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 8 other files (references) in assistant/src/config/bundled-skills/phone-calls of vellum-ai/vellum-assistant.

  • SKILL.md
  • TOOLS.json
  • icon.svg
  • references/CONFIG.md
  • references/TRANSCRIPTS.md
  • references/TROUBLESHOOTING.md
  • tools/call-end.ts
  • tools/call-start.ts
  • tools/call-status.ts

Open the folder on GitHubat commit 33cc983

Compare with similar skills

Phone Calls next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Phone Calls compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Phone Calls this skillvellum-ai/vellum-assistant1.4k—~3.1kAutomated safety check: PassMIT
Challenge Baseline ModelAgibotTech/genie_sim1.4k—~2.4kAutomated safety check: PassCustom licence
Lark Todoautumnseasonism/lark-todo138—~5.5kAutomated safety check: PassMIT
Claap Weekly RecapOthmane-Khadri/YALC-the-GTM-operating-system318—~5.4kAutomated safety check: PassMIT
Summarize Callreysu/ai-life-skills270—~3.8kAutomated safety check: NotesMIT
Ingestcoreyhaines31/makerskills851—~1.8kAutomated safety check: PassMIT

Similar skills

  • Challenge Baseline Model

    AgibotTech/genie_sim

    Provision and launch the Simulation Challenge baseline inference model end to end: clone the inference code from a given git repo/branch, download the checkpoints from ModelScope into the repo's…

    1.4k GitHub stars~2.4k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Lark Todo

    autumnseasonism/lark-todo

    飞书全平台待办扫描:IM 消息、会议纪要、日程、文档评论、待办审批、我发起的审批、邮件、已有任务八源并行采集,按优先级排序后支持直接处理或建任务。多企业账号自动发现并并行扫描,跨企业合并。用户说'有啥待办'、'@我的消息'、'扫一圈'、'收工检查'、'今天还差啥'、'morning standup'、'daily review' 时触发,连随口'忙不忙'、'有人找我吗'也应触发。同时覆盖多企业…

    138 GitHub stars~5.5k tokensUpdated 5 mo ago
    Productivity & AutomationAuto-check passed
  • Claap Weekly Recap

    Othmane-Khadri/YALC-the-GTM-operating-system

    Turns a week of Claap-recorded sales calls into action items and focus blocks on a Notion Kanban, delivered with a Slack summary.

    318 GitHub stars~5.4k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Summarize Call

    reysu/ai-life-skills

    Transcribe a call recording with speaker diarization, summarize it, and create Obsidian vault notes (call note, transcript, person notes for participants).

    270 GitHub stars~3.8k tokensUpdated 1 mo ago
    Media & CreativeAuto-check: notes
  • Ingest

    coreyhaines31/makerskills

    When you paste raw human input — a call transcript (Grain, Zoom, Granola, Fathom), a text or email from a client/partner/friend, a voice-memo dump, or meeting notes — and want it converted into…

    851 GitHub stars~1.8k tokensUpdated 2 days ago
    Productivity & AutomationAuto-check passed
  • Daily Update

    Ar9av/obsidian-wiki

    Run or configure the daily wiki maintenance cycle: check source freshness, refresh the index and hot.md, and manage its scheduled 9 AM launchd/systemd/cron reminder.

    3.5k GitHub stars~2.4k tokensUpdated yesterday
    Productivity & AutomationAuto-check: notes

More from vellum-ai/vellum-assistant

All 108 skills in this repo
  • Vellum GitHub App Setup

    vellum-ai/vellum-assistant

    Create and configure a GitHub App so the assistant can push commits, open PRs, and comment under its own bot identity.

    1.4k GitHub stars~3.1k tokensUpdated 2 days ago
    Auto-check passed
  • Discord App Setup

    vellum-ai/vellum-assistant

    Connect a Discord bot to the assistant via the Discord Gateway with guided application creation and intent configuration

    1.4k GitHub stars~4.2k tokensUpdated 2 days ago
    Auto-check passed
  • Sentry App Setup

    vellum-ai/vellum-assistant

    Create and configure a Sentry internal integration so the assistant can manage issues, alerts, and releases under its own identity

    1.4k GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check passed
  • Memory Corpus Ingest

    vellum-ai/vellum-assistant

    Ingest a large dataset into memory as a skimmed map. An agent skill from vellum-ai/vellum-assistant.

    1.4k GitHub stars~3k tokensUpdated 2 days ago
    Auto-check: notes
  • Plugin Builder

    vellum-ai/vellum-assistant

    A skill your agent uses when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package.

    1.4k GitHub stars~3.1k tokensUpdated 2 days ago
    Auto-check passed
  • Slack App Setup

    vellum-ai/vellum-assistant

    Connect a Slack app to the Vellum Assistant via Socket Mode.

    1.4k GitHub stars~2.5k tokensUpdated 2 days ago
    Auto-check: warnings

Questions about Phone Calls

What does Phone Calls do?

Make outgoing phone calls, receive incoming calls, and pull up past call transcripts. Phone Calls is an agent skill from vellum-ai/vellum-assistant.

When should I use Phone Calls?

Phone Calls fits situations like: tasks that involve Meeting notes and agendas.

How do I install Phone Calls in Claude Code?

Run `npx skills add vellum-ai/vellum-assistant --skill phone-calls -a claude-code`. Or copy the skill folder (assistant/src/config/bundled-skills/phone-calls in vellum-ai/vellum-assistant) into .claude/skills/phone-calls in your project. Claude Code loads it when a task matches its description.

How do I install Phone Calls in Codex?

Run `npx skills add vellum-ai/vellum-assistant --skill phone-calls -a codex`. Or copy the skill folder (assistant/src/config/bundled-skills/phone-calls in vellum-ai/vellum-assistant) into .agents/skills/phone-calls in your project. Codex loads it when a task matches its description.

Can I use Phone Calls in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vellum-ai/vellum-assistant --skill phone-calls -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/phone-calls, .gemini/skills/phone-calls, .github/skills/phone-calls and .opencode/skills/phone-calls in your project.

What does Phone Calls need to run?

Going by SKILL.md and its folder, Phone Calls needs TypeScript for the scripts in its folder. Our summary lists: Node.js. Compatibility (from SKILL.md): Designed for Vellum personal assistants.

Does Phone Calls access the network?

SKILL.md names 1 domain. As links in the text: console.twilio.com. This is read from the text; nothing was executed.

Is Phone Calls safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Phone Calls use?

Phone Calls is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Phone Calls use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.3k tokens, read only when the agent opens those files.

What are the alternatives to Phone Calls?

Skills that share tags, products or a category with Phone Calls: Challenge Baseline Model (AgibotTech/genie_sim, 1.4k stars), Lark Todo (autumnseasonism/lark-todo, 138 stars), Claap Weekly Recap (Othmane-Khadri/YALC-the-GTM-operating-system, 318 stars) and Summarize Call (reysu/ai-life-skills, 270 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Phone Calls?

vellum-ai (a GitHub organization) maintains it in vellum-ai/vellum-assistant, which has 1,408 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on October 9, 2026.

Source: vellum-ai/vellum-assistant on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.