Phone verification

Verify phone numbers using SMS one-time codes via the Didit API.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/research-tools/capabilities/phone-verification#main ~/.claude/skills/phone-verification

For one project only, change the path to .claude/skills/phone-verification.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text129 lines
phone-verification/SKILL.md129 lines3.3 KBpushed 96d agoRawView on GitHub

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!");
}
1---
2name: phone-verification
3description: 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.
4source: orthogonal
5---
6 
7 
8# Phone Verification
9 
10## Setup
11 
12Read your credentials from ~/.gooseworks/credentials.json:
13```bash
14export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
15export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
16```
17 
18If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`
19 
20All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`
21 
22 
23Verify phone numbers by sending SMS one-time verification codes via Didit.
24 
25## Quick Start
26 
27```bash
28# Send verification code via SMS
29curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
30 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
31 -H "Content-Type: application/json" \
32 -d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"+14155551234"}}'
33 
34# Verify the code user provides
35curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
36 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
37 -H "Content-Type: application/json" \
38 -d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"+14155551234","code":"123456"}}'
39```
40 
41## Workflow
42 
43### 1. Send Verification Code
44 
45```bash
46curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
47 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
48 -H "Content-Type: application/json" \
49 -d '{"api":"didit","path":"/v3/phone/send"}'
50 -d '{"phone_number": "+14155551234"}'
51```
52 
53**Request format:**
54- Phone must be in E.164 format (e.g., `+14155551234`)
55- Include country code with `+` prefix
56 
57**Response:**
58```json
59{
60 "success": true,
61 "message": "Verification code sent"
62}
63```
64 
65### 2. Verify Code
66 
67When the user provides the code they received:
68 
69```bash
70curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
71 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
72 -H "Content-Type: application/json" \
73 -d '{"api":"didit","path":"/v3/phone/check"}'
74 -d '{"phone_number": "+14155551234", "code": "123456"}'
75```
76 
77**Response (success):**
78```json
79{
80 "success": true,
81 "verified": true
82}
83```
84 
85## Phone Number Format
86 
87Always use E.164 format:
88- US: `+14155551234`
89- UK: `+447911123456`
90- Germany: `+4915123456789`
91 
92## Use Cases
93 
94- **User signup:** Verify phone before creating account
95- **SMS 2FA:** Add phone-based second factor authentication
96- **Account recovery:** Verify ownership via SMS
97- **Delivery confirmation:** Confirm contact number for orders
98 
99## Integration Example (TypeScript)
100 
101```typescript
102import Orthogonal from "@orth/sdk";
103 
104const orthogonal = new Orthogonal({
105 
106});
107 
108// Send verification code via SMS
109const sendResult = await orthogonal.run({
110 api: "didit",
111 path: "/v3/phone/send",
112 body: { phone_number: "+14155551234" }
113});
114 
115// Verify the code
116const verifyResult = await orthogonal.run({
117 api: "didit",
118 path: "/v3/phone/check",
119 body: {
120 phone_number: "+14155551234",
121 code: "123456"
122 }
123});
124 
125if (verifyResult.data.verified) {
126 console.log("Phone verified!");
127}
128```
129 

Discussion

Alternatives

Also in Services & APIs
Context7Pulls up-to-date, version-specific library docs and code examples into the prompt so the AI stops inventing old APIs.Coding · MITAdaptyv Bio Foundry APIHow to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.Science · MIT.NET Backend Development PatternsMaster C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.Coding · MITAdd AI protectionProtect AI chat and completion endpoints from abuse — detect prompt injection and jailbreak attempts, block PII and sensitive info from leaking in responses, and enforce token budget rate limits to control costs. Use this skill when the user is building or securing any endpoint that processes user prompts with an LLM, even if they describe it as "preventing jailbreaks," "stopping prompt attacks," "blocking sensitive data," or "controlling AI API costs" rather than naming specific protections.Coding · CC0-1.0