From Presentations
Generates AI-powered presentations and documents via Gamma.app API. Use for creating slide decks, pitch decks, reports, and marketing materials from text prompts or outlines.
How this skill is triggered — by the user, by Claude, or both
Slash command
/presentations:gammaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Expert skill for using Gamma.app - AI-powered presentation and document generation platform.
Expert skill for using Gamma.app - AI-powered presentation and document generation platform.
# Configured in .env.agents
GAMMA_API_KEY=YOUR_GAMMA_API_KEY
Best for:
Advantages:
pip install requests
| Endpoint | Method | Purpose |
|---|---|---|
/v1/presentations | POST | Create presentation |
/v1/presentations/{id} | GET | Get presentation |
/v1/presentations/{id} | PUT | Update presentation |
/v1/presentations/{id}/export | POST | Export to PDF/PPT |
/v1/generate | POST | Generate from prompt |
/v1/templates | GET | List templates |
import requests
import os
GAMMA_API_KEY = os.getenv('GAMMA_API_KEY')
BASE_URL = "https://api.gamma.app"
headers = {
"Authorization": f"Bearer {GAMMA_API_KEY}",
"Content-Type": "application/json"
}
def generate_presentation(prompt: str, slides_count: int = 10, style: str = "professional"):
"""
Generate presentation from text prompt.
Args:
prompt: Topic or detailed description
slides_count: Number of slides (5-20)
style: "professional", "creative", "minimal", "bold"
"""
payload = {
"prompt": prompt,
"slides_count": slides_count,
"style": style,
"include_images": True
}
response = requests.post(
f"{BASE_URL}/v1/generate",
headers=headers,
json=payload
)
return response.json()
# Usage
result = generate_presentation(
prompt="AI in Healthcare: Current trends, applications, and future outlook",
slides_count=12,
style="professional"
)
print(f"Presentation ID: {result['id']}")
print(f"URL: {result['url']}")
def create_from_outline(title: str, outline: list, template: str = None):
"""
Create presentation from structured outline.
Args:
title: Presentation title
outline: List of slide topics/content
template: Optional template ID
"""
payload = {
"title": title,
"slides": [
{"content": slide} for slide in outline
]
}
if template:
payload["template_id"] = template
response = requests.post(
f"{BASE_URL}/v1/presentations",
headers=headers,
json=payload
)
return response.json()
# Usage
outline = [
"Introduction to Machine Learning",
"Types of ML: Supervised, Unsupervised, Reinforcement",
"Real-world Applications",
"Getting Started with ML",
"Future of Machine Learning"
]
presentation = create_from_outline(
title="Machine Learning 101",
outline=outline
)
def export_presentation(presentation_id: str, format: str = "pdf"):
"""
Export presentation to file.
Args:
presentation_id: ID of presentation
format: "pdf", "pptx", "html"
"""
payload = {
"format": format
}
response = requests.post(
f"{BASE_URL}/v1/presentations/{presentation_id}/export",
headers=headers,
json=payload
)
result = response.json()
return result.get("download_url")
# Usage
pdf_url = export_presentation("pres_123abc", format="pdf")
pptx_url = export_presentation("pres_123abc", format="pptx")
def get_presentation(presentation_id: str):
"""Get presentation details."""
response = requests.get(
f"{BASE_URL}/v1/presentations/{presentation_id}",
headers=headers
)
return response.json()
def list_templates(category: str = None):
"""
Get available templates.
Categories: "business", "education", "marketing", "pitch", "report"
"""
params = {}
if category:
params["category"] = category
response = requests.get(
f"{BASE_URL}/v1/templates",
headers=headers,
params=params
)
return response.json()["templates"]
def update_slide(presentation_id: str, slide_index: int, content: dict):
"""Update specific slide content."""
payload = {
"slides": [
{
"index": slide_index,
"content": content
}
]
}
response = requests.put(
f"{BASE_URL}/v1/presentations/{presentation_id}",
headers=headers,
json=payload
)
return response.json()
| Style | Description | Best For |
|---|---|---|
professional | Clean, corporate look | Business, reports |
creative | Bold colors, dynamic layouts | Marketing, pitches |
minimal | Lots of whitespace, simple | Tech, startups |
bold | Strong typography, impactful | Sales, presentations |
elegant | Sophisticated, refined | Luxury, formal |
Gamma supports various content blocks:
| Block | Description |
|---|---|
text | Rich text content |
heading | Title/subtitle |
bullet_list | Bullet points |
numbered_list | Numbered items |
image | Images with captions |
chart | Data visualizations |
table | Data tables |
quote | Blockquotes |
embed | External embeds (YouTube, etc.) |
import requests
import os
import time
class GammaClient:
def __init__(self):
self.api_key = os.getenv('GAMMA_API_KEY')
self.base_url = "https://api.gamma.app"
self.headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
def generate(self, prompt: str, **kwargs):
"""Generate presentation from prompt."""
payload = {
"prompt": prompt,
"slides_count": kwargs.get("slides_count", 10),
"style": kwargs.get("style", "professional"),
"include_images": kwargs.get("include_images", True)
}
response = requests.post(
f"{self.base_url}/v1/generate",
headers=self.headers,
json=payload
)
return response.json()
def export(self, presentation_id: str, format: str = "pdf"):
"""Export to file format."""
response = requests.post(
f"{self.base_url}/v1/presentations/{presentation_id}/export",
headers=self.headers,
json={"format": format}
)
return response.json().get("download_url")
def create_and_export(self, prompt: str, format: str = "pdf"):
"""Generate and export in one call."""
# Generate
result = self.generate(prompt)
presentation_id = result["id"]
# Wait for generation
time.sleep(5)
# Export
download_url = self.export(presentation_id, format)
return {
"id": presentation_id,
"url": result["url"],
"download_url": download_url
}
# Usage
gamma = GammaClient()
presentation = gamma.create_and_export(
prompt="Quarterly Sales Report Q4 2024: Key metrics, achievements, and 2025 outlook",
format="pptx"
)
print(f"View: {presentation['url']}")
print(f"Download: {presentation['download_url']}")
| Scenario | Approach |
|---|---|
| Quick pitch deck | generate() with "pitch" style |
| Detailed report | create_from_outline() with sections |
| Marketing materials | generate() with "creative" style |
| Training content | create_from_outline() with detailed content |
| Sales presentation | generate() with "bold" style |
update_slide() для точечных правокGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Reference for writing and editing skills with predictable behavior, covering invocation models, description writing, and information hierarchy.
npx claudepluginhub jhamidun/claude-code-config-pack --plugin presentations