Agent Skills: Gamma Deploy Integration

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/gamma-deploy-integration

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/gamma-pack/skills/gamma-deploy-integration

Skill Files

Browse the full folder contents for gamma-deploy-integration.

Download Skill

Loading file tree…

plugins/saas-packs/gamma-pack/skills/gamma-deploy-integration/SKILL.md

Skill Metadata

Name
gamma-deploy-integration
Description
|

Gamma Deploy Integration

Overview

Deploy Gamma-integrated applications to various cloud platforms with proper configuration and secret management.

Prerequisites

  • Completed CI integration
  • Cloud platform account (Vercel, AWS, or GCP)
  • Production Gamma API key

Instructions

Vercel Deployment

Step 1: Configure Vercel Project

set -euo pipefail
# Install Vercel CLI
npm i -g vercel

# Link project
vercel link

# Set environment variable
vercel env add GAMMA_API_KEY production

Step 2: Create vercel.json

{
  "framework": "nextjs",
  "buildCommand": "npm run build",
  "env": {
    "GAMMA_API_KEY": "@gamma_api_key"
  },
  "functions": {
    "api/**/*.ts": {
      "maxDuration": 30
    }
  }
}

Step 3: Deploy

# Preview deployment
vercel

# Production deployment
vercel --prod

AWS Lambda Deployment

Step 1: Store Secret in AWS Secrets Manager

aws secretsmanager create-secret \
  --name gamma/api-key \
  --secret-string '{"apiKey":"your-gamma-api-key"}'

Step 2: Lambda Configuration

// lambda/gamma-handler.ts
import { SecretsManager } from '@aws-sdk/client-secrets-manager';
import { GammaClient } from '@gamma/sdk';

const secretsManager = new SecretsManager({ region: 'us-east-1' });
let gamma: GammaClient;

async function getGammaClient() {
  if (!gamma) {
    const secret = await secretsManager.getSecretValue({
      SecretId: 'gamma/api-key',
    });
    const { apiKey } = JSON.parse(secret.SecretString!);
    gamma = new GammaClient({ apiKey });
  }
  return gamma;
}

export async function handler(event: any) {
  const client = await getGammaClient();
  const result = await client.presentations.create({
    title: event.title,
    prompt: event.prompt,
  });
  return { statusCode: 200, body: JSON.stringify(result) };  # HTTP 200 OK
}

Step 3: SAM Template

# template.yaml
AWSTemplateFormatVersion: '2010-09-09'  # 2010 = configured value
Transform: AWS::Serverless-2016-10-31  # 2016 = configured value

Resources:
  GammaFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: dist/gamma-handler.handler
      Runtime: nodejs20.x
      Timeout: 30
      MemorySize: 256  # 256 bytes
      Policies:
        - SecretsManagerReadWrite
      Environment:
        Variables:
          NODE_ENV: production

Google Cloud Run Deployment

Step 1: Store Secret

echo -n "your-gamma-api-key" | \
  gcloud secrets create gamma-api-key --data-file=-

Step 2: Dockerfile

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY dist ./dist
CMD ["node", "dist/server.js"]

Step 3: Deploy

set -euo pipefail
gcloud run deploy gamma-service \
  --image gcr.io/$PROJECT_ID/gamma-service \
  --platform managed \
  --region us-central1 \
  --set-secrets GAMMA_API_KEY=gamma-api-key:latest \
  --allow-unauthenticated

GitHub Actions Deployment

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Build
        run: npm ci && npm run build

      - name: Deploy to Vercel
        uses: amondnet/vercel-action@v25
        with:
          vercel-token: ${{ secrets.VERCEL_TOKEN }}
          vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
          vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
          vercel-args: '--prod'

Output

  • Production deployment on chosen platform
  • Secrets securely stored
  • Environment variables configured
  • Automated deployment pipeline

Error Handling

| Error | Cause | Solution | |-------|-------|----------| | Secret not found | Missing secret | Create secret in platform | | Timeout | Function too slow | Increase timeout limit | | Cold start | Lambda initialization | Use provisioned concurrency | | Permission denied | IAM misconfigured | Update IAM policies |

Resources

Next Steps

Proceed to gamma-webhooks-events for event handling.