askill
gamma-sdk-patterns

gamma-sdk-patternsSafety 100Repository

Learn idiomatic Gamma SDK patterns and best practices. Use when implementing complex presentation workflows, handling async operations, or structuring Gamma code. Trigger with phrases like "gamma patterns", "gamma best practices", "gamma SDK usage", "gamma async", "gamma code structure".

28 stars
1.2k downloads
Updated 2/9/2026

Package Files

Loading files...
SKILL.md

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

Pattern 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,
      retries: 3,
    });
  }
  return client;
}

Pattern 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,
    });
  }
}

Pattern 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;
  }
}

Pattern 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

PatternUse CaseBenefit
SingletonMultiple modulesConsistent config
BuilderComplex presentationsReadable code
Safe CallError boundariesGraceful failures
FactoryRepeated templatesDRY code

Resources

Next Steps

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

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

95/100Analyzed 2/13/2026

A high-quality, structured guide to idiomatic Gamma SDK patterns. It provides clear, copy-pasteable TypeScript examples for common architectural patterns like Singletons, Builders, and Error Handling, making it highly actionable for developers.

100
95
90
95
100

Metadata

Licenseunknown
Version1.0.0
Updated2/9/2026
PublisherDicklesworthstone

Tags

ci-cdgithub-actions