Implement Retell AI reliability patterns including circuit breakers, idempotency, and graceful degradation. Use when building fault-tolerant Retell AI integrations, implementing retry strategies, or adding resilience to production Retell AI services. Trigger with phrases like "retellai reliability", "retellai circuit breaker", "retellai idempotent", "retellai resilience", "retellai fallback", "retellai bulkhead".
View on GitHubjeremylongshore/claude-code-plugins-plus-skills
retellai-pack
plugins/saas-packs/retellai-pack/skills/retellai-reliability-patterns/SKILL.md
February 1, 2026
Select agents to install to:
npx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/main/plugins/saas-packs/retellai-pack/skills/retellai-reliability-patterns/SKILL.md -a claude-code --skill retellai-reliability-patternsInstallation paths:
.claude/skills/retellai-reliability-patterns/# Retell AI Reliability Patterns
## Overview
Production-grade reliability patterns for Retell AI integrations.
## Prerequisites
- Understanding of circuit breaker pattern
- opossum or similar library installed
- Queue infrastructure for DLQ
- Caching layer for fallbacks
## Circuit Breaker
```typescript
import CircuitBreaker from 'opossum';
const retellaiBreaker = new CircuitBreaker(
async (operation: () => Promise<any>) => operation(),
{
timeout: 30000,
errorThresholdPercentage: 50,
resetTimeout: 30000,
volumeThreshold: 10,
}
);
// Events
retellaiBreaker.on('open', () => {
console.warn('Retell AI circuit OPEN - requests failing fast');
alertOps('Retell AI circuit breaker opened');
});
retellaiBreaker.on('halfOpen', () => {
console.info('Retell AI circuit HALF-OPEN - testing recovery');
});
retellaiBreaker.on('close', () => {
console.info('Retell AI circuit CLOSED - normal operation');
});
// Usage
async function safeRetell AICall<T>(fn: () => Promise<T>): Promise<T> {
return retellaiBreaker.fire(fn);
}
```
## Idempotency Keys
```typescript
import { v4 as uuidv4 } from 'uuid';
import crypto from 'crypto';
// Generate deterministic idempotency key from input
function generateIdempotencyKey(
operation: string,
params: Record<string, any>
): string {
const data = JSON.stringify({ operation, params });
return crypto.createHash('sha256').update(data).digest('hex');
}
// Or use random key with storage
class IdempotencyManager {
private store: Map<string, { key: string; expiresAt: Date }> = new Map();
getOrCreate(operationId: string): string {
const existing = this.store.get(operationId);
if (existing && existing.expiresAt > new Date()) {
return existing.key;
}
const key = uuidv4();
this.store.set(operationId, {
key,
expiresAt: new Date(Date.now() + 24 * 60 * 60 * 1000),
});
return key;
}
}
```
## Bulkhead Pattern
```typescript
import PQueue from 'p-queue';
// Separ