Agent skill

Gamma Migration Deep Dive

by jeremylongshore in jeremylongshore/tons-of-skills-marketplace

Deep dive into migrating to Gamma from other presentation platforms.

MITAuto-check passedDocuments & Office

Install Gamma Migration Deep Dive

skills CLI
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill gamma-migration-deep-dive -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jeremylongshore/tons-of-skills-marketplace gamma-migration-deep-dive --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/gamma-migration-deep-dive .claude/skills/gamma-migration-deep-dive && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
gamma-migration-deep-dive
GitHub stars
2.8k
Token cost
~2.3k tokens
SKILL.md length
374 words
Files
2 (incl. references)
Skills in repo
3,342
Repo updated
First seen
Licence
MIT

At a glance

Deep dive into migrating to Gamma from other presentation platforms.

  • Works in 5 steps: Inventory Source Presentations → Extract Content from PowerPoint → Batch Migration Script → …
  • Migrating from PowerPoint
  • SKILL.md covers Output, Examples, Current State and Overview, plus 7 more sections
  • Calls npm; needs GAMMA_API_KEY

What it does

Gamma Migration Deep Dive is an agent skill from jeremylongshore/tons-of-skills-marketplace. Deep dive into migrating to Gamma from other presentation platforms. Use when migrating from PowerPoint, Google Slides, Canva, or other presentation tools to Gamma. Trigger with phrases like "gamma migration", "migrate to gamma", "gamma import", "gamma from powerpoint", "gamma from google slides".

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/implementation.md`). Compatibility notes: Designed for Claude Code

It sits in Documents & Office, covering PowerPoint presentations, Cloud office suites and Slides and decks. It works with Microsoft PowerPoint, Google Slides and Canva. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.

When your agent uses it

  • Migrating from PowerPoint
  • Other presentation tools to Gamma
  • With phrases like gamma migration
  • Migrate to gamma

Example prompts

  • “gamma migration”
  • “migrate to gamma”
  • “gamma import”
  • “/gamma-migration-deep-dive”

Requirements

  • Node.js
  • A credential in GAMMA_API_KEY
  • Compatibility (from SKILL.md): Designed for Claude Code
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash(node:*)

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Inventory Source Presentations
  2. Extract Content from PowerPoint
  3. Batch Migration Script
  4. Template Recreation
  5. Validation Checklist

What it can do on your machine

Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash(node:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • developers.gamma.app
    • gamma.app

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GAMMA_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Claude Code

    From compatibility in the SKILL.md frontmatter.

Context cost

Gamma Migration Deep Dive loads about 2.3k tokens when it runs, and up to ~3.8k if it reads all its reference files. Until then it costs about 81 tokens; SKILL.md has 374 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~81
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 374 words, ~2,315 tokens.

Download SKILL.mdSave it as .claude/skills/gamma-migration-deep-dive/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
gamma-migration-deep-dive
description
Deep dive into migrating to Gamma from other presentation platforms. Use when migrating from PowerPoint, Google Slides, Canva, or other presentation tools to Gamma. Trigger with phrases like "gamma migration", "migrate to gamma", "gamma import", "gamma from powerpoint", "gamma from google slides".
allowed-tools
Read, Write, Edit, Bash(node:*)
compatibility
Designed for Claude Code
version
1.13.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
saas, gamma, migration

Gamma Migration Deep Dive

Output

Record source/target scope, mapping decision, staging and canary results, aggregate reconciliation, approver, and rollback state without copying content or viewer data.

Examples

Migrate a fictional presentation in staging, compare approved metadata and route behavior, introduce an unknown field, and confirm the canary stops for review.

Current State

!npm list 2>/dev/null | head -10

Overview

Migrate presentation workflows from PowerPoint, Google Slides, Canva, or other platforms to Gamma's AI-powered generation. Gamma takes a fundamentally different approach -- instead of manually placing slides, you provide content and Gamma generates the presentation. Migration is about converting your content pipeline, not your slide files.

Prerequisites

  • Gamma API access (Pro+ plan)
  • Source presentations accessible for content extraction
  • Node.js 18+ for migration scripts
  • Completed gamma-install-auth setup

Migration Approaches

ApproachWhen to UseEffort
Content extraction + regenerationLots of text-heavy presentationsMedium
Import via Gamma UIOne-off migration of key decksLow
Template recreationRepeatable presentation formatsMedium
Parallel operationGradual transition over timeLow

Key insight: You don't "import" slides into Gamma. You extract content from old presentations and regenerate them using Gamma's AI. This often produces better results than the originals.

Instructions

Step 1: Inventory Source Presentations
typescript
// scripts/inventory-presentations.ts
import { readdir, stat } from "node:fs/promises";
import { join, extname } from "node:path";

interface PresentationInfo {
  path: string;
  format: string;
  sizeMB: number;
  lastModified: Date;
}

async function inventoryPresentations(dir: string): Promise<PresentationInfo[]> {
  const entries = await readdir(dir, { recursive: true });
  const presentations: PresentationInfo[] = [];

  for (const entry of entries) {
    const ext = extname(entry).toLowerCase();
    if ([".pptx", ".ppt", ".key", ".pdf", ".md"].includes(ext)) {
      const fullPath = join(dir, entry);
      const info = await stat(fullPath);
      presentations.push({
        path: fullPath,
        format: ext,
        sizeMB: info.size / (1024 * 1024),
        lastModified: info.mtime,
      });
    }
  }

  console.log(`Found ${presentations.length} presentations:`);
  const byFormat = presentations.reduce((acc, p) => {
    acc[p.format] = (acc[p.format] || 0) + 1;
    return acc;
  }, {} as Record<string, number>);
  console.log("By format:", byFormat);

  return presentations;
}
Step 2: Extract Content from PowerPoint
typescript
// scripts/extract-pptx.ts
// Use 'pptx-parser' or 'officegen' to extract text content

import JSZip from "jszip";
import { readFile } from "node:fs/promises";
import { DOMParser } from "xmldom";

async function extractPptxContent(pptxPath: string): Promise<string[]> {
  const buffer = await readFile(pptxPath);
  const zip = await JSZip.loadAsync(buffer);

  const slides: string[] = [];
  const slideFiles = Object.keys(zip.files)
    .filter((f) => f.match(/ppt\/slides\/slide\d+\.xml$/))
    .sort();

  for (const slideFile of slideFiles) {
    const xml = await zip.file(slideFile)!.async("string");
    const doc = new DOMParser().parseFromString(xml);
    // Extract all text elements
    const textNodes = doc.getElementsByTagName("a:t");
    const texts: string[] = [];
    for (let i = 0; i < textNodes.length; i++) {
      const text = textNodes[i].textContent?.trim();
      if (text) texts.push(text);
    }
    slides.push(texts.join("\n"));
  }

  return slides;
}

// Convert extracted content to Gamma prompt
function slidesToGammaPrompt(slides: string[], title: string): string {
  let prompt = `${title}\n\n`;
  slides.forEach((content, i) => {
    prompt += `Slide ${i + 1}:\n${content}\n\n`;
  });
  return prompt;
}
Step 3: Batch Migration Script
typescript
// scripts/migrate-to-gamma.ts
import { createGammaClient } from "../src/client";
import { pollUntilDone } from "../src/poll";
import pLimit from "p-limit";

const gamma = createGammaClient({ apiKey: process.env.GAMMA_API_KEY! });
const limit = pLimit(2); // Max 2 concurrent generations

interface MigrationItem {
  title: string;
  content: string;
  sourceFile: string;
}

async function migrateBatch(items: MigrationItem[]) {
  const results = await Promise.allSettled(
    items.map((item) =>
      limit(async () => {
        console.log(`Migrating: ${item.title}`);
        const { generationId } = await gamma.generate({
          content: item.content,
          outputFormat: "presentation",
          textMode: "condense", // AI condenses extracted text
          exportAs: "pptx",    // Get PPTX for comparison
        });

        const result = await pollUntilDone(gamma, generationId);
        return {
          title: item.title,
          sourceFile: item.sourceFile,
          gammaUrl: result.gammaUrl,
          exportUrl: result.exportUrl,
          creditsUsed: result.creditsUsed,
        };
      })
    )
  );

  // Report
  const succeeded = results.filter((r) => r.status === "fulfilled");
  const failed = results.filter((r) => r.status === "rejected");
  console.log(`\nMigration complete: ${succeeded.length} succeeded, ${failed.length} failed`);

  for (const r of results) {
    if (r.status === "fulfilled") {
      console.log(`  OK: ${r.value.title} → ${r.value.gammaUrl}`);
    } else {
      console.log(`  FAIL: ${r.reason}`);
    }
  }
}
Step 4: Template Recreation

For recurring presentation types (weekly reports, proposals, etc.), create Gamma templates:

text
Migration steps for templates:
1. Identify repeating presentation formats in your org
2. Create a one-page template gamma in the Gamma app:
   - gamma.app → Create → design a single representative page
3. Note the template gamma ID from the URL
4. Use POST /v1.0/generations/from-template with the gammaId
5. Update your automation scripts to use generateFromTemplate()
typescript
// After template creation in Gamma UI
const MIGRATED_TEMPLATES: Record<string, string> = {
  "weekly-report": "gamma_template_weekly_abc123",
  "sales-proposal": "gamma_template_proposal_def456",
  "team-update": "gamma_template_update_ghi789",
};

async function generateFromMigratedTemplate(
  templateKey: string,
  content: string
) {
  const gammaId = MIGRATED_TEMPLATES[templateKey];
  if (!gammaId) throw new Error(`Unknown template: ${templateKey}`);

  const { generationId } = await gamma.generateFromTemplate({
    gammaId,
    prompt: content,
    exportAs: "pdf",
  });

  return pollUntilDone(gamma, generationId);
}
Show full SKILL.md (153 more words)Show less
Step 5: Validation Checklist

After migrating each presentation:

text
- [ ] Content accuracy: AI-generated text matches source intent
- [ ] Slide count: reasonable for the content volume
- [ ] Theme/branding: workspace theme applied correctly
- [ ] Export quality: PDF/PPTX downloads successfully
- [ ] Links preserved: any URLs from original are in the content
- [ ] Stakeholder review: key presentations reviewed by owners

Supported Migration Paths

SourceMethodFidelityNotes
PowerPoint (.pptx)Extract text → regenerateContent-high, design-newAI redesigns slides
Google SlidesExport as .pptx → extractContent-high, design-newExport first
CanvaExport as .pdf → extract textMediumLimited text extraction
Keynote (.key)Export as .pptx → extractContent-high, design-newExport first
Markdown (.md)Direct use as contentHighBest migration path
Notion pagesExport as .md → use directlyHighClean text extraction

Error Handling

IssueCauseSolution
Content too longExceeds 100K token limitSplit into multiple presentations
Credit budget exceededToo many migrations at onceBatch over multiple days
Poor output qualityContent too unstructuredAdd structure (headings, bullets) to extracted content
Missing imagesImages in source not extractedGamma generates new images; reference image concepts in text

Resources

Next Steps

Review gamma-core-workflow-a for ongoing content generation after migration.

© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/.curated/gamma-migration-deep-dive of jeremylongshore/tons-of-skills-marketplace.

  • SKILL.md
  • references/implementation.md

Open the folder on GitHubat commit cfae287

Compare with similar skills

Gamma Migration Deep Dive next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Gamma Migration Deep Dive compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Gamma Migration Deep Dive this skilljeremylongshore/tons-of-skills-marketplace2.8k—~2.3kAutomated safety check: PassMIT
Presentghaida/intent207—~6.3kAutomated safety check: PassCC0-1.0
Publish To Pagesgithub/awesome-copilot40k1 repos~1.1kAutomated safety check: PassMIT
Ultralytics Brandingfcakyon/claude-codex-settings1.2k—~1.3kAutomated safety check: PassApache-2.0
Slidev Presentationsnicepkg/ai-workflow285—~2.3kAutomated safety check: PassMIT
PPTX Generatorcoleam00/ai-transformation-workshop147—~9.9kAutomated safety check: PassNone

Similar skills

  • Present

    ghaida/intent

    Build presentations of design work: design reviews, research readouts, strategy pitches, case studies.

    207 GitHub stars~6.3k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Publish To Pages

    github/awesome-copilot

    Official

    Publish presentations and web content to GitHub Pages. An agent skill from github/awesome-copilot.

    40k GitHub starsUsed in 1 repo~1.1k tokens
    Documents & OfficeAuto-check passed
  • Ultralytics Branding

    fcakyon/claude-codex-settings

    This skill should be used when creating Ultralytics-branded content of any kind, including PDF, PPTX, Canva, or Google Slides presentations, DOCX documents, marketing or newsletter HTML emails…

    1.2k GitHub stars~1.3k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Slidev Presentations

    nicepkg/ai-workflow

    Creates Slidev markdown presentations for developers. An agent skill from nicepkg/ai-workflow.

    285 GitHub stars~2.3k tokensUpdated 8 mo ago
    Documents & OfficeAuto-check passed
  • PPTX Generator

    coleam00/ai-transformation-workshop

    Generate and edit presentation slides as PPTX files. An agent skill from coleam00/ai-transformation-workshop.

    147 GitHub stars~9.9k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • Explorable Deck

    claesbackman/AI-research-feedback

    Build a Quarto reveal.js slide deck in the explorable-explanation style (Nicky Case) — one idea per slide, assertion titles, a concrete running example, run-time SVG stages the presenter drives…

    495 GitHub stars~2.9k tokensUpdated 15 days ago
    Documents & OfficeAuto-check passed

More from jeremylongshore/tons-of-skills-marketplace

All 3,342 skills in this repo
  • Performing Security Code Review

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.

    2.8k GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check: notes
  • Adapting Transfer Learning Models

    jeremylongshore/tons-of-skills-marketplace

    Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Agent Context Loader

    jeremylongshore/tons-of-skills-marketplace

    Execute proactive auto-loading: automatically detects and loads agents.md files.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Aggregating Performance Metrics

    jeremylongshore/tons-of-skills-marketplace

    Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.

    2.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Analyzing Capacity Planning

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.

    2.8k GitHub stars~947 tokensUpdated today
    Auto-check passed
  • Analyzing Database Indexes

    jeremylongshore/tons-of-skills-marketplace

    Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.

    2.8k GitHub stars~2k tokensUpdated today
    Auto-check passed

Questions about Gamma Migration Deep Dive

What does Gamma Migration Deep Dive do?

Deep dive into migrating to Gamma from other presentation platforms. Gamma Migration Deep Dive is an agent skill from jeremylongshore/tons-of-skills-marketplace. Deep dive into migrating to Gamma from other presentation platforms.

When should I use Gamma Migration Deep Dive?

Gamma Migration Deep Dive fits situations like: migrating from PowerPoint; other presentation tools to Gamma; with phrases like gamma migration; migrate to gamma.

How do I install Gamma Migration Deep Dive in Claude Code?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill gamma-migration-deep-dive -a claude-code`. Or copy the skill folder (skills/.curated/gamma-migration-deep-dive in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/gamma-migration-deep-dive in your project. Claude Code loads it when a task matches its description.

How do I install Gamma Migration Deep Dive in Codex?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill gamma-migration-deep-dive -a codex`. Or copy the skill folder (skills/.curated/gamma-migration-deep-dive in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/gamma-migration-deep-dive in your project. Codex loads it when a task matches its description.

Can I use Gamma Migration Deep Dive in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill gamma-migration-deep-dive -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gamma-migration-deep-dive, .gemini/skills/gamma-migration-deep-dive, .github/skills/gamma-migration-deep-dive and .opencode/skills/gamma-migration-deep-dive in your project.

What does Gamma Migration Deep Dive need to run?

Going by SKILL.md and its folder, Gamma Migration Deep Dive needs the command-line tools its instructions call (npm) and credentials named GAMMA_API_KEY. Our summary lists: Node.js; A credential in GAMMA_API_KEY. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(node:*). Compatibility (from SKILL.md): Designed for Claude Code.

Does Gamma Migration Deep Dive access the network?

SKILL.md names 2 domains. As links in the text: developers.gamma.app and gamma.app. This is read from the text; nothing was executed.

Is Gamma Migration Deep Dive safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Gamma Migration Deep Dive use?

Gamma Migration Deep Dive is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Gamma Migration Deep Dive use?

About 2.3k tokens (SKILL.md is roughly 9.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.4k tokens, read only when the agent opens those files.

What are the alternatives to Gamma Migration Deep Dive?

Skills that share tags, products or a category with Gamma Migration Deep Dive: Present (ghaida/intent, 207 stars), Publish To Pages (github/awesome-copilot, 40k stars), Ultralytics Branding (fcakyon/claude-codex-settings, 1.2k stars) and Slidev Presentations (nicepkg/ai-workflow, 285 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Gamma Migration Deep Dive?

jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,827 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 10, 2026.

Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.