gamma-sdk-patterns

Learn idiomatic patterns and best practices for the Gamma SDK to build robust presentation automation.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "gamma-sdk-patterns" with this command: npx skills add jeremylongshore/claude-code-plugins-plus-skills/jeremylongshore-claude-code-plugins-plus-skills-gamma-sdk-patterns

Gamma SDK Patterns

Overview

Learn idiomatic patterns and best practices for the Gamma SDK to build robust presentation automation.

Prerequisites

  • Completed gamma-local-dev-loop setup

  • Familiarity with async/await patterns

  • TypeScript recommended

Instructions

Step 1: Client Singleton

// lib/gamma.ts import { GammaClient } from '@gamma/sdk';

let client: GammaClient | null = null;

export function getGammaClient(): GammaClient { if (!client) { client = new GammaClient({ apiKey: process.env.GAMMA_API_KEY, timeout: 30000, # 30000: 30 seconds in ms retries: 3, }); } return client; }

Step 2: Presentation Builder

// lib/presentation-builder.ts import { getGammaClient } from './gamma';

interface SlideContent { title: string; content: string; layout?: 'title' | 'content' | 'image' | 'split'; }

export class PresentationBuilder { private slides: SlideContent[] = []; private title: string = ''; private style: string = 'professional';

setTitle(title: string): this { this.title = title; return this; }

addSlide(slide: SlideContent): this { this.slides.push(slide); return this; }

setStyle(style: string): this { this.style = style; return this; }

async build() { const gamma = getGammaClient(); return gamma.presentations.create({ title: this.title, slides: this.slides, style: this.style, }); } }

Step 3: Error Handling Wrapper

// lib/safe-gamma.ts import { GammaError } from '@gamma/sdk';

export async function safeGammaCall<T>( fn: () => Promise<T> ): Promise<{ data: T; error: null } | { data: null; error: string }> { try { const data = await fn(); return { data, error: null }; } catch (err) { if (err instanceof GammaError) { return { data: null, error: err.message }; } throw err; } }

Step 4: Template Factory

// lib/templates.ts type TemplateType = 'pitch-deck' | 'report' | 'tutorial' | 'proposal';

const TEMPLATES: Record<TemplateType, object> = { 'pitch-deck': { slides: 10, style: 'bold' }, 'report': { slides: 15, style: 'professional' }, 'tutorial': { slides: 8, style: 'friendly' }, 'proposal': { slides: 12, style: 'corporate' }, };

export function fromTemplate(type: TemplateType, title: string) { return { ...TEMPLATES[type], title }; }

Output

  • Reusable client singleton

  • Fluent builder pattern

  • Type-safe error handling

  • Template factory system

Error Handling

Pattern Use Case Benefit

Singleton Multiple modules Consistent config

Builder Complex presentations Readable code

Safe Call Error boundaries Graceful failures

Factory Repeated templates DRY code

Resources

  • Gamma SDK Patterns

  • TypeScript Design Patterns

Next Steps

Proceed to gamma-core-workflow-a for presentation generation workflows.

Examples

Basic usage: Apply gamma sdk patterns to a standard project setup with default configuration options.

Advanced scenario: Customize gamma sdk patterns for production environments with multiple constraints and team-specific requirements.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

backtesting-trading-strategies

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

svg-icon-generator

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

performance-lighthouse-runner

No summary provided by upstream source.

Repository SourceNeeds Review