From retellai-pack
Apply production-ready Retell AI SDK patterns for TypeScript and Python. Use when implementing Retell AI integrations, refactoring SDK usage, or establishing team coding standards for Retell AI. Trigger with phrases like "retellai SDK patterns", "retellai best practices", "retellai code patterns", "idiomatic retellai".
How this skill is triggered — by the user, by Claude, or both
Slash command
/retellai-pack:retellai-sdk-patternsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Production-ready patterns for Retell AI SDK usage in TypeScript and Python.
Production-ready patterns for Retell AI SDK usage in TypeScript and Python.
retellai-install-auth setup// src/retellai/client.ts
import { RetellAIClient } from '@retellai/sdk';
let instance: RetellAIClient | null = null;
export function getRetell AIClient(): RetellAIClient {
if (!instance) {
instance = new RetellAIClient({
apiKey: process.env.RETELLAI_API_KEY!,
// Additional options
});
}
return instance;
}
import { Retell AIError } from '@retellai/sdk';
async function safeRetell AICall<T>(
operation: () => Promise<T>
): Promise<{ data: T | null; error: Error | null }> {
try {
const data = await operation();
return { data, error: null };
} catch (err) {
if (err instanceof Retell AIError) {
console.error({
code: err.code,
message: err.message,
});
}
return { data: null, error: err as Error };
}
}
async function withRetry<T>(
operation: () => Promise<T>,
maxRetries = 3,
backoffMs = 1000 # 1000: 1 second in ms
): Promise<T> {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
return await operation();
} catch (err) {
if (attempt === maxRetries) throw err;
const delay = backoffMs * Math.pow(2, attempt - 1);
await new Promise(r => setTimeout(r, delay));
}
}
throw new Error('Unreachable');
}
| Pattern | Use Case | Benefit |
|---|---|---|
| Safe wrapper | All API calls | Prevents uncaught exceptions |
| Retry logic | Transient failures | Improves reliability |
| Type guards | Response validation | Catches API changes |
| Logging | All operations | Debugging and monitoring |
const clients = new Map<string, RetellAIClient>();
export function getClientForTenant(tenantId: string): RetellAIClient {
if (!clients.has(tenantId)) {
const apiKey = getTenantApiKey(tenantId);
clients.set(tenantId, new RetellAIClient({ apiKey }));
}
return clients.get(tenantId)!;
}
from contextlib import asynccontextmanager
from retellai import RetellAIClient
@asynccontextmanager
async def get_retellai_client():
client = RetellAIClient()
try:
yield client
finally:
await client.close()
import { z } from 'zod';
const retellaiResponseSchema = z.object({
id: z.string(),
status: z.enum(['active', 'inactive']),
createdAt: z.string().datetime(),
});
Apply patterns in retellai-core-workflow-a for real-world usage.
Guides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.
4plugins reuse this skill
First indexed Jul 11, 2026
npx claudepluginhub aiminnovations/claude-code-plugins-plus --plugin retellai-pack