Goose-skills orthogonal-phone-verification
Verify phone numbers using SMS one-time codes via the Didit API. Use when you need to confirm a user owns a phone number, implement SMS-based 2FA, or validate phone during signup/onboarding flows.
install
source · Clone the upstream repo
git clone https://github.com/gooseworks-ai/goose-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/gooseworks-ai/goose-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/capabilities/orthogonal-phone-verification" ~/.claude/skills/gooseworks-ai-goose-skills-orthogonal-phone-verification && rm -rf "$T"
manifest:
skills/capabilities/orthogonal-phone-verification/SKILL.mdsource content
Phone Verification
Setup
Read your credentials from ~/.gooseworks/credentials.json:
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
If ~/.gooseworks/credentials.json does not exist, tell the user to run:
npx gooseworks login
All endpoints use Bearer auth:
-H "Authorization: Bearer $GOOSEWORKS_API_KEY"
Verify phone numbers by sending SMS one-time verification codes via Didit.
Quick Start
# Send verification code via SMS curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"+14155551234"}}' # Verify the code user provides curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"+14155551234","code":"123456"}}'
Workflow
1. Send Verification Code
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"didit","path":"/v3/phone/send"}' -d '{"phone_number": "+14155551234"}'
Request format:
- Phone must be in E.164 format (e.g.,
)+14155551234 - Include country code with
prefix+
Response:
{ "success": true, "message": "Verification code sent" }
2. Verify Code
When the user provides the code they received:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"didit","path":"/v3/phone/check"}' -d '{"phone_number": "+14155551234", "code": "123456"}'
Response (success):
{ "success": true, "verified": true }
Phone Number Format
Always use E.164 format:
- US:
+14155551234 - UK:
+447911123456 - Germany:
+4915123456789
Use Cases
- User signup: Verify phone before creating account
- SMS 2FA: Add phone-based second factor authentication
- Account recovery: Verify ownership via SMS
- Delivery confirmation: Confirm contact number for orders
Integration Example (TypeScript)
import Orthogonal from "@orth/sdk"; const orthogonal = new Orthogonal({ }); // Send verification code via SMS const sendResult = await orthogonal.run({ api: "didit", path: "/v3/phone/send", body: { phone_number: "+14155551234" } }); // Verify the code const verifyResult = await orthogonal.run({ api: "didit", path: "/v3/phone/check", body: { phone_number: "+14155551234", code: "123456" } }); if (verifyResult.data.verified) { console.log("Phone verified!"); }