This skill teaches you to write markdown that imports cleanly into Gamma, then refine the result using Gamma's in-app AI chat agent. Two workflows are supported:
API workflow — .github/muscles/gamma-generator.cjs posts directly to the Gamma API (one-shot)
Manual workflow — author the file in VS Code → paste/upload into Gamma UI → refine with the agent (recommended for high-stakes decks)
Choose manual when the user wants creative control over layout, image style, and theme. Choose API when speed matters more than polish.
Authoring Rules
Card Breaks Are ---
Each --- (markdown horizontal rule on its own line, blank line above and below) becomes a new card. Cards are Gamma's slide unit. Without explicit ---, Gamma's importer auto-splits unpredictably.
# Quarterly Review
Opening card content.
---
## Revenue
Second card.
---
## Next Steps
Third card.
Rule of thumb: One core idea per card. If a card needs scrolling at 16:9, split it.
Heading Hierarchy
Markdown
Gamma role
# H1
Title card — use exactly once at the top
## H2
New card title
### H3
Section header within a card
#### H4
Sub-section / column header
Do not skip levels. # Title → ## Card → ### Section keeps the importer's outline correct.
Card Length Budget
Card type
Body words
Bullet count
Title / section divider
0–10
0
Content card (16:9)
40–80
3–5
Detail / data card
80–140
5–8
Appendix card
up to 200
8–12
Long-form documents (mode document) tolerate more; presentations should breathe.
Speaker Notes
Gamma reads HTML comments as speaker notes:
## Pricing Strategy
We're moving to tiered pricing in Q3.
<!-- Speaker note: Emphasize the migration window. Reference the Q2 churn data
when asked. Do not commit to a launch date — legal review pending. -->
Notes are hidden in published view, exported in PPTX speaker-notes panel.
Image Directives
Three patterns, in order of fidelity:
Pattern
When to use

Exact image you control
![A photorealistic close-up of a chess piece on a marble board, dramatic side lighting]() (empty src)
Let Gamma's AI generate from your alt text
<!-- gamma-image: cinematic shot, low-angle, golden hour, no text --> (HTML comment marker)
Hint for the chat agent to swap later — placeholder card uses theme default
Write alt-text prompts as if briefing a photographer: subject, framing, lighting, mood, what to exclude (no text, no people, no logos).
The card renders as side-by-side columns. Keep parallel structure (same bullet count).
Callouts
Use blockquote with a leading emoji to trigger Gamma's callout card style:
> 💡 **Insight**: 73% of churned customers never opened the onboarding email.> ⚠️ **Risk**: API rate limits cap us at 12K syncs/hour during the launch window.
Toggles / Collapsibles
For appendix detail that shouldn't crowd the main flow, use HTML <details>:
<details><summary>Methodology</summary>
We surveyed 1,240 users across 3 cohorts between Jan and Mar 2026...
</details>
Gamma renders these as expandable toggles.
Document Skeleton
Every well-formed Gamma source follows this shape:
# {Deck Title}
{One-sentence promise of what the audience will learn.}
<!-- Speaker note: Audience = {who}. Goal = {what they should do next}.
Tone = {confident / exploratory / instructive}. -->
---
## Agenda1. The problem
2. What we did
3. What changed
4. What's next
---
## {Section 1 Title}
{Body — 40-80 words or 3-5 bullets.}
![Illustrative image alt text — describe scene, lighting, mood]()
---
{... more cards ...}
---
## Recommendation> 💡 **Bottom line**: {one sentence}
---
## Appendix<details><summary>Methodology</summary>
...
</details><details><summary>Data sources</summary>
...
</details>
Always end with an Appendix section using <details> toggles for backup data, methodology, glossary, and FAQs. The audience sees a clean main flow; the presenter has depth on demand.
Workflow A: Manual (Recommended for High-Stakes Decks)
Draft the markdown file using the skeleton above. Keep it under 75 cards (Gamma's import limit).
Pre-process with the preprocessor muscle to auto-insert card breaks, demote stray H1s, and flag dense cards / weak alt-text:
Always pass --slides N and --dimensions 16x9 for presentations. Without them, Gamma auto-splits and may default to fluid layout.
For draft-then-edit workflow:
# 1. Generate draft markdown
node .github/muscles/gamma-generator.cjs --topic "Q2 review" --draft --draft-output ./q2.md
# 2. User edits q2.md in VS Code# 3. Generate final
node .github/muscles/gamma-generator.cjs --file ./q2.md --slides 14 --dimensions 16x9 --export pptx --open
Full parameter reference: see instructions/gamma-presentation.instructions.md.
Refining with Gamma's Chat Agent
Once the deck is open in Gamma's editor, the sparkle icon ✨ opens the AI chat agent. It can edit any card, regenerate images, restyle the whole deck, translate, and add new cards.
Effective Agent Prompts
Goal
Prompt template
Tighten a wordy card
"Condense this card to 3 bullets, keep the data point"
Regenerate one image
"Replace this image with a wide cinematic shot, low-angle, no people"
Restyle whole deck
"Apply a more conservative tone — dark navy theme, serif headings, minimal images"
Add a missing card
"Insert a 'Next Steps' card after Pricing with 4 owner/date bullets"
Fix imbalance
"Card 6 is much denser than the others — split it into two"
Translate
"Translate the deck to Brazilian Portuguese, keep the data labels in English"
Generate speaker notes
"Add 2-sentence speaker notes to every card that has data"
Add data viz
"Convert this table into a horizontal bar chart, sorted descending"
Agent Strengths vs Limits
Agent does well:
Per-card edits (text, images, layout)
Theme application across deck
Adding individual cards from a topic
Translation and tone shifts
Restyling images consistently
Agent struggles with:
Multi-card structural rewrites (do those in markdown, re-import)
Embedded chart data corrections (edit source data, regenerate)
Brand asset injection (upload assets to workspace first)
Cross-card narrative consistency (you stay the editor here)
Rule: Use markdown for structure, agent for polish. If you find yourself re-prompting the agent 4+ times for the same card, the source markdown is wrong — fix it there and re-import.
Recommendations to Surface to the User
When generating or reviewing a Gamma source file, proactively call out these issues:
Issue detected
Recommendation to user
First card has more than a title
"Add a one-sentence promise under the H1 — Gamma's title card looks empty otherwise"
Any card body > 140 words
"Card N is too dense for a 16:9 slide — split or move detail to an appendix toggle"
No ![]() image directives
"No image prompts found — Gamma will use stock images. Add 2-3 alt-text prompts for hero cards"
No speaker notes
"Add <!-- Speaker note: ... --> blocks for talking points — they export to PPTX"
No appendix
"Add ## Appendix with <details> toggles for methodology and data sources"
Heading levels skip (H1 → H3)
"Heading hierarchy skips a level — Gamma's outline will look broken"
muscles/md-to-gamma.cjs — markdown preprocessor (name.md → name-gamma.md); also surfaced as Convert Markdown → Gamma (preprocess) in the VS Code right-click menu
muscles/gamma-generator.cjs — API runner (one-shot generation)
skills/presentation-tool-selection — Marp vs Gamma vs manual decision matrix
skills/data-visualization — produce chart images for embed
skills/markdown-mermaid — diagrams that survive Gamma import
skills/brand-asset-management — upload brand assets to Gamma workspace before generation