Stop Staring at a Blank Deck

How I Use Claude Code + Marp to Think Through Presentations

Omer Rosenbaum
February 2026

What you'll learn

  1. The real problem The hard part of presentations is figuring out the story
  2. The workflow How Claude Code helps you brainstorm, draft, and iterate on a presentation
  3. Getting started Install two things, run one command
  4. Under the hood How Marp and the skill file work (for the curious)

Agenda

Part 1: The problem

Blank deck paralysis

Part 2: The solution in action

Brainstorm, react, iterate, export

Part 3: Get started in 5 minutes

Install, run, iterate

Part 4: Under the hood

Marp, the skill file, and conventions

Part 1: The problem

Blank deck paralysis

The problem > The solution > Get started > Under the hood

The hard part

You stare at a blank deck and think: "Where do I even start?"

The real challenge:

  • What's the structure? Which sections build on which?
  • What are you actually trying to say?
  • Where does the data belong? Table or bullets? Before or after?
The problem > The solution > Get started > Under the hood

What would actually help

Having something to react to

  • Starting from zero is hard - reacting to a draft is fast
  • You need a first layout with a story you can reshape
  • "Move this before that" is easier than "what should I say?"

The tool should help you think, not just make things pretty

Part 2: The solution in action

Brainstorm, react, iterate, export

The problem > The solution > Get started > Under the hood

The process

Your presentation is a Markdown file. The workflow has four stages:

  1. Brainstorm — Talk through the story with Claude before any slides exist
  2. React — Get a first draft with structure and sections you can reshape
  3. Iterate — Reshape through conversation or direct editing in VS Code
  4. Export — One command to HTML or PowerPoint

Let's walk through each one

The problem > The solution > Get started > Under the hood

Brainstorm with Claude

/create-marp-deck API rate limiting
  • Claude will first interview you to understand what you want to convey

  • You talk through the story, Claude helps structure it

Brainstorm · React · Iterate · Export
The problem > The solution > Get started > Under the hood

React to the first draft

  • Claude generates a full slide deck based on your answers

  • You get a solid first draft to react to and reshape

Brainstorm · React · Iterate · Export
The problem > The solution > Get started > Under the hood

Iterate

Refine through conversation or direct editing:

"Split slide 6 into two"
"Add a comparison table"
"Move the summary up"

Each edit is a targeted change to a text file

Brainstorm · React · Iterate · Export
The problem > The solution > Get started > Under the hood

Preview in VS Code

Use the Marp for VS Code extension for live preview:

  1. Install marp-team.marp-vscode
  2. Open the .md file
  3. Ctrl+Shift+V for split-pane view

[Screenshot: VS Code split pane - Markdown left, rendered slides right]

Claude Code edits the file → VS Code auto-refreshes the preview

Brainstorm · React · Iterate · Export
The problem > The solution > Get started > Under the hood

Export

The skill runs the export automatically after generating the deck

You get three files:

  • .md — the source
  • .html — open in any browser
  • .pptx — open in PowerPoint
Brainstorm · React · Iterate · Export
The problem > The solution > Get started > Under the hood

Editable PPTX (optional)

Standard PPTX renders slides as images — pixel-perfect, but not editable

For editable text in PowerPoint or Google Slides:

  1. --pptx-editable flag uses LibreOffice to produce real text boxes
  2. Problem: LibreOffice creates text boxes that are too narrow, text wraps and overlaps
  3. Fix: A python-pptx post-processing script widens text boxes automatically

The skill handles all of this — just ask for "editable PPTX"

Requires LibreOffice and python-pptx installed

Brainstorm · React · Iterate · Export

Part 3: Get started in 5 minutes

Install, run, iterate

The problem > The solution > Get started > Under the hood

Get started in 5 minutes

  1. Install Marp: npm install -g @marp-team/marp-cli
  2. Install the skill:
    npx skills add Omerr/claude-skills
    
  3. Run: /create-marp-deck your topic here
  4. Iterate: React to the draft, refine, export

Also works with Cursor, GitHub Copilot, and other AI agents via skills.sh

Fork the repo and customize the conventions to match your style

Part 4: Under the hood

Marp, the skill file, and conventions

The problem > The solution > Get started > Under the hood

Marp: Markdown → slides

Marp (Markdown Presentation Ecosystem) converts .md files into slides

---
marp: true
theme: default
paginate: true
size: 16:9
---

Four lines of frontmatter. That's your starting point

Your presentation is a text file — version-controlled, diffable, and AI-editable

The problem > The solution > Get started > Under the hood

The Claude Code skill

A skill encodes your conventions so Claude follows them every time

## Phase 1: Interview

Before generating anything, interview the user:
1. What's this presentation about?
2. Who's the audience?
3. What are the key points?
4. Any data, demos, or examples?
5. Any constraints?

The interview forces you to articulate the story before slides exist

The problem > The solution > Get started > Under the hood

Section dividers with color coding

Each section gets its own gradient background:

  • 🔵 Blue: linear-gradient(135deg, #1e3a5f, #2d5a8e)
  • 🟢 Green: linear-gradient(135deg, #064e3b, #047857)
  • 🟣 Purple: linear-gradient(135deg, #3d1e5c, #5a2d8e)

Applied via CSS classes:

<!-- _class: lead part-problem -->
# Part 1: The Problem

Audience intuitively knows when you've changed topics

The problem > The solution > Get started > Under the hood

Breadcrumb navigation

Every content slide shows where you are in the deck:

<!-- header: "Context > **Results** > Summary" -->

Renders as: Context > Results > Summary

  • Gray text for other sections
  • Blue bold for the current section
  • Set once per section, persists until changed
  • Reset with <!-- _header: "" --> before each divider

Recap

The problem — Figuring out the story is the hard part, not the design
The fix — Get a first draft to react to, then iterate
The workflow — Brainstorm → React → Iterate → Export
Get startednpm install -g @marp-team/marp-cli + one skill file

github.com/Omerr/claude-skills

Read the full article