Implement core Gamma workflow for presentation editing and export. Use when modifying existing presentations, exporting to various formats, or managing presentation assets. Trigger with phrases like "gamma edit presentation", "gamma export", "gamma PDF", "gamma update slides", "gamma modify".
/plugin marketplace add jeremylongshore/claude-code-plugins-plus-skills/plugin install gamma-pack@claude-code-plugins-plusThis skill is limited to using the following tools:
Implement workflows for editing existing presentations and exporting to various formats.
gamma-core-workflow-a setupimport { GammaClient } from '@gamma/sdk';
const gamma = new GammaClient({ apiKey: process.env.GAMMA_API_KEY });
async function editPresentation(presentationId: string) {
// Retrieve existing presentation
const presentation = await gamma.presentations.get(presentationId);
// Update title and style
const updated = await gamma.presentations.update(presentationId, {
title: 'Updated: ' + presentation.title,
style: 'modern',
});
return updated;
}
async function editSlide(presentationId: string, slideIndex: number, content: object) {
const presentation = await gamma.presentations.get(presentationId);
// Update specific slide
const updatedSlide = await gamma.slides.update(
presentationId,
slideIndex,
{
title: content.title,
content: content.body,
layout: content.layout || 'content',
}
);
return updatedSlide;
}
async function addSlide(presentationId: string, position: number, content: object) {
return gamma.slides.insert(presentationId, position, {
title: content.title,
content: content.body,
generateImage: content.imagePrompt,
});
}
async function deleteSlide(presentationId: string, slideIndex: number) {
return gamma.slides.delete(presentationId, slideIndex);
}
type ExportFormat = 'pdf' | 'pptx' | 'png' | 'html';
async function exportPresentation(
presentationId: string,
format: ExportFormat,
options: object = {}
) {
const exportJob = await gamma.exports.create(presentationId, {
format,
quality: options.quality || 'high',
includeNotes: options.includeNotes ?? true,
...options,
});
// Wait for export to complete
const result = await gamma.exports.wait(exportJob.id, {
timeout: 60000,
pollInterval: 2000,
});
return result.downloadUrl;
}
// Usage examples
const pdfUrl = await exportPresentation('pres-123', 'pdf');
const pptxUrl = await exportPresentation('pres-123', 'pptx', { includeNotes: false });
const pngUrl = await exportPresentation('pres-123', 'png', { slideIndex: 0 }); // First slide only
async function uploadAsset(presentationId: string, filePath: string) {
const fileBuffer = await fs.readFile(filePath);
const asset = await gamma.assets.upload(presentationId, {
file: fileBuffer,
filename: path.basename(filePath),
type: 'image',
});
return asset.url;
}
async function listAssets(presentationId: string) {
return gamma.assets.list(presentationId);
}
| Error | Cause | Solution |
|---|---|---|
| Export Timeout | Large presentation | Increase timeout or reduce slides |
| Format Not Supported | Invalid export format | Check supported formats |
| Asset Too Large | File exceeds limit | Compress or resize image |
| Slide Not Found | Invalid index | Verify slide exists |
Proceed to gamma-common-errors for error handling patterns.
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.