소스 정보
- 저장소
- vellum-ai/vellum-assistant
- 최근 소스 활동
- 2026년 7월 23일 15:54
- 감지된 SKILL.md 언어
- 영어
- 스타
- 1,091
- 포크
- 160
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/vellum-ai/vellum-assistant --skill twilio-setup명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Use 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.
Perform a one-time migration from memory v1, to memory v2, which was introduced in 0.8.0.
Migrate from ChatGPT, Claude, OpenClaw, Hermes, Manus, and other AI assistants into Vellum by inspecting their data exports, conversation archives, files, prompts, custom instructions, memory, saved memories, tools, GPTs, workflows, integrations, and relationships, then mapping as much as safely possible into Vellum primitives. Handles single-source and multi-source migrations with a unified, deduplicated inventory.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | twilio-setup |
| description | Configure Twilio credentials and phone numbers for voice calls |
| compatibility | Designed for Vellum personal assistants |
| metadata | {"icon":"assets/icon.svg","emoji":"📱","vellum":{"category":"integrations","display-name":"Twilio Setup","includes":["public-ingress"]}} |
You are helping your user configure Twilio for voice calls. Walk through each step below.
Before you begin, understand how each Twilio value is stored:
| Value | Type | Storage method | Secret? |
|---|---|---|---|
| Account SID | Config | assistant config set twilio.accountSid | No |
| Auth Token | Credential | assistant credentials prompt --service twilio --field auth_token | Yes |
| Phone Number | Config | assistant config set twilio.phoneNumber | No |
AskUserQuestion.
Auth Token is a secret. Collect it securely via assistant credentials prompt -- never accept it pasted in plaintext chat.Many steps below require the Account SID and Auth Token. Retrieve them with:
TWILIO_SID=$(assistant config get twilio.accountSid)
TWILIO_TOKEN=$(assistant credentials reveal --service twilio --field auth_token)
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:
assistant config get twilio.accountSid
assistant credentials inspect --service twilio --field auth_token --json # check "hasSecret" field
assistant config get twilio.phoneNumber
Follow the steps below in order to fully configure Twilio in preparation to make phone calls.
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:
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. Otherwise, continue to the missing steps below.
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):
AC (this is not a secret value and can be collected conversationally)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:
assistant config set twilio.accountSid "<Account SID from user>"
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):
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:
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.
The assistant needs a phone number for voice calls. Three options:
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:
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.
Retrieve credentials (see "Retrieving Twilio Credentials" above), then:
Search for available numbers:
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 preferenceUS with another country code if neededPresent the first few results from the available_phone_numbers array (show phone_number and friendly_name).
Purchase the chosen number:
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.
If the user already has a number and knows it, skip the API calls. They can paste it directly in chat.
After choosing a number via any option, store it as a config value:
assistant config set twilio.phoneNumber "+14155551234"
Twilio needs publicly reachable HTTP webhooks and, for live calls, a publicly reachable WebSocket path. First check managed/platform status:
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.
Set webhook URLs on the phone number so Twilio routes traffic to the assistant.
Retrieve credentials and config values:
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:
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:
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"
To disconnect Twilio:
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.
Run Steps 2 and 3.
Run Step 3.
assistant config get ingress.publicBaseUrlcalls.enabled is trueWebhooks 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.
Diagnose -- fetch the number's current webhooks and compare to the expected URL:
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:
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"