From gamma-pack
Debugs common Gamma API errors including authentication (401/403), rate limits (429), generation failures (400/500), timeouts, and exports. Includes TypeScript retry/backoff code.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin gamma-packThis skill is limited to using the following tools:
Reference guide for debugging and resolving common Gamma API errors.
Debugs Gamma API integrations with curl-based connectivity tests, auth verification, latency checks, and TypeScript diagnostics.
Generates AI-powered presentations, documents, and social posts via Gamma.app API from text prompts or topics. Useful for pitch decks, slide decks, carousels; triggers on 'create presentation about X' requests.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Share bugs, ideas, or general feedback.
Reference guide for debugging and resolving common Gamma API errors.
// Error: Invalid API Key
{
"error": "unauthorized",
"message": "Invalid or expired API key"
}
Solutions:
echo $GAMMA_API_KEY// Error: Rate Limited
{
"error": "rate_limited",
"message": "Too many requests",
"retry_after": 60
}
Solutions:
X-RateLimit-Remainingasync function withRetry(fn: () => Promise<any>, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (err) {
if (err.code === 'rate_limited' && i < maxRetries - 1) {
const delay = (err.retryAfter || Math.pow(2, i)) * 1000; # 1000: 1 second in ms
await new Promise(r => setTimeout(r, delay));
continue;
}
throw err;
}
}
}
// Error: Generation Failed
{
"error": "generation_failed",
"message": "Unable to generate presentation",
"details": "Content too complex"
}
Solutions:
// Error: Request Timeout
{
"error": "timeout",
"message": "Request timed out after 30000ms"
}
Solutions:
const gamma = new GammaClient({
apiKey: process.env.GAMMA_API_KEY,
timeout: 60000, // 60 seconds # 60000: 1 minute in ms
});
// Error: Export Failed
{
"error": "export_failed",
"message": "Unable to export presentation",
"format": "pdf"
}
Solutions:
const gamma = new GammaClient({
apiKey: process.env.GAMMA_API_KEY,
debug: true, // Logs all requests/responses
});
const status = await gamma.status();
console.log('API Status:', status.healthy ? 'OK' : 'Issues');
console.log('Services:', status.services);
import { GammaError, RateLimitError, AuthError } from '@gamma/sdk';
try {
const result = await gamma.presentations.create({ ... });
} catch (err) {
if (err instanceof AuthError) {
console.error('Check your API key');
} else if (err instanceof RateLimitError) {
console.error(`Retry after ${err.retryAfter}s`);
} else if (err instanceof GammaError) {
console.error('API Error:', err.message);
} else {
throw err;
}
}
Proceed to gamma-debug-bundle for comprehensive debugging tools.