From gamma-pack
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".
How this skill is triggered — by the user, by Claude, or both
Slash command
/gamma-pack:gamma-core-workflow-bThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Implement workflows for editing existing presentations and exporting to various formats.
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, # 60000: 1 minute in ms
pollInterval: 2000, # 2000: 2 seconds in ms
});
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.
Basic usage: Apply gamma core workflow b to a standard project setup with default configuration options.
Advanced scenario: Customize gamma core workflow b for production environments with multiple constraints and team-specific requirements.
npx claudepluginhub nickloveinvesting/nick-love-plugins --plugin gamma-packCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.