Agent skill

Twilio Setup

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

Configure Twilio credentials and phone numbers for voice calls

MITAuto-check passedBackend & APIs

Install Twilio Setup

skills CLI
$ npx skills add vellum-ai/vellum-assistant --skill twilio-setup -a claude-code

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

GitHub CLI
$ gh skill install vellum-ai/vellum-assistant twilio-setup --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/skills/twilio-setup .claude/skills/twilio-setup && 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
twilio-setup
GitHub stars
1.4k
Token cost
~3.7k tokens
SKILL.md length
1,589 words
Files
2 (incl. assets)
Skills in repo
108
Repo updated
First seen
Licence
MIT

At a glance

Configure Twilio credentials and phone numbers for voice calls

  • Works in 4 steps: Check Current Configuration → Collect and Store Credentials → Get a Phone Number → …
  • Backend & APIs work in your project
  • SKILL.md covers Value Classification, Retrieving Twilio Credentials, Step 1: Check Current… and Step 2: Collect and Store…, plus 5 more sections
  • Calls curl; reaches api.twilio.com; needs TWILIO_TOKEN

What it does

Twilio Setup is an agent skill from vellum-ai/vellum-assistant. Configure Twilio credentials and phone numbers for voice calls

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including assets. Compatibility notes: Designed for Vellum personal assistants

It sits in Backend & APIs. It works with Twilio. 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

  • Backend & APIs work in your project

Example prompts

  • “/twilio-setup”

Requirements

  • A credential in TWILIO_TOKEN
  • Compatibility (from SKILL.md): Designed for Vellum personal assistants

Workflow steps

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

  1. Check Current Configuration
  2. Collect and Store Credentials
  3. Get a Phone Number
  4. Set Up Public Ingress and Webhooks

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

    Shell commands in SKILL.md call:

    • curl

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.twilio.com

    Also links to:

    • twilio.com
    • console.twilio.com

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

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • TWILIO_TOKEN

    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

Twilio Setup loads about 3.7k tokens when it runs. Until then it costs about 19 tokens; SKILL.md has 1,589 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~19
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k

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,589 words, ~3,654 tokens.

Download SKILL.mdSave it as .claude/skills/twilio-setup/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
twilio-setup
description
Configure Twilio credentials and phone numbers for voice calls
compatibility
Designed for Vellum personal assistants
metadata.icon
assets/icon.svg
metadata.emoji
📱

You are helping your user configure Twilio for voice calls. Walk through each step below.

Value Classification

Before you begin, understand how each Twilio value is stored:

ValueTypeStorage methodSecret?
Account SIDConfigassistant config set twilio.accountSidNo
Auth TokenCredentialassistant credentials prompt --service twilio --field auth_tokenYes
Phone NumberConfigassistant config set twilio.phoneNumberNo
  • Config values (Account SID, Phone Number) are non-sensitive identifiers. Collect them via normal conversation -- the user can paste them in chat or you can use AskUserQuestion. Auth Token is a secret. Collect it securely via assistant credentials prompt -- never accept it pasted in plaintext chat.

Retrieving Twilio Credentials

Many steps below require the Account SID and Auth Token. Retrieve them with:

bash
TWILIO_SID=$(assistant config get twilio.accountSid)
TWILIO_TOKEN=$(assistant credentials reveal --service twilio --field auth_token)

Checking Current Configuration

You can determine whether Twilio has been fully set up by checking to see that all the following config and credential values have been set:

bash
assistant config get twilio.accountSid
assistant credentials inspect --service twilio --field auth_token --json  # check "hasSecret" field
assistant config get twilio.phoneNumber
  • If all three config values are non-empty -- Twilio is fully configured. Offer to show status or reconfigure.
  • Otherwise, continue to the missing steps.
  • If Account SID and Auth Token are already stored (even when you skip Step 2), give the Channel Trust Floors briefing before continuing unless you already gave it in this conversation.

Twilio Setup Steps

Follow the steps below in order to fully configure Twilio in preparation to make phone calls.

Step 1: Check Current Configuration

Mark setup as started before doing any read-only checks. This lets a managed gateway begin opening the Velay tunnel WebSocket immediately, so the public Twilio HTTP and WebSocket routes are warming up while the user finishes entering credentials and selecting a phone number:

bash
assistant config set twilio.setupStarted true
assistant platform status --json
assistant gateway status --json

If assistant platform status --json reports an available platform assistant but assistant gateway status --json returns {} (no tunnel URL yet), continue with setup and check status again before configuring webhooks. Do not treat this as an ngrok setup problem unless the assistant is local/self-hosted without Velay.

Refer to "Checking Current Configuration" above to see the current state of the user's Twilio setup. If Twilio appears to be fully configured, offer to show status or reconfigure. If they are asking about inbound access or an unexpected first greeting, go to "Channel Trust Floors" and the matching Troubleshooting section. Otherwise, continue to the missing steps below.

Step 2: Collect and Store Credentials

Tell the user: "You'll need a Twilio account. Sign up at https://www.twilio.com/try-twilio -- it's free to start and includes trial credit."

They need two values from the Twilio Console dashboard (https://console.twilio.com):

  • Account SID -- visible on the dashboard, starts with AC (this is not a secret value and can be collected conversationally)
  • Auth Token -- click "Show" to reveal (this is a secret value and should be collected securely)
Collect Account SID

Ask the user for their Account SID. This is NOT a secret value, so the user should be encouraged to comfortable paste it into the chat directly. Once they have, store it as a config value:

bash
assistant config set twilio.accountSid "<Account SID from user>"
Collect Auth Token

Ask the user for their Auth Token. This IS a secret value, so the user should be prompted to enter the value securely. Do NOT ask them to provide it in the chat. Once they have, store it as a credential:

  • Run (via the bash tool):

    bash
    assistant credentials prompt --service twilio --field auth_token \
      --label "Twilio Auth Token" --placeholder "your_auth_token" \
      --description "Enter your Auth Token from the Twilio Console dashboard (click 'Show' to reveal it)"

Confirm it has been stored successfully:

bash
assistant credentials inspect --service twilio --field auth_token

If credentials are invalid, Twilio API calls in Step 3 will fail -- ask the user to re-enter.

Once both the Account SID and Auth Token are stored, tell the user how Phone access works before continuing. Do not skip this briefing, even if they already have a number.

Connecting Twilio does not open the line to everyone. Phone starts on Verified contacts: you and people you have verified can talk. Anyone else who calls hears that I don't recognize the number, is asked for their name, and you get a request so you can decide.

Change this any time on the Channels page: select Phone, then Who can message. The options are No one, Only you, Verified contacts, Any contact, and Strangers (anyone who dials can talk immediately).

See "Channel Trust Floors" below if they want more detail or want to change the floor.

Step 3: Get a Phone Number

The assistant needs a phone number for voice calls. Three options:

Option A: Use an Existing Number

You should assume this option if the user had just created their Twilio account. Trial accounts come with one free number.

Retrieve credentials, then list numbers on the account:

bash
curl -s -u "$TWILIO_SID:$TWILIO_TOKEN" \
  "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_SID/IncomingPhoneNumbers.json"

Present the incoming_phone_numbers array. Let the user choose.

Option B: Provision a New Number

Retrieve credentials (see "Retrieving Twilio Credentials" above), then:

Search for available numbers:

bash
curl -s -u "$TWILIO_SID:$TWILIO_TOKEN" \
  "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_SID/AvailablePhoneNumbers/US/Local.json?VoiceEnabled=true&AreaCode=415"
  • AreaCode is optional -- ask the user if they have a preference
  • Replace US with another country code if needed

Present the first few results from the available_phone_numbers array (show phone_number and friendly_name).

Purchase the chosen number:

bash
curl -s -u "$TWILIO_SID:$TWILIO_TOKEN" -X POST \
  "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_SID/IncomingPhoneNumbers.json" \
  -d "PhoneNumber=+14155551234"

Note the sid field (starts with PN) from the response -- needed for webhook setup in Step 4.

Option C: Manual Entry

If the user already has a number and knows it, skip the API calls. They can paste it directly in chat.

Save the phone number

After choosing a number via any option, store it as a config value:

bash
assistant config set twilio.phoneNumber "+14155551234"

Step 4: Set Up Public Ingress and Webhooks

Verify Public Ingress is Set Up

Twilio needs publicly reachable HTTP webhooks and, for live calls, a publicly reachable WebSocket path. First check managed/platform status:

bash
assistant platform status --json
assistant gateway status --json

If assistant platform status --json reports an available platform assistant and assistant gateway status --json reports a tunnel URL (a { "tunnel": "..." } object), do not load public-ingress or install ngrok. Use the managed Velay route for the WebSocket leg. If it returns {}, restart or re-hatch the assistant/gateway and check gateway logs for Velay tunnel registered; do not treat that as an ngrok setup problem.

For local/self-hosted assistants without Velay, load the public-ingress skill to determine whether ingress.publicBaseUrl is configured and walk the user through setting one up if not.

Show full SKILL.md (612 more words)Show less
Configure Twilio Webhooks

Set webhook URLs on the phone number so Twilio routes traffic to the assistant.

Retrieve credentials and config values:

bash
TWILIO_SID=$(assistant config get twilio.accountSid)
TWILIO_TOKEN=$(assistant credentials reveal --service twilio --field auth_token)
PUBLIC_URL=$(assistant config get ingress.publicBaseUrl)
PHONE_NUMBER=$(assistant config get twilio.phoneNumber)

Look up the phone number's SID:

bash
curl -s -u "$TWILIO_SID:$TWILIO_TOKEN" \
  "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_SID/IncomingPhoneNumbers.json?PhoneNumber=$PHONE_NUMBER"

Note the sid field (starts with PN) from the matching entry, then update webhooks:

bash
curl -s -u "$TWILIO_SID:$TWILIO_TOKEN" -X POST \
  "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_SID/IncomingPhoneNumbers/$PHONE_SID.json" \
  -d "VoiceUrl=$PUBLIC_URL/webhooks/twilio/voice" \
  -d "StatusCallback=$PUBLIC_URL/webhooks/twilio/status"

Channel Trust Floors

Phone access is a channel trust floor, separate from Twilio credentials. Credentials decide whether calls can reach the assistant. The floor decides who is allowed to talk once a call arrives.

FloorWho can talk
No oneNobody, including you. Inbound calls are rejected.
Only youOnly the verified owner.
Verified contacts (default)You and people you have verified. Everyone else is asked to identify themselves, and you are notified.
Any contactYou and any known contact, including unverified ones. Strangers still request access.
StrangersAnyone who dials the number, including complete strangers.

The control lives on the Channels page. Select Phone (it must be connected) and use Who can message. Only the guardian can change this setting. Point them there; do not treat this as a webhook or ingress repair.

Unknown callers on Verified contacts or Any contact hear a scripted greeting: the assistant does not recognize the number, will let the owner know, and asks for a name. After a name, the caller is held while you decide. That greeting means the call reached the assistant and the floor is doing its job.

Clearing Credentials

To disconnect Twilio:

bash
assistant credentials delete --service twilio --field auth_token
assistant config set twilio.accountSid ""

Phone number assignments are preserved. Voice calls will stop until credentials are reconfigured.

Troubleshooting

"Twilio credentials not configured"

Run Steps 2 and 3.

"No phone number assigned"

Run Step 3.

Phone number provisioning fails
  • Verify credentials are correct
  • Trial accounts may already have a free number -- check "Active Numbers" in the Console
  • Ensure the account has sufficient balance
Calls fail after setup
  • Verify ingress is running: assistant config get ingress.publicBaseUrl
  • For calls, ensure calls.enabled is true
  • Trial accounts can only reach verified numbers
Inbound call greeting asks for a name / "I don't recognize this number"

If the user complains about the first thing callers hear (asked for their name, "I don't recognize this number", "I'll let them know and see if I have permission", or held after giving a name), this is who can contact the assistant on Phone, not a Twilio, webhook, or voice-setup failure. The call reached the assistant. The Phone trust floor (default Verified contacts) is keeping unknown callers out of a normal conversation.

Identify it that way. Then:

  1. Explain the default floor and that the greeting is expected for unrecognized numbers.
  2. Point them to Channels → Phone → Who can message.
  3. Ask what they want: keep the gate, verify specific people in Contacts, verify themselves (guardian-verify-setup), or change Who can message to Strangers on Channels → Phone. Only the guardian can change that setting.
  4. Do not retune webhooks, ingress, or TTS unless the call never answered, Twilio reported an application error, or the spoken message named a missing speech credential and hung up.

The same floor applies if the user calls from their own unverified number and hears that greeting. Offer guardian-verify-setup so their number is recognized.

Incoming calls not reaching the assistant

Webhooks on the Twilio phone number may not match the current ingress URL. This happens when ngrok restarts with a new URL or webhooks were never configured. Use this path only when the call does not connect or Twilio reports an application error. If the call connects and speaks the "I don't recognize this number" greeting, see the trust-floor case above.

Diagnose -- fetch the number's current webhooks and compare to the expected URL:

bash
TWILIO_SID=$(assistant config get twilio.accountSid)
TWILIO_TOKEN=$(assistant credentials reveal --service twilio --field auth_token)
PUBLIC_URL=$(assistant config get ingress.publicBaseUrl)
PHONE_NUMBER=$(assistant config get twilio.phoneNumber)

curl -s -u "$TWILIO_SID:$TWILIO_TOKEN" \
  "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_SID/IncomingPhoneNumbers.json?PhoneNumber=$PHONE_NUMBER"

Check that voice_url and status_callback start with the current ingress.publicBaseUrl. If they don't match, update them:

bash
PHONE_SID=<PN sid from the response above>
curl -s -u "$TWILIO_SID:$TWILIO_TOKEN" -X POST \
  "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_SID/IncomingPhoneNumbers/$PHONE_SID.json" \
  -d "VoiceUrl=$PUBLIC_URL/webhooks/twilio/voice" \
  -d "StatusCallback=$PUBLIC_URL/webhooks/twilio/status"

© 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 1 other file (assets) in skills/twilio-setup of vellum-ai/vellum-assistant.

  • SKILL.md
  • assets/icon.svg

Open the folder on GitHubat commit 33cc983

Compare with similar skills

Twilio Setup 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.

Twilio Setup compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Twilio Setup this skillvellum-ai/vellum-assistant1.4k—~3.7kAutomated safety check: PassMIT
Twilio Communicationsdavila7/claude-code-templates33k5 repos~2.3kAutomated safety check: PassMIT
TelephonyTommy-yw/RunbookHermes5461 repos~3.2kAutomated safety check: NotesMIT
Twilio Communicationssickn33/agentic-awesome-skills47k2 repos~453Automated safety check: PassMIT
TelephonyLuciole-Studio/Misaka-Agent1711 repos~3.2kAutomated safety check: NotesMIT
Clawringdavepoon/buildwithclaude3.6k—~994Automated safety check: PassMIT

Similar skills

  • Twilio Communications

    davila7/claude-code-templates

    Build communication features with Twilio: SMS messaging, voice calls, WhatsApp Business API, and user verification (2FA).

    33k GitHub starsUsed in 5 repos~2.3k tokens
    Backend & APIsAuto-check passed
  • Telephony

    Tommy-yw/RunbookHermes

    Give Hermes phone capabilities without core tool changes. An agent skill from Tommy-yw/RunbookHermes.

    546 GitHub starsUsed in 1 repo~3.2k tokens
    Backend & APIsAuto-check: notes
  • Twilio Communications

    sickn33/agentic-awesome-skills

    Build communication features with Twilio: SMS messaging, voice calls, WhatsApp Business API, and user verification (2FA).

    47k GitHub starsUsed in 2 repos~453 tokens
    Backend & APIsAuto-check passed
  • Telephony

    Luciole-Studio/Misaka-Agent

    Provision Twilio numbers, SMS/MMS, and AI outbound calls. An agent skill from Luciole-Studio/Misaka-Agent.

    171 GitHub starsUsed in 1 repo~3.2k tokens
    Backend & APIsAuto-check: notes
  • Clawring

    davepoon/buildwithclaude

    Phone calling skill for OpenClaw: agent makes real outbound phone calls to users for alerts, briefings, reminders, and urgent notifications.

    3.6k GitHub stars~994 tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Twilio

    LeoYeAI/openclaw-master-skills

    Twilio API integration with managed OAuth. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed

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 today
    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 today
    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 today
    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 today
    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 today
    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 today
    Auto-check: warnings

Works with

Categories

Questions about Twilio Setup

What does Twilio Setup do?

Configure Twilio credentials and phone numbers for voice calls. Twilio Setup is an agent skill from vellum-ai/vellum-assistant.

When should I use Twilio Setup?

Twilio Setup fits situations like: backend & APIs work in your project.

How do I install Twilio Setup in Claude Code?

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

How do I install Twilio Setup in Codex?

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

Can I use Twilio Setup 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 twilio-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/twilio-setup, .gemini/skills/twilio-setup, .github/skills/twilio-setup and .opencode/skills/twilio-setup in your project.

What does Twilio Setup need to run?

Going by SKILL.md and its folder, Twilio Setup needs the command-line tools its instructions call (curl) and credentials named TWILIO_TOKEN. Our summary lists: A credential in TWILIO_TOKEN. Compatibility (from SKILL.md): Designed for Vellum personal assistants.

Does Twilio Setup access the network?

SKILL.md names 3 domains. In commands or code: api.twilio.com; the agent is likely to contact it when it follows the instructions. As links in the text: twilio.com and console.twilio.com. This is read from the text; nothing was executed.

Is Twilio Setup 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 Twilio Setup use?

Twilio Setup 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 Twilio Setup use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Twilio Setup?

Skills that share tags, products or a category with Twilio Setup: Twilio Communications (davila7/claude-code-templates, 33k stars), Telephony (Tommy-yw/RunbookHermes, 546 stars), Twilio Communications (sickn33/agentic-awesome-skills, 47k stars) and Telephony (Luciole-Studio/Misaka-Agent, 171 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Twilio Setup?

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.